Ricerca Automatica di Strutture Dati in Memoria per il Reverse Engineering di Programmi

View/ Open
Author
Zucca, Marco <2000>
Date
2025-03-27Data available
2025-04-03Abstract
In questa tesi, presentiamo una soluzione per identificare ed estrarre strutture dati da un
programma binario. Proponiamo un nuovo metodo per affrontare questo problema, utilizzando il dump
della memoria del processo del programma preso in esame e analizzandolo per estrarre le strutture dati
utilizzate nel programma ed altre informazioni come la loro dimensione. Questo approccio
non richiede il codice sorgente del programma, altre informazioni sul programma o
sul sistema, ma solo un dump della memoria del processo. Lo strumento che abbiamo sviluppato è un
adattamento di Fossil, uno strumento sviluppato per estrarre le strutture dati del kernel da un dump di memoria di una macchina senza sapere alcuna informazione sul sistema. Abbiamo adattato lo strumento per funzionare con programmi userspace, testandolo su un diversi programmi di uso comune,
programmi di test scritti in C realizzati per questo scopo e programmi che utilizzano librerie di strutture dati in C++,
dove siamo stati in grado di estrarre informazioni importanti sulle strutture dati utilizzate dal programma. In this thesis, we present a solution to identifying and extracting data structures from a
binary program. We propose a novel method to tackle this problem, by using the dump
of the memory process of the program taken in the exam and analysing it to extract data
structures used in the program and information like the size of them. This approach does
not require the program’s source code or any other information about the program or
the system, but only a memory dump of the process. The tool that we developed is an
adaptation of Fossil, a tool developed to extract kernel data structure from the memory
dump of a machine without any information about the system. We adapted the tool to
work with userspace programs, we tested it on a set of different commonly used programs,
C programs made for this scope and also a program that uses C++ data structures libraries,
where we were able to extract valuable information about the data structures used in the
program.
Type
info:eu-repo/semantics/masterThesisCollections
- Laurea Magistrale [5638]