Der weltweit erste agentische Reverse Engineer.
LLM-Orchestrierung zum Reverse Engineering von Binärdateien
Die meisten Aufgaben folgen einer linearen Beziehung: Je schwieriger eine Aufgabe, desto länger dauert sie normalerweise. Reverse Engineering (und Binäranalyse) ist eine Aufgabe, bei der die tatsächliche Schwierigkeit eher trivial ist, aber die Ausführungszeit in der Größenordnung von Stunden (und Tagen!) liegen kann, selbst für eine Binärdatei mit ein paar hundert Funktionen.
Kong automatisiert die mechanische Schicht unter Verwendung eines Reverse-Engineering-Frameworks auf NSA-Niveau. Kong kann eine vollständig obfuskatierte, gestrippte Binärdatei nehmen und eine vollständige Analyse-Pipeline durchführen: Funktionen triagieren, Call-Graph-Kontext aufbauen, Typen und Symbole durch LLM-gestützte Dekompilation wiederherstellen und die Ergebnisse zurück in Ghidras Programmdatenbank schreiben. Die Ausgabe ist eine Binärdatei, in der aus FUN_00401a30 nun parse_http_header wird, mit wiederhergestellten Strukturen, Parameternamen und Aufrufkonventionen.
Warum es das gibt
Gestrippte Binärdateien verlieren den gesamten Kontext, der Code lesbar macht: Funktionsnamen, Typinformationen, Variablennamen, Strukturlayouts. Die Wiederherstellung dieses Kontexts ist der Großteil der Arbeit bei den meisten RE-Aufgaben, und es ist größtenteils Mustererkennung: Erkennen von Standardbibliotheksfunktionen, Ableiten von Typen aus der Nutzung, Propagieren von Namen durch Call-Graphen.
LLMs sind genau für diese Art der Mustererkennung gut geeignet. Aber einen LLM auf rohe Dekompiler-Ausgabe zu richten und zu fragen "was macht das?" liefert mittelmäßige Ergebnisse. Dem Modell fehlt der Aufrufkontext, Kreuzreferenzinformationen und das größere Bild der Binärstruktur. Darüber hinaus führen die meisten obfuskierten Binärdateien extreme Techniken ein, um Reverse Engineering zu verhindern.
Kong löst dies, indem es reichhaltige Kontextfenster aus Ghidras Programm-Analyse (Call-Graphen, Kreuzreferenzen, String-Referenzen, Datenfluss) aufbaut, bevor der LLM überhaupt berührt wird, und dann die Analyse in Abhängigkeitsreihenfolge orchestriert, sodass jede Funktion davon profitiert, dass ihre Callees bereits benannt sind. Zusätzlich führt Kong seine eigene, erstmalige, agentische Deobfuskations-Pipeline ein.
Kong arbeitet mit den meisten Ghidra-dekompilierbaren Binärdateien (vorerst, mehr folgen).
| C | C++ | Go | Rust | |
|---|---|---|---|---|
| x86 | Hoch | Hoch | Mittel | Mittel |
| x86-64 | Hoch | Hoch | Mittel | Mittel |
| ARM (32-bit) | Hoch | Hoch | Mittel | Niedrig |
| AArch64 | Hoch | Hoch | Mittel | Niedrig |
| MIPS | Mittel | Mittel | Niedrig | Niedrig |
| PowerPC | Mittel | Mittel | Niedrig | Niedrig |
Hoch: Kong dekompiliert, deobfuskiert und stellt Namen, Typen und Struktur zuverlässig wieder her.
Mittel: Die Dekompilation ist brauchbar, aber verrauschter. Erwarten Sie teilweise Wiederherstellung und niedrigere Konfidenzwerte.
Niedrig: Die Dekompilation hat erhebliche Lücken und die Ergebnisse bleiben unvollständig, verrauscht oder unlesbar.
Hinweis: Die Binärdateigröße skaliert positiv mit der Funktionsanzahl, den LLM-Kosten und der Fertigstellungszeit. Allerdings skaliert die Binärdateigröße auch negativ mit der Konfidenz, denken Sie daran bei der Analyse größerer Binärdateien.
Kong verwendet eine fünfphasige Pipeline, die von einem Supervisor orchestriert wird, der Triage, parallele Analyse und Nachbearbeitung koordiniert: