Zum Inhalt springen

Relyze - Interaktiver Binary Disassembler & Diff Spickzettel

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

SchrittNotizen
DownloadInstaller von der offiziellen Website erhalten (Windows)
EditionenKostenlos (Non-Kommerziell) und Professionell
Erstes StartenDecompiler und Analyse-Optionen konfigurieren
PluginsRuby Scripting verfügbar out-of-the-box

Analyse-Workflow

AktionBeschreibung
Datei öffnenEine PE oder ELF Binary in Funktionen/CFG analysieren
Functions AnsichtEntdeckte Funktionen durchsuchen
Graph AnsichtKontroll-Fluss-Graph der ausgewählten Funktion
DecompilerC-ähnliche Pseudocode für eine Funktion zurückgewinnen
StringsReferenzierte Strings und deren Xrefs auflisten
Imports/ExportsImport/Export-Tabellen inspizieren
Cross-ReferencesZu wo eine Funktion/Daten benutzt wird springen
AufgabeWie
Einen Symbol umbenennenAuswählen und umbenennen (verbreitet zu Xrefs)
KommentarInstruktionen/Funktionen annotieren
Einem Call folgenAuf ein Call-Ziel doppelklicken
Zu Adresse gehenAdress-Navigations-Box
Ansicht wechselnDisassembly / 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.

AufgabeWie
Einen Diff startenBinary A öffnen, dann gegen Binary B diffing
Abgeglichene FunktionenFunktionen überprüfen die über die beiden Builds gepaart sind
Veränderte FunktionenAuf Funktionen fokussieren deren Code unterscheidet
Hinzugefügt/EntferntSehen was der Patch einführte oder löschte
Annotationen portierenNamen/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
VerwendungBeispiel
Bulk UmbenennungNaming-Heuristiken über Funktionen anwenden
Benutzerdefinierte AnalyseMuster erkennen (Crypto-Konstanten, Gadgets)
Daten exportierenFunktionen/Strings in eine Datei dump
Diffing automatisierenVergleiche über viele Samples scriptieren

Häufige Workflows

ZielAnsatz
Einen Sicherheits-Patch verstehenVor/Nach Binaries diffing → veränderte Funktionen studieren
Eine native Sample triageStrings + Imports → verdächtige Funktionen decompilieren
Malware-Varianten trackenNeue Sample gegen ein bekanntes Family-Mitglied diffing
Logik wiederherstellenDecompiler + umbenennen/kommentieren Absicht wiederherstellen

Relyze vs Andere Disassembler

AspektRelyzeIDA ProGhidraBinary Ninja
DecompilerJaJa (Hex-Rays)JaJa
Binary DiffEingebautAdd-on (BinDiff)PluginsPlugins
ScriptingRubyPython/IDCJava/PythonPython
KostenKostenlos + ProKommerziellKostenlosKommerziell

Ressourcen