CommunityCodierung & Entwicklunggithub.com

Reverse Engineering & Debugging

Fachliche Methodik für statische Analyse, dynamische Analyse, Debugging und Binary Exploitation – mit rechtlichen Hinweisen zur ausschließlich autorisierten Nutzung.

Was ist Reverse Engineering & Debugging?

Dieses Skill dokumentiert eine professionelle Methodik für Reverse Engineering und Debugging, die auf CTF-Wettbewerbe, autorisierte Penetrationstests, akademische Forschung, Malware-Analyse in isolierten Umgebungen und die Analyse eigener Software ausgelegt ist. Es enthält eine umfangreiche Referenztabelle, die je nach Aufgabe (z. B. statische Analyse mit Ghidra oder radare2, dynamisches Debugging mit GDB oder LLDB, Android/iOS/macOS/Windows-Plattformen, Frida-Hooking, .NET/Java-Managed-Code, Firmware, Anticheat-Systeme, Protokollanalyse) auf die entsprechende Datei im `references/`-Verzeichnis verweist. Das Skill bringt außerdem eigene Hilfswerkzeuge im `tools/`-Ordner mit, darunter ein IDA-Pro-Export-Plugin, einen Frida-DEX-Memory-Dumper und Konfigurationsnotizen für MCP-Server-Anbindungen. Es bietet universelle Erste-Schritte-Anleitungen (Dateityp-Bestimmung, Zielfestlegung, Analysemodus-Wahl), Kernwerkzeug-Zusammenfassungen, Methodik-Frameworks für statische/dynamische Analyse sowie Schwachstellenfindung, Anti-Analyse-Umgehungsreferenzen und Ausgabe-/Benennungsstandards. Das Skill läuft keine automatischen Befehle aus, sondern dient als reine Referenz – der Agent liest den Text und berät den Benutzer, welche Befehle dieser selbst ausführen kann. Die Nutzung ist strikt auf autorisierte Szenarien beschränkt; der Agent muss sicherstellen, dass der Benutzer die rechtliche Befugnis zur Analyse der jeweiligen Binärdateien besitzt.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add r00tedbrain-backup/skills

Installed? Explore more Codierung & Entwicklung skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Was macht Reverse Engineering & Debugging?

⚠️ NUR ZUR AUTORISIERTEN NUTZUNG – DEFENSIVES FORSCHUNGS-SKILL

Dieses Skill dokumentiert Reverse-Engineering-Methodik für:

  • CTF-Wettbewerbe und Sicherheitsausbildung
  • Autorisierte Penetrationstests (mit expliziter schriftlicher Genehmigung)
  • Akademische Forschung und Offenlegung von Schwachstellen
  • Analyse von Software, die Sie besitzen oder deren Prüfung Sie rechtlich befugt sind
  • Malware-Analyse in isolierten Forschungsumgebungen

Verantwortlichkeiten des Agent-Betreibers bei Verwendung dieses Skills:

  • Nur an Binärdateien, Firmware oder Anwendungen handeln, deren Analyse der Benutzer rechtlich befugt ist
  • KEINE heruntergeladenen oder abgefangenen Inhalte aus nicht vertrauenswürdigen Quellen ausführen
  • KEINE Binärdaten, Netzwerk-Captures oder Malware-Proben als Prompt-Kontext aufnehmen
  • Alle während der Analyse extrahierten Daten als nicht vertrauenswürdig behandeln (vor Verarbeitung in Sandbox isolieren)
  • Aufgaben ablehnen, die auf Systeme, Anwendungen oder Daten abzielen, die der Benutzer nicht besitzt oder für deren Analyse er keine explizite Erlaubnis hat

Alle hier dokumentierten Befehle erfordern lokale Dateien, die vom Benutzer bereitgestellt werden. Das Skill weist den Agenten NICHT an, aus dem Internet herunterzuladen oder Daten zu exfiltrieren. Alle gezeigten URLs sind Platzhalter oder Informationsreferenzen.

Dies ist ein Dokumentations-/Referenz-Skill – es führt keinen Code automatisch aus. Der Agent liest diesen Text und berät den Benutzer, welche Befehle er selbst ausführen kann.

