ReAgentLive
Health Uyari
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 6 GitHub stars
Code Gecti
- Code scan — Scanned 8 files during light audit, no dangerous patterns found
Permissions Gecti
- Permissions — No dangerous permissions requested
Bu listing icin henuz AI raporu yok.
Let AI agents explore a running game from the inside. Live, safe, instant.
ReAgentLive
The live, in-process probe for AI-driven game reversing.
Static tools tell you what the code does.
ReAgentLive tells you what is true in the running game, right now, and lets
you test it without breaking anything.
Live. It runs inside the game and answers from live memory, on the
game's own tick.
Safe. References that know when an object died, writes that check
first, changes that undo themselves.
Immediate. No database, no hours of analysis: questions about code
are answered from live bytes in milliseconds.
First-class Unreal Engine support. Build the Unreal pack against the
SDK Dumper-7 generates for your
game, and work by name: find objects, read and follow reflected fields,
call functions, list every instance of a class, all on the game thread.
Everything else (memory, code, native structs) works in any game.
The problem
Point an AI agent at a running game with the usual tools and it hits the
same walls:
- Reads from outside are torn. Two values read a moment apart never
came from the same frame. - Pointers go stale. An enemy respawns and yesterday's address is now
someone else's memory. - Raw writes crash things. One wrong byte, no undo.
- Static analysis is slow. Hours of whole-program analysis before the
first answer, and again after every patch. - Huge tool surfaces eat context. A hundred tools cost an agent its
budget before it does anything.
ReAgentLive is built around those walls.
30 seconds of it
Load one DLL into any x64 process, here a running Python interpreter, and
ask. No game, no SDK, no database. Output condensed from the JSON the
console prints:
> 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
A string, every place the code uses it, and the code around it: three
commands, well under a second, straight from the bytes the process is
running. Every address comes back as module + rva, ready to paste into
your disassembler.
Why it is different
No single one of these is new. The combination is.
| ReAgentLive | The usual way |
|---|---|
| Inside the process, on a thread the host trusts. No debugger attached, no hooks of its own | A debugger, a hooking framework, or reading from outside |
| Tick-accurate: on the engine's thread, everything in one answer comes from the same moment | Torn reads from outside, or polling |
| Safe by construction: references that refuse a replaced object, writes only over the bytes you expected, pins and trials that expire on their own | Raw writes handed to an agent |
| Shaped for an AI's costs: one console, few commands that each do a whole lookup, filtered output, state kept between runs | Large tool surfaces that fill the context first |
| Immediate: one-address code questions from live bytes, no database | Hours of analysis before the first answer |
| Reflection and raw memory in one tool: Unreal objects and native structs side by side | One or the other |
Low footprint
ReAgentLive is quiet. It answers when asked and otherwise stays out of the
game's way:
- No hooks of its own. The core never patches code or swaps a pointer;
where the tick comes from is the host's business. - No threads of its own. It runs on a thread the host already has. The
own-thread example adds exactly one, its tick; background search adds a
worker only when the host allows it. - No process handle. The client never opens the game process: no
OpenProcess, noReadProcessMemory, no debugger. Requests travel
through one named shared-memory section. - Next to nothing while idle: one atomic increment and one compare per
tick. Fixed buffers, no allocation at load.
Low footprint means it does not disturb the game. It does not mean hidden:
see what it is not.
What you can do
| If you want to | ReAgentLive gives you |
|---|---|
| See what the game is doing right now | find objects, dump them, follow field paths, read containers, sample any value every tick |
| Test an idea without rebuilding | guarded writes, pins that hold a value, trial writes that undo themselves, engine calls |
| Understand code without waiting | the fast lane: instructions, references, functions using an offset, signature checks |
| Name what you found | label unreflected members once; export labels to your static tool |
| Let an AI do all of the above | one console with JSON in and out, a Python client, and a skill that teaches the method |
Try it in five minutes
The own-thread example is a DLL that works in any x64 process: no mod,
no SDK, no game knowledge.
# 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"
You get memory, the fast lane and native objects (vtable, pointer chains,region, strings): the core, which needs no SDK. Unreal pack commands are
refused here, and status says which packs a host offers (packs). With
no pid the console finds the process on its own.
More: own-thread example.
Best on the game thread
The own-thread DLL is the fast way in. ReAgentLive is at its best when the
host ticks it on the engine's game thread, from a mod or a hook you
already own:
| Host ticks on | You get |
|---|---|
| The game thread | everything: object and field commands, engine calls, and a tick that is one moment of the game (batch and get say with same_tick whether they fit in one) |
| Another thread (its own, or the frame present) | memory, the fast lane and native objects; engine commands are refused, and reads in one tick need not line up |
status says which one you have (host_thread). How to get onto the game
thread is the host's business; what each choice gives is in
hosting.
Go further
- Unreal games: the Unreal pack over your Dumper-7 SDK adds objects,
reflected fields, function calls,census(what exists, what just
spawned) andeach(one field across every instance, in one tick).
Unreal pack - Your own mod as the host: tick the agent from the game thread and get
all of the above. Hosting - Logic outside the game: keep a tool or a mod's logic in its own
program and use the core as a lean in-process proxy.
Outside programs - AI agents: the
reagentliveskill teaches the investigation method:
rules, workflow, pitfalls. Skill
Where it can grow
The core knows no engine. Everything engine-specific lives in a pack:
today one, for Unreal. Memory, the fast lane and native objects already
work in any engine; a pack adds objects, fields and calls on top.
Natural next packs are Unity (Mono and IL2CPP) and Source 2. They
are candidates, not promises: one gets built when a real project needs it
(backlog).
Plays well with others
ReAgentLive is a friendly neighbour, not a replacement. Keep your IDA or
Ghidra MCP for the static side and your Cheat Engine MCP or Frida for
scanning and hooking; ReAgentLive is the extra tool for what only the
running process can answer, and it hands every address over asmodule + rva so the agent can carry it between them.
| Neighbour | It does | ReAgentLive gives it | ReAgentLive takes from it |
|---|---|---|---|
| A static tool (the main pairing) | whole functions, types, decompiling | live values, module + rva, exported labels, signature checks |
names, what a function means |
| An engine dumper | a full SDK and offsets | a live check that an offset is right | names for what the engine does not reflect |
| An instrumentation tool | call tracing, hooks | exact addresses, live state before and after | who calls what |
| A memory scanner | narrowing scans, pointer scans | a consistent snapshot to confirm a find | candidate addresses |
The safety model
- Writes check first. A write can require the bytes you expect to still
be there; otherwise it is refused and shows what it found. - Identity, not just addresses. An object reference carries its table
slot and serial, so a replaced object is refused instead of written into. - Changes that end on their own. Pins expire; a trial write restores the
original bytes when it expires or is cleared, and stops writing as soon as
its owner is replaced. - Engine calls only on the engine's thread. A host that ticks elsewhere
gets memory commands, and engine commands are refused. - Approval stays yours. Anything that can change game state is a
separate, explicit command.
What it is not
- Not an injector. Something inside the process has to call its tick:
your mod, or the example DLL loaded however you like. - Not "every engine" out of the box. Memory and code work in any
process; objects, fields and calls need an engine pack, and today there
is one, for Unreal (UE5 layouts, built against your SDK dump). - Not a debugger, decompiler or signature maker. It checks and reports;
analysis stays with your static tool and your agent.
Status
Version 0.1.0 (changelog): usable, and the API can still
change before 1.0. Windows x64, C++23. Shipped: the in-process agent, tick-accurate reads,
guarded writes, pins and trials, the Unreal pack, the fast lane, native
objects, the console, the Python client and the own-thread example.
Planned items wait for a real need (backlog).
Docs: start at docs/INDEX.md: pages by task, every
command and its page, and a glossary.
License
MIT (LICENSE). Dependencies, all MIT: nlohmann/json and Zydis
(with Zycore) for the console, fetched at configure; doctest for the tests,
in third_party/.
Yorumlar (0)
Yorum birakmak icin giris yap.
Yorum birakSonuc bulunamadi