Onderzoekers hebben CHISEL ontwikkeld, een innovatief framework dat gebruikmaakt van kunstmatige intelligentie om leesbare en compileerbare broncode te herstellen uit binaire bestanden zonder dat daarvoor vooraf gedefinieerde testsuites nodig zijn.
Het proces van decompilatie, waarbij men probeert om uit een binair bestand (machinecode) weer begrijpelijke broncode te genereren, is een complexe uitdaging binnen de informatica. Traditionele decompilers genereren vaak zogenaamde 'pseudo-C'-code. Hoewel deze code technisch accuraat kan zijn, is ze vaak moeilijk leesbaar voor mensen en kan ze niet direct opnieuw worden gecompileerd. Recente benaderingen die gebruikmaken van Large Language Models (LLM's) kunnen weliswaar leesbare code produceren, maar deze bevatten vaak semantische fouten, waardoor de code niet doet wat de oorspronkelijke software deed.
Een iteratieve aanpak zonder testsuites
In een recent onderzoek, dat is ingediend bij arxiv.org, presenteren Varun Kohli en collega-onderzoekers CHISEL. Dit framework is ontworpen om iteratief broncode te herstellen vanuit pseudo-C-code die is gegenereerd door Ghidra. Een cruciaal verschil met eerdere LLM-ondersteunde methoden is dat CHISEL geen externe testsuites vereist voor het semantische herstel.
Het systeem werkt door feedback te combineren uit twee verschillende bronnen:
1. Statische analyse: Feedback afkomstig van een compiler om de compileerbaarheid te controleren.
2. Differentiele analyse: Gebruik van een 'coverage-guided fuzzer' om te controleren of de herstelde code functioneel overeenkomt met het origineel.
Om de nauwkeurigheid te verhogen, maakt CHISEL gebruik van geavanceerde mechanismen zoals divergentiedetectie, een geheugen voor divergenties over verschillende iteraties heen en het behouden van de beste kandidaat-versies van de code.
Prestaties en resultaten
De effectiviteit van CHISEL is getest op 120 functies uit ExeBench, gecompileerd voor de x86-64 architectuur. Hierbij zijn verschillende optimaligraties (O0 tot en met O3) en zowel 'stripped' als 'unstripped' varianten gebruikt. Voor de AI-ondersteuning is gebruikgemaakt van het open-weight model Gemma4:31b.
Volgens de resultaten in de publicatie op behaalde het framework een gemiddelde re-compileerbaarheid van 96,1% en een re-executabiliteit van 79,8%. Dit resultaat werd gemiddeld bereikt in slechts 2,1 iteraties. Opvallend is dat CHISEL in staat was om 26% van de executiefouten uit de eerste generatie code te herstellen. Daarnaast bleek de 'feedback oracle' van het systeem betrouwbaar, met een foutieve acceptatiegraad van slechts 9,4%. De onderzoekers concluderen dat CHISEL significant beter presteert dan twee andere recente methoden voor LLM-ondersteunde decompilatie. Het werk is geaccepteerd voor publicatie in ACM CCS SURE 2026.
Context: De term 'chisel'
Hoewel de naam van het framework refereert aan het nauwkeurig 'uitbeitelen' van code, is een fysieke beitel een fundamenteel gereedschap in de ambachtswereld. Zoals beschreven door toolsgearlab.com, is een beitel een instrument met een specifiek gevormd blad dat wordt gebruikt om harde materialen zoals hout, steen of metaal handmatig te bewerken, vaak met behulp van een hamer of klopper.
Er bestaan talloze varianten van dit gereedschap. mechlesson.com legt uit dat beitels essentieel zijn in houtbewerkingsworkshops voor taken zoals het verfijnen van randen, het schoonmaken van pen-en-gatverbindingen en het maken van inkepingen. De verschillende types, variërend van beveled edge-beitels tot mortise-beitels, zijn elk aangepast aan specifieke bewerkingen.
Terwijl de fysieke beitel al circa 8.000 jaar wordt gebruikt om ruwe materialen om te vormen tot precisiewerken, past het CHISEL-framework dit concept digitaal toe door ruwe pseudo-code iteratief te verfijnen tot functionele broncode.