Resumen:
La información sobre los tipos y las estructuras que un programa utiliza son fundamentales en multitud de aplicaciones. Por ejemplo en el análisis de vulnerabilidades y fallos de programa, el depurador utiliza la información de tipos y estructuras contenidas en los símbolos del programa para proporcionar al analista información contextual sobre los contenidos de memoria que el programa accede. Sin embargo existen clases de programas como los programas propietarios y los programas malignos donde ni el código fuente ni los símbolos del programa están disponibles para un analista externo. Para abordar dichos casos se intentaron diversos enfoques para tratar de inferir "tipos" en la memoria de los programas simplemente utilizando las instrucciones que ejecuta la CPU. Estos enfoques van desde definiciones ad-hoc sobre los que intenta razonar sobre las operaciones primitivas que realizan las instrucciones ensamblador hasta sistemas de tipos formales (entendidas según la teoría de tipos) sobre una versión del programa lifteada. En la presente tesinade grado, se definió una formalismo general para realizar el tipado de la memoria utilizada por un programa de dinámicamente y recuperar su grafo de tipos a partir de la memoria reservada. También se realizó la evaluación de una implementación con x86 utilizando el formalismo de análisis binario BitBlaze sobre varios diversos programas binarios.
Dr.: Juan Caballero, IMDEA Software, Madrid, España