Simulation additions

This commit is contained in:
2022-07-16 14:47:30 +02:00
parent 2406771a6f
commit f542b2c034
10 changed files with 435 additions and 183 deletions

View File

@@ -44,7 +44,7 @@ The following Section \ref{sec:dynamorio_core} will explain how the core functio
\label{sec:dynamorio_core}
A simple way to observe and potentially modify the instructions of an application during execution is the use of an interpretation engine that emulates the binary executable in its entirety.
One widely used framework that uses this technique is for example Valgrind\cite{Valgrind}.
One widely used framework that uses this technique is for example Valgrind \cite{Valgrind}.
At its core, Valgrind uses a virtual machine and just-in-time compilation to instrument the target application.
This approach might be powerful, but it comes at the cost of significantly reduced performance.
@@ -99,7 +99,7 @@ So a sophisticated application could try to detect the presence of an instrument
\label{sec:dynamorio_client}
With the inner workings introduced so far, the presence of DynamoRIO does not have an effect other than that the application is executed from the code cache.
DynamoRIO provides a programming interface to develop external so-called \textit{clients}\cite{Bruening2004}.
DynamoRIO provides a programming interface to develop external so-called \textit{clients} \cite{Bruening2004}.
Clients are user-written instrumentation tools and make it possible to dynamically modify the basic blocks, either to alter the application behavior or to insert observational instructions.
A DynamoRIO client is compiled into a shared library and passed to the \textit{drrun} utility using a command line option.
Clients implement a number of hook functions that will be called by DynamoRIO for certain events such as the creation of a basic block or of a trace.