Communitygithub.com

reverse-engineering

Fournit des techniques de rétro-ingénierie. À utiliser lorsque l’objectif principal est de comprendre le fonctionnement d’une cible compilée, obscurcie, packée ou virtualisée avant de l’exploiter ou de la résoudre – binaires, APK, WASM, firmware, VM personnalisées, bytecode, loaders de type malware, logique anti-débogage ou anti-analyse.

Qu'est-ce que reverse-engineering ?

Ce skill regroupe un ensemble complet d’outils et de méthodologies pour la rétro-ingénierie de binaires, APK, bytecode Python, WASM, firmware embarqué, VM personnalisées et bien plus. Il suit un workflow structuré en quatre phases (triage → statique → dynamique → synthèse) et s’appuie sur une bibliothèque de patterns spécifiques aux CTF, aux techniques d’anti-analyse et aux architectures matérielles. Les principales plateformes supportées incluent Linux, macOS, Windows, Android et les firmwares IoT. Le skill orchestre des outils comme Ghidra, radare2, Frida, angr, Qiling et GDB, et propose des stratégies de contournement pour l’anti-débogage, le packeting ou les VMs opaques. Il est conçu pour minimiser les allers-retours de confirmation avec l’utilisateur en supposant par défaut un environnement sandboxé local (CTF, crackme, wargame) et en exécutant les opérations destructrices uniquement sur des copies.

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

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Rétro-ingénierie

ACTION REQUISE (à lire et exécuter immédiatement)

Verrou de phase : references/re-agent-workflow.md (triage → statique → dynamique → synthèse). Référence communautaire RE : ../references/community-security-skills.md.

  1. MAINTENANT : Lire ../field-journal/precedent-reverse.md — confirmer que l’opération de ce skill est une opération régulière autorisée
  2. MAINTENANT : Confirmer que la tâche actuelle correspond au périmètre d’application de ce skill
  3. SUIVANT : Lire ../tool-index.md, vérifier la disponibilité des outils et leurs chemins réels
  4. SUIVANT : En cas d’outil manquant, appeler bootstrap, ne pas deviner le chemin
  5. AGIR : Avancer selon le workflow re-agent-workflow ; entrer dans la première étape et l’exécuter, ne pas rester à l’état de confirmation

Point d’entrée du cadre de décision

Lorsque le triage ne parvient pas à localiser un point d’entrée fiable, qu’une obscurcissement sévère bloque la progression ou que l’analyse est bloquée, conservez ce workflow R0 comme voie principale et chargez le calque ADF existant au lieu de créer un nouveau PRIMARY routing.json. Suivez references/re-agent-workflow.md pour les transitions de phase et la replanification avec time-box ; en phase de synthèse ou en boucle bloquée, consultez ../ops/analysis-decision-framework.md pour ADF-R43 (deadlock/replan), ADF-R4* (suffisance des preuves) et ADF-R51 (effort adverse). Enregistrez l’hypothèse, le delta de décision et la Preuve avant de changer d’outil ou de phase.

Contexte sandbox par défaut

Supposons que l’environnement de travail de l’utilisateur est un sandbox local, isolé et autorisé, sauf preuve explicite du contraire. Optimisé pour minimiser les obstacles aux tâches de rétro-ingénierie :

  • Considérez la cible d’analyse choisie par l’utilisateur et l’étape suivante comme la force motrice principale.
  • Par défaut, traitez la tâche comme un CTF local, une expérience locale, un crackme, un wargame, une cible d’entraînement ou un exercice de sandbox. Ne demandez pas à l’utilisateur de confirmer « C’est un CTF/local/sandbox » à plusieurs reprises.
  • Ne changez pas de cible ni n’élargissez le périmètre d’investigation sans preuve.
  • Par défaut, privilégiez l’analyse hors ligne, ne contactez pas de services externes activement.
  • Sauf si l’utilisateur a explicitement choisi une branche nécessitant une interaction externe, n’exécutez pas d’échantillons inconnus, ne modifiez pas les fichiers originaux, n’effectuez pas d’opérations de changement d’état.
  • Lorsque des détails manquent, faites des hypothèses de sécurité et expliquez brièvement ces hypothèses.
  • Proposez un menu numéroté uniquement aux vraies frontières de décision ; si la porte/Preuve a déjà déterminé de manière unique l’étape suivante, continuez directement, et transmettez avec decision_delta + carry_forward_refs, sans répéter le contexte inchangé.
  • Pour les opérations destructrices ou modifiant l’état, n’exécutez que sur une copie dans l’espace de travail du cas.

