CGO 2011 Tutorial: Building Dynamic Instrumentation Tools with DynamoRIO
Sunday afternoon, April 3, 2011,
at CGO 2011 in Chamonix, France.
Audience
Researchers and professionals interested in building dynamic program
analysis tools.
Abstract
This tutorial will present the DynamoRIO tool platform and describe how to
use its API to build custom tools that utilize dynamic code manipulation
for instrumentation, profiling, analysis, optimization, introspection,
security, and more. The DynamoRIO tool platform was first released to the
public in June 2002 and has since been used by many researchers to develop
systems ranging from taint tracking to prefetch optimization. DynamoRIO is
now publicly available in open source form. It handles large, complex,
real-world applications on both Windows and Linux on the IA-32 and
AMD64/Intel-64 platforms.
The first part of the tutorial will consist of presentations that
describe the full range of DynamoRIO's powerful API, which abstracts away
the details of the underlying infrastructure and allows the tool builder
to concentrate on analyzing or modifying the application's runtime code
stream. We will give many examples and highlight differences between
DynamoRIO and other tool platforms. We will also seek feedback on how we
can improve the DynamoRIO API.
The second part of the tutorial will include lab sessions where attendees
experiment with building their own tools using DynamoRIO. Attendees for
should bring a laptop with a Linux or Windows development environment:
gcc on Linux, Visual Studio on Windows, as well as CMake (which can be
installed at the tutorial if necessary).
Topics
- DynamoRIO API
- Observe and modify runtime code stream
- Insert call-outs to high-level code, inline operations, or
re-arrange and replace code at ISA level
- Event system for thread, library, fault, system call, etc. operations
- Cross-platform transparency support
- Application inspection
- Powerful IA-32/AMD64 instruction representation for disassembly,
decoding, encoding, and manipulation of instructions.
- Support for translation in presence of code modifications
- Example tools, both small and large
- Advanced topics when building sophisticated tools
- Lab sessions where attendees will build their own tools
Organizers
Derek Bruening is the primary author of the DynamoRIO tool platform.
Derek is a Software Engineer at Google where he works on the
Dr. Memory memory debugging tool, which is built on top of DynamoRIO.
Previously he built DynamoRIO-based tools at VMware and co-founded
Determina, whose Memory Firewall security technology was based on
DynamoRIO. Derek holds a PhD and MEng from MIT.
Qin Zhao is a post-doctoral researcher at MIT. He holds a
PhD from NUS (National University of Singapore). He has built several
large tools and frameworks with DynamoRIO, including the debugging
framework EDDI and parallel memory profiler and analyzer PiPA.
Questions
Questions about the tutorial can be sent to the
DynamoRIO-Users
mailing list.
References
|