Professionelle Methodik für statische Analyse, dynamische Analyse, Debugging und Binary Exploitation.

Kurzreferenz – Die richtige Referenzdatei laden

AufgabeReferenzdatei
Statische Analyse, Disassembly, Ghidra, radare2, objdump, Patchenreferences/static-analysis.md
GDB (+ pwndbg/gef/peda), LLDB, strace/ltrace, Crash-Analysereferences/dynamic-debugging.md
Android APK, DEX, smali, ADB, Frida auf Android, Repackagingreferences/android-re.md
iOS IPA, Mach-O, class-dump, Frida ObjC/Swift, Keychainreferences/ios-re.md
macOS XPC, launchd, kext, SIP, Linux-Kernel-Modulereferences/macos-kernel-re.md
Windows PE, WinDbg, x64dbg, .NET/dnSpy, Kernel-Treiberreferences/windows-re.md
Frida-Scripting, Hooking von Java/Native/ObjC, SSL-Unpin, Gadgetreferences/frida.md
.NET IL, dnSpy, de4dot, Java/JVM, Kotlin, Unity/IL2CPP, Monoreferences/managed-code-re.md
Malware, Obfuskation, Packer-Analyse, IOC-Extraktion, Volatilityreferences/malware-analysis.md
CTF pwn/rev, BOF, ROP, Heap-Exploitation, pwntools, angr/Z3references/exploit-dev.md
Netzwerkprotokoll-RE, Wireshark, mitmproxy, Protobuf, gRPC, Lua-Dissectors, Boofuzzreferences/protocol-re.md
Firmware, binwalk, QEMU-Emulation, JTAG/UART, U-Boot, IoTreferences/firmware-embedded.md
EAC, BattlEye, Vanguard, FACEIT, VAC, Kernel-AC-Analysereferences/anticheat-re.md
Ghidra Python/Java-Skripte, Headless, Schwachstellensuche, benutzerdefinierte Analyzerreferences/ghidra-scripting.md
IDAPython-/IDALib-Skripte, Hex-Rays-API, Batch-Decompile, OLLVM-Helferreferences/idapython.md
Unicorn-Engine-Emulation, Funktionsemulation, JNI-Stubbing, Syscall-Simulationreferences/unicorn-emulation.md
Wiederherstellung gestrippter Symbole, magische Bytes, gepaarte Aufrufe, XRef-Analysereferences/symbol-recovery.md
C/C++-Struktur-Wiederherstellung, VTables, std::string/vector/map, Feldtyp-Inferenzreferences/struct-recovery.md

Mitgelieferte Werkzeuge (tools/)

Das Skill enthält einsatzbereite Begleitwerkzeuge (alle Eigenentwicklung, MIT-lizenziert):

WerkzeugZweck
tools/ida_export_plugin.pyIDA Pro Plugin (Strg-Umschalt-E) – exportiert die IDB in ein decompile/-Verzeichnis mit Klartextdateien, die ein Agent direkt lesen kann
tools/dex_memory_dumper.jsFrida-Agent – extrahiert DEX aus einem laufenden Android-Prozess mittels Memory-Scan + ClassLoader-Traversal
tools/mcp/Einrichtungsnotizen und Konfigurationsschnipsel, um Agenten mit vorgelagerten MCP-Servern zu verbinden (ida-pro-mcp, GhidraMCP, r2mcp)

Siehe tools/README.md für Nutzungsdetails. Das Verzeichnis tools/mcp/ dokumentiert den Live-Abfrage-Workflow (Alternative zum Dateiexport) – beide Modi werden von den Methodikdateien oben unterstützt.


Universelle erste Schritte

Bevor Sie eine Referenzdatei laden, sollten Sie den Kontext klären:

1. Ziel identifizieren

file <binary>           # Dateityp, Architektur, Bits, gestrippt?
xxd <binary> | head -4  # Magic Bytes
strings -a <binary> | head -60
checksec --file=<binary>  # NX, PIE, RELRO, Stack Canary, ASLR

