Skip to content

ltlly/MikuTrace

Repository files navigation

traceMiku

traceMiku 是面向 Android 真机 ARM64 的指令级动态追踪和运行时分析工具。它记录真实 执行路径,并提供 CFG、调用树、寄存器与内存查询、污点追踪、数据来源、密码特征扫描、 本地三层 IL 和 Web 交互分析。

项目不试图替代 IDA、Ghidra 或 Binary Ninja。静态工具负责完整代码结构,traceMiku 通过统一的 (SO, 静态偏移) 坐标补充真实跳转目标、运行时值、解密后内存和跨函数 数据来源。

目录

tracer/                         Frida 设备端采集器
rust/crates/tracemiku-core/     分析语义和数据模型
rust/crates/tracemiku-cli/      JSON CLI
rust/crates/tracemiku-server/   Axum API 与静态站点
frontend/                       Solid Web UI
tools/hooks/                    目标相关 JSON 配置
examples/                       示例配置与算法验证
docs/                           当前契约和专题指南

环境

  • Python 3.11+ 与 uv
  • Rust 工具链由 rust/rust-toolchain.toml 固定
  • Node.js 与 npm
  • 真机采集需要 adb、root 和 Frida 17.x

安装前端和采集器依赖:

npm --prefix frontend install
npm --prefix tracer install
npm --prefix tracer run build

_agent.js 是默认采集器,由 tracer/src/ 编译生成;仓库内的 agent_cmodule_v5.js 只用于 --mode legacy 回退。

快速开始

# 环境诊断
./tracemiku doctor --pkg com.example.app

# 采集指定导出函数
./tracemiku trace --pkg com.example.app --so libtarget.so \
  --method nativeFn --out traces/run1

# 不启用 Stalker 的轻量调用探测
./tracemiku probe --pkg com.example.app --so libtarget.so --duration 10

# 查看采集结果
./tracemiku list traces/run1 --json
./tracemiku info traces/run1/calls/<call_dir> --json

# 启动 Web UI
./tracemiku web traces/run1/calls/<call_dir> --port 18900

需要 Binary Ninja HLIL/CFG 时传入目标 SO:

./tracemiku web <call_dir> --so /path/to/libtarget.so --port 18900

面向 AI 的查询

CLI 是首选自动化入口,输出为结构化 JSON:

./tracemiku query <call_dir> resolve --so libtarget.so --off 0x1234
./tracemiku query <call_dir> indirect-targets --so libtarget.so --off 0x1234
./tracemiku query <call_dir> reg-at --reg x0 --so libtarget.so --off 0x1234
./tracemiku query <call_dir> mem-export --so libtarget.so --off 0x2000 --len 0x100
./tracemiku query <call_dir> coverage --fn trace:F0
./tracemiku query <call_dir> backward-taint --from 1000 --reg x0
./tracemiku dec <call_dir> --summary

完整命令以 ./tracemiku --help 和子命令 --help 为准。已有专用命令时不要使用通用 api,也不要仅为查询而启动 Web server。

分析边界

MemShadow 只对观测到的字节负责。来源 wrxi 分别表示 trace store、 trace load、外部写和初始快照;?? 表示未知,绝不能当作零。详情见 内存完整性设计

TraceIR、本地 LLIL -> MLIL -> HLIL 和 trace 增强反编译管线均为当前能力,区别见 反编译架构。Trace 目录及二进制格式见 Trace 数据契约

开发与测试

make test-fast       # Python 检查 + Rust core/CLI
make test-v2         # Rust 全工作区 + 前端构建 + CLI/API 一致性
npm --prefix tracer run typecheck
make test-device     # 需要 Android 设备

工程规则见 AGENTS.md,当前路线图见 TODO.md,性能基线见 BENCHMARKS.md

About

Android ARM64 真机指令级 trace 全栈: Frida Stalker 采集 + Textual TUI 查看器 + AI 友好 query 接口. 实测稳跑 200 万+ 条 cold-path.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages