Spørsmål:
Finn nivådata i binærfiler?
Kenji
2013-06-01 18:33:27 UTC
view on stackexchange narkive permalink

Jeg prøver å gjenskape et gammelt spill bare for nostalgi og lære noe nytt ved siden av (jeg kan programmere på forskjellige språk og kan litt monteringsspråk, men jeg er ny innen reverse engineering). Spillet heter Banania og ser slik ut:

enter image description here

Nå er problemet mitt å finne nivådataene til dette spillet (det er bare en .exe-fil, ingenting annet) . Hvis jeg hadde laget dette spillet, hadde jeg lagret nivåene (som ser ut til å være av størrelse 21x13) i et tredimensjonalt utvalg (50x21x13) for 50 totale nivåer. Jeg ser imidlertid ikke ut til å finne noe rektangulært mønster av den størrelsen som ser ut som nivåer i min hex-editor.

Hvordan vil du prøve å finne den? Jeg vil være takknemlig for litt hjelp.

REDIGERING: Etter å ha stirret på binærfilmerne hele dagen, fant jeg endelig nivådataene! Jeg oppdaget det med hell, det var bare en stor del med bare rundt 20 forskjellige tall brukt. Formatet er akkurat som jeg forventet. Siden jeg vet hvordan nivåene ser ut, bør det ikke være for vanskelig å gjette hvilket heltall som står for hvilket element. Tilsynelatende var heltal på Windows 3.1 16 bit lange (i det minste er det min gjetning), det var derfor jeg ikke fant det først.

To svar:
samuirai
2013-06-01 20:05:16 UTC
view on stackexchange narkive permalink

Du vil sannsynligvis ikke se de rektangulære mønstrene på grunn av linjebredde kontra faktisk datastrukturbredde. Så det er helt fordrevet.

Men du kan prøve binwalk (et verktøy for fastvareanalyse) for å vise en graf med entropien til filen, noe som kan bidra til å identifisere repeterende regioner i den kjørbare filen.

entropy example output

Takk, jeg skal se på det. Dessverre bruker jeg for øyeblikket bare Windows, så jeg må installere Linux en stund.
Jason Geffner
2013-06-02 00:28:26 UTC
view on stackexchange narkive permalink

Basert på utgangen av NE dumper, ser det ut til at nivådataene begynner ved filforskyvning 0x17600, og hvert nivå ser ut til å være 0x200 byte.

Du har helt rett, jeg fant ut av det selv i mellomtiden. Takk for at du påpekte det. For å være ærlig, er jeg litt oppmerksom på at et program kan finne det ut for deg. Jeg vil definitivt sjekke NE dumper ut,
Det hjalp at Bananias forfatter kalte ressursene "LEVEL";)


Denne spørsmålet ble automatisk oversatt fra engelsk.Det opprinnelige innholdet er tilgjengelig på stackexchange, som vi takker for cc by-sa 3.0-lisensen den distribueres under.
Loading...