This folder contains an enhanced frida-trace implementation with a pluginized web panel for reverse engineering workflows.
Compared to default tracing output, this build adds:
- Live Register Panel (
__registers__/__registers_json__parsing) - Hotspot statistics (function/thread/caller, pending/enter/leave)
- Memory read and memory dump from UI
- Module/base/offset resolution helpers
- One-click offset locator with copy buttons:
module!offsetbase + offsetabsolute
- Collapsible floating UI panel (mini button + drag/snap behavior)
frida_tools/
├── tracer.py # Main Python entry + UI server + plugin loader
├── tracer_agent.js # Agent runtime logic
├── tracer_ui.zip # Bundled web UI assets (base UI)
├── plugins/ # Injected panel plugins (loaded in order)
│ ├── bootstrap.js
│ ├── panel_interaction.js
│ ├── resolver_locator.js
│ ├── register.js
│ ├── hotspot.js
│ └── runtime.js
└── ...
tracer.py injects plugin files into the served web UI at runtime.
Use frida-trace as usual. Example:
frida-trace -U -f com.example.app -i "libtarget.so!*" --ui-host 127.0.0.1When tracing starts, open the local UI URL printed in terminal, for example:
http://127.0.0.1:<port>/
- Shared state / base elements:
plugins/bootstrap.js - Floating panel behavior:
plugins/panel_interaction.js - Address/module/locator features:
plugins/resolver_locator.js - Register parsing/display:
plugins/register.js - Hotspot pipeline/display:
plugins/hotspot.js - WS message routing / request calls:
plugins/runtime.js
tracer.py loads plugins in strict order. If your feature depends on symbols/state from another plugin, place code after that dependency.
- Backend: emit/broadcast in
tracer.py - Frontend: register handler in
plugins/runtime.js - Prefer dedicated channels over polluting normal trace event output
When possible, include copyable values (absolute, base+offset, module!offset) and avoid requiring manual address math.
- This is a developer-oriented local package folder (
site-packages/frida_tools). - If you upgrade/reinstall
frida-tools, custom changes may be overwritten.