Communitygithub.com

Reverse Engineering

Bietet Techniken für Reverse Engineering von kompilierten, obfuskierten, gepackten oder virtualisierten Zielen (Binärdateien, APKs, WASM, Firmware, benutzerdefinierte VMs, Bytecode, Malware-ähnliche Loader und Anti-Debug/Anti-Analyse-Logik).

Was ist Reverse Engineering?

Dieses Skill ist für Szenarien gedacht, in denen das Hauptziel darin besteht, zu verstehen, wie ein kompilierter, obfuskierter, gepackter oder virtualisierter Target funktioniert, bevor er ausgenutzt oder gelöst wird – einschließlich Binärdateien, APKs, WASM, Firmware, benutzerdefinierten VMs, Bytecode, Malware-ähnlichen Ladern und Anti-Debug- oder Anti-Analyse-Logik. Es sollte nicht verwendet werden, wenn die Schwachstelle bereits verstanden ist und die verbleibende Aufgabe die Ausnutzung ist; stattdessen sollte `pwn` verwendet werden. Ebenso ist es nicht für reine Web-Workflows, Log- oder Forensik oder eigenständige Kryptoprobleme gedacht, es sei denn, das Reverse Engineering der Implementierung ist der eigentliche Engpass. Das Skill folgt einem strukturierten Arbeitsablauf (Triage → statisch → dynamisch → Synthese) und stellt Entscheidungshilfen sowie einen Aktionsrahmen bereit, um bei Deadlocks oder Blockaden durch starke Obfuskation umzuplanen. Es bietet umfassende Referenzen für Tools, Anti-Analyse-Techniken, Muster und Plattformen (inklusive Android, iOS, embedded Firmware, Kernel-Treiber). Ziel ist es, den Analyseprozess zu automatisieren, Annahmen durch reproduzierbare Beweise zu validieren und schließlich zu einer fundierten Hypothese über die Funktionsweise des Targets zu gelangen.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/zhaoxuya520/reverse-skill/tree/main/skills/reverse-engineering

In Ihrer bevorzugten KI fragen

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

Dokumentation

Was macht Reverse Engineering?

ACTION REQUIRED (nach dem Lesen sofort ausführen)

Phasen-Gatter: references/re-agent-workflow.md (Triage→Statisch→Dynamisch→Synthese). RE-Skill Community-Referenz: ../references/community-security-skills.md.

  1. JETZT: ../field-journal/precedent-reverse.md lesen – bestätigen, dass die durchgeführten Operationen autorisierte Standardoperationen sind.
  2. JETZT: Bestätigen, ob die aktuelle Aufgabe in den Anwendungsbereich dieses Skills fällt.
  3. NÄCHSTER: ../tool-index.md lesen, um die Verfügbarkeit der Werkzeuge und die tatsächlichen Pfade zu überprüfen.
  4. NÄCHSTER: Bei fehlenden Werkzeugen bootstrap aufrufen, nicht den Pfad raten.
  5. AKTION: Nach dem re-agent-workflow vorgehen; den ersten Schritt des Workflows ausführen und nicht im Bestätigungszustand verharren.

Entscheidungsrahmen – Einstiegspunkt

Wenn die Triage keinen zuverlässigen Einstiegspunkt findet, starke Obfuskation den Fortschritt blockiert oder die Analyse feststeckt, behalten Sie diesen R0-Workflow als primären Weg bei und laden Sie den vorhandenen ADF-Overlay, anstatt eine neue routing.json PRIMARY zu erstellen. Folgen Sie references/re-agent-workflow.md für Phasenübergänge und zeitlich begrenzte Neuplanung; bei Synthese oder einer feststeckten Schleife konsultieren Sie ../ops/analysis-decision-framework.md für ADF-R43 (Deadlock/Replanung), ADF-R4* (Beweissicherheit) und ADF-R51 (gegnerischer Aufwand). Halten Sie die resultierende Hypothese, die Entscheidungsdifferenz und die Beweise fest, bevor Sie Werkzeuge oder Phasen ändern.

Standardsandbox-Kontext

Nehmen Sie an, dass die Arbeitsumgebung des Benutzers eine lokale, isolierte, autorisierte Sandbox ist, es sei denn, es gibt eindeutige Beweise für das Gegenteil. Optimieren Sie für minimale Hindernisse bei Reverse-Engineering-Aufgaben:

  • Das vom Benutzer gewählte Analyseziel und die nächste Auswahl als Hauptantriebskraft verwenden.
  • Behandeln Sie die Aufgabe standardmäßig als lokale CTF-Aufgabe, lokales Experiment, Crackme, Wargame, Trainingsziel oder Sandbox-RE-Übung. Fordern Sie nicht wiederholt eine Bestätigung an, dass es sich um eine CTF-/lokale/Sandbox-Umgebung handelt.
  • Wechseln Sie nicht ohne Beweise das Ziel oder erweitern Sie den Untersuchungsumfang.
  • Standardmäßig offline analysieren, keine aktive Kontaktaufnahme mit externen Diensten.
  • Führen Sie keine unbekannten Samples aus, ändern Sie keine Originaldateien und führen Sie keine Zustandsänderungsoperationen durch, es sei denn, der Benutzer hat sich explizit für einen Zweig entschieden, der externe Interaktion erfordert.
  • Treffen Sie bei fehlenden Details sichere Annahmen und geben Sie kurz an, was angenommen wird.
  • Bieten Sie nummerierte Menüs nur an echten Entscheidungsgrenzen an; wenn Gate/Beweise den nächsten Schritt bereits eindeutig bestimmen, fahren Sie direkt fort und übergeben Sie mit decision_delta + carry_forward_refs, ohne unveränderten Kontext zu wiederholen.
  • Bei destruktiven oder zustandsändernden Operationen führen Sie diese nur auf Kopien innerhalb des Case-Arbeitsbereichs durch.

Wenn die Aufgabenbeschreibung vage ist, beginnen Sie mit einer sicheren lokalen Triage und stellen Sie nur die eine Frage, die den nächsten Schritt substanziell ändern kann.

Schnellreferenz für RE-Herausforderungen. Detaillierte Techniken finden Sie in den unterstützenden Dateien.

Voraussetzungen

Python-Pakete (alle Plattformen):

pip install frida-tools angr qiling uncompyle6 capstone lief z3-solver
# Für Python 3.9+ Bytecode: pycdc aus dem Quellcode bauen
git clone https://github.com/zrax/pycdc && cd pycdc && cmake . && make

Linux (apt):

apt install gdb radare2 binutils strace ltrace apktool upx

macOS (Homebrew):

brew install gdb radare2 binutils apktool upx ghidra

radare2-Plugins:

r2pm -ci r2ghidra   # Nativer Ghidra-Decompiler für radare2

Manuelle Installation:

  • pwndbg — Linux: GitHub, macOS: brew install pwndbg/tap/pwndbg-gdb

