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)
- WinAFL,Windows模糊测试工具,作为插桩和代码覆盖率引擎
- ARM平台的细粒度分析器DrCCTProf
- 可移植高效的细粒度值分析器框架VClinic
- 基于采样的安全检查框架GWPSan
发布包中包含的基于DynamoRIO构建的工具有:
- 内存调试工具Dr. Memory
- 跟踪和分析框架drmemtrace,包含多个工具,可对在线(支持多进程)和离线指令及内存地址跟踪进行操作:
- 传统处理器模拟器drcpusim
- Windows平台的"strace"工具drstrace
- 代码覆盖率工具drcov
- 库跟踪工具drltrace
- 内存地址跟踪工具memtrace(drmemtrace的离线跟踪更快,且周边基础设施更完善,但这是定制内存地址跟踪的更简单起点)
- 内存值跟踪工具memval
- 指令跟踪工具instrace(drmemtrace的离线跟踪更快,且周边基础设施更完善,但这是定制指令跟踪的更简单起点)
- 基本块跟踪工具bbbuf
- 指令计数工具inscount
- 动态模糊测试工具Dr. Fuzz
- 反汇编工具drdisas
- 更多工具,包括操作码计数、分支插桩等:请参阅API示例
构建自定义工具
DynamoRIO强大的API抽象了底层基础设施的细节,使工具开发者能够专注于分析或修改应用程序的运行时代码流。API文档包含在发布包中,也可以在线浏览。我们过去教程的幻灯片也可获取。
下载DynamoRIO
DynamoRIO可免费获取,提供Windows和Linux的二进制包。DynamoRIO的源代码可用,主要采用BSD许可证。
获取帮助
使用讨论组提问。
要报告错误,请使用问题跟踪器。