ZoltDump
A real-time Godot Engine memory dumper and analyzer featuring Cheat Engine integration.
This is NOT a plug-and-play tool for end-users. Every game has its own memory layout, compiler quirks, and engine modifications. Most targets require manual calibration — including offset adjustments, signature verification, and heuristic tuning. If you are not comfortable with Cheat Engine, memory analysis, or reverse engineering, this tool is not for you.
Why use a dumper instead of just CE
When developing CE tables for Godot games, the primary challenge is that most captured addresses point to shared code blocks without clear tags to identify specific data. Identifying data often requires analyzing GPRs (General Purpose Registers) or stack traces. While pointer maps are an alternative, they frequently require rescanning after game updates—similar to the workflow for RPGMaker games (though RPGMaker allows for direct source data modification). Furthermore, standard CE struggles with the C# CLR because optimized code is dynamically generated, making aobscan() the only viable approach.
This tool extracts game data and structures directly from the engine internals (ObjectDB/ClassDB/SceneTree) rather than relying on generated machine code. Note: the Get World implementation is currently not as robust as UE5CEDumper’s.
The UI is inspired by UE5CEDumper; most actions are accessible via the right-click context menu.
Note: Paste CE XML, CE CSX, and SDK Export may not function correctly. This is because Godot utilizes virtual getters/setters for property access rather than fixed offsets. The recommended workflow is using Lua scripts to fetch real-time data through proxy DLLs.
In most cases, the proxy DLL winmm.dll must be deployed to the game directory. While injecting ZoltDumper.dll via CE is supported, it is not recommended. If the target game uses the C# CLR, ZoltReflector.dll is also required to resolve C# reflection names.
Compatibility
| Godot Version | ObjectDB | ClassDB | SceneTree | Property Walk |
|---|---|---|---|---|
| 4.0 (GCC) | ✔ | ✔ | ✔ | 68/96 values |
| 4.1 (GCC) | ✔ | ✔ | ✔ | 72/101 values |
| 4.2 (MSVC) | ✔ | ✔ | ✔ | 86/104 values |
| 4.3 (MSVC) | ✔ | ✔ | ✔ | 92/111 values |
| 4.4.x | ✔ | ✔ | ✔ | ✔ |
| 4.5.x | ✔ | ✔ | ✔ | ✔ |
| 4.6.x | ✔ | ✔ (AHashMap) | ✔ | ✔ |
| 3.5+ (GCC) | ✔ | ✔ | ✔ | 41/52 values |
Tested Targets (Can detect but no real test in CE)
| Target | Engine | ObjectDB | ClassDB | SceneTree | GodotVer |
|---|---|---|---|---|---|
| Godot 4.0 | ✔ (aob) | ✔ (found) | ✔ (bss_scan) | ✔ (aob) | 4.0.stable.official |
| Godot 4.1 | ✔ (aob) | ✔ (found) | ✔ (bss_scan) | ✔ (aob_relaxed) | 4.1.stable.official |
| Godot 4.2 | ✔ (aob) | ✔ (found) | ✔ (bss_scan) | ✔ (aob) | 4.2.stable.official |
| Godot 4.3 | ✔ (aob) | ✔ (found) | ✔ (bss_scan) | ✔ (aob) | 4.3.stable.official |
| Godot 4.4.1 | ✔ (aob) | ✔ (aob) | ✔ (bss_scan) | ✔ (aob) | 4.4.1.stable.official |
| Brotato (3.7dev) | ✔ (aob) | ✔ (bss_scan_3x) | ✔ (bss_scan_3x) | ✔ (aob) | 3.7.dev.custom_build |
| 20 Small Mazes (3.5.3) | ✔ (aob) | ✔ (bss_scan_3x) | ✔ (bss_scan_3x) | ✔ (aob) | 3.5.3.stable.custom_build |
| Magic Archery (4.2.2) | ✔ (aob) | ✔ (found) | ✔ (bss_scan) | ✔ (aob_relaxed) | 4.2.2.stable.official |
| One Potion Please (4.3) | ✔ (aob) | ✔ (found) | ✔ (bss_scan) | ✔ (aob) | 4.3.stable.official |
| Virtual Cottage | ✔ (aob) | ✔ (found) | ✔ (bss_scan) | ✔ (aob) | unknown |
| Upload Labs | ✔ (aob) | ✔ (aob) | ✔ (bss_scan) | ✔ (aob) | 4.5.1.rc2.official |
| Holo X Break | ✔ (aob) | ✔ (found) | ✔ (bss_scan) | ✔ (aob_relaxed) | 4.2.stable.official |
| Dome Keeper | ✔ (aob) | ✔ (found) | ✔ (bss_scan) | ✔ (aob) | 4.2.2.stable.custom_build |
| Slay the Spire 2 | ✔ (aob) | ✔ (found) | ✔ (bss_scan) | ✔ (aob) | 4.5.1 |
Implemented Targets (as-is)
| Target | UI Browse | CE XML paste | CE Lua support for virtual getter/setter | GodotVer | Dev time (approx. 10h/day) |
|---|---|---|---|---|---|
| One Potion Please (4.3) | ✔ | Partial | Supported | 4.3.stable.official | 3 days |
| Brotato (3.7dev) | ✔ | Partial | Supported | 3.7.dev.custom_build | 5 days |
| Dome Keeper | ✔ | Partial | Supported | 4.2.2.stable.custom_build | 9 days |
| Slay the Spire 2 | ✔ | Partial | Supported w/ C# CLR | 4.5.1 | 8 days |
CE Lua support: Proxy DLLs must be deployed in the target game folder for virtual getter/setter functionality.
Not work? build your own:
Archived Repos: https://github.com/bbfox0703/Zolt-Dump-Archive / GPL v3
Requirements
-
.NET 8 / .NET 10 Runtime — Required if the target game uses C# CLR (e.g., Slay the Spire 2).
-
AOBMaker CE DLL Plugin — Required for Lua script generation. viewtopic.php?t=1788
Setup Steps
-
Ensure the game is not running.
-
Launch
ZoltDumpUI.exe. -
Deploy proxy DLLs via the "Deploy Proxy" tab in the UI (or manually copy them to the game folder). Injection via CE is also supported.
-
Launch the game.
-
Use the Connect and Scan functions in the UI.
-
In Cheat Engine: Locate your target value (HP/MP/etc.) and copy its address.
-
Use the Address Lookup feature in the Instance Finder.
-
Results: If found, you can browse data via Live Walker. If not found, the game/function is currently unsupported and may require dumper revisions.
-
Generate relevant Lua scripts as needed.

