工具

AngryGhidra Ghidra 符号执行插件

在 CodeBrowser 面板中调用 angr 符号执行的 Ghidra 扩展。分析者可用快捷键标记目标地址、可选的起始地址和需要避开的地址,并可将程序参数、内存区域或寄存器设为符号值,向内存和寄存器写入具体值,钩住指定指令,或把在 Ghidra 中修补的字节应用到 angr 项目。随附的 Python 脚本对程序的原始文件运行 angr 路径探索,反汇编列表会高亮找到的路径上的指令,面板则显示能到达目标地址的参数、内存和标准输入取值。

使用条件与局限

  • 审阅时最新版本为 1.1,发布于 2024-02-13,提供适用于 Ghidra 11.0 和 11.0.1 的预构建扩展包;较早的 0.1 版本附有 Ghidra 9.1.2 至 10.3 的构建。所审阅的 master 分支提交日期为 2024-07-29,比该版本多两个提交,改动了插件类型和 README。项目未说明与更新 Ghidra 版本的兼容性。
  • 需用 pip 为 Python 3 安装 angr,并将 python3 加入 PATH;插件以外部进程运行随附的 angryghidra.py,并通过临时文件 angr_options.json 传递分析者的设置。项目未固定 angr 版本。从源码构建时需设置 GHIDRA_INSTALL_DIR 并使用 Gradle,再在 Ghidra 中通过 File → Install Extensions 安装;若未弹出新插件提示,可在 File → Configure → Miscellaneous 中启用 AngryGhidraPlugin。
  • angr 会从 Ghidra 导入时记录的路径加载二进制文件,因此原始文件必须仍在该位置;原始二进制(Raw Binary)会按 Ghidra 语言对应的架构以 blob 方式加载。二进制文件以及寻找、避开、钩子和符号输入等设置都由分析者提供。路径爆炸、未建模的环境行为和求解器限制仍取决于 angr;找到的路径只给出一个满足条件的输入,并不能证明程序的性质。
  • README 以 angr 示例中的 SecurityFest 2016 fairlight CTF 题目作演示;项目未发布其他结果或测试。采用 MIT 许可证。本次未运行该扩展或 angr。

关于此条目

类型
工具
类别
原生分析工具
关联
基础工具
目标
二进制

来源复核于

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

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

一手来源

  1. README.md GitHub · Nalen98/AngryGhidra · 修订 0e6dc9c
  2. angryghidra_script/angryghidra.py GitHub · Nalen98/AngryGhidra · 修订 0e6dc9c
  3. src/main/java/angryghidra/AngrProcessing.java GitHub · Nalen98/AngryGhidra · 修订 0e6dc9c
  4. src/main/java/angryghidra/AngryGhidraProvider.java GitHub · Nalen98/AngryGhidra · 修订 0e6dc9c
  5. build.gradle GitHub · Nalen98/AngryGhidra · 修订 0e6dc9c
  6. extension.properties GitHub · Nalen98/AngryGhidra · 修订 0e6dc9c
  7. LICENSE.md GitHub · Nalen98/AngryGhidra · 修订 0e6dc9c
  8. https://github.com/Nalen98/AngryGhidra/releases/tag/1.1
  9. https://github.com/Nalen98/AngryGhidra/releases/tag/0.1

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

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