Was macht radare2?
Binäre Analysefähigkeit für die radare2-CLI. Der Schwerpunkt liegt auf der direkten Arbeit mit der Kommandozeile für Reconnaissance, Analyse, Lokalisierung, Export und leichte Modifikationen – ohne GUI.
ACTION REQUIRED (Sofort nach dem Lesen ausführen)
NOW: Lese../field-journal/precedent-reverse.md– bestätige, dass die Nutzung dieser Skill autorisierte Routine istNOW: Prüfe, ob die aktuelle Aufgabe in den Geltungsbereich dieser Skill fälltNEXT: Lese../tool-index.md, überprüfe die Verfügbarkeit der Werkzeuge und deren tatsächlichen PfadNEXT: Bei fehlenden Werkzeugen rufe Bootstrap auf, rate keine PfadeACT: Beginne mit Schritt 1 des Workflows und führe ihn aus, bleibe nicht im Bestätigungsstatus hängen
Geltungsbereich
Diese Skill sollte bevorzugt eingesetzt werden, wenn der Benutzer Folgendes beabsichtigt:
- Analyse von
exe-,dll-,so-,elf-,apk-,dex-,wasm-Dateien mitr2/radare2 - Fragen zur Verwendung von
rabin2,rasm2,radiff2,rahash2,rax2 - Disassemblierung, Funktionssuche, Stringsuche, Import-/Exportansicht, Kreuzverweise, Patching über die Kommandozeile
- Schreiben von
radare2-Batch-Befehlen,-c-Automatisierungsbefehlen oderr2pipe-Skripten
Wenn der Benutzer explizit GUI-Reverse-Engineering, Hex-Rays-artigen Pseudocode oder IDA-Workflows wünscht, sollte ida-reverse bevorzugt werden. Bei Web-JS-Reverse-Engineering ist reverse-engineering die erste Wahl.
Vorbereitende Umgebungsprüfung
Gehe nicht automatisch davon aus, dass r2 verfügbar ist. Prüfe zuerst:
r2 -v
rabin2 -v
Wenn nicht installiert, überprüfe die üblichen Installationspfade oder weise auf die Installation hin.
Übliche Windows-Ausführbare:
radare2.exerabin2.exerasm2.exeradiff2.exerahash2.exerax2.exer2pm.exe
Integrierte Ressourcen
Diese Skill enthält zwei Ressourcen, die vorrangig verwendet werden sollten, anstatt jedes Mal ad hoc eine Reihe von Befehlen zusammenzustellen.
scripts/recon.ps1
Standard-Recon-Skript, ideal für eine erste Übersichtsanalyse. Es liefert:
- Basisinformationen
- Sektionen
- Importe
- Exporte
- Strings
- Optionale Zusammenfassung der
r2 -A-Autoanalyse
Aufruf:
powershell -File "<skill-root>\radare2\scripts\recon.ps1" -TargetPath "C:\path\to\sample.exe"
Mit r2-Autoanalyse:
powershell -File "<skill-root>\radare2\scripts\recon.ps1" -TargetPath "C:\path\to\sample.exe" -RunAnalysis
references/cheatsheet.md
Wenn weitere Befehlsdetails, Vorlagen für häufige Szenarien oder eine schnelle Erinnerung an die Syntax benötigt werden, lies dieses Cheatsheet – rate nicht aus dem Gedächtnis.
Bekannte Phänomene
Gelegentliche .sdb-Fehlermeldungen unter Windows
Bei der Reconnaissance mit rabin2 für bestimmte PE-Dateien können folgende Warnungen auftreten:
ERROR: Cannot find ...\share\format\dll\*.sdb
Wenn die Hauptausgabe dennoch korrekt zurückgegeben wird, beeinträchtigt dies normalerweise die grundlegende Reconnaissance nicht. Fahre zunächst fort. Aufgrund solcher Nebenerscheinungen sollte die Analyse nicht sofort als fehlgeschlagen betrachtet werden.
Grundprinzipien
1. Erst Recon, dann tief graben
Starte nicht sofort eine vollumfängliche Autoanalyse. Prüfe zuerst mit leichten Befehlen Dateityp, Architektur, Einstiegspunkt, Strings und Importtabelle, bevor du aaa, aaaa oder eine gezielte Analyse durchführst.
2. Bevorzuge minimal ausreichende Befehle
radare2 bietet sehr viele Befehle – der Benutzer benötigt meist nur den kürzesten Weg:
- Dateiinformationen:
rabin2 -I - Strings anzeigen:
rabin2 -z - Importe/Exporte anzeigen:
rabin2 -i/rabin2 -E - Interaktive Analyse:
r2 <datei>und dann lokale Befehle ausführen
3. Vorsicht vor Änderungen
Wenn der Benutzer einen Binärpatch durchführen möchte:
- Standardmäßig zuerst im Nur-Lese-Modus öffnen:
r2 <datei> - Nur wenn explizit eine Änderung erforderlich ist, den Schreibmodus verwenden:
r2 -w <datei>oder in der Sitzungoo+ - Vor der Änderung auf die Risiken hinweisen, um ein versehentliches Überschreiben der Originaldatei zu vermeiden
Übliche Workflows
Workflow 1: Schnelles Recon
Geeignet, wenn du gerade eine Binärdatei erhalten hast.
Harte Zutrittsschranke (MUST – ohne Erfüllung ist Workflow 2 und folgende nicht erlaubt)
Für Binärdateien mit Importtabellen (PE/ELF/Mach-O) MUSS vor der funktionsbezogenen Analyse oder dynamischen Schritten zuerst die Importtabelle überprüft und als Evidence dokumentiert werden:
- Führe
rabin2 -i <sample>aus (oder den imports-Bereich derrecon.ps1-Ausgabe); für DLL/SYS zwingend auchrabin2 -Eausführen und alsE-exportsnotieren - Schreibe das vollständige oder kategorisierte Ergebnis der Importtabelle als Evidence (empfohlene ID:
E-importsoderE-triage-imports), mindestens:- Reproduktionsbefehl (
repro_command) - Kategorisierte Zusammenfassung der wichtigsten Importe: Netzwerk / Datei / Kryptografie / Prozessinjektion / Registry / andere verdächtige APIs
- Wenn die Importtabelle leer ist, die Analyse fehlschlägt oder das Werkzeug einen Fehler meldet: MUSS das Fehlverhalten und die ursprüngliche Ausgabe dennoch als Evidence dokumentiert werden – nicht stillschweigend überspringen
- Bei einer „zu sauberen“ Importtabelle (nur Basis-DLLs): MUSS der Verdacht auf dynamisches Laden vermerkt werden, SOLLTE zur dynamischen API-Erfassung übergegangen werden
- Reproduktionsbefehl (
- .NET (ohne traditionelle IAT): MUSS über eine gleichwertige Verankerung (dnSpy/IL/Metadaten-Zusammenfassung) im selben Evidence-Slot dokumentiert werden – nicht leer durchgehen
- IAT-Reparatur bei gepackten Samples: x86 mit ImportREC (oder gleichwertig), x64 mit Scylla (oder gleichwertig). Bei fehlgeschlagener Reparatur MUSS
E-iat-repair-faildokumentiert und dann zu dynamischen API-Breakpoints übergegangen werden; verboten ist das endlose Verharren auf der statischen IAT (siehereverse-engineering/references/re-agent-workflow.md§1.2) - Wenn der Benutzer explizit eine „Wiederholung der Importtabellenprüfung / erneute Überprüfung der Importtabelle / Wiederholung der IAT“ anfordert: MUSS der benannte Schritt selbst wiederholt werden (bei Blockade zuerst die Machbarkeitsprüfung durchführen: Voraussetzungen erklären + um Bestätigung bitten; bei Erzwingung quality=unreadable setzen) – verboten, den Schritt durch einen nicht verwandten Schritt zu ersetzen und als erledigt auszugeben
Bis die Importtabelle (oder eine gleichwertige Verankerung / IAT-Fehlerumgehung) als Evidence dokumentiert ist: MUST NOT behaupten, die „Basis-Reconnaissance sei abgeschlossen“, MUST NOT in die tieferen Schlussfolgerungen von Workflow 2+ einsteigen.
Führe vorzugsweise direkt das integrierte Skript aus:
powershell -File "<skill-root>\radare2\scripts\recon.ps1" -TargetPath "sample.exe"
Wenn nur manuelle Minimalbefehle benötigt werden, verwende:
rabin2 -I sample.exe
rabin2 -z sample.exe
rabin2 -i sample.exe
rabin2 -E sample.exe
Schwerpunkte:
- Dateiformat, Bitanzahl, Architektur, Plattform
- Adresse des Einstiegspunkts
- Verdächtige Strings: URL, Pfade, Fehlermeldungen, Registry, Kommandozeilenparameter
- Importierte Funktionen: Netzwerk, Datei, Kryptografie, Prozessinjektion, Registry-Operationen (MUSS als Evidence dokumentiert werden, siehe harte Zutrittsschranke oben)
Workflow 2: Interaktive Funktionsanalyse
r2 sample.exe
Im interaktiven Modus häufig verwendet:
aaa # Standard-Autoanalyse
afl # Funktionen auflisten
iz # Strings auflisten
iS # Sektionen auflisten
is # Symbole auflisten
s entry0 # Zum Einstiegspunkt springen
pdf # Aktuelle Funktion disassemblieren
VV # Visuellen Modus betreten (wenn Terminal geeignet)
q # Beenden
Hinweise:
- Standardmäßig
aaabevorzugen, nicht gleich mit dem schwererenaaaabeginnen - Wenn das Sample sehr groß oder die Analyse langsam ist, kann nur die Umgebung des Einstiegspunkts analysiert und dann manuell erweitert werden
Workflow 3: main / Kernlogik lokalisieren
afl~main
afl~sym.
iz~http
iz~error
axt <addr>
Vorgehensweise:
- Zuerst von
main, Einstiegspunkt und String-Referenzen ausgehen - Mit
axtprüfen, wer auf einen String oder eine Adresse verweist - Nach dem Finden der Referenzstelle
s <addr>, dannpdf
Workflow 4: Hexadezimal- und Speicheransicht
px 64 # 64 Bytes ab aktueller Adresse hexadezimal
pd 20 # 20 Instruktionen disassemblieren
psz # String an aktueller Adresse lesen
pxa # Benutzerfreundlichere Hexadezimalansicht
Workflow 5: Binärpatch
Nur verwenden, wenn der Benutzer explizit die Datei ändern möchte:
r2 -w sample.exe
Im interaktiven Modus z. B.:
s 0x401000
wa nop
wa jmp 0x401050
wq
Häufige Schreiboperationen:
wa <asm>: Assemblierung schreibenwx <hex>: Rohbytes schreibenwq: Schreiben und beenden
Es ist ratsam, vor der Änderung eine Sicherungskopie der Originaldatei zu erstellen. Wenn der Benutzer keine Sicherung erwähnt, weise mindestens einmal darauf hin.
Workflow 6: Nicht-interaktive Automatisierung
Geeignet für einmalige Ergebnisausgabe:
r2 -A -q -c "afl;iz;ii;q" sample.exe
Häufig verwendete Parameter:
-A: Autoanalyse beim Start-q: Leiser Modus-c: Befehlsstring ausführen
Bei vielen Befehlen sollten diese in einer leicht lesbaren Reihenfolge angeordnet werden, anstatt einen unübersichtlich langen String zu verwenden.
Es wird empfohlen, zunächst das integrierte Recon-Skript zu verwenden und dann zu entscheiden, ob benutzerdefinierte Befehle ergänzt werden sollen.
Häufig verwendete Unterwerkzeuge
rabin2
Geeignet für die Extraktion statischer Informationen:
rabin2 -I sample.exe # Basisinformationen
rabin2 -S sample.exe # Sektionen
rabin2 -s sample.exe # Symbole
rabin2 -i sample.exe # Importe
rabin2 -E sample.exe # Exporte
rabin2 -z sample.exe # Strings
rabin2 -zz sample.exe # Detailliertere Strings
rasm2
Geeignet für schnelles Assemblieren/Disassemblieren:
rasm2 -d "9090"
rasm2 -a x86 -b 64 "xor eax, eax"
radiff2
Geeignet zum Vergleichen zweier Binärdateien:
radiff2 old.exe new.exe
radiff2 -C old.exe new.exe
rahash2
Geeignet zum Berechnen von Hashes:
rahash2 -a md5 sample.exe
rahash2 -a sha256 sample.exe
rax2
Geeignet für Zahlenbasis- und Kodierungsumrechnungen:
rax2 0x401000
rax2 4198400
rax2 -s hello
Empfohlene Analysereihenfolge
Bei unbekannten Samples in dieser Reihenfolge vorgehen:
rabin2 -I: Format, Architektur, Einstiegspunkt prüfenrabin2 -z: Strings prüfenrabin2 -i: Importierte Funktionen prüfen – MUSS + Evidence (harte Zutrittsschranke, siehe Workflow 1)- Falls interaktive Analyse erforderlich, dann in
r2einsteigen (nur wenn Evidence aus Schritt 3 dokumentiert wurde) - Zuerst
aaa, dannafl/iz/pdf - Über String-Referenzen, Import-Aufrufe und Einstiegspunkt-Ablauf schrittweise die kritischen Funktionen lokalisieren
Der Vorteil dieser Reihenfolge ist geringes Rauschen und eine schnelle Orientierung. Schritt 3 ist keine optionale Optimierung, sondern eine harte Zutrittsschranke vor dem tieferen Einstieg.
Windows-Hinweise
- Bei Pfaden mit Leerzeichen müssen die Befehle korrekt in Anführungszeichen gesetzt werden
- Wenn
r2im aktuellen Terminal nicht gefunden wird, wurde möglicherweise gerade diePATH-Variable aktualisiert – ein neues Terminal öffnen und erneut versuchen - Einige Samples benötigen Administratorrechte zum Lesen, aber standardmäßig keine Rechteerweiterung anfordern, es sei denn, der Benutzer benötigt es explizit
- Vor dem dynamischen Debuggen verdächtiger Samples zuerst die Absicht des Benutzers klären, um Fehlbedienungen zu vermeiden
Ausgabestil
Wenn der Benutzer nicht nur einen Befehl, sondern eine tatsächliche Dateianalyse wünscht:
- Zuerst eine Zusammenfassung der Reconnaissance-Ergebnisse geben
- Dann die wichtigsten Beweise auflisten: Strings, Importe, Funktionen, Adressen
- Abschließend einen nächsten Schritt vorschlagen oder die tiefergehende Analyse fortsetzen
Nicht einfach Befehle auflisten, ohne zu erklären, warum sie ausgeführt werden.
Typische Anfragebeispiele
Beispiel 1: Analyse einer exe
Benutzer: „Sieh dir bitte an, was diese exe macht, radare2 reicht.“
Vorgehen:
- Zuerst
rabin2 -I/-z/-iausführen - Prüfen, ob ein Einstieg in
r2erforderlich ist - Mit
aaa,afl,pdfden Einstiegspunkt und die Verweise auf kritische Strings tiefer analysieren
Beispiel 2: Finden, wo ein String aufgerufen wird
Benutzer: „In welcher Funktion wird dieser Fehlerstring ausgelöst?“
Vorgehen:
- Mit
iz~Schlüsselwortdie String-Adresse finden - Mit
axt <addr>die Verweise finden - Zur Verweisstelle springen (
s <addr>) und dannpdfausführen
Beispiel 3: Sprung ändern
Benutzer: „Ändere dieses jne in je.“
Vorgehen:
- Zuerst die Zieladresse bestätigen
- Explizit mitteilen, dass in den Schreibmodus gewechselt wird
wa je <target>verwenden oder direktwx- Nach der Änderung erneut disassemblieren, um zu überprüfen
Zu vermeidende Vorgehensweisen
radare2nicht als Werkzeug betrachten, das nur einen Befehl (aaa) kennt- Die Datei des Benutzers nicht ohne Risikoaufklärung im Schreibmodus öffnen
- Keine Schlussfolgerungen ziehen, bevor die grundlegende Reconnaissance durchgeführt wurde
- Die Prüfung der Importtabelle nicht überspringen (
rabin2 -i/ recon imports): Ohne dokumentiertes Evidence darf kein nächster Schritt erfolgen; bei Aufforderung zur Wiederholung der Importtabelle ist es verboten, einen anderen Schritt durchzuführen - Nach fehlgeschlagener IAT-Reparatur nicht statisch verbohren:
E-iat-repair-faildokumentieren und dann zum dynamischen Ansatz übergehen; bei 64-Bit-Samples nicht nur ImportREC verwenden - Keine Web-JS-Reverse-Engineering-Aufgaben fälschlicherweise dieser Skill zuweisen; das fällt in den Bereich
reverse-engineering
Referenzen
- Befehls-Cheatsheet:
references/cheatsheet.md - Standard-Recon-Skript:
scripts/recon.ps1
radare2-skills-Ökosystem
Das radare2-skills-Projekt (radareorg/radare2-skills) bietet eine umfassendere Tool- und Workflow-Umgebung:
- r2xsql: SQL-Abfragen der Importtabelle / Strings / Funktionen einer Binärdatei
- r2mcp / r2http: MCP-Tool und HTTP-basierter zustandsbehafteter Befehlskanal
- radius2: Symbolische Ausführung, symbolische dynamische Analyse
- r2pm: Plugin-Verwaltung, Erweiterungen
- Decompiler-Plugins: Plug-in-Mechanismus von radare2
Verwendungsstrategie:
- Wenn der Benutzer
r2xsql,r2mcp,r2http,radius2,r2pm,rabin2,rasm2,radiff2,rahash2,rax2erwähnt, wird die Anfrage vorrangig an diese Skill (radare2/SKILL.md) weitergeleitet - Diese Werkzeuge sind nur Beschleuniger des Ökosystems und dürfen nicht umgehen: Autorisierungshürden,
tool-index-Prüfung, Evidence-Import, Bestätigung des Schreibmodus - Gib minimale reproduzierbare Befehlsbeispiele:
r2xsql -s <file> -q "SELECT ..."curl.exe -sS --data-binary 'aaa' http://127.0.0.1:9393/cmdradius2 -p <binary> ...r2pm -ci <plugin>
Diese Skill behält die harten Zutrittsschranken und die Integrität der Beweiskette bei – es ist nicht erlaubt, Autorisierungs- oder Evidence-Schritte zu überspringen.
Routing-Kontext
Eingang: skills/SKILL.md (Hauptsteuerung), routing.md
Alternativen: ida-reverse/ (bei Bedarf an Dekompilierung/Pseudocode auf IDA hochstufen)
Ausgänge:
- Bei Bedarf an dynamischer Analyse →
reverse-engineering/tools-dynamic.md(Frida/GDB) - Bei Bedarf an tiefergehender Dekompilierung →
ida-reverse/ - Wenn PAT interessante Strings findet und Kreuzverweise benötigt →
ida-reverse/(IDAs xref ist leistungsfähiger)
Schwestermodule auf gleicher Ebene: ida-reverse/ (komplementär: r2 schnelle Recon, IDA tiefe Dekompilierung)
On-Demand-Bootstrap
Das Einstiegsskript dieser Skill ist an das einheitliche Bootstrap-System angebunden. Wenn radare2 fehlt, wird nicht sofort ein Fehler gemeldet, sondern automatisch versucht, es zu installieren.
Automatisierungsfähigkeiten
| Werkzeug | Automatisch installierbar | Installationsmethode | Hinweis |
|---|---|---|---|
| r2 | ✓ | GitHub Release ZIP (w64) | Automatischer Download und Extraktion nach %USERPROFILE%\Tools\radare2\ |
| rabin2 | ✓ | Wie oben (im radare2-Release-Paket enthalten) | – |
| rasm2 | ✓ | Wie oben | – |
| radiff2 | ✓ | Wie oben | – |
| rahash2 | ✓ | Wie oben | – |
| rax2 | ✓ | Wie oben | – |
Bootstrap-Auslösepunkte
scripts/recon.ps1: Bei fehlendemrabin2oderr2wird automatischbootstrap-reverse.ps1aufgerufen
Bei Bootstrap-Fehlern
Wenn die automatische Installation fehlschlägt (Netzwerkfehler, GitHub-API-Rate-Limiting usw.), gibt das Skript einen klaren Fehler aus und fügt einen Link zur manuellen Installation bei.
Manuelle Installation: Lade radare2-*-w64.zip von https://github.com/radareorg/radare2/releases herunter, extrahiere es nach %USERPROFILE%\Tools\radare2\ und stelle sicher, dass das bin\-Verzeichnis im PATH ist.
Selbstprüfung vor Abschluss (MUST vor Behauptung „erledigt“)
- Habe ich jeden Schritt des Workflows ausgeführt (nicht nur gelesen)?
- Wurde die Importtabelle überprüft und als Evidence dokumentiert (E-imports / E-triage-imports oder .NET-Äquivalent)? Enthalten DLL/SYS E-exports?
- Wurde ein fehlgeschlagener IAT-Reparaturversuch als E-iat-repair-fail dokumentiert und zum dynamischen Ansatz übergegangen? Führt eine Wiederholungsanforderung zum gleichen Schritt zurück?
- Habe ich basierend auf
tool-indexdie tatsächlichen Werkzeugpfade verwendet? - Habe ich reproduzierbare Beweise erzeugt (Befehl/Skript/Screenshot/Bericht)?
- Habe ich die von RULES geforderten Checklistenpunkte abgeschlossen und zurückgeschrieben?