UnityRuntimeExplorer
Health Uyari
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 9 GitHub stars
Code Gecti
- Code scan — Scanned 6 files during light audit, no dangerous patterns found
Permissions Gecti
- Permissions — No dangerous permissions requested
Bu listing icin henuz AI raporu yok.
A live IL2CPP and Mono Unity runtime inspector with read-only MCP access, built on URKit
UnityRuntimeExplorer
UnityRuntimeExplorer is a runtime inspector for Windows Unity games. It loads
as a URKit mod and gives you a live view of the running process: scenes,
GameObjects, components, managed members, references, and selected runtime
values can be inspected without rebuilding the game.
The project is built on the URKit native
C++ SDK. URKit provides the loader, Unity bindings, Mono/IL2CPP runtime access,
main-thread dispatch, hooks, and ImGui integration. UnityRuntimeExplorer adds
the Explorer UI and the inspection model on top of those services.


Features
- Browse loaded scenes, hidden roots, and
DontDestroyOnLoadobjects. - Search GameObjects by name, tag, or instance ID.
- Inspect GameObjects, components, fields, properties, and methods.
- Read and edit supported values while the game is running.
- Copy and paste local transforms from the Inspector or the Hierarchy context
menu. - Duplicate, delete, enable, disable, and add components when the target game
and runtime support the operation. - Follow managed object references and open returned objects in the Object
Inspector. - Invoke methods with supported signatures.
- Trace managed methods, including callers, arguments, return values, ABI data,
and captured value types. - Focus the camera on an object and highlight it in the game.
- Use a dockable ImGui interface with DX11, DX12, and OpenGL render paths.
- Investigate the live game from MCP clients through a separate helper,
including managed type discovery and explicitly approved method tracing.
The Inspector resolves type and member information from the runtime rather than
using a game-specific type list. As a result, unsupported or unsafe operations
are reported as unavailable instead of being guessed.
Runtime support
Two plugin binaries are produced:
URK_Il2cpp_UnityRuntimeExplorer.dll # IL2CPP games
URK_Mono_UnityRuntimeExplorer.dll # Mono games
Use only the binary that matches the target game. The two plugins share the
Explorer UI and inspection code, but use different runtime backends.
Compatibility depends on the game's Unity version, generated metadata, runtime
exports, and the URKit version used to load the mod. Mono support also depends
on the embedding exports shipped by the game.
Installation
Install URKit first. Its repository contains
the current proxy, Mods folder, injector, and compatibility instructions.
Proxy and Mods folder
Create a
Modsfolder beside the game executable.Place the correct URKit proxy beside the executable. Preserve the original
proxy filename and do not copy every proxy variant.Place exactly one Explorer DLL in
Mods:URK_Il2cpp_UnityRuntimeExplorer.dll # IL2CPP game URK_Mono_UnityRuntimeExplorer.dll # Mono gameStart the game using the normal URKit launch path.
Press F7 to open or close the Explorer.
URKit injector
The optional URKitInjector.dll workflow loads the generated mod without a
proxy or a Mods folder:
- Inject
URKitInjector.dllinto the supported Windows x64 game. - Select the URKit
.inifile when prompted. - Select the Explorer DLL that matches the game's runtime.
Do not inject the Explorer DLL directly. It must be loaded by URKit.
If the Explorer does not appear, inspect URKit_logs.log beside the game
executable. The log usually identifies a wrong proxy name, an incompatible
backend, or a missing runtime export.
Building from source
Builds are supported on Windows with CMake, Ninja, and Clang.
Requirements:
- Windows 10 or newer, x64
- CMake 3.28 or newer
- LLVM/Clang
- Ninja
- Network access for the first configure, which downloads ImGui and the other
CMake dependencies
From the repository root:
cmake --preset clang-release
cmake --build --preset clang-release --parallel
For a debug build:
cmake --preset clang-debug
cmake --build --preset clang-debug --parallel
Release outputs are written to:
out/build/clang-release/URK_Il2cpp_UnityRuntimeExplorer.dll
out/build/clang-release/URK_Mono_UnityRuntimeExplorer.dll
out/build/clang-release/URK_UnityRuntimeExplorer_McpServer.exe
Run the test suite with:
ctest --test-dir out/build/clang-release --output-on-failure
MCP integration
MCP support is optional. The MCP server is not embedded in the injected DLL.
Instead, the architecture has three parts:
- The Explorer DLL runs inside Unity and owns all runtime access.
- A local Windows named-pipe bridge carries bounded requests to the Unity main
thread. URK_UnityRuntimeExplorer_McpServer.exeis a separate MCP server that
speaks JSON-RPC over stdio to the MCP client.
The helper discovers running Explorer instances through:
%LOCALAPPDATA%\URK\UnityRuntimeExplorer\bridges
When one compatible game is running, it attaches automatically. If several are
running, pass --game-pid <pid> in the MCP client configuration.
The MCP helper publishes a complete discovery and control catalog. Explorer's
Config tab is the authoritative permission boundary; clients cannot grant
themselves capabilities through tool arguments or helper flags.
| Tool | Purpose |
|---|---|
runtime_status |
Runtime backend, scene, GC, revision, and diagnostic status. |
discover_runtime |
Search GameObjects and loaded managed types in one bounded discovery pass. |
hierarchy_search |
Bounded search by name, path, tag, instance ID, component, or dynamic behaviour type. |
find_game_objects |
Rank objects by name/path, components, dynamic behaviour types, scene, activity, and semantic role. |
get_selected_object |
Return the object selected in the Explorer. |
inspect_game_object |
Inspect identity, state, transform, and components. |
list_components |
List component types and opaque component references. |
read_member |
Read one explicitly requested field or readable property. |
inspect_managed_object |
Traverse fields on components and ordinary managed objects; property getters are opt-in. |
read_array |
Page through managed arrays while preserving reference elements as opaque tokens. |
decode_byte_array |
Copy and decode bounded byte arrays as MessagePack, JSON, text, compressed-payload detection, or hex. |
start_instance_scan |
Start a direct Unity-object query or a time-sliced reachable managed-object scan. |
get_instance_scan |
Read scan progress and page through discovered managed instances. |
search_types |
Search loaded Mono/IL2CPP types and assemblies. |
search_members |
Search fields, properties, and methods across bounded matching types. |
inspect_type |
Inspect fields, properties, methods, and signatures. |
list_method_traces |
List active and retained trace sessions. Consecutive identical calls are grouped. |
get_method_trace |
Read decoded calls, callers, arguments, and results. Grouped calls include their range and repeat count. |
build_call_graph |
Aggregate caller-to-target relationships from captured calls, including grouped repeats. |
get_activity_log |
Read recent Explorer activity and MCP audit events. |
build_reference_graph |
Build a bounded graph for the current selection. |
get_watch_history |
Return watched values and recent changes. |
export_diagnostic_bundle |
Export a diagnostic bundle to the fixed local directory. |
write_member |
Write fields or writable properties using bounded JSON values and opaque references. |
mutate_game_object |
Rename, retag, relayer, activate, transform, duplicate, or destroy a GameObject. |
manage_component |
Add, remove, or enable components. |
load_scene |
Load a build scene by index or name. |
Object, component, managed-object, scan, type, method, and trace references are opaque, bounded
tokens. Managed pointers, native addresses, raw ABI values, and runtime handles
are never sent to the MCP client.
The Config tab provides Enable full access and Read-only preset actions,
plus independent controls for automatic discovery, property getters, writes,
method tracing, managed invocation, and destructive Unity operations. Tool
calls are schema-validated, bounded, rate-limited, and audited. Raw pointers,
native-address execution, scripting, and assembly loading remain outside the
MCP surface because they bypass Explorer's managed object/lifetime model.
A typical investigation is:
runtime_status
-> discover_runtime / find_game_objects / search_members
-> inspect_game_object / inspect_type / start_instance_scan
-> inspect_managed_object / read_array / decode_byte_array
-> start_method_trace
-> reproduce the behavior in game
-> get_method_trace / build_call_graph
-> stop_method_trace
Client-specific setup instructions, security properties, troubleshooting, and
remote HTTPS/tunnel guidance are in docs/MCP.md.
Compatibility and stability
Runtime inspection depends on the target game's metadata and runtime layout.
The same type or method can have a different ABI or managed representation in
another game. A member may also be unavailable because metadata was stripped,
the object was destroyed, or the operation is not safe to perform generically.
Tracing, live edits, method calls, and component operations can affect game
state or stability. Test with a restartable game session and keep backups of
any data that matters.
Troubleshooting
The Explorer does not open
- Confirm that URKit loaded the DLL matching the game's Mono/IL2CPP backend.
- Check
URKit_logs.logbeside the game executable. - Confirm that the proxy filename and
Modslayout match the URKit setup. - Press F7 after the game has reached its main menu or a loaded scene.
MCP reports that no bridge is available
- Start the game with the Explorer DLL loaded before starting the MCP client.
- Confirm that the helper executable exists at the configured path.
- If more than one game is running, configure
--game-pid <pid>. - Check
%LOCALAPPDATA%\URK\UnityRuntimeExplorer\bridgesfor a discovery
record and inspectURKit_logs.logfor runtime load errors.
An MCP reference has expired
Run find_game_objects or hierarchy_search again after a scene-generation
change. Object and component references survive ordinary hierarchy refreshes;
graph references remain tied to the hierarchy revision that produced them.
A member cannot be read
The member may be a property with side effects, stripped from metadata, opaque
to the generic inspector, or attached to a destroyed object. The tool returns
the failure instead of substituting a default value.
Project status
UnityRuntimeExplorer is under active development. Compatibility reports and
small, reproducible examples are especially useful when opening an issue.
Include the following information:
- game runtime: IL2CPP or Mono;
- Unity version, if known;
- the relevant section of
URKit_logs.log; - the type or method signature involved; and
- what the Explorer displayed and what you expected to see.
License
Copyright (c) 2026 Jadis0x. All rights reserved.
Yorumlar (0)
Yorum birakmak icin giris yap.
Yorum birakSonuc bulunamadi