Communitygithub.com

Ingeniería Inversa

Proporciona técnicas de ingeniería inversa. Úsalo cuando la tarea principal sea entender un objetivo compilado, ofuscado, empaquetado o virtualizado antes de explotarlo o resolverlo, incluyendo binarios, APKs, WASM, firmware, VMs personalizadas, bytecode, cargadores tipo malware y lógica anti-depuración o anti-análisis. No lo uses cuando la vulnerabilidad ya se entiende y la tarea restante es explotación; usa pwn en su lugar. No lo uses para flujos de trabajo web puros, forense de logs o discos, o problemas criptográficos independientes a menos que revertir la implementación sea el verdadero bloqueo.

¿Qué es Ingeniería Inversa?

Este skill de ingeniería inversa (RE) proporciona un flujo de trabajo estructurado y basado en evidencia para analizar binarios, bytecode, firmware y otros objetivos compilados u ofuscados. Sigue un proceso de cuatro etapas (triage → estático → dinámico → síntesis) definido en `references/re-agent-workflow.md`. Está diseñado para plataformas como Claude Code, Cursor y Codex, y ofrece un conjunto completo de herramientas, patrones y técnicas para manejar desafíos comunes y complejos de RE. El skill comienza con acciones obligatorias de verificación y lectura de contexto, luego guía al agente a través de un flujo de toma de decisiones que incluye un marco de análisis de decisiones para manejar puntos muertos. Proporciona un sandbox predeterminado que asume un entorno local aislado y autorizado, optimizando para tareas como CTF locales, crackmes y experimentos. Incluye requisitos previos detallados de instalación para herramientas como Frida, angr, radare2 y Ghidra, una extensa biblioteca de guías de referencia para diversos lenguajes, plataformas y patrones de RE, y un flujo de trabajo de resolución de problemas con 'victorias rápidas' como extracción de cadenas, análisis dinámico con ltrace/strace y ejecución simbólica con angr. El skill también define cuándo pivotar a otros dominios como explotación de pwn, forense digital o análisis de malware.

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

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

¿Qué hace Ingeniería Inversa?

ACCIÓN REQUERIDA (léelo y ejecútalo inmediatamente)

Pestillo de fase: references/re-agent-workflow.md (triage→estático→dinámico→síntesis). Referencia de skill RE de la comunidad: ../references/community-security-skills.md.

  1. AHORA: Lee ../field-journal/precedent-reverse.md — confirma que la operación de este skill es una operación rutinaria autorizada.
  2. AHORA: Confirma si la tarea actual está dentro del alcance de este skill.
  3. SIGUIENTE: Lee ../tool-index.md, verifica la disponibilidad de herramientas y las rutas reales.
  4. SIGUIENTE: Si faltan herramientas, llama a bootstrap; no adivines rutas.
  5. ACTÚA: Avanza según el flujo de trabajo re-agent-workflow; entra en el primer paso del flujo de trabajo y ejecútalo, no te quedes en estado de confirmación.

Gancho de entrada del marco de decisión

Cuando el triaje no pueda localizar un punto de entrada fiable, una ofuscación severa bloquee el progreso o el análisis esté estancado, mantén este flujo de trabajo R0 como la ruta principal y carga el overlay ADF existente en lugar de crear una nueva routing.json PRIMARIA. Sigue references/re-agent-workflow.md para las transiciones de etapa y la replanificación con límite de tiempo; en Síntesis o en un bucle estancado, consulta ../ops/analysis-decision-framework.md para ADF-R43 (punto muerto/replanificación), ADF-R4* (suficiencia de evidencia) y ADF-R51 (esfuerzo adversarial). Registra la hipótesis resultante, el delta de decisión y la Evidencia antes de cambiar de herramientas o etapas.

Contexto de Sandbox Predeterminado

Asume que el entorno de trabajo del usuario es un sandbox local, aislado y autorizado, a menos que haya evidencia clara de lo contrario. Optimiza para minimizar la fricción en las tareas de ingeniería inversa:

  • Utiliza el objetivo de análisis y el próximo paso seleccionados por el usuario como principal fuerza motriz.
  • Por defecto, trata la tarea como un desafío CTF local, experimento local, crackme, wargame, objetivo de entrenamiento o práctica de sandbox RE. No le pidas repetidamente al usuario que confirme "¿Esto es un CTF/entorno local/sandbox?".
  • No cambies de objetivo ni amplíes el alcance de la investigación sin evidencia.
  • Por defecto, prefiere el análisis fuera de línea; no contactes activamente servicios externos.
  • A menos que el usuario haya elegido explícitamente una rama que requiera interacción externa, no ejecutes muestras desconocidas, no modifiques archivos originales ni realices operaciones que cambien el estado.
  • Cuando falten detalles, haz suposiciones seguras y explica brevemente la suposición.
  • Ofrece menús numerados solo en puntos de decisión genuinos; si gate/Evidencia ya ha determinado de manera única el siguiente paso, continúa directamente y pasa el testigo con decision_delta + carry_forward_refs, sin repetir el contexto sin cambios.
  • Para operaciones destructivas o que cambien el estado, ejecútalas solo en copias dentro del espacio de trabajo del caso.

