Class layouts written by hand are easy to get nearly right. GameFunctionsTools takes a folder of claimed field offsets and the executable they describe, and says which ones the binary itself supports.
How it checks
- RTTI. It reads the PE file directly and finds the compiler's type descriptors, object locators and class hierarchies, which name the classes, their bases and their vtables.
- Disassembly (optional, through Capstone). For each claimed offset it disassembles the class's own functions and looks for the offset as an operand.
- A verdict for every offset:
CONFIRMED,CONFLICT,NO_ANCHORorERROR, with the instruction that decided it.
When a file has no RTTI, or most of its code is compressed, a diagnostics pass says which of the two it is instead of returning an empty list. Results export as JSON, CSV, or a C++ .inl holding only the confirmed offsets. A target is fingerprinted once and recognised the next time it is opened.