工具

Ponce IDA 符号执行与污点分析插件

IDA Pro 插件,仓库简介称其获得 2016 年 IDA 插件大赛冠军,它把 Triton 框架的污点分析和符号执行引入 IDA 调试器,适用于 x86 和 x64 程序。分析人员对寄存器、内存或 argv、fread 读入的缓冲区等输入进行污点标记或符号化后,Ponce 会单步执行被调试程序,用 Triton 分析每条指令,并重命名受该输入影响的函数。其符号引擎可以求解分支条件,或将条件取反后把满足条件的输入注入内存,再借助执行快照恢复先前状态来尝试该输入;启用 Hex-Rays 支持的构建还会在反编译伪代码中显示分析结果。

使用条件与局限

  • 审阅时的最新版本为 v0.3.7,发布于 2023-06-01,提供 Windows、Linux 和 macOS 的预编译压缩包;Windows 压缩包包含适用于 IDA 7.0 至 8.1 的 Ponce.dll 和 Ponce64.dll,没有更新 IDA 版本的构建。README 称 Ponce 适用于 IDA 7.0 及以上任意版本,但必须使用为所装 IDA 版本编译的二进制。所审阅的 master 提交(2025-06-06)在该版本之后只增加了一项尚未完成的 CI 修复。
  • 安装时将对应构建复制到 IDA 的 plugins 目录;README 称原生支持 Windows、Linux 和 OS X。从源码构建需要 CMake 3.15+、目标版本的 IDA SDK(IDASDK_ROOT_DIR)以及 Triton,CI 通过 vcpkg 安装 Triton;伪代码反馈功能还需要来自附带 Hex-Rays 反编译器的 IDA 安装中的 hexrays.hpp,否则需使用 -DBUILD_HEXRAYS_SUPPORT=OFF。仓库中不含任何 SDK 文件,其 CI 从另一个非公开仓库克隆 SDK 压缩包,因此从源码构建需使用者自备 SDK。
  • Ponce 分析的是分析人员在 IDA 调试器中运行的程序,并逐条指令单步执行;README 称在作者测试中每秒约可处理 3000 条指令,printf 等常见库函数默认被列入黑名单、不参与分析。局限性文档指出,符号化的内存索引可能导致丢失对输入的跟踪,Triton 对浮点指令支持不佳,且混合执行只分析实际执行过的指令。
  • Ponce 本身采用 BSD 风格许可,LICENSE 中还收录了 Triton 的 BSD 许可和 Z3 的 MIT 许可;GitHub 未能识别该文件的许可类型。未确立与 REA 的关联,本次审阅未安装或运行任何内容。

关于此条目

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

来源复核于

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

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

一手来源

  1. README.md GitHub · illera88/Ponce · 修订 6858676
  2. docs/usage/symbolic-and-taint-engines.md GitHub · illera88/Ponce · 修订 6858676
  3. docs/usage/enable-disable.md GitHub · illera88/Ponce · 修订 6858676
  4. docs/usage/blacklist.md GitHub · illera88/Ponce · 修订 6858676
  5. docs/misc/ponce-limitations.md GitHub · illera88/Ponce · 修订 6858676
  6. docs/misc/building.md GitHub · illera88/Ponce · 修订 6858676
  7. CMakeLists.txt GitHub · illera88/Ponce · 修订 6858676
  8. .github/workflows/ci-windows.yml GitHub · illera88/Ponce · 修订 6858676
  9. LICENSE GitHub · illera88/Ponce · 修订 6858676
  10. https://github.com/illera88/Ponce/releases/tag/v0.3.7

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

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