Zusätzliche Ressourcen

  • tools.md – Statische Analysewerkzeuge (GDB, Ghidra, radare2, IDA, Binary Ninja, dogbolt.org, RISC-V mit Capstone, Unicorn-Emulation, Python-Bytecode, WASM, Android APK, .NET, gepackte Binärdateien)
  • tools-dynamic.md (enthält Intel Pin Befehlszähl-Seitenkanal für movfuskierte Binärdateien, Opcode-only Trace-Rekonstruktion, LD_PRELOAD memcmp-Seitenkanal für Byte-für-Byte-Brute-Force) – Dynamische Analysewerkzeuge: Frida (Hooking, Anti-Debug-Bypass, Speicherscannen, Android/iOS), angr (symbolische Ausführung: Pfaderkundung, Constraints, CFG), lldb (macOS/LLVM-Debugger), x64dbg (Windows), Qiling (plattformübergreifende Emulation mit OS-Unterstützung), Triton (dynamische symbolische Ausführung)
  • tools-advanced.md – Erweiterte Werkzeuge: VMProtect/Themida-Analyse, Binärdiffing (BinDiff, Diaphora), Deobfuskierungs-Frameworks (D-810, GOOMBA, Miasm), Rizin/Cutter, RetDec, benutzerdefiniertes VM-Bytecode-Lifting zu LLVM-IR, erweitertes GDB (Python-Scripting, bedingte Breakpoints, Watchpoints, reversibles Debugging mit rr, pwndbg/GEF), erweitertes Ghidra-Scripting, Patchen (Binary Ninja API, LIEF)
  • anti-analysis.md – Umfassende Anti-Analyse: Linux Anti-Debug (ptrace, /proc, Timing, Signale, direkte Syscalls), Windows Anti-Debug (PEB, NtQueryInformationProcess, Heap-Flags, TLS-Callbacks, HW/SW-Breakpoint-Erkennung, ausnahmebasierte, Thread-Verstecken), Anti-VM/Sandbox (CPUID, MAC, Timing, Artefakte, Ressourcen), Anti-DBI (Frida-Erkennung/Bypass), Code-Integrität/Self-Hashing, Anti-Disassembly (opake Prädikate, Junk-Bytes), MBA-Identifikation/Simplifikation, SIGFPE-Signalhandler-Seitenkanal via strace-Zählung, aufrufloses Funktions-Chaining via Stack-Frame-Manipulation, Bypass-Strategien
  • patterns.md – Grundlegende Binärmuster: benutzerdefinierte VMs, Anti-Debugging, Nanomites, selbstmodifizierender Code, XOR-Chiffren, Mixed-Mode-Stager, LLVM-Obfuskation, S-Box/Keystream, SECCOMP/BPF, Ausnahmehandler, Speicherabbilder, Byte-weise Transformationen, x86-64 Fallstricke, signalbasierte Erkundung, Malware-Anti-Analyse, mehrstufiger Shellcode, Timing-Seitenkanal, Multi-Thread-Anti-Debug mit Köder + Signalhandler MBA, INT3-Patch + Coredump-Brute-Force-Orakel, Signalhandler-Kette + LD_PRELOAD-Orakel
  • patterns-ctf.md – Wettbewerbsspezifische Muster (Teil 1): versteckte Emulator-Opcodes, LD_PRELOAD-Schlüsselextraktion, SPN-statische Extraktion, Bild-XOR-Glätte, Byte-für-Byte-Chiffre, mathematische Konvergenz-Bitmap, Windows PE XOR-Bitmap OCR, zweistufige RC4+VM-Lader, Kernel-Modul-Labyrinth-Lösung, Multi-Thread-VM-Kanäle, Backdoor-Shared-Library-Erkennung via String-Diffing, benutzerdefiniertes binfmt-Kernel-Modul mit RC4-flachen Binärdateien, Hash-aufgelöste Importe / No-Import-Ransomware, ELF-Section-Header-Korruption für Anti-Analyse
  • patterns-ctf-2.md – Wettbewerbsspezifische Muster (Teil 2): mehrschichtige selbstentschlüsselnde Brute-Force, eingebettetes ZIP+XOR-Lizenz, Stack-String-Deobfuskation, Präfix-Hash-Brute-Force, CVP/LLL-Gitter für Integer-Validierung, Entscheidungsbaum-Funktionsobfuskation, GF(2^8)-Gauß-Elimination, ROP-Ketten-Obfuskationsanalyse (ROPfuscation)
  • patterns-ctf-3.md – Wettbewerbsspezifische Muster (Teil 3): Z3-einzeilige Python-Schaltung, gleitendes Fenster-Popcount, Tastatur-LED-Morse-Code via ioctl, C++-Destruktor-versteckte Validierung, Syscall-Seiteneffekt-Speicherkorruption, MFC-Dialog-Ereignishandler, VM-sequentielle Key-Chain-Brute-Force, Burrows-Wheeler-Transformation Inversion, OpenType-Schriftart-Ligaturen-Exploitation, GLSL-Shader-VM mit selbstmodifizierendem Code, Befehlszähler als kryptografischer Zustand, Batch-Crackme-Automatisierung via objdump, fork+pipe+dead-branch Anti-Analyse, TensorFlow DNN-Inversion via Sigmoid-Schicht-Inversion, BPF-Filteranalyse via Kernel-JIT zu x64-Assembly
  • languages.md – Sprachspezifisch: Python-Bytecode & Opcode-Neuzuordnung, Python-Version-spezifischer Bytecode, Pyarmor-statisches Entpacken, DOS-Stubs, HarmonyOS HAP/ABC, Brainfuck/Esolangs (+ BF Zeichen-für-Zeichen-Statikanalyse, BF Seitenkanal-Leseanzahl-Orakel, BF Vergleichsidiom-Erkennung), UEFI, Transpilation nach C, Codeabdeckung-Seitenkanal, OPAL-funktionales Reversing, nicht-bijective Substitution, FRACTRAN-Programm-Inversion
  • languages-platforms.md – Plattform-/Framework-spezifisch: Rust serde_json Schema-Wiederherstellung, Android JNI RegisterNatives-Obfuskation, Android DEX-Laufzeit-Bytecode-Patching via /proc/self/maps, Android nativ .so-Lade-Bypass via neues Projekt, Frida Firebase Cloud Functions-Bypass, Verilog/Hardware-RE, Präfix-für-Präfix-Hash-Umkehrung, Ruby/Perl-Polyglot-Constraint-Erfüllung, Electron ASAR-Extraktion + native Binäranalyse, Node.js npm-Laufzeitintrospection
  • languages-compiled.md – Go-Binär-Reversing (GoReSym, Goroutinen, Speicherlayout, Kanaloperationen, embed.FS, Go-Binär-UUID-Patching für C2-Enumeration), Rust-Binär-Reversing (Demangling, Option/Result, Vec, panic-Strings), Swift-Binär-Reversing (Demangling, Protokoll-Witness-Tabellen), Kotlin/JVM (Coroutine-Zustandsmaschinen), Haskell GHC CMM-Zwischensprache für rekursive Strukturanalyse, C++ (Vtable-Rekonstruktion, RTTI, STL-Muster)
  • platforms.md – Plattformspezifisches RE: macOS/iOS (Mach-O, Code-Signing, Objective-C-Laufzeit, Swift, dyld, Jailbreak-Bypass), Embedded/IoT-Firmware (binwalk, UART/JTAG/SPI-Extraktion, ARM/MIPS, RTOS), Kernel-Treiber (Linux .ko, eBPF, Windows .sys), Automotive-CAN-Bus
  • platforms-hardware.md – Hardware- und fortgeschrittenes Architektur-RE: HD44780 LCD-Controller GPIO-Rekonstruktion, RISC-V fortgeschritten (benutzerdefinierte Erweiterungen, privilegierte Modi, Debugging), ARM64/AArch64-Reversing und Exploitation (Aufrufkonvention, ROP-Gadgets, qemu-aarch64-static-Emulation)
  • field-notes.md – Schnellreferenznotizen: Binärtypen, Anti-Debugging-Bypass, spezialisierte Muster, CTF-Case-Notes

Wann wechseln?

  • Heap / ROP / Kernel-Exploit, nachdem die Binärdatei verstanden wurde → pwn-chain/
  • Gelöschte Dateien / PCAP / Festplattenartefakte → digital-forensics/
  • Web-App mit kleinem Client-Helfer → js-reverse/
  • Echte Malware / C2 / Packen → malware-analysis/
  • Multi-Typ-CTF-Wettbewerbs-Paket → ctf-sandbox/ (Sidecar-Orchestrator)

Problemlösungs-Workflow

  1. Mit String-Extraktion beginnen – viele einfache Herausforderungen haben Klartext-Flags
  2. ltrace/strace ausprobieren – dynamische Analyse enthüllt oft Flags ohne Reversing
  3. Frida-Hooking versuchen – strcmp/memcmp hooken, um erwartete Werte ohne Reversing zu erfassen
  4. angr ausprobieren – symbolische Ausführung löst viele Flag-Checker automatisch
  5. Qiling ausprobieren – fremdarchitektur-Binärdateien emulieren oder schwere Anti-Debug ohne Artefakte umgehen
  6. Kontrollfluss abbilden, bevor die Ausführung geändert wird
  7. Manuelle Prozesse automatisieren via Scripting (r2pipe, Frida, angr, Python)
  8. Annahmen validieren, indem Decompiler-Ausgaben verglichen werden (dogbolt.org für Side-by-Side)

Schnelle Erfolge (Zuerst ausprobieren!)

