Behind Enemy Lines - Reverse Engineering C++ in Modern Ages
summary
Shows how compiled C++ actually looks: uses Binary Ninja, MSVC calling conventions and registers, and dynamic breakpoints to trace virtual calls. Rebuilds class hierarchies and vtables, identifies that a boss object stores life = 15 and patches the binary (hex patch) to set boss HP = 15 → 1 to win the game. Diagnoses a scoreboard corruption as a dangling std::string_view returned from a temporary, causing reuse of stack storage.
AI-written summary · about
chapters (24)
- 0:00Introduction
- 0:31Binary creation process
- 1:56Static vs dynamic analysis
- 3:23Disassemblers and decompilers
- 4:26Reverse engineering in practice
- 5:09MSVC compiler registers
- 7:01Dynamic object creation
- 9:11Recognizing constructors
- 10:17Virtual calls in assembly
- 11:22Reversing the game
- 12:24Debug symbols in binaries
- 13:51Spaceship VTable analysis
- 16:26Pseudo code from assembly
- 17:08Controller function flow
- 19:59Dynamic analysis with debugger
- 22:11Wave boss constructor
- 23:13Inheritance hierarchy
- 24:18Patching binary values
- 25:02Scoreboard string issues
- 26:06Small string optimization
- 29:21String view C++20 bug
- 32:11Reverse engineering benefits
- 33:41Security implications
- 34:14Q&A session
related talks
11mReverse engineering game formats for fun and profit! (or just fun)
51mReverse Engineering Binaries
51mAutomation Techniques in C++ Reverse Engineering
44mA Guide to Debugging C++ Code: Practical and Interactive Examples
50m.NET Reversing and Exploitation for Cool Kids
58mUnderstanding Large and Unfamiliar Codebases
41mUnveiling the Underground World of Anti-Cheats
01h 26mC++ Under the Hood: (Internal Class Mechanisms)
