# Dyninst 二进制插桩与分析库

> 源自 Paradyn 项目的二进制插桩、分析与修改库。DyninstAPI 可在运行中的程序里插入和修改插桩代码，也可改写磁盘上的可执行文件或库并写回修改后的副本；同一套与机器无关的接口还支持静态和动态分析。各组件有独立手册，分别负责符号表、行号与类型（SymtabAPI）、指令解码与反汇编（InstructionAPI）、解析为基本块、函数和循环（ParseAPI）、切片等数据流分析（DataFlowAPI），以及进程控制、栈回溯和代码修补。

- 类型：工具
- 目标：二进制
- 类别：调试与动态分析
- 关联：基础工具
- 来源复核于：2026-10-19
- 收录于：2026-10-19
- 原始资源：<https://github.com/dyninst/dyninst>
- 一手来源：<https://github.com/dyninst/dyninst/blob/0c083894f16d5ea9beb8ad1eea2b60b5c2f95f86/README.md>
- 目录页面：<https://awesomerea.org/zh/resources/dyninst/>
- 记录 JSON：<https://awesomerea.org/resources/dyninst/record.json>
- 英文版：[English](https://awesomerea.org/resources/dyninst/index.md)

## 使用条件与局限

- 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 的代码，适用其单独的版权声明。

## 一手来源

1. <https://github.com/dyninst/dyninst/blob/0c083894f16d5ea9beb8ad1eea2b60b5c2f95f86/README.md>
2. <https://github.com/dyninst/dyninst/blob/0c083894f16d5ea9beb8ad1eea2b60b5c2f95f86/README.md#L47-L63>
3. <https://github.com/dyninst/dyninst/blob/0c083894f16d5ea9beb8ad1eea2b60b5c2f95f86/docs/README.md>
4. <https://github.com/dyninst/dyninst/blob/0c083894f16d5ea9beb8ad1eea2b60b5c2f95f86/docs/dyninstAPI/manual-latex/Introduction.tex>
5. <https://github.com/dyninst/dyninst/blob/0c083894f16d5ea9beb8ad1eea2b60b5c2f95f86/docs/parseAPI/manual-latex/1-Intro.tex>
6. <https://github.com/dyninst/dyninst/blob/0c083894f16d5ea9beb8ad1eea2b60b5c2f95f86/docs/instructionAPI/manual-latex/1-Intro.tex>
7. <https://github.com/dyninst/dyninst/blob/0c083894f16d5ea9beb8ad1eea2b60b5c2f95f86/docs/dataflowAPI/manual-latex/Intro.tex>
8. <https://github.com/dyninst/dyninst/blob/0c083894f16d5ea9beb8ad1eea2b60b5c2f95f86/cmake/DyninstPlatform.cmake>
9. <https://github.com/dyninst/dyninst/blob/0c083894f16d5ea9beb8ad1eea2b60b5c2f95f86/CMakeLists.txt>
10. <https://github.com/dyninst/dyninst/blob/0c083894f16d5ea9beb8ad1eea2b60b5c2f95f86/cmake/DyninstLanguageStandards.cmake>
11. <https://github.com/dyninst/dyninst/tree/0c083894f16d5ea9beb8ad1eea2b60b5c2f95f86/cmake/tpls>
12. <https://github.com/dyninst/dyninst/blob/0c083894f16d5ea9beb8ad1eea2b60b5c2f95f86/LICENSE.md>
13. <https://github.com/dyninst/dyninst/blob/0c083894f16d5ea9beb8ad1eea2b60b5c2f95f86/COPYRIGHT>
14. <https://github.com/dyninst/dyninst/releases/tag/v13.0.0>

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

- [goblin 二进制格式解析库](https://awesomerea.org/zh/resources/goblin/index.md) · 工具
- [FLOSS 混淆字符串提取工具](https://awesomerea.org/zh/resources/flare-floss/index.md) · 工具
- [Zydis x86 反汇编与代码生成库](https://awesomerea.org/zh/resources/zydis/index.md) · 工具
- [QBDI 动态二进制插桩框架](https://awesomerea.org/zh/resources/qbdi/index.md) · 工具
- [binsider ELF 二进制分析终端界面](https://awesomerea.org/zh/resources/binsider/index.md) · 工具
- [iced x86 指令解码与汇编库](https://awesomerea.org/zh/resources/iced/index.md) · 工具

## 关于此条目

说明已依据一手来源复核。
原创说明采用 MIT 许可；外部项目、论文与素材保留各自的权利和许可。