# Klartext-Flag-Extraktion
strings binary | grep -E "flag\{|CTF\{|pico"
strings binary | grep -iE "flag|secret|password"
rabin2 -z binary | grep -i "flag"

# Dynamische Analyse - erfasst oft das Flag direkt
ltrace ./binary
strace -f -s 500 ./binary

# Hex-Dump-Suche
xxd binary | grep -i flag

# Mit Testeingaben ausführen
./binary AAAA
echo "test" | ./binary

Erste Analyse

file binary           # Typ, Architektur
checksec --file=binary # Sicherheitsmerkmale (für pwn)
chmod +x binary       # Ausführbar machen

Speicherabbildungsstrategie

Wichtige Erkenntnis: Das Programm die Antwort berechnen lassen, dann auslesen. Halten Sie am letzten Vergleich (b *main+OFFSET), geben Sie eine beliebige Eingabe korrekter Länge ein, dann x/s $rsi zum Auslesen des berechneten Flags.

Erkennung von Köder-Flags

Muster: Mehrere falsche Ziele vor dem eigentlichen Check. Suchen Sie nach mehreren Vergleichszielen in Folge mit unterschiedlichen Erfolgsmeldungen. Setzen Sie einen Breakpoint am LETZTEN Vergleich, nicht an früheren.

GDB PIE-Debugging

PIE-Binärdateien randomisieren die Basisadresse. Verwenden Sie relative Breakpoints:

gdb ./binary
start                    # Erzwingt PIE-Basisauflösung
b *main+0xca            # Relativ zu main
run

Vergleichsrichtung (Kritisch!)

Zwei Muster: (1) transform(flag) == stored_target — Transformation umkehren. (2) transform(stored_target) == flag — Flag IST die transformierten Daten, einfach Transformation auf gespeichertes Ziel anwenden.

