Relyze - Interaktiver Binary Disassembler & Diff Spickzettel
Relyze ist ein kommerzieller interaktiver Disassembler, Decompiler und Binary-Diffing-Plattform für native Software, die x86, x64, ARM32 und ARM64 unterstützt. Es analysiert PE/ELF-Binaries in Funktionen und Kontroll-Fluss-Graphen, bietet einen Decompiler zur Wiederherstellung höherstufiger Pseudocode und beinhaltet ein starkes Binary Diff-Engine zum Vergleichen zweier Versionen einer Binary — wertvoll für Patch-Analyse und Tracking von Malware-Varianten. Es ist über ein Ruby Plugin/Scripting-Framework erweiterbar. Eine kostenlose non-kommerzielle Version ist verfügbar.
Installation
| Schritt | Notizen |
|---|
| Download | Installer von der offiziellen Website erhalten (Windows) |
| Editionen | Kostenlos (Non-Kommerziell) und Professionell |
| Erstes Starten | Decompiler und Analyse-Optionen konfigurieren |
| Plugins | Ruby Scripting verfügbar out-of-the-box |
Analyse-Workflow
| Aktion | Beschreibung |
|---|
| Datei öffnen | Eine PE oder ELF Binary in Funktionen/CFG analysieren |
| Functions Ansicht | Entdeckte Funktionen durchsuchen |
| Graph Ansicht | Kontroll-Fluss-Graph der ausgewählten Funktion |
| Decompiler | C-ähnliche Pseudocode für eine Funktion zurückgewinnen |
| Strings | Referenzierte Strings und deren Xrefs auflisten |
| Imports/Exports | Import/Export-Tabellen inspizieren |
| Cross-References | Zu wo eine Funktion/Daten benutzt wird springen |
Navigation Grundlagen
| Aufgabe | Wie |
|---|
| Einen Symbol umbenennen | Auswählen und umbenennen (verbreitet zu Xrefs) |
| Kommentar | Instruktionen/Funktionen annotieren |
| Einem Call folgen | Auf ein Call-Ziel doppelklicken |
| Zu Adresse gehen | Adress-Navigations-Box |
| Ansicht wechseln | Disassembly / Graph / Decompiler umschalten |
Binary Diffing
Relyzes Diff-Engine gleicht Funktionen zwischen zwei Binaries ab und klassifiziert sie als identisch, verändert, hinzugefügt oder entfernt — der Kern-Workflow zur Analyse eines Sicherheits-Patches oder zum Vergleichen von Malware-Samples.
| Aufgabe | Wie |
|---|
| Einen Diff starten | Binary A öffnen, dann gegen Binary B diffing |
| Abgeglichene Funktionen | Funktionen überprüfen die über die beiden Builds gepaart sind |
| Veränderte Funktionen | Auf Funktionen fokussieren deren Code unterscheidet |
| Hinzugefügt/Entfernt | Sehen was der Patch einführte oder löschte |
| Annotationen portieren | Namen/Kommentare von einem Build zum nächsten tragen |
Patch-Analyse Muster: Die Pre-Patch und Post-Patch Binaries diffing, auf die kleine Menge veränderter Funktionen fokussieren und studieren was der Vendor behoben hat um die zugrunde liegende Verletzlichkeit zu verstehen.
Ruby Scripting
Relyze exponiert sein Analyse-Modell zu Ruby für Automatisierung.
# Konzeptuell: Funktionen iterieren und große kennzeichnen
model = Relyze::Engine.instance.active_model
model.functions.each do |func|
if func.instructions.length > 500
puts "Large function at #{func.address.to_s(16)}"
end
end
| Verwendung | Beispiel |
|---|
| Bulk Umbenennung | Naming-Heuristiken über Funktionen anwenden |
| Benutzerdefinierte Analyse | Muster erkennen (Crypto-Konstanten, Gadgets) |
| Daten exportieren | Funktionen/Strings in eine Datei dump |
| Diffing automatisieren | Vergleiche über viele Samples scriptieren |
Häufige Workflows
| Ziel | Ansatz |
|---|
| Einen Sicherheits-Patch verstehen | Vor/Nach Binaries diffing → veränderte Funktionen studieren |
| Eine native Sample triage | Strings + Imports → verdächtige Funktionen decompilieren |
| Malware-Varianten tracken | Neue Sample gegen ein bekanntes Family-Mitglied diffing |
| Logik wiederherstellen | Decompiler + umbenennen/kommentieren Absicht wiederherstellen |
Relyze vs Andere Disassembler
| Aspekt | Relyze | IDA Pro | Ghidra | Binary Ninja |
|---|
| Decompiler | Ja | Ja (Hex-Rays) | Ja | Ja |
| Binary Diff | Eingebaut | Add-on (BinDiff) | Plugins | Plugins |
| Scripting | Ruby | Python/IDC | Java/Python | Python |
| Kosten | Kostenlos + Pro | Kommerziell | Kostenlos | Kommerziell |
Ressourcen