Entscheidungsbaum für Binärformat:

  • ELF → Linux nativ → references/static-analysis.md + references/dynamic-debugging.md
  • PE/PE32+ → Windows nativ → references/windows-re.md + references/static-analysis.md
  • PE mit .NET-Metadaten → references/managed-code-re.md (zuerst dnSpy)
  • Mach-O → macOS/iOS → references/macos-kernel-re.md + references/ios-re.md
  • DEX/APK/AAB → Android → references/android-re.md
  • JAR/WAR/AAR → Java → references/managed-code-re.md
  • .sys-Treiber → references/windows-re.md (Kernel-Abschnitt) oder references/anticheat-re.md
  • Assembly-CSharp.dll → Unity → references/managed-code-re.md (Unity-Abschnitt)
  • Unbekannt/Firmware → references/firmware-embedded.md (binwalk + Entropie)

Entscheidungsbaum für Aufgabentyp (gilt für jedes Format):

  • Gestrippte Binärdatei, unbekannte Funktionen → references/symbol-recovery.md
  • Unbekannte Struct-Layouts in der Dekompilierung → references/struct-recovery.md
  • Nur eine einzelne Funktion isoliert ausführen → references/unicorn-emulation.md
  • IDA Pro wird verwendet → references/idapython.md
  • Ghidra wird verwendet → references/ghidra-scripting.md

2. Umfang festlegen

Fragen Sie den Benutzer (oder leiten Sie aus dem Kontext ab):

  • Ziel: Logik verstehen / Schwachstelle finden / Schutz umgehen / Patchen / CTF-Flag / Malware-IOCs?
  • Plattform: Linux / Windows / macOS / Android / iOS / Embedded?
  • Verfügbare Werkzeuge: Ghidra / IDA / radare2 / Binary Ninja / Hopper?
  • Dynamisch möglich?: Können wir es ausführen? VM? Emulator? Physisches Gerät?

3. Analysemodus wählen

Nur statisch → Kein Ausführungsrisiko, langsameres Verständnis
Nur dynamisch → Schnell, übersieht aber toten Code
Statisch + dynamisch (empfohlen) → Statisch für Karte, dynamisch für Laufzeitwahrheit

Zusammenfassung der Kernwerkzeuge

Statisch

WerkzeugAm besten geeignet für
GhidraVollständige Dekompilierung, Scripting, kostenlos
radare2 / cutterCLI-Kraftpaket, Scripting, Embedded
Binary NinjaAPI-zentriert, schnell, kommerziell
IDA Pro / IDA FreeBranchenstandard, beste Signaturen
objdumpSchnelle Disassemblierung, keine Installation
readelf / nmELF-Symbol-/Section-Inspektion
jadxAndroid DEX → Java, GUI
apktoolAPK entpacken / umpacken / smali

Dynamisch

WerkzeugAm besten geeignet für
GDB + pwndbg/peda/gefLinux-ELF-Debugging
LLDBmacOS/iOS/Swift-Debugging
FridaPlattformübergreifendes Hooking, kein Quellcode nötig
strace / ltraceSyscall-/Bibliotheksaufruf-Tracing
ValgrindSpeicherfehler, Helgrind
WinDbgWindows Kernel + Benutzermodus
x64dbgWindows-GUI-Debugger

Netzwerk

WerkzeugAm besten geeignet für
Wireshark / tsharkPaketerfassung + -analyse
mitmproxy / Burp SuiteHTTP/S MITM
FridaIn-Prozess-SSL-Unpin
tcpdumpKopflose Erfassung

Methodik-Frameworks

Arbeitsablauf statische Analyse

1. file + strings + checksec           → Schnelltriage
2. Entropieanalyse                     → Gepackt/verschlüsselt?
3. Importtabelle / Symboltabelle       → Fähigkeiten verstehen
4. In Dekompiler laden                 → Umbenennen, umtypen, kommentieren
5. Schlüsselfunktionen identifizieren  → main(), crypto, network, anti-debug
6. Datenfluss verfolgen               → Benutzereingabe → Senke
7. Ergebnisse dokumentieren            → Inline-Kommentare

Arbeitsablauf dynamische Analyse

1. Isolierte Umgebung einrichten       → VM / Container / Gerät
2. Zuerst mit strace/ltrace ausführen  → Syscall-Fußabdruck verstehen
3. Debugger anfügen                    → Breakpoints an Schlüsselfunktionen setzen
4. Laufzeitverhalten beobachten        → Speicher, Register, genommene Verzweigungen
5. Mit statischer Analyse korrelieren → Dekompilierungsausgabe validieren
6. Bei Bedarf patchen/hooken          → Prüfungen umgehen, Werte protokollieren

Arbeitsablauf Schwachstellenfindung

1. Angriffsfläche kartieren           → Eingaben: Datei, Netzwerk, Umgebungsvariablen, Argumente
2. Gefährliche Funktionen suchen      → strcpy, gets, sprintf, memcpy, system
3. Kandidaten für Integer-Überlauf    → Größenberechnungen, Schleifen
4. Kandidaten für Format-String       → printf(user_input)
5. Kandidaten für UAF / Double-Free   → Heap-Allokationsmuster
6. Auslösen + Bestätigen              → Absturz → kontrolliert → ausnutzbar

Anti-Analyse-Umgehung – Kurzreferenz

Anti-Debug-Erkennung

# Prüfen, ob die Binärdatei den Debugger erkennt
strings <bin> | grep -iE "ptrace|debugger|isDebuggerPresent|TracerPid"

# Linux: ptrace-Selbsterkennung
# Umgehung: Preload-Hook oder Patchen des ptrace-Aufrufs

Häufige Schutzmaßnahmen

SchutzErkennungUmgehung
ptrace Anti-Debugstrace zeigt ptrace(TRACEME)JNZ→JMP patchen oder LD_PRELOAD mit gefälschtem ptrace
Timing-Prüfungenrdtsc / clock_gettime in SchleifeVergleich patchen oder NOP
Checksumme/IntegritätHash des eigenen .text-AbschnittsNach Entschlüsselung, vor Prüfung patchen
Packer (UPX usw.)Hohe Entropie + kleine Importeupx -d / nach dem Entpacken aus Speicher dumpen
Obfuskierte StringsKeine lesbaren StringsAusführen + aus Speicher extrahieren / Frida-Hook
SSL Pinning (Mobil)Netzwerkfehler in der AppFrida ssl-unpin / siehe references/frida.md

Ausgabestandards

Bei der Berichterstattung über RE-Ergebnisse die Ausgabe immer wie folgt strukturieren:

## Binary: <Name>
- **Format**: ELF64 / PE32+ / DEX / Mach-O
- **Arch**: x86_64 / ARM64 / ARMv7 / MIPS
- **Gestrippt**: Ja/Nein | **PIE**: Ja/Nein | **NX**: Ja/Nein

## Wichtigste Erkenntnisse
1. <Funktionsname @ Offset> — <Funktion>
2. ...

## Schwachstelle / Verhalten
- <Beschreibung mit Belegen>
- Offset: 0x<Adresse>
- Auslösbar über: <Eingabevektor>

## Empfohlene nächste Schritte
- [ ] <Aktion>

Namenskonventionen für Dekompilierungsarbeit

Folgen Sie diesen Standards beim Kommentieren in Ghidra / IDA / r2:

Funktionen:  verb_noun_context      → decrypt_config_xor, check_license_hwid
Variablen:   type_purpose           → buf_user_input, sz_packet, ptr_heap_chunk
Structs:     ST_<Name>              → ST_PacketHeader, ST_LicenseData
Labels:      loc_<Zweck>            → loc_anti_debug_fail, loc_success

Scripting – Schnellstarter

Vollständige Frida-Muster finden Sie unter references/frida.md.

GDB Python-Einzeiler (Funktionsargumente protokollieren)

# In GDB: source this file
import gdb
class LogArgs(gdb.Breakpoint):
    def stop(self):
        frame = gdb.selected_frame()
        print(f"[*] {frame.name()} rdi={gdb.parse_and_eval('$rdi')} rsi={gdb.parse_and_eval('$rsi')}")
        return False  # nicht anhalten, nur protokollieren
LogArgs("target_function")

radare2 Batch-Analyse

r2 -A -q -c "afl~suspicious; pdf @ sym.check_license" <binary>

Ghidra Headless-Analyse

$GHIDRA_HOME/support/analyzeHeadless /tmp/proj MyProject \
  -import <binary> -postScript PrintAST.java -scriptPath ~/ghidra_scripts

Verwandte Skills