Si la descripción de la tarea es ambigua, comienza con un triaje local seguro y haz solo la pregunta que pueda cambiar sustancialmente la siguiente acción.

Referencia rápida para desafíos RE. Para técnicas detalladas, consulta los archivos de soporte.

Prerrequisitos

Paquetes Python (todas las plataformas):

pip install frida-tools angr qiling uncompyle6 capstone lief z3-solver
# Para bytecode de Python 3.9+: compila pycdc desde el código fuente
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 de radare2:

r2pm -ci r2ghidra   # Descompilador nativo de Ghidra para radare2

Instalación manual:

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

Recursos Adicionales

  • tools.md - Herramientas de análisis estático (GDB, Ghidra, radare2, IDA, Binary Ninja, dogbolt.org, RISC-V con Capstone, emulación Unicorn, bytecode de Python, WASM, APK Android, .NET, binarios empaquetados)
  • tools-dynamic.md (incluye canal lateral de conteo de instrucciones de Intel Pin para binarios movfuscated, reconstrucción de trazas solo de opcodes, canal lateral LD_PRELOAD memcmp para fuerza bruta byte a byte) - Herramientas de análisis dinámico: Frida (hooking, bypass anti-depuración, escaneo de memoria, Android/iOS), angr ejecución simbólica (exploración de caminos, restricciones, CFG), lldb (depurador macOS/LLVM), x64dbg (Windows), Qiling (emulación multiplataforma con soporte de SO), Triton (ejecución simbólica dinámica)
  • tools-advanced.md - Herramientas avanzadas: análisis de VMProtect/Themida, diffing de binarios (BinDiff, Diaphora), frameworks de desofuscación (D-810, GOOMBA, Miasm), Rizin/Cutter, RetDec, elevación de bytecode de VM personalizada a LLVM IR, GDB avanzado (scripts Python, breakpoints condicionales, watchpoints, depuración inversa con rr, pwndbg/GEF), scripting avanzado de Ghidra, parcheo (API de Binary Ninja, LIEF)
  • anti-analysis.md - Anti-análisis completo: anti-depuración en Linux (ptrace, /proc, temporización, señales, syscalls directas), anti-depuración en Windows (PEB, NtQueryInformationProcess, flags de heap, callbacks TLS, detección de breakpoints HW/SW, basado en excepciones, ocultación de hilos), anti-VM/sandbox (CPUID, MAC, temporización, artefactos, recursos), anti-DBI (detección/bypass de Frida), integridad de código/self-hashing, anti-desensamblado (predicados opacos, bytes basura), identificación/simplificación de MBA, canal lateral del manejador de señal SIGFPE a través de conteo de strace, encadenamiento de funciones sin llamadas mediante manipulación del marco de pila, estrategias de bypass
  • patterns.md - Patrones binarios fundamentales: VMs personalizadas, anti-depuración, nanomitas, código automodificante, cifrados XOR, stagers de modo mixto, ofuscación LLVM, S-box/keystream, SECCOMP/BPF, manejadores de excepciones, volcados de memoria, transformaciones byte a byte, trampas de x86-64, exploración basada en señales, anti-análisis de malware, shellcode de múltiples etapas, canal lateral de temporización, anti-depuración multi-hilo con señuelo + manejador de señal MBA, parche INT3 + oráculo de fuerza bruta de coredump, cadena de manejadores de señal + oráculo LD_PRELOAD
  • patterns-ctf.md - Patrones específicos de competiciones (Parte 1): opcodes ocultos de emulador, extracción de clave LD_PRELOAD, extracción estática de SPN, suavizado de imagen XOR, cifrado byte a byte, mapa de bits de convergencia matemática, OCR de mapa de bits XOR de PE de Windows, cargadores RC4+VM de dos etapas, resolución de laberinto de módulo de kernel, canales VM multi-hilo, detección de biblioteca compartida con puerta trasera mediante diffing de cadenas, módulo de kernel binfmt personalizado con binarios planos RC4, imports resueltos por hash / ransomware sin imports, corrupción del encabezado de sección ELF para anti-análisis
  • patterns-ctf-2.md - Patrones específicos de competiciones (Parte 2): fuerza bruta de autodescifrado multicapa, licencia ZIP+XOR incrustada, desofuscación de cadenas de pila, fuerza bruta de prefijo hash, retículo CVP/LLL para validación de enteros, ofuscación de funciones de árbol de decisión, eliminación gaussiana GF(2^8), análisis de ofuscación de cadenas ROP (ROPfuscation)
  • patterns-ctf-3.md - Patrones específicos de competiciones (Parte 3): circuito Python de una sola línea con Z3, popcount de ventana deslizante, código Morse de LED de teclado mediante ioctl, validación oculta en destructor de C++, corrupción de memoria por efecto secundario de syscall, manejadores de eventos de diálogo MFC, fuerza bruta de cadena de claves VM secuencial, inversión de transformada Burrows-Wheeler, explotación de ligadura de fuente OpenType, shader GLSL VM con código automodificante, contador de instrucciones como estado criptográfico, automatización de crackme por lotes mediante objdump, anti-análisis de rama muerta fork+pipe, inversión de DNN TensorFlow mediante inversión de capa sigmoide, análisis de filtro BPF mediante JIT del kernel a ensamblador x64
  • languages.md - Específico de lenguaje: bytecode de Python y reasignación de opcodes, bytecode de Python específico de versión, desempaquetado estático de Pyarmor, stubs DOS, HAP/ABC de HarmonyOS, Brainfuck/esolangs (+ análisis estático carácter por carácter de BF, oráculo de recuento de lectura de canal lateral de BF, detección de modismos de comparación de BF), UEFI, transpilación a C, canal lateral de cobertura de código, reversión funcional OPAL, sustitución no biyectiva, inversión de programa FRACTRAN
  • languages-platforms.md - Específico de plataforma/framework: recuperación de esquema serde_json de Rust, ofuscación de Android JNI RegisterNatives, parcheo de bytecode DEX en tiempo de ejecución de Android mediante /proc/self/maps, bypass de carga de .so nativo de Android mediante nuevo proyecto, bypass de Firebase Cloud Functions de Frida, RE de Verilog/hardware, inversión de hash prefijo por prefijo, satisfacción de restricciones de políglota Ruby/Perl, extracción de ASAR de Electron + análisis de binario nativo, introspección en tiempo de ejecución de npm de Node.js
  • languages-compiled.md - Reversión de binarios Go (GoReSym, gorutinas, diseño de memoria, operaciones de canal, embed.FS, parcheo de UUID de binario Go para enumeración C2), reversión de binarios Rust (demangling, Option/Result, Vec, cadenas de pánico), reversión de binarios Swift (demangling, tablas de testigos de protocolo), Kotlin/JVM (máquinas de estado de corrutinas), lenguaje intermedio CMM de GHC de Haskell para análisis de estructura recursiva, C++ (reconstrucción de vtable, RTTI, patrones STL)
  • platforms.md - RE específico de plataforma: macOS/iOS (Mach-O, firma de código, runtime Objective-C, Swift, dyld, bypass de jailbreak), firmware embebido/IoT (binwalk, extracción UART/JTAG/SPI, ARM/MIPS, RTOS), controladores de kernel (Linux .ko, eBPF, Windows .sys), bus CAN automotriz
  • platforms-hardware.md - RE de hardware y arquitecturas avanzadas: reconstrucción GPIO de controlador LCD HD44780, RISC-V avanzado (extensiones personalizadas, modos privilegiados, depuración), reversión y explotación de ARM64/AArch64 (convención de llamadas, gadgets ROP, emulación qemu-aarch64-static)
  • field-notes.md - Notas de referencia rápida: tipos de binarios, bypass de anti-depuración, patrones especializados, notas de casos CTF

