a0yark/MobileRE-AI

GitHub: a0yark/MobileRE-AI

一款面向 ARM64 Android 的移动逆向工作台,集成了内存扫描、硬件断点调试、Lua 脚本与 AI 工具调用能力。

Stars: 0 | Forks: 0

# MobileRE AI [简体中文](README.md) | [English](README_EN.md) 面向 ARM64 Android 12–16 的移动逆向工作台:在一台 root 手机上完成内存扫描、事务写入、冻结、指针链、硬件断点、寄存器/栈/反汇编、GDB Remote、Lua 自动化与 AI Tool Calling。 手机端是完整控制面;Windows 端提供 CLI、托盘、MCP 与 GDB bridge。默认 `STEALTH_HW` 配置按需进入 root 核心,不向目标装载常驻 agent,也不修改目标代码页。 [![Release](https://img.shields.io/github/v/release/a0yark/MobileRE-AI?display_name=tag&style=flat-square)](https://github.com/a0yark/MobileRE-AI/releases) [![CI](https://img.shields.io/github/actions/workflow/status/a0yark/MobileRE-AI/ci.yml?branch=master&style=flat-square&label=CI)](https://github.com/a0yark/MobileRE-AI/actions) ![Android](https://img.shields.io/badge/Android-12--16-3DDC84?style=flat-square&logo=android&logoColor=white) ![Architecture](https://img.shields.io/badge/ABI-arm64--v8a-blue?style=flat-square) ![Rust](https://img.shields.io/badge/Rust-1.93.1-000000?style=flat-square&logo=rust) ![Kotlin](https://img.shields.io/badge/Kotlin-2.4.10-7F52FF?style=flat-square&logo=kotlin&logoColor=white) ![KPM](https://img.shields.io/badge/GhostHook_KPM-1.15.14-5C2D91?style=flat-square) 仓库: ## 目录 - [它能做什么](#它能做什么) - [界面](#界面) - [快速开始](#快速开始) - [核心能力](#核心能力) - [调试配置](#调试配置) - [架构](#架构) - [Windows、MCP 与 GDB](#windowsmcp-与-gdb) - [实机结果](#实机结果) - [平台与能力状态](#平台与能力状态) - [工作空间](#工作空间) - [构建与测试](#构建与测试) - [发布](#发布) - [文档](#文档) - [许可](#许可) ## 它能做什么 ### 1. 建立并管理目标会话 - 从手机 UI、悬浮窗或 Windows CLI 枚举进程,按包名/PID 选择目标。 - Attach 时固定 `package + pid + process_start_ticks + ABI + session_generation`,识别 PID 复用与进程重启。 - 持续追踪 `/proc/PID/maps` generation、模块加载和进程退出;地址引用同时保存 absolute、module build-id/path hash、RVA 与 maps generation。 - 目标重启、映射变化或模块重载后,旧扫描结果、地址表项和事务会进入 stale 状态,避免误写到新进程实例。 - 当前采用单设备、单活动目标会话;手机 UI、AI、Lua、MCP 和 GDB 客户端共享同一个事件与资源视图。 ### 2. 从未知值定位到稳定地址 - 数值类型:`i8/i16/i32/i64`、`u8/u16/u32/u64`、`f32/f64`。 - 文本与原始数据:UTF-8、UTF-16、byte array、十六进制 pattern。 - 初次扫描:精确值、范围、未知初值、浮点 epsilon、对齐/非对齐、联合值与相对偏移 group scan。 - 二次筛选:`changed`、`unchanged`、`increased`、`decreased`、`increased-by`、`decreased-by`、精确值和范围。 - 区域选择:anonymous、heap、stack、module、executable、全部 readable map 与自定义地址范围;自定义范围会裁剪、排序并合并。 - 扫描器按 VMA 分块并行读取,raw-pattern hot loop 跨块处理边界;单任务有全局结果预算、取消令牌与进度事件。 - 读取后端按能力选择 `process_vm_readv`、`/proc/PID/mem` 或 GhostHook KPM 页表路径;不可读页会局部跳过,而不是丢弃整个区域。 - 结果按地址排序,使用 delta 编码、zstd 和分页索引保存;首屏、深分页与 AI 资源读取不需要一次装载全部结果。 - 值变换支持 XOR、加减、比例、字节序;`ValueTransform` 可扩展,Lua 自定义变换按向量批次执行。 ### 3. 筛选结果、写入、冻结与指针链 - 结果页可继续按地址、模块、RVA、当前值、数据类型和备注筛选,并可加入地址表。 - 写入支持单地址、批量地址、声明类型编码与 raw bytes;一次写事务默认上限为 4096 个地址或 8 MiB。 - 每个 `WriteTransaction` 保存原始字节、目标实例、maps generation、状态与回滚元数据,可 commit、单独 rollback 或在急停时批量回滚。 - 冻结器将相邻/重叠地址合并成区域写,默认 100 ms 周期,可按组启停;映射变化会先禁用组,再阻止后续写入。 - 地址表支持备注、分组、模块 RVA 归一化和 checkpoint;重新进入会话时会先验证目标身份与映射。 - 指针扫描支持 1–6 层、正负偏移范围、模块基址归一化、候选数限制、任务取消、checkpoint 和断点续扫。 - 大型 dump 与 pointer 结果通过 `mobilere://` 资源分页获取,并带 SHA-256/ETag 语义,供手机、AI 和 MCP 共用。 ### 4. ARM64 动态调试 - 硬件执行断点、读 watchpoint、写 watchpoint 和读写 watchpoint。 - 支持线程过滤、命中条件、一次性断点、命中计数、模块加载等待与 ASLR/RVA 转换。 - 命中事件包含线程、地址、断点类型、时间戳以及可用的 `x0..x30`、PC、SP、PSTATE 寄存器快照。 - 提供 continue、step into、step over;step over 通过 Capstone 分析 call/branch,并设置一次性临时断点。 - 提供逐线程寄存器读取、COMPAT 寄存器写入、栈读取、backtrace、模块列表、符号解析和 ARM64 反汇编。 - 处理 ARM64 PAC/TBI 地址规范化、BTI、4 KiB/16 KiB 页面、延迟加载模块和硬件槽位耗尽。 - GDB RSP 由核心生成并通过 Windows bridge 转发,可让 GDB、IDA 和 LLDB 接入同一会话。 - `RunControlLease` 保证同一时刻只有一个客户端控制执行流;其他客户端仍可读取事件,急停拥有最高优先级。 ### 5. 三套调试配置与 GhostHook KPM - `STEALTH_HW`:优先 GhostHook Direct BRP/WRP,其次 perf hardware + Aya event;不向目标加载常驻 agent,也不修改目标代码页。 - `HYBRID`:在硬件断点外加入精确 no-XOL Aya UProbe,其余地址可使用 Shadow DBI。 - `COMPAT`:加入 ptrace 运行控制与寄存器写入,覆盖更广的兼容路径。 - GhostHook KPM 1.15.14 提供直接 ARM64 BRP/WRP 管理、独立 execute/watchpoint 槽位与调试寄存器账本。 - Shadow Code 支持 EPAN dual-PFN 与 UXN execute-fault fallback,同页多 Hook、Before/After 回调和寄存器透明的远跳 gate。 - 指令插桩可在 PRE/POST 采集完整寄存器;Ghost DBI 能重建直接/间接分支、call/return、PAC/BTI 与固定 slot trace image。 - Ghost Memory 提供 VMA-less 分配、W^X protect、mmap collision guard;Shadow Data 提供可信数据视图。 - 内核数据面支持 VMA Dump/path、direct/bulk PTE memory、进程退出事件、多客户端 nonce、资源 quiescence 和确定性清理。 - kernel Trace、user Trace、fork 私有继承和 Ghost Agent/热重载实现由显式运行门隔离,默认 release 只发布已通过设备资格验证的 capability。 ### 6. Unity IL2CPP、Unreal 与符号工作流 - `EnginePlugin` 统一提供 detect、summarize、resolve_symbol、resolve_object 和 normalize_address。 - Generic 插件处理普通 ELF 模块、build-id、动态符号和模块/RVA 回退。 - IL2CPP 入口识别 `libil2cpp`、metadata、注册表以及标准类/字段/方法映射。 - Unreal 入口识别引擎模块、名称池、对象数组和模块级符号入口。 - 目标内 ELF 解析不依赖 `dl_iterate_phdr`;可从目标内存解析动态符号、GNU hash,并批量反查最近符号。 - v1 插件静态编入核心;协议已经保留 `plugin_id/plugin_version`,供后续签名插件包使用。 ### 7. 手机端 AI 自动化 - 原生支持 OpenAI、Anthropic、Gemini 与自定义 OpenAI-compatible endpoint。 - Provider 统一使用 `ModelRequest / StreamEvent / ToolCall / ToolResult`,支持流式输出、工具调用和取消传播。 - AI 与 UI、Lua、MCP 共享统一 Tool Registry;设备、扫描、写入、指针、调试、会话和急停工具具有同一参数模型。 - 上下文使用“结构化摘要 + 按需资源片段”;扫描结果、dump、日志和 pointer 结果按资源句柄分页,不直接塞入整段上下文。 - 全自动模式默认每轮最多 200 次工具调用或 30 分钟;扫描、写事务和执行控制还有独立预算。 - API key 写入 Android Keystore,优先 StrongBox、随后 TEE;普通设置、会话元数据和审计索引保存在 app-private Room/SQLite。 - 每个工具动作写入可导出的哈希链审计日志,包含调用方、参数摘要、结果、时间和前一条记录 hash。 ### 8. Lua 5.4 与 GG 脚本迁移 - 非 root Rust Lua runtime 承载脚本,通过 Tool Registry 请求特权能力。 - `mobilere.*` 提供强类型 device、target、scan、memory、pointer、debug、session 和 control API。 - GG 常用兼容层覆盖 `searchNumber`、`refineNumber`、`getResults`、`setValues`、`editAll`、`addListItems` 等调用。 - 类型编码、异步 job 等待、事务 ID、地址表和 GhostHook 工具均可从脚本访问。 - 脚本取消会传递到扫描/指针等后台 job;急停会同时终止脚本并清理本项目持有的 root 资源。 ### 9. Windows、MCP、GDB 与局域网 - `mobilere.exe` 提供设备发现、能力探针、进程/目标、工具调用、MCP stdio、MCP HTTP 和 GDB 转发。 - `mobilere-tray.exe` 提供设备、配对、连接状态、MCP/GDB 地址、证书管理、日志和急停。 - ADB 模式使用随机 abstract socket、一次性 token、显式 bootstrap intent 和 `adb forward`,Windows 仅监听 `127.0.0.1`。 - LAN 模式使用 mDNS `_mobilere._tcp.local`、QR nonce、60 秒配对码、手机 CA、客户端 CSR、mTLS 与证书撤销。 - MCP 遵循 `2025-11-25` Streamable HTTP,覆盖 Origin 校验、bearer token、session ID、SSE resume、DELETE 和取消通知。 - 对外暴露 76 个工具与 `mobilere://` 分页资源;默认 MCP HTTP 为 `127.0.0.1:19812`,GDB RSP 为 `127.0.0.1:3333`。 ### 10. 生命周期、恢复与急停 - Root Core 状态机为 `STOPPED → STARTING → READY → ATTACHED → STOPPING`,异常进入 `FAULTED`。 - App 每 5 秒发送心跳,15 秒超时后清理会话;App/root 进程退出时释放 perf FD、BPF link、冻结任务、GDB 和网络资源。 - APK 更新会校验 native core 版本、SHA-256 和协议主版本,版本不匹配时阻止建立业务通道。 - 急停会取消 job、停止冻结、释放 breakpoint/perf/BPF、关闭 GDB/LAN、回滚活动事务并结束 root 会话。 - P0/P1、EDBG matrix、GhostHook、runtime gates、MCP、LAN、Android API matrix 和 soak 均有自动化验证脚本与发布报告。 ### 项目边界与默认策略 - 首发目标为 Android 12–16、ARM64、root 设备。 - Windows 端定位为 bridge/CLI/托盘,完整交互界面位于手机端。 - 默认连接只使用 ADB loopback 或局域网 mTLS,不开机自启,不创建 KSU 常驻模块,不监听公网。 - KPM 高级路径依赖匹配的 SukiSU/KernelPatch 内核、符号与能力探针结果。 - 默认 `STEALTH_HW`、按需 root、内存加载 eBPF、零 BPF pin;会话结束后立即清理本项目资源。 ## 界面 Jetpack Compose + MIUIX 0.9.3,中文主界面,支持浅色/深色与悬浮窗。

