Utilizzo di LLM per classificare le varianti del codice decompilato

Mostra/ Apri
Autore
Timossi, Luigi <2000>
Data
2026-03-27Disponibile dal
2026-04-02Abstract
Utilizziamo modelli linguistici di grandi dimensioni (LLM) per valutare e classificare le varianti del codice decompilato
al fine di affrontare la sfida intrinsecamente soggettiva di valutare la qualità dell'output del decompilatore e la
“somiglianza con l'umano”. Confrontiamo due approcci principali: l'utilizzo di metriche statistiche (perplexity
e total loss) e l'impiego di LLM come giudici qualitativi (LLM-as-a-Judge). Valutiamo
due modelli open weight, qwen-3 e deepseek-r1, su un set di dati di progetti C reali
decompilati con Ghidra (confrontando diversi commit e Pull Request) e
altri decompilatori.
I nostri risultati rivelano che la perplexity è un indicatore inadeguato della human-likeness, poiché il codice umano presenta
naturalmente un'entropia più elevata rispetto al boilerplate rigido e altamente ripetitivo generato
dai decompilatori. Dimostriamo che la total loss è una metrica quantitativa superiore, perché
accumula errori di previsione su tutti i token, penalizzando la verbosità altamente predittiva
dei decompilatori. Mostriamo che l'astrazione del codice in Abstract Syntax Trees (AST)
mitiga i pregiudizi lessicali specifici dei decompilatori. Parallelamente, l'approccio qualitativo LLM-as-a-Judge
mostra risultati molto promettenti, con deepseek-r1 che raggiunge un allineamento del ∼74%
con il consenso umano. Tuttavia, identifichiamo anche vulnerabilità critiche nei LLM, come l'
iperfissazione lessicale e le allucinazioni.
Questo lavoro stabilisce una linea di base per la valutazione automatizzata dei decompilatori ed evidenzia sia
il potenziale che i limiti dell'utilizzo degli LLM nei flussi di lavoro di reverse engineering. We use large language models (LLMs) to evaluate and rank decompiled code variants
to address the inherently subjective challenge of assessing decompiler output quality and
“human-likeness”. We compare two main approaches: using statistical metrics (perplex-
ity and Total Loss) and employing LLMs as qualitative judges (LLM-as-a-Judge). We
evaluate two open-weight models, qwen-3 and deepseek-r1, on a dataset of real-world C
projects decompiled with Ghidra (comparing different commits and Pull Requests) and
other decompilers.
Our findings reveal that perplexity is a poor proxy for human-likeness, as human code nat-
urally exhibits higher entropy compared to the rigid, highly repetitive boilerplate generated
by decompilers. We demonstrate that Total Loss is a superior quantitative metric, because
it accumulates prediction errors across all tokens, penalizing the highly predictive ver-
bosity of decompilers. We show that abstracting code into Abstract Syntax Trees (ASTs)
mitigates decompiler-specific lexical biases. In parallel, the qualitative LLM-as-a-Judge
approach shows significant promise, with deepseek-r1 achieving an alignment of ∼74%
with human consensus. However, we also identify critical vulnerabilities in LLMs, such as
lexical hyper-fixation and hallucinations.
This work establishes a baseline for automated decompiler evaluation and highlights both
the potential and the limitations of using LLMs in reverse engineering workflows.
Tipo
info:eu-repo/semantics/masterThesisCollezioni
- Laurea Magistrale [7402]