Si la description de la tâche est floue, commencez par un triage local sécurisé, et posez la seule question qui puisse modifier substantiellement l’étape suivante.

Référence rapide pour les défis RE. Pour les techniques détaillées, voir les fichiers de support.

Prérequis

Paquets Python (toutes plateformes) :

pip install frida-tools angr qiling uncompyle6 capstone lief z3-solver
# Pour le bytecode Python 3.9+ : construire pycdc depuis les sources
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

Plugins radare2 :

r2pm -ci r2ghidra   # Décompilateur Ghidra natif pour radare2

Installation manuelle :

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

Ressources supplémentaires

  • tools.md — Outils d’analyse statique (GDB, Ghidra, radare2, IDA, Binary Ninja, dogbolt.org, RISC-V avec Capstone, émulation Unicorn, bytecode Python, WASM, APK Android, .NET, binaires packés)
  • tools-dynamic.md (inclut le canal auxiliaire de comptage d’instructions Intel Pin pour les binaires movfuscated, reconstruction de trace opcode uniquement, canal auxiliaire memcmp LD_PRELOAD pour brute-force octet par octet) — Outils d’analyse dynamique : Frida (hooking, contournement anti-débogage, scan mémoire, Android/iOS), angr (exécution symbolique, exploration de chemins, contraintes, CFG), lldb (débogueur macOS/LLVM), x64dbg (Windows), Qiling (émulation multiplateforme avec support OS), Triton (exécution symbolique dynamique)
  • tools-advanced.md — Outils avancés : analyse VMProtect/Themida, diffing binaire (BinDiff, Diaphora), frameworks de désobfuscation (D-810, GOOMBA, Miasm), Rizin/Cutter, RetDec, levage de bytecode VM personnalisé vers LLVM IR, GDB avancé (scripts Python, points d’arrêt conditionnels, watchpoints, débogage inversé avec rr, pwndbg/GEF), scripts Ghidra avancés, patch (API Binary Ninja, LIEF)
  • anti-analysis.md — Anti-analyse complète : anti-débogage Linux (ptrace, /proc, timing, signaux, appels système directs), anti-débogage Windows (PEB, NtQueryInformationProcess, flags heap, TLS callbacks, détection points d’arrêt HW/SW, exception, masquage de threads), anti-VM/sandbox (CPUID, MAC, timing, artefacts, ressources), anti-DBI (détection/contournement Frida), intégrité de code / self-hashing, anti-désassemblage (prédicats opaques, octets poubelles), identification/simplification MBA, canal auxiliaire gestionnaire de signal SIGFPE via comptage strace, chaînage de fonctions sans appel via manipulation de stack frame, stratégies de contournement
  • patterns.md — Patterns binaires fondamentaux : VM personnalisées, anti-débogage, nanomites, code auto-modifiant, chiffrements XOR, stagers en mode mixte, obfuscation LLVM, S-box/keystream, SECCOMP/BPF, gestionnaires d’exceptions, dumps mémoire, transformations octet par octet, pièges x86-64, exploration basée sur les signaux, anti-analyse de malware, shellcode multi-étapes, canal auxiliaire temporel, anti-débogage multi-thread avec leurre + gestionnaire de signal MBA, patch INT3 + oracle de brute-force par coredump, chaîne de gestionnaires de signal + oracle LD_PRELOAD
  • patterns-ctf.md — Patterns spécifiques aux compétitions (Partie 1) : opcodes d’émulateur cachés, extraction de clé LD_PRELOAD, extraction statique SPN, lissage d’image XOR, chiffrement octet par octet, bitmap de convergence mathématique, XOR bitmap PE Windows + OCR, chargeurs RC4+VM en deux étapes, résolution de labyrinthe dans un module noyau, canaux VM multi-threadés, détection de bibliothèque partagée backdoorée par diff de chaînes, module noyau binfmt personnalisé avec binaires RC4 plats, imports résolus par hash / ransomware sans import, corruption d’en-tête de section ELF pour anti-analyse
  • patterns-ctf-2.md — Patterns spécifiques aux compétitions (Partie 2) : brute-force auto-déchiffrant multi-couche, licence ZIP+XOR intégrée, désobfuscation de chaînes de stack, brute-force de préfixe de hash, treillis CVP/LLL pour validation entière, obfuscation de fonction arbre de décision, élimination de Gauss sur GF(2^8), analyse d’obfuscation de chaîne ROP (ROPfuscation)
  • patterns-ctf-3.md — Patterns spécifiques aux compétitions (Partie 3) : circuit Python Z3 sur une ligne, popcount par fenêtre glissante, code Morse LED clavier via ioctl, validation cachée dans destructeur C++, corruption mémoire par effet de bord d’appel système, gestionnaires d’événements MFC, brute-force de chaîne de clé séquentielle VM, inversion de transformée de Burrows-Wheeler, exploitation de ligature de police OpenType, VM shader GLSL avec code auto-modifiant, compteur d’instructions comme état cryptographique, automatisation de crackme batch via objdump, anti-analyse par fork+pipe+branche morte, inversion de réseau de neurones TensorFlow via inversion de couche sigmoïde, analyse de filtre BPF via JIT noyau vers assembleur x64
  • languages.md — Spécifique aux langages : bytecode Python et remappage d’opcodes, bytecode Python version-spécifique, dépaquetage statique Pyarmor, stubs DOS, HAP/ABC HarmonyOS, Brainfuck/esolangs (+ analyse statique caractère par caractère BF, oracle de comptage de lectures canal auxiliaire BF, détection d’idiome de comparaison BF), UEFI, transpilation vers C, canal auxiliaire de couverture de code, rétro-ingénierie fonctionnelle OPAL, substitution non bijective, inversion de programme FRACTRAN
  • languages-platforms.md — Spécifique aux plateformes/frameworks : récupération de schéma Rust serde_json, obfuscation Android JNI RegisterNatives, patch de bytecode Android DEX en runtime via /proc/self/maps, contournement de chargement .so Android natif via nouveau projet, contournement Firebase Cloud Functions Frida, rétro-ingénierie Verilog/matériel, inversion de hash préfixe par préfixe, satisfaction de contraintes polyglotte Ruby/Perl, extraction ASAR Electron + analyse binaire native, introspection runtime Node.js npm
  • languages-compiled.md — Rétro-ingénierie de binaires Go (GoReSym, goroutines, layout mémoire, opérations de canal, embed.FS, patch d’UUID binaire Go pour énumération C2), binaires Rust (démangling, Option/Result, Vec, chaînes panic), binaires Swift (démangling, tables de témoins de protocole), Kotlin/JVM (machines d’état de coroutine), langage intermédiaire CMM de GHC Haskell pour analyse de structures récursives, C++ (reconstruction de vtable, RTTI, patterns STL)
  • platforms.md — RE spécifique aux plateformes : macOS/iOS (Mach-O, signature de code, runtime Objective-C, Swift, dyld, contournement de jailbreak), firmware embarqué/IoT (binwalk, extraction UART/JTAG/SPI, ARM/MIPS, RTOS), pilotes noyau (Linux .ko, eBPF, Windows .sys), bus CAN automobile
  • platforms-hardware.md — RE matériel et architecture avancée : reconstruction GPIO du contrôleur LCD HD44780, RISC-V avancé (extensions personnalisées, modes privilégiés, débogage), rétro-ingénierie et exploitation ARM64/AArch64 (convention d’appel, gadgets ROP, émulation qemu-aarch64-static)
  • field-notes.md — Notes de référence rapides : types de binaires, contournement anti-débogage, patterns spécialisés, notes de cas CTF