MobileRE AI 首页 MobileRE AI 目标进程 MobileRE AI AI 自动化深色界面

## 快速开始 ### 直接使用 Release 1. 从 [GitHub Releases](https://github.com/a0yark/MobileRE-AI/releases) 下载: - `app-release.apk` - `mobilere.exe` - `mobilere-tray.exe` - `mobilere_ghosthook.kpm`(匹配 KPM 内核时使用) 2. 在 ARM64 Android 12–16 root 设备安装 APK。 3. 手机保持可见 Activity,连接 USB ADB。 4. 在 Windows 读取能力报告: .\mobilere.exe devices .\mobilere.exe --serial SERIAL device-info .\mobilere.exe --serial SERIAL processes 设备准备完成后,`device-info` 会返回 `READY`、内核版本、页大小、BPF/BTF、perf 与硬件槽位。 ### 从源码运行 git clone https://github.com/a0yark/MobileRE-AI.git cd MobileRE-AI # 检查 Java、Android SDK/NDK、Rust、eBPF 与 ADB .\scripts\doctor.ps1 -RequireDevice # 完整质量门 .\scripts\test.ps1 -IncludeEbpf -IncludeAndroidBuild # 构建 Debug APK .\scripts\build.ps1 -Configuration debug -EbpfMode Auto ## 核心能力 | 模块 | 实现 | |---|---| | Scanner | 并行分区扫描、raw-pattern hot loop、变化筛选、zstd/delta 结果页 | | Memory | `process_vm_readv/writev` → `/proc/PID/mem` → 可选 KPM PTE 路径 | | Transactions | 原始字节、目标实例、maps generation、commit/rollback/checkpoint | | Pointer | 1–6 层、偏移范围、模块归一化、取消 checkpoint、断点续扫 | | Debug | Direct BRP/WRP、perf/Aya、寄存器、step、backtrace、Capstone、GDB RSP | | GhostHook | EPAN dual-PFN、UXN DBI、VMA-less Ghost Memory、内核 VMA Dump | | Engine plugins | Generic、Unity IL2CPP、Unreal | | AI | 四类 Provider、流式事件、Tool Call、资源句柄、取消传播 | | Lua | Lua 5.4、`mobilere.*`、GG 常用兼容 API | | Transport | ADB abstract socket、LAN mDNS/QR/mTLS、MCP 2025-11-25 | | UI | Compose + MIUIX、悬浮窗、浅色/深色、固定急停 | 扫描地址与写事务绑定: (pid, process_start_ticks, maps_generation) 进程重启、PID 复用或选定映射变化会使旧结果进入 stale 状态,避免把旧地址用于新的进程实例。 ## 调试配置 | Profile | 断点/执行控制 | 寄存器 | 目标代码修改 | |---|---|---|---| | `STEALTH_HW` | GhostHook Direct BRP/WRP;其后是 perf hardware + Aya event | 命中时读取 | 无 | | `HYBRID` | hardware + 精确 no-XOL UProbe;其余地址使用 Shadow DBI | 命中时读取 | 由能力与配置决定 | | `COMPAT` | hardware + ptrace 运行控制 | 读写 | 由能力与配置决定 | 默认 `STEALTH_HW`。GhostHook 可用时直接管理 ARM64 调试寄存器;其余设备使用 perf FD 与内存加载 Aya/eBPF 对象。项目不创建 bpffs pin。 GhostHook KPM 1.15.14 默认开放已经完成 PKR110 实机资格验证的数据面。高级门: kernel_trace=1 user_trace=1 fork_inherit=1 MOBILERE_ENABLE_GHOST_AGENT=1 能力位只在对应门启用后出现。详细状态见 [GhostHook 能力对齐路线](docs/ghosthook-parity-roadmap.md)。 ## 架构 flowchart LR UI["Compose + MIUIX / Overlay"] --> REG["Tool Registry"] AI["AI Providers / Lua 5.4"] --> REG REG --> ROOT["libsu RootService"] ROOT --> CORE["Rust Root Core"] CORE --> SCAN["Memory Engine"] CORE --> DBG["Debug Engine"] CORE --> KPM["GhostHook KPM"] CORE --> PLUG["Generic / IL2CPP / Unreal"] PC["Windows CLI / Tray"] --> GW["ADB / LAN Gateway"] GW --> REG PC --> MCP["MCP / GDB loopback"] - AIDL 只负责生命周期、状态和 `ParcelFileDescriptor` - 业务数据走 socketpair 上的长度前缀 Protobuf - 单帧上限 1 MiB,大数据按 256 KiB 分块 - App 每 5 秒心跳,15 秒超时触发会话资源清理 - 单一 `RunControlLease` 控制执行流,其余客户端仍可订阅事件 - 急停取消任务、冻结、断点、GDB/LAN、活动事务与 root 会话 ## Windows、MCP 与 GDB # MCP stdio .\mobilere.exe --serial SERIAL mcp stdio # MCP Streamable HTTP + GDB Remote $env:MOBILERE_LOCAL_TOKEN = "LOCAL_TOKEN" .\mobilere.exe --serial SERIAL serve --http-port 19812 --gdb-port 3333 默认端点: MCP HTTP http://127.0.0.1:19812/mcp GDB RSP 127.0.0.1:3333 MCP 实现覆盖: - protocol `2025-11-25` - stdio 与 Streamable HTTP - bearer authentication 与 Origin 校验 - session ID、SSE resume、DELETE 与取消通知 - 76 个 device/scan/memory/pointer/debug/session/control tools - `mobilere://` 扫描、dump 与 pointer 分页资源 LAN 模式使用 mDNS `_mobilere._tcp.local`、一次性 QR nonce、手机 CA、客户端 CSR 与 mTLS。Windows 私钥以当前用户 DPAPI blob 保存。 ## 实机结果 主验收机: OnePlus PKR110 Android 16 / API 36 ARM64 / 4 KiB page SukiSU + KPM Kernel 6.6.89 Android GKI | 验收项 | PKR110 结果 | 门限 | |---|---:|---:| | 1 GiB i32 精确扫描 | 129 ms | ≤ 5 s | | 同规模 unchanged refine | 8 ms | ≤ 2 s | | 首/深结果分页中位数 | 177 / 181 ms | 首屏 ≤ 250 ms | | 急停 + 活动事务回滚 | 212 ms | 清理 ≤ 2 s | | Direct HWBP → Windows CLI | 397 ms,轮询阶段 191 ms | 持续优化 | | STEALTH_HW step-over | 172 ms | 持续优化 | | EDBG matrix | STEALTH_HW / HYBRID / COMPAT 全通过 | 全通过 | | MCP | stdio + HTTP,76 tools | 全通过 | | 短时 soak | 122.9 s / 13 轮 / 同一 boot | 关键内核签名新增 0 | 发布包的 `validation/` 包含 P0、P1、EDBG、GhostHook、运行门、MCP、LAN、API matrix 与 soak 报告。 ## 平台与能力状态 | 能力 | 状态 | |---|---| | Android 12–16 ARM64 构建契约 | `DONE` | | Android 16 / PKR110 实机 | `DONE` | | 精确/范围/变化扫描、写入、冻结、指针链 | `DONE` | | Direct HWBP/HWWP、GDB、三调试配置 | `DONE` | | 内核 VMA Dump、PTE memory、EPAN/UXN DBI | `DONE` | | OpenAI/Anthropic/Gemini/OpenAI-compatible | `DONE` | | Lua 5.4 + GG 常用接口 | `DONE` | | ADB/LAN/mTLS/MCP/Windows Tray | `DONE` | | kernel/user Trace | `GATED` | | fork 私有继承 | `GATED` | | Ghost Agent/热重载 | `GATED` | `GATED` 表示协议、控制面与实现已经存在,默认制品通过运行门隔离,进入匹配设备资格验证后再宣告能力。 ## 工作空间 apps/mobile/android/ Android Compose + MIUIX 控制端 rust/crates/core/ Root Core 与 Tool Registry rust/crates/scanner/ 扫描、结果、冻结、事务、指针 rust/crates/debug-engine/ HWBP、Aya、DBI、GDB、GhostHook client rust/crates/host-bridge/ Windows CLI、ADB/LAN、MCP/GDB bridge rust/crates/tray/ Windows 托盘 rust/crates/lua-runtime/ Lua 5.4 与 GG API rust/crates/engine-plugins/ Generic / IL2CPP / Unreal kernel/ghosthook-kpm/ GPL-2.0-only KPM 数据面 proto/ 版本化 Root RPC fixtures/ Generic / Unity / Unreal 验收 APK scripts/ 构建、打包与实机验证 docs/ 架构、设计、状态与验收记录 ## 构建与测试 固定工具链: - Java 21 - Kotlin 2.4.10 - compile/target SDK 36,minSdk 31 - Android NDK 28.2 - Rust stable 1.93.1 - Aya/eBPF nightly `2025-12-10` # Rust、Android、KPM、eBPF 与 fixture .\scripts\test.ps1 -IncludeEbpf -IncludeAndroidBuild # 实机产品路径 .\scripts\validate-p0.ps1 -Serial SERIAL .\scripts\validate-p1.ps1 -Serial SERIAL .\scripts\validate-edbg.ps1 -Serial SERIAL .\scripts\validate-ghosthook.ps1 -Serial SERIAL -RequireRuntime .\scripts\validate-runtime-gates.ps1 -Serial SERIAL .\scripts\validate-mcp.ps1 -Serial SERIAL .\scripts\validate-lan.ps1 -Serial SERIAL .\scripts\validate-android-api-matrix.ps1 -Serial SERIAL .\scripts\validate-soak.ps1 -Serial SERIAL -DurationMinutes 30 ## 发布 开发签名: .\scripts\package-release.ps1 ` -Version 1.0.0 ` -EbpfMode Windows ` -DevelopmentSigning 正式签名从环境变量读取 JKS 路径、store password、alias 与 key password。输出: dist/mobile-re-ai-1.0.0/ ├── app-release.apk ├── app-release.apk.idsig ├── mobilere.exe ├── mobilere-tray.exe ├── mobilere_ghosthook.kpm ├── ghosthook-kpm-source/ ├── validation/ ├── sbom/ ├── NOTICE.md ├── release-manifest.json └── SHA256SUMS ## 文档 - [架构与公共接口](docs/architecture.md) - [Root 生命周期与安全边界](docs/security-lifecycle.md) - [MCP、GDB 与 Windows bridge](docs/mcp.md) - [EDBG 状态与实机证据](docs/edbg-status.md) - [GhostHook 设计与实现](docs/ghosthook-design.md) - [GhostHook 能力对齐路线](docs/ghosthook-parity-roadmap.md) - [PKR110 实机验收记录](docs/device-validation.md) - [构建与发布](docs/release.md) ## 许可 - `kernel/ghosthook-kpm`:GPL-2.0-only - 第三方组件:依各自上游许可,详见 [NOTICE.md](NOTICE.md) 与发布 SBOM - 其余 MobileRE AI 自研代码:`LicenseRef-Proprietary`,详见 [LICENSE.md](LICENSE.md) 架构参考了 edbgserver 的 Rust/Aya/GDB 组织方式;项目保留对应 NOTICE 与依赖许可记录。
标签:Android, ARM64, DSL, Kotlin, Lua, Rust, 内存扫描, 可视化界面, 硬件调试器, 移动逆向工程, 网络流量审计, 通知系统