工具
Dyninst 二进制插桩与分析库
源自 Paradyn 项目的二进制插桩、分析与修改库。DyninstAPI 可在运行中的程序里插入和修改插桩代码,也可改写磁盘上的可执行文件或库并写回修改后的副本;同一套与机器无关的接口还支持静态和动态分析。各组件有独立手册,分别负责符号表、行号与类型(SymtabAPI)、指令解码与反汇编(InstructionAPI)、解析为基本块、函数和循环(ParseAPI)、切片等数据流分析(DataFlowAPI),以及进程控制、栈回溯和代码修补。
使用条件与局限
- CMake 平台检查接受 Linux、FreeBSD 和 Windows 主机,架构为 x86-64、32 位 x86、AArch64、ppc64le 和 riscv64,另有 AMD GPU 代码生成目标;InstructionAPI 文档列出 x86、x86-64、ARMv8-64 以及 32/64 位 PowerPC 指令解码。README 称 AArch64 动态插桩仍属实验性且不完整,已知问题包括不支持 Windows 64 位模式和 Windows 改写模式、重定位代码中的异常无法捕获、Windows 栈回溯不稳定,以及解析不含函数的二进制时会崩溃。
- 审阅时最新版本为 v13.0.0,发布于 2024-03-21。所审阅的 master 分支提交仍声明版本 13.0.0,领先该标签 590 个提交;README 说明随附的 v13.0.0 PDF 手册只是快照,了解当前行为需用 pdflatex 从源码构建手册。
- 可通过 Spack 安装,或从源码构建:需要 CMake 3.14+(拒绝 3.19.0)、C11/C++11 工具链(GCC 6+)、Boost 1.71+、TBB 2019.9+,在 Unix 上还需 elfutils 0.186+;docker 目录介绍了用于开发的 Docker 容器。用户需自备要分析或插桩的可执行文件、库或运行中的进程。
- 采用 LGPL-2.1 许可(LICENSE.md)。COPYRIGHT 将版权归于 Barton P. Miller,并列出 LLNS、Red Hat 和 Bull SAS 的贡献;DataFlowAPI 包含 Rose Compiler Project 的代码,适用其单独的版权声明。本条目未对任何二进制进行插桩或改写。
关于此条目
- 类型
- 工具
- 类别
- 调试与动态分析
- 关联
- 基础工具
- 目标
- 二进制
来源复核于
说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。
一手来源
- README.md GitHub · dyninst/dyninst · 修订 0c08389
- README.md#L47-L63 GitHub · dyninst/dyninst · 修订 0c08389
- docs/README.md GitHub · dyninst/dyninst · 修订 0c08389
- docs/dyninstAPI/manual-latex/Introduction.tex GitHub · dyninst/dyninst · 修订 0c08389
- docs/parseAPI/manual-latex/1-Intro.tex GitHub · dyninst/dyninst · 修订 0c08389
- docs/instructionAPI/manual-latex/1-Intro.tex GitHub · dyninst/dyninst · 修订 0c08389
- docs/dataflowAPI/manual-latex/Intro.tex GitHub · dyninst/dyninst · 修订 0c08389
- cmake/DyninstPlatform.cmake GitHub · dyninst/dyninst · 修订 0c08389
- CMakeLists.txt GitHub · dyninst/dyninst · 修订 0c08389
- cmake/DyninstLanguageStandards.cmake GitHub · dyninst/dyninst · 修订 0c08389
- cmake/tpls GitHub · dyninst/dyninst · 修订 0c08389
- LICENSE.md GitHub · dyninst/dyninst · 修订 0c08389
- COPYRIGHT GitHub · dyninst/dyninst · 修订 0c08389
- https://github.com/dyninst/dyninst/releases/tag/v13.0.0