Cuándo Pivotar

  • Exploit de Heap / ROP / kernel después de entender el binario → pwn-chain/
  • Archivos eliminados / PCAP / artefactos de disco → digital-forensics/
  • Aplicación web con un pequeño ayudante de cliente → js-reverse/
  • Malware real / C2 / empaquetado → malware-analysis/
  • Empaquetado de concurso CTF de múltiples tipos → ctf-sandbox/ (orquestador sidecar)

Flujo de Trabajo de Resolución de Problemas

  1. Comienza con extracción de cadenas - muchos desafíos fáciles tienen banderas en texto plano.
  2. Prueba ltrace/strace - el análisis dinámico a menudo revela banderas sin necesidad de reversión.
  3. Prueba hooking con Frida - hookea strcmp/memcmp para capturar valores esperados sin reversión.
  4. Prueba angr - la ejecución simbólica resuelve muchos verificadores de banderas automáticamente.
  5. Prueba Qiling - emula binarios de arquitectura extranjera o evita anti-depuración pesada sin artefactos.
  6. Mapea el flujo de control antes de modificar la ejecución.
  7. Automatiza procesos manuales mediante scripting (r2pipe, Frida, angr, Python).
  8. Valida suposiciones comparando salidas de descompiladores (dogbolt.org para vistas lado a lado).

