Files
DebugInfo/DeThunk
..
2025-02-24 22:08:37 +08:00
2025-01-25 02:41:43 +08:00
2025-01-13 16:05:35 +08:00
2025-01-13 16:05:35 +08:00
2025-01-13 16:05:35 +08:00

DeThunk

This is the header preprocessor.

About FakeSymbol

Click me

FakeSymbol is an invention of LiteLDev HeaderGen, which was originally used to access member functions/variables with private/protected permissions. Since the access specifier is part of the function signature, it is not possible to simply change "private" to "public" in the header file.
Now, it is also used to help developers hook special member functions in the class.
As we all know, in C++, it is not possible to directly get the address of special member functions such as constructors/destructors/virtual functions. If you want to hook them, you must use string symbols, but string symbols are dirty. Another solution is to generate thunks and intercept symbol resolution, which is exactly what FakeSymbol does.

TL;DR FakeSymbol has many benefits, but it actually causes incorrect symbols to be generated, so it is necessary to restore them.

Where to get the headers?

git clone https://github.com/LiteLDev/LeviLamina.git
git checkout -b header

Thunks

  • virtual function thunk - Removed.
  • constructor thunk - Removed.
  • vftables - Removed.
    • TODO dumpsym is currently unable to emit a symbol of vtable pointer.
  • destructor thunk - Removed.
    • TODO dumpsym is currently unable to emit a symbol of destructor.
  • static variables thunk - Restored.
    • TODO Symbols are now generated correctly, but some symbols cannot be queried from bedrock_runtime_data.

Usage

Note

The modification will be done directly on the original file.

python src/main.py path/to/header/