# rustFrida **Repository Path**: ulong9464/rustFrida ## Basic Information - **Project Name**: rustFrida - **Description**: 牛皮时代的三分大赛封顶是否但是 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-03-19 - **Last Updated**: 2026-03-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # rustFrida ARM64 Android 动态插桩框架。 ## 环境要求 - Android NDK 25+(默认路径 `~/Android/Sdk/ndk/`) - Rust toolchain + `aarch64-linux-android` target - Python 3(构建 loader shellcode) - `.cargo/config.toml` 已配置交叉编译(仓库自带) ## 构建 最终产物 `rustfrida` 通过 `include_bytes!` 内嵌了 loader shellcode 和 agent SO,有严格的**构建顺序**: ``` loader shellcode ──┐ ├──→ rustfrida (主程序) agent (libagent.so) ┘ ``` ### 1. 构建 loader shellcode(bootstrapper + rustfrida-loader) ```bash python3 build_helpers.py # 输出: # loader/build/bootstrapper.bin # loader/build/rustfrida-loader.bin ``` loader 是 bare-metal ARM64 shellcode,被 `rustfrida` 通过 `include_bytes!` 嵌入。**修改 loader C 代码后需重新运行此步。** ### 2. 构建 agent(libagent.so) ```bash cargo build -p agent --release # 输出: target/aarch64-linux-android/release/libagent.so ``` agent 是注入到目标进程的动态库,包含 hook 引擎、QuickJS、Java hook 等。**必须先于 rustfrida 构建**,因为 rustfrida 通过 `include_bytes!` 嵌入 agent SO。 ### 3. 构建 rustfrida(主程序) ```bash cargo build -p rust_frida --release # 输出: target/aarch64-linux-android/release/rustfrida ``` rustfrida 内嵌了 `bootstrapper.bin` + `rustfrida-loader.bin` + `libagent.so`,是一个自包含的单文件。 ### 可选组件(单独构建) 这些不在 default-members 里,按需构建: **QBDI Trace 支持:** 需要先构建 qbdi-helper SO,再用 `--features qbdi` 编译 agent 和 rustfrida: ```bash cargo build -p qbdi-helper --release # → libqbdi_helper.so cargo build -p agent --release --features qbdi # agent 启用 qbdi feature cargo build -p rust_frida --release --features qbdi # rustfrida 嵌入 qbdi-helper SO ``` **eBPF SO 加载监控(`--watch-so`):** ldmonitor 是 rustfrida 的编译依赖,默认构建已包含,`--watch-so` 无需额外步骤。如需独立使用 ldmonitor 命令行工具: ```bash cargo build -p ldmonitor --release # → ldmonitor 独立二进制 ``` ## 部署 & 运行 ```bash adb push target/aarch64-linux-android/release/rustfrida /data/local/tmp/ # PID 注入 ./rustfrida --pid ./rustfrida --pid -l script.js # Spawn 模式(启动时注入) ./rustfrida --spawn com.example.app ./rustfrida --spawn com.example.app -l script.js # 等待 SO 加载后注入(eBPF) ./rustfrida --watch-so libnative.so # 详细日志 ./rustfrida --pid --verbose ``` ### REPL 命令 ``` jsinit # 初始化 JS 引擎 jseval # 求值表达式 loadjs