A debugger nem jeleníti meg az egész kódot

A debugger nem jeleníti meg az egész kódot
2011-07-03T20:18:46+02:00
2011-07-04T07:57:08+02:00
2022-11-22T09:25:35+01:00
zoltánka
Az Audacity-nek a lame.exe-jét szeretném visszafejteni.
A debugger-em: GoBug

A lame.exe-nek megnéztem a fejlécét, van benne 3 szegmens:
UPX0
: hexa A1000 fizikai memória, inicializálatlan
UPX1
: hexa 2E000 fizikai memória, ide töltődik be a gépi kód
UPX2
: import szegmens 3 függvénnyel (többit explicit módon kérdi le)

A program úgy indul, hogy rögtön a végére ugrik, ott van pár 100 byte kód, az kicsomagolja a többit az inicializálatlan segmensbe. Aztán az első 2 szegmens egyet alkot, az a kód, amit debuggolni kell.

A gond az, hogy debugger csak a 2. segmensben levő kódot jeleníti meg assembly-ben. Az elsőt azért nem, mert az inicializálatlan volt, szóval mintha adat lenne.
Nekem az kéne, hogy az egész kód (kicsomagolás utáni) megjelenjen asm-ben, és tudjak benne lépkedni.
A legjobb az lenne, ha lenne a debuggerben erre valamilyen beállítás. Vagy használjak más debuggert?

Esetleg a merészebb megoldás: Ismerem a PE fejléc struktúráját, szívesen belepiszkálnék. Csakhogy ha a fejlécben valami nem tetszik az oprendszernek, nem indul el, és ki se derül mi a hiba. Egyszer nagynehezen sikerült kicsikarni azt, hogy fájlba mentettem a már kicsomagolt kódot. Ez még nincs disassemblálva. Kézzel meg nem fogom, ahhoz hosszú.
Úgyhogy a tervem, hogy csinálok egy exe-t, megírom kézzel a fejlécét és beleteszem az elmentett kódot.
De ez olyan macerás!

Mit javasoltok? nincs valami egyszerűbb megoldás?
Mutasd a teljes hozzászólást!
upx -d
Mutasd a teljes hozzászólást!

Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd