Tehát ismerem az x86 gépi nyelvet és a C ++ / C nyelvet. Az elmúlt hetekben elköteleztem magam a Windows belső és különösen a PE formátum megtanulása mellett. Célom a Tomb Raider A sötétség angyala forráskód fájlok letöltése. Ez egy 10 évvel ezelőtt (2003) megjelent 3d videojáték, amely mind C, mind C ++ nyelven íródott. A kódot mind a VC ++ 6.0, mind az Intel C ++ 7.1 verzióval állították össze. A fájlok, amelyekből megpróbálom kitalálni a kezdeti forráskódot, PE formátumú futtatható fájlok, amelyekhez tartozik a nyilvános szimbólumokkal ellátott ProgramDataBase fájl (v2.0). Nevük TRAOD, TRAOD_P3 és TRAOD_P4 (a fájlkiterjesztést (.exe.PDB nélkül), mivel az elsőt a vc ++, a másikat pedig az ic ++ - val fordítják le Pentium 3 és Pentium 4 célprocesszorokhoz.
Az IDA Pro segítségével megnyitottam a futtatható fájlokat és feltérképeztem az PDB szimbólumait. Aztán lefordítottam a gép utasításait a C ++ ekvivalenseikre, és egy nagy gyorsítótár fájlba tettem őket. Ezután a dbh.exe fájlt használtam a függvények megfeleltetési forrásfájljaikba való feltérképezéséhez (mert az PDB fájlokban a nyilvános funkciók forrássorának információi voltak). De mielőtt a következő függvényre léptem, a teszt futtatható verziójában összeállítottam a vc ++ vagy az ic ++ funkcióval, amely ezt a függvényt tartalmazta, majd összehasonlítottam az eredményeket az eredetivel (mármint a célfüggvény gépi kódegyenértékének összehasonlítását mind a teszt exe -mmel, mind a játékkal egy). De akkor azt gondoltam, hogy ez nem annyira hatékony, mert sok más folyamatot nem vesznek figyelembe. Úgy értem, hogy a PDB fájl sokkal több információt tartalmaz, mint a dbh program kiírása és a PE fájl is. A PE fájlformátumról szóló cikkekben azt mondják, hogy az .OBJ fájlhoz hasonlóan hasonlít arra, hogy mely fájlokat használja a linker az exe előállításához. Szóval jobb ötlet átnézni az .OBJ fájlokat, majd kitalálni a forráskódot, vagy csak együtt dolgozni az exe-vel? Azt is elolvastam, hogy az .OBJ fájlok PE-ből történő előállításához szükség van néhány szimbólumra, és nekem vannak az PDB fájlból, úgyhogy szerintem ez az átalakítás lehetséges. Akkor is, ha van más ötlete a játék dekompilálására, ossza meg őket - ezt nagyon szeretném elérni.
SZERKESZTÉS: Egy dokumentumot is keresek, de .PDB formátumban (v2.0) és kb. a VC ++ 6.0 .OBJ és .LIB fájlokat készített.