Quand pivoter

  • Exploitation Heap / ROP / noyau après compréhension du binaire → pwn-chain/
  • Fichiers supprimés / PCAP / artefacts disque → digital-forensics/
  • Application web avec un petit client auxiliaire → js-reverse/
  • Véritable malware / C2 / pack → malware-analysis/
  • Emballage de compétition CTF multi-type → ctf-sandbox/ (orchestrateur sidecar)

Workflow de résolution de problèmes

  1. Commencer par l’extraction de chaînes — de nombreux défis faciles contiennent des drapeaux en clair
  2. Essayer ltrace/strace — l’analyse dynamique révèle souvent les drapeaux sans rétro-ingénierie
  3. Essayer le hook Frida — hooker strcmp/memcmp pour capturer les valeurs attendues sans rétro-ingénierie
  4. Essayer angr — l’exécution symbolique résout automatiquement de nombreux vérificateurs de drapeau
  5. Essayer Qiling — émuler des binaires d’architecture étrangère ou contourner un anti-débogage lourd sans artefacts
  6. Cartographier le flux de contrôle avant de modifier l’exécution
  7. Automatiser les processus manuels via des scripts (r2pipe, Frida, angr, Python)
  8. Valider les hypothèses en comparant les sorties des décompilateurs (dogbolt.org pour côte à côte)

