Hasty Briefsbeta

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.