Decompiling Xbox games using PDB debug info
12 days ago
- #xbox
- #decompilation
- #reverse-engineering
- Decompilation involves lifting objects from binaries for comparison and linkage, enabling reverse engineering piece by piece.
- Modern decompilation uses splitters and control flow generation algorithms, avoiding manual disassembly.
- Original Xbox game decompilation, like Halo 1 (PAL debug), benefits from PDB debug symbols but lacks tools for direct PDB splitting.
- Section contributions in PDBs provide detailed info on how object files are laid out, useful for splitting even in stripped PDBs.
- A custom PDB splitter was developed to utilize section contributions, overcoming the lack of support for older VC++ debug info formats.
- Control flow generation is crucial for identifying pointers, with challenges like handling relative relocations and SEH structures.
- Initial game boot issues were traced to string formatting errors and negative relocations, requiring manual fixes.
- Despite progress, unresolved issues like bad pointers and crashes remain, with future work aimed at improving decompilation accuracy.
- The project is open-source, with plans to enhance the tooling for better decompilation workflows.