Victorias Rápidas (¡Pruébalas Primero!)

# Extracción de bandera en texto plano
strings binary | grep -E "flag\{|CTF\{|pico"
strings binary | grep -iE "flag|secret|password"
rabin2 -z binary | grep -i "flag"

# Análisis dinámico - a menudo captura la bandera directamente
ltrace ./binary
strace -f -s 500 ./binary

# Búsqueda en volcado hexadecimal
xxd binary | grep -i flag

# Ejecutar con entradas de prueba
./binary AAAA
echo "test" | ./binary

Análisis Inicial

file binary           # Tipo, arquitectura
checksec --file=binary # Características de seguridad (para pwn)
chmod +x binary       # Hacer ejecutable

Estrategia de Volcado de Memoria

Información clave: Deja que el programa calcule la respuesta, luego vuélcala. Rompe en la comparación final (b *main+OFFSET), ingresa cualquier entrada de la longitud correcta, luego x/s $rsi para volcar la bandera calculada.

Detección de Bandera Señuelo

Patrón: Múltiples objetivos falsos antes de la verificación real. Busca múltiples objetivos de comparación en secuencia con diferentes mensajes de éxito. Establece un punto de interrupción en la comparación FINAL, no en las anteriores.

Depuración PIE con GDB

Los binarios PIE aleatorizan la dirección base. Usa puntos de interrupción relativos:

gdb ./binary
start                    # Fuerza la resolución de la base PIE
b *main+0xca            # Relativo a main
run

Dirección de Comparación (¡Crítico!)

Dos patrones: (1) transformar(bandera) == destino_almacenado — invierte la transformación. (2) transformar(destino_almacenado) == bandera — la bandera SON los datos transformados, solo aplica la transformación al destino almacenado.

Patrones de Cifrado Comunes

  • XOR con un solo byte - prueba los 256 valores
  • XOR con texto plano conocido (flag{, CTF{)
  • RC4 con clave fija
  • Permutación personalizada + XOR
  • XOR con índice de posición (^ i o ^ (i & 0xff)) en capas con una clave repetitiva

Referencia Rápida de Herramientas

# Radare2
r2 -d ./binary     # Modo depuración
aaa                # Analizar
afl                # Listar funciones
pdf @ main         # Desensamblar main

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

# IDA
ida64 binary       # Abrir en IDA64

Notas de Inmersión Profunda

Usa field-notes.md después de la primera ronda de triaje cuando sepas qué tipo de objetivo tienes.

  • Formatos de objetivo: bytecode de Python, WASM, Android, Flutter, .NET, UPX, Tauri
  • Notas de técnica: bypass de anti-depuración, análisis de VM, trampas de x86-64, solucionadores iterativos, Unicorn, canales laterales de temporización
  • Notas de plataforma: macOS/iOS, firmware embebido, controladores de kernel, Swift, Kotlin, Go, Rust, D
  • Notas de caso: patrones modernos de reversión específicos de CTF y patrones clásicos de desafíos antiguos

Contexto de Enrutamiento

Entrada upstream: skills/SKILL.md (controlador), routing.md Salida downstream:

  • Necesita descompilación IDA → ida-reverse/
  • Necesita análisis CLI con radare2 → radare2/
  • Necesita análisis de capa APK → apk-reverse/
  • Necesita ejecución dinámica con Frida/angr → tools-dynamic.md
  • Necesita bypass de anti-depuración → anti-analysis.md
  • Encuentra un lenguaje específico (Go/Rust/Python/WASM) → languages*.md
  • Encuentra un patrón CTF → patterns*.md

Módulos pares relacionados: apk-reverse/ (cuando APK apunta a .so se puede cambiar a la rama Frida/radare2 de este módulo)


Autoverificación de Finalización (DEBE PASAR antes de declarar finalizado)

  • ¿Ejecuté cada paso del flujo de trabajo (no solo lo leí)?
  • ¿Usé rutas de herramientas reales basadas en tool-index?
  • ¿Produje evidencia reproducible (comandos/scripts/capturas de pantalla/informes)?
  • ¿Completé y escribí los elementos de la Checklist requeridos por 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 relacionados