DynamoRIO is a runtime code manipulation system that supports code transformations on any part of a program, while it executes. DynamoRIO exports an interface for building dynamic tools for a wide variety of uses: program analysis and understanding, profiling, instrumentation, optimization, translation, etc. Unlike many dynamic tool systems, DynamoRIO is not limited to insertion of callouts/trampolines and allows arbitrary modifications to application instructions via a powerful IA-32/AMD64/ARM/AArch64 instruction manipulation library. DynamoRIO provides efficient, transparent, and comprehensive manipulation of unmodified applications running on stock operating systems (Windows, Linux, or Android) and commodity IA-32, AMD64, ARM, and AArch64 hardware. Mac OSX support is in progress.
Features
- The Arm Instruction Emulator (ArmIE)
- WinAFL, the Windows fuzzing tool, as an instrumentation and code coverage engine
- The fine-grained profiler for ARM DrCCTProf
- The portable and efficient framework for fine-grained value profilers VClinic
- The memory debugging tool Dr. Memory
- The tracing and analysis framework drmemtrace with multiple tools that operate on both online (with multi-process support) and offline instruction and memory address traces
- Build your own custom tools
- Documentation available