DBI, and DynamoRIO in particular, make designing a solution that can intercept memory reads and writes fairly trivial. The basic design involves having an analysis library that scans the instructions within a fragment that is being created. When an instruction that accesses memory is encountered, instrumentation code can be inserted prior to the instruction. The instrumentation code can be composed of instructions that notify an instrumentation function of the memory operand that is about to be read from or written to. This has the effect of causing the instrumentation function to be called when the fragment is executed. These few steps are really all that it takes instrument the memory access behavior of an application as it executes using DynamoRIO.