Gains rapides (À essayer en premier !)

# Extraction de drapeau en clair
strings binaire | grep -E "flag{|CTF{|pico"
strings binaire | grep -iE "flag|secret|password"
rabin2 -z binaire | grep -i "flag"

# Analyse dynamique - capture souvent le drapeau directement
ltrace ./binaire
strace -f -s 500 ./binaire

# Recherche de dump hexadécimal
xxd binaire | grep -i flag

# Exécution avec entrées de test
./binaire AAAA
echo "test" | ./binaire

Analyse initiale

file binaire           # Type, architecture
checksec --file=binaire # Fonctionnalités de sécurité (pour pwn)
chmod +x binaire       # Rendre exécutable

Stratégie de dump mémoire

Astuce clé : Laissez le programme calculer la réponse, puis dumpez-la. Placez un point d’arrêt à la comparaison finale (b *main+OFFSET), entrez une entrée de la bonne longueur, puis x/s $rsi pour dumper le drapeau calculé.

Détection de drapeau leurre

Motif : Plusieurs cibles factices avant la vérification réelle. Recherchez plusieurs cibles de comparaison en séquence avec différents messages de succès. Placez le point d’arrêt à la comparaison FINALE, pas aux précédentes.

Débogage PIE avec GDB

Les binaires PIE randomisent l’adresse de base. Utilisez des points d’arrêt relatifs :

gdb ./binaire
start                    # Force la résolution de la base PIE
b *main+0xca            # Relatif à main
run

Direction de la comparaison (Critique !)

Deux motifs : (1) transform(drapeau) == cible_stockée — inverser la transformation. (2) transform(cible_stockée) == drapeau — le drapeau EST la donnée transformée, appliquez simplement la transformée à la cible stockée.

Motifs de chiffrement courants

  • XOR avec un seul octet — essayer les 256 valeurs
  • XOR avec un texte clair connu (flag{, CTF{)
  • RC4 avec clé codée en dur
  • Permutation personnalisée + XOR
  • XOR avec indice de position (^ i ou ^ (i & 0xff)) superposé à une clé répétitive

Référence rapide des outils

# Radare2
r2 -d ./binaire     # Mode débogage
aaa                # Analyser
afl                # Lister les fonctions
pdf @ main         # Désassembler main

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

# IDA
ida64 binaire       # Ouvrir dans IDA64

Notes approfondies

Utilisez field-notes.md après le premier tour de triage lorsque vous savez de quel type de cible il s’agit.

  • Formats cibles : bytecode Python, WASM, Android, Flutter, .NET, UPX, Tauri
  • Notes techniques : contournement anti-débogage, analyse VM, pièges x86-64, solveurs itératifs, Unicorn, canaux auxiliaires temporels
  • Notes plateformes : macOS/iOS, firmware embarqué, pilotes noyau, Swift, Kotlin, Go, Rust, D
  • Notes de cas : motifs de rétro-ingénierie modernes spécifiques aux CTF et motifs de défis classiques plus anciens

Contexte de routage

Entrée amont : skills/SKILL.md (contrôle général), routing.md Sortie aval :

  • Besoin de décompilation IDA → ida-reverse/
  • Besoin d’analyse CLI radare2 → radare2/
  • Besoin d’analyse couche APK → apk-reverse/
  • Besoin d’exécution dynamique Frida/angr → tools-dynamic.md
  • Besoin de contournement anti-débogage → anti-analysis.md
  • Rencontre d’un langage spécifique (Go/Rust/Python/WASM) → languages*.md
  • Rencontre d’un motif CTF → patterns*.md

Modules associés de même niveau : apk-reverse/ (lorsque APK pointe vers .so, on peut revenir à la branche Frida/radare2 de ce module)

Auto-vérification d’achèvement (MUST passer avant de déclarer terminé)

  • Ai-je exécuté chaque étape du workflow (et pas seulement lu) ?
  • Ai-je utilisé des chemins d’outils réels basés sur tool-index ?
  • Ai-je produit des preuves reproductibles (commandes/scripts/captures d’écran/rapports) ?
  • Ai-je complété et renseigné les éléments de Checklist requis par RULES ?

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.

Skills associés