En dekompilator gjør det motsatte av en kompilator, den oversetter maskinkode til kildekode som f.eks. Java eller C. En dekompilator er et essensielt verktøy for å forstå hvordan programvare fungerer, f.eks. i forbindelse med skadevareanalyse eller sårbarhetsanalyse når kildekoden er utilgjengelig.
Dekompilering er utfordrende blant annet fordi mye av informasjonen i kildekoden (f.eks. navn/symboler og typer) fjernes under kompilering til maskinkode. De mest kjente dekompilatorene i dag (Ghidra, Ida Pro, Binary Ninja) er alle basert på en semi-automatisert prosess der et menneske må korrigere og forbedre den dekompilerte koden i etterkant av dekompileringen.
Fordi det er mulig å genere store datamengder som kan brukes til å trene maskinlæringsmodeller til dekompilering, er det grunn til å tro at maskinlæring kan være til stor nytte i dekompileringsprosessen. Per i dag finnes det både maskinlæringsmodeller som kun er trent opp for å understøtte dekompileringen (f.eks. VarBERT), samt mer generelle store språkmodeller som er videretrent med dekompileringsdata (f.eks. LLM4Decompile). Til tross for dette, brukes ikke maskinlæring i stor grad av noen av de kjente dekompileringsverktøyene. I den senere tid har det imidlertid dukket opp flere plugins (f.eks GhidraChatGPT og GptHidraI) til disse verktøyene som bruker store språkmodeller til å forbedre kvaliteten til den dekompilerte koden.
I lys av denne utviklingen, ønsker vi at masterstudenten evaluerer hvor godt en eller flere av disse plugins-ene fungerer samt å foreslå forbedringer til disse, f.eks. ved å bruke en dedikert maskinlæringsmodell som VarBERT i stedet for en generell språkmodell som er videretrent på dekompileringsdata.