DynamoRIO/dynamorio

GitHub: DynamoRIO/dynamorio

动态指令操纵平台,支持在程序运行时对代码进行透明转换与分析。

Stars: 3057 | Forks: 606

# DynamoRIO ![DynamoRIO logo](http://www.burningcutlery.com/images/dynamorio/drlogo.png?) ## 关于 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项目解析, 二进制翻译, 云资产清单, 代码变换, 代码覆盖率, 内存调试, 动态二进制插桩, 动态仪器, 可配置连接, 客户端加密, 性能优化, 性能分析, 指令级操作, 检测绕过, 程序分析, 运行时插桩, 逆向工程