Uninformed: Informative Information for the Uninformed

Vol 7» 2007.May


This approach is particularly elegant thanks to the concepts of dynamic binary instrumentation and to DynamoRIO itself for providing an elegant framework that supports inserting instrumentation code into the fragment cache. Since DynamoRIO is explicitly designed to be a runtime optimization engine, the fact that the instrumentation code is cached within the fragment cache means that it gains the benefits of DynamoRIO's fragment optimization algorithms. When compared to alternative approaches, this approach also has significantly less overhead once the fragment cache begins to become populated. This is because all of the instrumentation code is placed entirely inline with the application code that is executing rather than having to rely on alternative means of interrupting the normal course of program execution. Still, this approach is not without its set of considerations. Some of these considerations are described below:

  1. Requires the use of a disassembler
    DynamoRIO depends on its own internal disassembler. This can be a source of problems and limitations.
  2. Self-modifying and dynamic code
    Self-modifying and dynamically generated code can potentially cause problems with DynamoRIO.
  3. DynamoRIO is closed source
    While this has nothing to do with the actual concept, the fact that DynamoRIO is closed source can be limiting in the event that there are issues with DynamoRIO itself.