Häufige Verschlüsselungsmuster

  • XOR mit einem Byte – alle 256 Werte ausprobieren
  • XOR mit bekanntem Klartext (flag{, CTF{)
  • RC4 mit hartcodiertem Schlüssel
  • Benutzerdefinierte Permutation + XOR
  • XOR mit Positionsindex (^ i oder ^ (i & 0xff)) kombiniert mit einem sich wiederholenden Schlüssel

Schnelle Tool-Referenz

# Radare2
r2 -d ./binary     # Debug-Modus
aaa                # Analysieren
afl                # Funktionen auflisten
pdf @ main         # main disassemblieren

# Ghidra (headless)
analyzeHeadless project/ tmp -import binary -postScript script.py

# IDA
ida64 binary       # In IDA64 öffnen

Tiefere Notizen

Verwenden Sie field-notes.md nach der ersten Triage-Runde, wenn Sie wissen, um welche Art von Ziel es sich handelt.

  • Zielformate: Python-Bytecode, WASM, Android, Flutter, .NET, UPX, Tauri
  • Techniknotizen: Anti-Debug-Bypass, VM-Analyse, x86-64 Fallstricke, iterative Löser, Unicorn, Timing-Seitenkanäle
  • Plattformnotizen: macOS/iOS, Embedded-Firmware, Kernel-Treiber, Swift, Kotlin, Go, Rust, D
  • Fallnotizen: Aktuelle CTF-spezifische Reversing-Muster und ältere klassische Herausforderungsmuster

Routing-Kontext

Eingang oben: skills/SKILL.md (Hauptsteuerung), routing.md Ausgang unten:

  • Benötigt IDA-Decompilation → ida-reverse/
  • Benötigt radare2 CLI-Analyse → radare2/
  • Benötigt APK-Ebenen-Analyse → apk-reverse/
  • Benötigt Frida/angr dynamische Ausführung → tools-dynamic.md
  • Benötigt Anti-Debug-Bypass → anti-analysis.md
  • Bei bestimmter Sprache (Go/Rust/Python/WASM) → languages*.md
  • Bei CTF-Muster → patterns*.md

Gleichrangige zugehörige Module: apk-reverse/ (sobald APK zu .so führt, kann zurück zu Frida/radare2-Zweig dieses Moduls gewechselt werden)

Aufgabenabschluss-Checkliste (MUSS vor Behauptung des Abschlusses bestanden sein)

  • Habe ich jeden Schritt des Workflows ausgeführt (und nicht nur gelesen)?
  • Habe ich basierend auf tool-index echte Tool-Pfade verwendet?
  • Habe ich reproduzierbare Beweise erzeugt (Befehle/Skripte/Screenshots/Berichte)?
  • Habe ich die von den REGELN geforderten Checklistenpunkte abgeschlossen und zurückgeschrieben?

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

api-security

Use for authorized security assessment of REST, GraphQL, WebSocket, or SOAP APIs, including discovery, authentication, authorization, rate-limit, and CI/CD testing.

apk-reverse

在 CLI 环境下做 Android APK 逆向时使用。适用于 APK 解包、Java 反编译、smali 修改、重打包、Frida 动态 Hook,以及按需切换到 so/native 分析。优先使用本机已安装的 jadx、apktool、frida、adb、ida-reverse、radare2。

attack-chain

Use for authorized multi-stage attack-path planning and orchestration when a task spans reconnaissance, initial access, privilege escalation, lateral movement, or impact assessment. Route single-stage tasks directly to their specialist skill.

binary-diff

|

binary-ninja-reverse

Use for authorized binary analysis in Binary Ninja, including HLIL/MLIL/LLIL inspection, strings/imports/exports, cross-references, types, patch review, Python API automation, and optional Binary Ninja MCP or localhost HTTP integration.

browser-automation

|

browser-extension-reverse

Use for authorized reverse engineering of browser extensions (Chrome/Firefox) including manifest analysis, background workers, and extension-based credential or traffic logic recovery.

case-review

Reviews a reverse-skill case package for scope readiness, Evidence to Finding to Path traceability, work item coverage, timeline references, and optional artifact hash integrity before report handoff.

cloud-k8s

Use for authorized cloud, container, and Kubernetes security assessment including metadata SSRF, IAM misconfig, container escape paths, and cluster RBAC review.

code-audit

Use for authorized source-code security review and SAST workflows including Semgrep, CodeQL patterns, dangerous API hunting, and fix verification.

ctf-sandbox

Thin PRIMARY for CTF / AWD / 靶场 multi-type orchestration. Hands off to the sidecar CTF-Sandbox-Orchestrator. Use when the user says CTF, AWD, 靶场, or 比赛题 and no more specific pwn/APK/IDA route already won.

database-security

Use for authorized database security assessment covering PostgreSQL/MySQL/MSSQL/Mongo/Redis exposure, authz, UDF/command paths, and misconfiguration review.

diagram-generator

generate, refine, validate, and render diagrams from natural language, notes, code snippets, schemas, tables, or existing diagram source. use for flowcharts, swimlanes, sequence diagrams, state diagrams, er diagrams, class diagrams, architecture/c4-style diagrams, dependency graphs, gantt charts, mind maps, user journeys, sankey-style flows, org charts, network graphs, and other visual models. supports mermaid by default, graphviz dot for complex graph layout, plantuml for uml-heavy engineering diagrams, and svg output when direct markup is more reliable.

digital-forensics

Use for authorized digital forensics including memory dumps, disk timelines, PCAP investigation, artifact triage, and IR evidence preservation.

docs-generator

|

dotnet-reverse

.NET / C# 二进制逆向。当目标是 .NET assembly(PE 头含 CLR、.exe/.dll 托管程序)、C# 编译产物(含 NativeAOT)、红队 Sharp* 工具(Rubeus / SharpHound / SharpHound 等)、.NET 混淆程序(ConfuserEx / SmartAssembly / Babel / Eazfuscator)、.NET loader / info-stealer / 套壳 malware 时使用。优先用 dnSpyEx + de4dot,需要 AI 直接操作时联动 dnSpy MCP。不用于纯 native 二进制(走 reverse-engineering / ida-reverse)。

edr-bypass-re

|

email-security

Use for authorized email security review including phishing analysis, header authentication (SPF/DKIM/DMARC), BEC patterns, and mailbox token abuse research.

firmware-pentest

|

ghidra-reverse

Use for free/open reverse engineering with Ghidra (headless or GUI), including decompile, cross-refs, and optional Ghidra MCP workflows when IDA is unavailable.

Verwandte Skills