dyninst/dyninst
GitHub: dyninst/dyninst
Dyninst 是一个强大的二进制插桩、分析和修改框架,支持运行时代码注入与静态二进制重写。
Stars: 818 | Forks: 170
# Dyninst
## 注意事项
* 已知问题应有相关的未关闭 issue。
* ARMv8 (64 位) 的动态插桩支持是实验性的且不完整。
有关当前支持功能的更多详细信息,请参阅 [Dyninst 对 ARMv8 (64 位) 的支持](https://github.com/dyninst/dyninst/wiki/DyninstAPI-ARMv8-status)。
## 构建 DyninstAPI 及其子组件
### Docker 容器
提供了可用于 Dyninst 开发的容器(例如,修改 Dyninst 并快速重建它)
或用于开发您自己的工具(例如,准备好包含 Dyninst 的容器)。当容器被推送到 Dyninst 相关的包注册表时,
链接将添加在此处。使用说明和本地构建说明在 [docker](docker) 目录中提供。
### 使用 Spack 安装
```spack install dyninst```
### 从源代码构建
1. 使用 CMake 配置 Dyninst
```cmake /path/to/dyninst/source -DCMAKE_INSTALL_PREFIX=/path/to/installation```
2. 并行构建并安装 Dyninst
```make install -jN```
如果这对您不起作用,请参阅 [Wiki](https://github.com/dyninst/dyninst/wiki) 获取详细说明。如果您遇到任何错误,请查看 [构建 Dyninst](https://github.com/dyninst/dyninst/wiki/Building-Dyninst) 或提交一个 [GitHub issue](https://github.com/dyninst/dyninst/issues)。
## 已知问题
* 尚不支持 Windows 64 位模式
* 尚不支持 Windows 重写器模式
* 重定位代码中的异常将不会被捕获
* 针对 32 位静态链接二进制文件的 Linux 重写器模式不支持包含 .plt、.rel 或 .rela 段的二进制文件
* 在进程的主线程以外的线程上发生 SIGSEGV 时,停止进程的线程或进程退出回调将导致死锁
* Windows 上的 Stackwalker 不稳定
* 解析没有函数的二进制文件(通常是单个目标文件)将在 CodeObject 销毁时崩溃。
标签:ARMv8, Assetfinder, Bash脚本, Binary Instrumentation, C++, CMake, DNS 反向解析, Docker, DyninstAPI, Fuzzing, JARM, Spack, TLS配置检查, UML, 二进制修改, 二进制插桩, 二进制翻译, 二进制重写, 云安全监控, 云资产清单, 内存分析, 动态二进制分析, 动态防护, 可配置连接, 安全防御评估, 客户端加密, 客户端加密, 底层安全, 性能分析, 恶意代码分析, 数据擦除, 漏洞分析, 程序分析, 请求拦截, 路径探测, 逆向工程, 配置文件, 静态分析