工具

fpicker Frida 插桩与覆盖率采集套件

基于 Frida 的闭源程序模糊测试套件,本条目收录的是其进程内插桩与覆盖率采集部分。经 Frida 注入的 JavaScript 测试框架会在分析者选定的函数处启动 Stalker,记录每次调用时目标模块中执行过的基本块,再提供给 AFL++ 的覆盖率位图或 fpicker 自己的独立模式。其被动模式相当于跟踪器:附加到正在运行的进程而不发送输入,并在出现新覆盖时保存到达该函数的输入及对应覆盖信息,可用于本机,也可用于通过 USB 或网络连接、运行 frida-server 的设备。

使用条件与局限

  • 项目没有发行版或标签。所审阅的 main 提交日期为 2025-07-24,将测试框架迁移到 Frida 17 API,Makefile 固定使用 frida-core 17.2.14。README 提供了一篇 2021 年博客文章作为背景,并称 fpicker 基于作者硕士论文期间开发的 ToothPicker,大部分在 ERNW 工作期间完成。
  • make fpicker-macos、fpicker-linux 或 fpicker-ios 用于构建 C 语言主程序;Makefile 会从 Frida 的 GitHub 发行页下载对应的 frida-core 开发包,但 README 仍描述手动放置开发包文件的旧做法。iOS 构建需在 macOS 上使用 Xcode 的 iPhoneOS SDK;测试框架脚本用 frida-compile 打包;只有 AFL++ 模式需要 AFL++,在 macOS 和 iOS 上须以 USEMMAP 编译。
  • 每个目标都需要手写测试框架,指明插桩开始的函数,进程内输入时还需说明如何调用该函数,因此须先在目标中确定该函数及其参数。README 提醒,若该函数在一次迭代中运行多次,覆盖率信息会变得不可靠。通过 USB 连接的设备无法使用共享内存通信,附加模式下目标崩溃后也不会重新启动。
  • 覆盖率仅涵盖插桩调用期间目标模块内的基本块,并非整个程序的跟踪。示例为项目自行编写的小型 C 程序及种子输入,另附 WiSec 2021 教程的幻灯片;仓库没有自动化测试或 CI。
  • 采用 MIT 许可;Frida 和 AFL++ 是各自采用其许可证的独立项目。所审来源未提及 REA 的使用,本收录未构建或运行任何程序。

关于此条目

类型
工具
类别
调试与动态分析
关联
基础工具
目标
应用 · 二进制

来源复核于

说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。

报告条目过时 建议修正翻译

一手来源

  1. README.md GitHub · ttdennis/fpicker · 修订 04f4b06
  2. Makefile GitHub · ttdennis/fpicker · 修订 04f4b06
  3. harness/fuzzer.js GitHub · ttdennis/fpicker · 修订 04f4b06
  4. harness/stalker-instrumentation.js GitHub · ttdennis/fpicker · 修订 04f4b06
  5. examples/protocol_example/README.md GitHub · ttdennis/fpicker · 修订 04f4b06
  6. examples GitHub · ttdennis/fpicker · 修订 04f4b06
  7. LICENSE GitHub · ttdennis/fpicker · 修订 04f4b06
  8. https://github.com/ttdennis/fpicker/commit/04f4b06b6c7a209986594a51bd51c8d8af7a75ea

同分区更多条目:原生二进制

原生二进制分区全部 118 项资源