palepine/GDDumper
GitHub: palepine/GDDumper
一个基于Cheat Engine的运行时脚本,用于从运行中的Godot应用程序提取和分析场景节点数据,辅助逆向工程与调试工作。
Stars: 9 | Forks: 3
# Cheat Engine Runtime Godot Dumper
Cheat Engine Godot Dumper 是一个 [Cheat Engine](https://github.com/cheat-engine/cheat-engine) 脚本,通过 Cheat Engine API 从运行中的 Godot 应用程序提取数据。该脚本转储根视口(root viewport)的节点数据,有助于逆向工程或调试。
本脚本仅供教育和研究目的提供。请负责任地使用。
## 功能特性
- 支持 Godot 3.x 和 4.x。
- 将根视口的所有活动节点或单个节点转储到 Cheat Engine 的 AddressList。
- 从根视口创建 Cheat Engine 结构。
- 可选择监控节点并更新符号列表(Symbol List)。
- 基础 API 函数。
- GDScriptFunction 反汇编器(基于结构)。
## 运行机制
该脚本仅适用于使用了 `GDScript` 的 GD 应用程序。
目前该脚本仅支持 `x64`。
这不是一个开箱即用的解决方案,对初学者来说可能相当复杂。它还需要创建 1) 根视口的符号,2) 定义引擎版本,以及 3) 偏移量。你可以在本[指南](GUIDE.MD)中了解如何找到它们。
## 使用说明
1. 安装 [Cheat Engine](https://github.com/cheat-engine/cheat-engine)。
2. 将 `GDumper.lua` 放入 `Cheat Engine\autorun` 目录中。
3. 运行 Cheat Engine。
4. Hook 任何处理根视口地址的例程,或者在目标进程中找到指向它的静态指针,并将其存储在名为 'ptVP' 的符号中。
5. 会出现一个 `GDumper` 菜单项,点击 `Create Script`。
6. 运行 `Dumper` 让它尝试推测偏移量,或者自行定义它们,并使用与以下参数对应的值和偏移量调用 `initDumper`:`bOverrideAssumption, majorVersion, oChildren, oObjStringName, oGDScriptInstance, oGDScriptName, oFuncDict, oGDConst, oVariantNameHM, oVariantVector, oVariantNameHMVarType, oVarSize`
7. *(可选)* 调用 `DumpAllNodesToAddr()` 将根视口的所有节点转储到地址列表(如果过载可能会导致 CE 的 GUI 线程无响应),或者调用 `DumpNodeToAddr(memrec, getDumpedNode( "Globals" ), false)` 转储特定节点(两者均可异步调用)。
8. 使用 `nodeMonitor()` 启用/禁用节点的自动监控。
9. 在 'GDumper' 菜单中,启用 `GD Dissector` 并点击 `VP Struct` 以构建视口子节点结构。
## 贡献
对于我尚未实现或可以更高效实现的功能,我将非常感谢任何帮助或想法。
## 许可证
本项目基于 MIT License 发布。详情请参阅 [LICENSE](LICENSE)。
标签:Cheat Engine, CSV导出, GDScript, Godot Engine, JARM, Lua脚本, rizin, Ruby on Rails, Wayback Machine, x64, 云资产清单, 作弊引擎, 内存分析, 内存转储, 反汇编, 游戏安全, 游戏开发, 游戏逆向, 结构体分析, 节点提取, 运行时Hook, 逆向工程