This thesis addresses the Inline Function Detection problem, which consists in detecting functions inlined in a binary executable or object file. We do so with a novel strategy that focuses on locating inlined functions within the target binary, aiming to overcome the limitations of the state of the art and enabling the detection of a broader range of pro- cedures. Existing approaches commonly rely on predefined sets of functions, simplifying the detection process but restricting their applicability. We implemented our approach and conducted extensive experiments on diverse datasets. The results demonstrated promising outcomes for some binaries, with Precision and Recall reaching up to 0.93 and 0.94, respectively. However, in other cases, the results were impractical. Additionally, we performed a comparative analysis of function inlining techniques em- ployed by two major C/C++ compilers, gcc and clang, providing valuable insights into the strengths, limitations, and practicality of our proposed solution. Overall, this thesis contributes significantly to the field of Inline Function Detection by ad- dressing the challenges and highlighting the strengths and limitations of our methodology.

Questa tesi affronta il problema della rilevazione di funzioni inline, che consiste nell’individuare le funzioni messe inline all’interno di un file binario. La strategia presentata in questo scritto mira a superare le limitazioni dello stato dell’arte, consentendo la rilevazione di una più ampia gamma di procedure. Gli approcci esistenti si concentrano solo su un set predefinito di funzioni, semplificando così il processo di rilevamento ma allo stesso tempo limitandone l’applicabilità. Abbiamo implementato il nostro approccio e condotto diversi esperimenti su un dataset eterogeneo di binari e librerie. I risultati si sono rivelati essere promettenti per alcuni binari, con Precision e Recall che hanno raggiunto un massimo rispettivamente di 0,93 e 0,94. Tuttavia, in altri casi, i risultati si sono rivelati essere scadenti. In aggiunta, questa tesi presenta un’analisi comparativa delle tecniche di inline utilizzate dai compilatori gcc e clang, fornendo preziose informazioni sui punti di forza, le limitazioni e la praticità della nostra soluzione proposta. Complessivamente, questo lavoro contribuisce in modo significativo al campo della rile- vazione delle funzioni inline mettendo in evidenza i punti di forza e le limitazioni della nostra metodologia.

Bytecode-based detection of inline functions in binary executables

Marazzi, Paolo
2022/2023

Abstract

This thesis addresses the Inline Function Detection problem, which consists in detecting functions inlined in a binary executable or object file. We do so with a novel strategy that focuses on locating inlined functions within the target binary, aiming to overcome the limitations of the state of the art and enabling the detection of a broader range of pro- cedures. Existing approaches commonly rely on predefined sets of functions, simplifying the detection process but restricting their applicability. We implemented our approach and conducted extensive experiments on diverse datasets. The results demonstrated promising outcomes for some binaries, with Precision and Recall reaching up to 0.93 and 0.94, respectively. However, in other cases, the results were impractical. Additionally, we performed a comparative analysis of function inlining techniques em- ployed by two major C/C++ compilers, gcc and clang, providing valuable insights into the strengths, limitations, and practicality of our proposed solution. Overall, this thesis contributes significantly to the field of Inline Function Detection by ad- dressing the challenges and highlighting the strengths and limitations of our methodology.
ZANERO, STEFANO
ING - Scuola di Ingegneria Industriale e dell'Informazione
18-lug-2023
2022/2023
Questa tesi affronta il problema della rilevazione di funzioni inline, che consiste nell’individuare le funzioni messe inline all’interno di un file binario. La strategia presentata in questo scritto mira a superare le limitazioni dello stato dell’arte, consentendo la rilevazione di una più ampia gamma di procedure. Gli approcci esistenti si concentrano solo su un set predefinito di funzioni, semplificando così il processo di rilevamento ma allo stesso tempo limitandone l’applicabilità. Abbiamo implementato il nostro approccio e condotto diversi esperimenti su un dataset eterogeneo di binari e librerie. I risultati si sono rivelati essere promettenti per alcuni binari, con Precision e Recall che hanno raggiunto un massimo rispettivamente di 0,93 e 0,94. Tuttavia, in altri casi, i risultati si sono rivelati essere scadenti. In aggiunta, questa tesi presenta un’analisi comparativa delle tecniche di inline utilizzate dai compilatori gcc e clang, fornendo preziose informazioni sui punti di forza, le limitazioni e la praticità della nostra soluzione proposta. Complessivamente, questo lavoro contribuisce in modo significativo al campo della rile- vazione delle funzioni inline mettendo in evidenza i punti di forza e le limitazioni della nostra metodologia.
File allegati
File Dimensione Formato  
Thesis.pdf

Open Access dal 25/06/2024

Descrizione: Tesi
Dimensione 2.98 MB
Formato Adobe PDF
2.98 MB Adobe PDF Visualizza/Apri
Executive_Summary.pdf

Open Access dal 25/06/2024

Descrizione: Executive summary
Dimensione 814.29 kB
Formato Adobe PDF
814.29 kB Adobe PDF Visualizza/Apri

I documenti in POLITesi sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/10589/208587