面向 AI 驱动游戏逆向的实时进程内探针。
静态工具告诉你代码做了什么。 ReAgentLive 告诉你运行中的游戏此刻什么是真实的,并让你在不破坏任何东西的前提下进行测试。
实时。 它运行在游戏内部,从实时内存中作答,跟随游戏自身的 tick。 安全。 引用能感知对象何时消亡,写入会先做检查,变更可自行撤销。 即时。 无需数据库,无需数小时分析:关于代码的问题在毫秒内从实时字节中得到回答。
一流的 Unreal Engine 支持。 针对 SDK Dumper-7 为你的游戏生成的版本构建 Unreal 包,并按名称工作:查找对象、读取并跟随反射字段、调用函数、列出某个类的所有实例,全部在游戏线程上完成。其他一切(内存、代码、原生结构体)在任何游戏中都可用。
用常规工具让 AI 智能体面对运行中的游戏,它会撞上同样的墙:
ReAgentLive 正是围绕这些墙构建的。
将一个 DLL 加载到任意 x64 进程,这里是一个运行中的 Python 解释器,然后提问。无需游戏,无需 SDK,无需数据库。输出由控制台打印的 JSON 精简而来:
> reagentlive -c "search text PYTHONPATH --module python313.dll --paged --timing"
hits: python313.dll+0x2c1ca8 4.9 ms
> reagentlive -c "xrefs python313.dll+0x2c1ca8 --timing"
lea python313.dll+0x12ff02 in function +0x12fd64..+0x1301ce
scanned all of python313.dll 29.6 ms
> reagentlive -c "disasm python313.dll+0x12ff02 3"
+0x12ff02 lea rdx, [0x7FF827981CA8] string: "PYTHONPATH"
+0x12ff09 mov rcx, rbx
+0x12ff0c call python313.dll+0x1301d0
一个字符串、代码中使用它的每一处,以及它周围的代码:三条命令,耗时远不到一秒,直接取自进程正在运行的字节。每个地址都以 module + rva 的形式返回,可直接粘贴到你的反汇编器中。
这些特性中没有哪一项是新的。新的在于它们的组合。
| ReAgentLive | 常见做法 |
|---|---|
| 在进程内部,运行在宿主信任的线程上。不附加调试器,不安装自己的钩子 | 使用调试器、钩子框架,或从外部读取 |
| 与 tick 精确同步: 在引擎的线程上,一次回答中的所有内容都来自同一时刻 | 从外部读取导致撕裂读,或轮询 |
| 构造上安全: 引用会拒绝已被替换的对象,写入只覆盖你预期的字节,pin 和 trial 会自动过期 | 将原始写入交给 agent |
| 针对 AI 的成本而设计: 一个控制台,少量命令,每条命令完成一次完整查找,输出经过过滤,状态在多次运行之间保留 | 庞大的工具面,先填满上下文 |
| 即时: 从实时字节回答单地址代码问题,无需数据库 | 在得到第一个答案前需要数小时分析 |
| 反射与原始内存合于一个工具: Unreal 对象与原生结构体并排呈现 | 只能二选一 |
ReAgentLive 很安静。被询问时才回答,其余时间不干扰游戏:
OpenProcess,没有 ReadProcessMemory,没有调试器。请求通过一个命名的共享内存区传递。低占用意味着它不会干扰游戏。它并不意味着隐藏:参见它不是什么。
| 如果你想 | ReAgentLive 提供 |
|---|---|
| 查看游戏当前正在做什么 | 查找对象、转储它们、跟踪字段路径、读取容器、每个 tick 采样任意值 |
| 无需重新构建即可测试一个想法 | 受保护的写入、保持某个值的 pin、会自动撤销的 trial 写入、引擎调用 |
| 无需等待即可理解代码 | 快速通道:指令、引用、使用某个偏移的函数、签名检查 |
| 为你发现的东西命名 | 一次性为未反射的成员添加标签;将标签导出到你的静态工具 |
| 让 AI 完成上述所有工作 | 一个支持 JSON 输入输出的控制台、一个 Python 客户端,以及一个教授该方法的 skill |
own-thread 示例是一个可在任何 x64 进程中工作的 DLL:无需 mod、无需 SDK、无需游戏知识。
# From a Visual Studio x64 developer shell, in the ReAgentLive folder:
cmake -S examples/own_thread -B build/own-thread -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build build/own-thread
# Load reagentlive-own-thread.dll into the target with any DLL loader, then:
reagentlive -c "status; modules"
你会获得内存、快速通道和原生对象(vtable、指针链、region、字符串)。在没有 pid 的情况下,控制台会自行找到进程。
更多内容:own-thread 示例。
own-thread DLL 是快速进入的方式。当宿主在引擎的游戏线程上驱动 ReAgentLive 时,它处于最佳状态,驱动来自你已拥有的 mod 或 hook:
| 宿主驱动所在线程 | 你能获得 |
|---|---|
| 游戏线程 | 一切:对象和字段命令、引擎调用,以及一个代表游戏某一时刻的 tick(batch 和 get 会用 same_tick 说明它们是否落在同一个 tick 内) |
| 其他线程(它自己的线程,或帧呈现线程) | 内存、快速通道和原生对象;引擎命令会被拒绝,且同一 tick 内的读取不一定彼此一致 |
status 会说明你当前属于哪一种(host_thread)。如何进入游戏线程是宿主自己的事;每种选择能带来什么,见
hosting。
census(存在什么、刚刚生成了什么)和 each(在一个 tick 内跨所有实例读取一个字段)。
Unreal 包reagentlive 技能教授调查方法:规则、工作流、陷阱。技能核心不感知任何引擎。所有引擎相关的内容都放在一个包中:目前只有一个,用于 Unreal。内存、快速通道和原生对象在任何引擎中都已可用;包在此基础上增加对象、字段和调用。
接下来自然的包是 Unity(Mono 和 IL2CPP)和 Source 2。它们是候选,不是承诺:当真实项目需要时才会构建(backlog)。
ReAgentLive 是友好的邻居,而不是替代品。保留你的 IDA 或 Ghidra MCP 用于静态分析,保留你的 Cheat Engine MCP 或 Frida 用于扫描和 hook;ReAgentLive 是额外的工具,用于回答只有运行中的进程才能回答的问题,并且它把每个地址都以 module + rva 的形式交出,以便 agent 在它们之间传递。
| 邻居 | 它做什么 | ReAgentLive 提供给它 | ReAgentLive 从它获取 |
|---|---|---|---|
| 静态工具(主要搭配) | 完整函数、类型、反编译 | 实时值、module + rva、导出的标签、签名检查 | 名称、函数含义 |
| 引擎 dumper | 完整 SDK 和偏移 | 对偏移是否正确的实时检查 | 引擎未反射内容的名称 |
| 插桩工具 | 调用跟踪、hook | 精确地址、调用前后的实时状态 | 谁调用了谁 |
| 内存扫描器 | 缩小扫描范围、指针扫描 | 用于确认发现的稳定快照 | 候选地址 |
版本 0.1.0(更新日志):可用,且 API 在 1.0 之前仍可能 变化。Windows x64,C++23。已交付:进程内 agent、tick 精确读取、 受保护写入、pin 与 trial、Unreal 包、快速通道、原生 对象、控制台、Python 客户端和 own-thread 示例。 计划中的项目等待真实需求(待办列表)。
文档:从 docs/INDEX.md 开始:按任务组织的页面、每条 命令及其对应页面,以及一份术语表。
MIT(LICENSE)。依赖项均为 MIT:控制台使用 nlohmann/json 和 Zydis
(含 Zycore),在配置时获取;测试使用 doctest,
位于 third_party/。