Three coupled defects in RTTIGccClassRecoverer: 1. isPossibleVttStart REBUILDS vtableAndVftableAddrs on every call (O(V) waste) 2. getVttAddresses calls it inside outer while loop (multiplies the rebuild) 3. addPointerToList uses List<Address>.contains for membership (O(V) per check) Fix: hoist Set<Address> once, pass to isPossibleVttStart, eliminate per-call rebuild. ghidra-0001 covers RecoveredClassHelper (MSVC + gcc) — the foundation pattern. ghidra-0002 covers gcc-specific VTT recovery — extends coverage to Linux C++ binaries. Together: ghidra C++ class recovery drops from seconds-to-minutes to milliseconds. |
||
|---|---|---|
| .. | ||
| tickets | ||
| blast-radius.md | ||
| timeline.md | ||