McSema: x86-Maschinencode in LLVM-Bitcode umwandeln

Das Framework zum Analysieren und Transformieren von Programmen im Maschinencode zu LLVM-Bitcode steht ab sofort unter eine BSD-Lizenz. Beim Übersetzen sollen auch Integer, Fließkommazahlen und SSE-Instruktionen keine Probleme bereiten.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 1 Min.
Von
  • Julia Schmidt

Das auf Computersicherheit spezialisierte Unternehmen Trail of Bits hat die Quellen seines McSema- Frameworks (kurz für Machine Code Semantics) zum Übersetzen von nativen Code in die Intermediate Representation der Compiler-Infrastruktur LLVM freigegeben. Im Juni stellten Mitarbeiter das Projekt auf der Sicherheitskonferenz REcon erstmals der Öffentlichkeit vor. Zweck der Entwicklung des Frameworks war es, binäre Anwendungen besser analysieren zu können.

Die Umwandlung in LLVM-Bitcode schien hier die beste Wahl, da sich der Code so eher nachvollziehen ließe als x86-Instruktionen und zudem einfacher für andere Architekturen aufbereiten. Darüber hinaus ergibt sich für Entwickler so die Möglichkeit, Werkzeuge für LLVM-Bitcode wie die Symbolic Virtual Machine KLEE oder PAGAI, mit dem sich statische Analysen durchführen lassen, mit dem Code zu nutzen. Im Gegensatz zu anderen Werkzeugen, die ähnliche Ziele verfolgen, kann McSema wohl unter anderem damit punkten, dass sich selbst angepasste Frontends zur Wiederherstellung des Kontrollflusses nutzen (Control Flow Recovery ist von Übersetzung getrennt) und FPU-Instruktionen einsetzen lassen.

McSema ist unter einer BSD-Lizenz geschützt. Der Quellcode steht auf GitHub zur Verfügung. (jul)