Home / Forums / Automated RTTI (Run-Time Type Information) and NetVar dumping in C++

UnreliableCode Community

Developer Research, Reverse Engineering & Coding Community

Discussion

Automated RTTI (Run-Time Type Information) and NetVar dumping in C++

OffsetHunter
RTTI & NetVar Dumper
MEMBER
Rep: 175
Join Date: Jul 2024
Posts: 20
Thanks: 44
1y ago · Oct 29, 2024 4:50 PM
#1
Games compiled with MSVC RTTI enabled contain
CODE
CompleteObjectLocator
and
CODE
TypeDescriptor
metadata placed immediately before their virtual method tables in memory.

By scanning the section for strings matching mangled class names (e.g.
CODE
.?AVClientClass@@
or
CODE
.?AVGameObject@@
), you can trace cross-references backward to locate every vftable in the game binary dynamically!

Who else uses automated RTTI dumpers in their SDK build pipelines?
OffsetHunter · RTTI TypeDescriptors & NetVars
The following users thanked OffsetHunter for this post:
StructMapper
SDK & Class Builder
MEMBER
Rep: 160
Join Date: May 2024
Posts: 26
Thanks: 39
1y ago · Oct 29, 2024 7:15 PM
#2
I built an IDA Python plugin that parses MSVC RTTI descriptors on binary load. It automatically names over 80% of all virtual tables and classes in under 10 seconds!
StructMapper | ReClass.NET & Class Layouts
HexRays99
Senior Reverse Engineer
VIP
Rep: 380
Join Date: Apr 2022
Posts: 36
Thanks: 94
1y ago · Oct 30, 2024 8:30 AM
#3
The combination of RTTI parsing and NetVar recursive table traversal makes game engine updates trivial since you never have to hardcode fragile offsets.
HexRays99 · Reverse Engineering & Static Analysis
CPP
// Always check your pointers!
if (!pLocalPlayer) return;