DynamoRIO/dynamorio
GitHub: DynamoRIO/dynamorio
动态指令操纵平台,支持在程序运行时对代码进行透明转换与分析。
Stars: 3057 | Forks: 606
# DynamoRIO

## 关于 DynamoRIO
DynamoRIO 是一个运行时代码操纵系统,支持在程序执行时对任意部分进行代码
转换。DynamoRIO 导出一个接口,用于构建针对多种用途的动态工具:
程序分析与理解、性能分析、插桩、优化、翻译等。与许多动态工具系统不同,DynamoRIO
不仅限于插入调用/跳转桩,允许通过强大的 IA-32/AMD64/ARM/AArch64 指令操纵库对应用程序指令进行任意修改。DynamoRIO 提供高效、透明且全面的未修改应用程序操纵能力,
这些应用程序运行在主流操作系统(Windows、Linux 或 Android)上,并使用通用的 IA-32、AMD64、ARM 和 AArch64 硬件。Mac OSX 支持正在进行中。
## 基于 DynamoRIO 的现有工具
DynamoRIO 是某些知名外部工具的基础:
- [Arm 指令仿真器(ArmIE)](https://developer.arm.com/Tools%20and%20Software/Arm%20Instruction%20Emulator)
- [WinAFL](https://github.com/googleprojectzero/winafl),作为 Windows 模糊测试工具的插桩和代码覆盖率引擎
- 针对 ARM 的细粒度性能分析器 [DrCCTProf](https://xl10.github.io/blog/drcctprof.html)
- 用于细粒度值性能分析器的可移植高效框架 [VClinic](https://github.com/VClinic/VClinic)
- 基于采样的安全分析框架 [GWPSan](https://github.com/google/gwpsan)
在 [发布包](https://dynamorio.org/page_download) 中提供的基于 DynamoRIO 的工具包括:
- 内存调试工具 [Dr. Memory](http://drmemory.org)
- 追踪与分析框架 [drmemtrace](https://dynamorio.org/page_drcachesim.html),包含多个工具,可对在线(支持多进程)和离线指令及内存地址追踪进行操作:
- 缓存模拟器 [drcachesim](https://dynamorio.org/sec_drcachesim_tools.html#sec_tool_cache_sim)
- [TLB 仿真](https://dynamorio.org/sec_drcachesim_tools.html#sec_tool_TLB_sim)
- [重用距离](https://dynamorio.org/sec_drcachesim_tools.html#sec_tool_reuse_distance)
- [重用时间](https://dynamorio.org/sec_drcachesim_tools.html#sec_tool_reuse_time)
- [操作码混合](https://dynamorio.org/sec_drcachesim_tools.html#sec_tool_opcode_mix)
- [函数调用追踪](https://dynamorio.org/sec_drcachesim_tools.html#sec_tool_func_view)
- 旧版处理器仿真器
[drcpusim](https://dynamorio.org/page_drcpusim.html)
- Windows 的 “strace” 工具 [drstrace](https://drmemory.org/page_drstrace.html)
- 代码覆盖率工具 [drcov](https://dynamorio.org/page_drcov.html)
- 库插桩工具 [drltrace](http://dynamorio.org/page_drltrace.html)
- 内存地址追踪工具 [memtrace](https://github.com/DynamoRIO/dynamorio/blob/master/api/samples/memtrace_x86.c)([drmemtrace](https://dynamorio.org/page_drcachesim.html) 的离线追踪在具备更多周边基础设施时速度更快,但这是一个更简单的定制内存地址追踪起点)
- 内存值追踪工具 [memval](https://github.com/DynamoRIO/dynamorio/blob/master/api/samples/memval_simple.c)
- 指令追踪工具 [instrace](https://github.com/DynamoRIO/dynamorio/blob/master/api/samples/instrace_x86.c)([drmemtrace](https://dynamorio.org/page_drcachesim.html) 的离线追踪在具备更多周边基础设施时速度更快,但这是一个更简单的定制指令追踪起点)
- 基本块追踪工具 [bbbuf](https://github.com/DynamoRIO/dynamorio/blob/master/api/samples/bbbuf.c)
- 指令计数工具 [inscount](https://github.com/DynamoRIO/dynamorio/blob/master/api/samples/inscount.cpp)
- 动态模糊测试工具 [Dr. Fuzz](http://drmemory.org/page_drfuzz.html)
- 反汇编工具 [drdisas](https://dynamorio.org/page_drdisas.html)
- 还包括更多内容,例如操作码统计、分支插桩等:请参见 [API 示例](https://dynamorio.org/API_samples.html)
## 构建自己的定制工具
DynamoRIO 强大的 API 抽象了底层基础设施的细节,允许工具构建者专注于分析或修改应用程序的运行时代码流。API 文档包含在发布包中,也可以[在线浏览](http://dynamorio.org/page_user_docs.html)。[过往教程的幻灯片](https://dynamorio.org/page_slides.html)也提供。
## 下载 DynamoRIO
DynamoRIO 可免费获取,[适用于 Windows 和 Linux 的二进制包](https://dynamorio.org/page_download.html)。
DynamoRIO 的[源代码](https://github.com/DynamoRIO/dynamorio)主要采用 [BSD 许可证](https://dynamorio.org/page_license.html)。
## 获取帮助
请使用[讨论列表](http://groups.google.com/group/DynamoRIO-Users)提问。
要报告错误,请使用[问题跟踪器](https://github.com/DynamoRIO/dynamorio/issues)。
另请参见 [DynamoRIO 首页](http://dynamorio.org/):[http://dynamorio.org/](http://dynamorio.org/)
标签:AArch64, AMD64, Android, Arm Instruction Emulator, drcachesim, DrCCTProf, Dr. Memory, drmemtrace, DSL, DynamoRIO, GWPSan, IA-32, UML, VClinic, WinAFL, ZAP项目解析, 二进制翻译, 云资产清单, 代码变换, 代码覆盖率, 内存调试, 动态二进制插桩, 动态仪器, 可配置连接, 客户端加密, 性能优化, 性能分析, 指令级操作, 检测绕过, 程序分析, 运行时插桩, 逆向工程