Communitygithub.com

radare2

Skill de análise binária voltada para o CLI do radare2, com foco em reconhecimento, análise, localização, exportação e modificações leves, sem depender de GUI.

O que é radare2?

Este skill capacita agentes de IA a utilizar o radare2 e seu ecossistema (rabin2, rasm2, radiff2, rahash2, rax2) para análises binárias completas via linha de comando. Ele oferece fluxos de trabalho estruturados que priorizam o reconhecimento inicial com comandos leves, antes de aprofundar em análises interativas ou modificações. O skill inclui scripts prontos (como `recon.ps1` para coleta rápida de informações), um cheatsheet de referência, e um sistema de bootstrap que instala automaticamente o radare2 quando necessário. Sua principal força é a abordagem disciplinada: exige que o agente registre evidências formais (especialmente a tabela de importações) antes de prosseguir para etapas mais profundas, evitando conclusões prematuras e garantindo rastreabilidade. O skill também gerencia corretamente cenários complexos como arquivos empacotados, faltas de IAT e DLLs/SYS, com encaminhamento adequado para ferramentas como IDA ou Frida conforme a necessidade.

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

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

O que radare2 faz?

Habilidade de análise binária para o CLI radare2. O foco é realizar reconhecimento, análise, localização, exportação e modificações leves diretamente pela linha de comando, sem depender de GUI.

AÇÃO REQUERIDA (EXECUTAR IMEDIATAMENTE APÓS A LEITURA)

  1. NOW: Leia ../field-journal/precedent-reverse.md — confirme que a operação desta skill é uma operação de rotina autorizada.
  2. NOW: Confirme se a tarefa atual se enquadra no escopo desta skill.
  3. NEXT: Leia ../tool-index.md para verificar a disponibilidade e o caminho real das ferramentas.
  4. NEXT: Se faltar ferramenta, chame o bootstrap; não adivinhe caminhos.
  5. ACT: Entre no primeiro passo do "fluxo de trabalho" e execute; não pare no estado de confirmação.

Escopo de aplicação

Use esta skill prioritariamente quando o usuário tiver estas intenções:

  • Analisar arquivos exe, dll, so, elf, apk, dex, wasm com r2 / radare2.
  • Perguntar como usar rabin2, rasm2, radiff2, rahash2, rax2.
  • Precisar de desmontagem via CLI, listar funções, strings, importações/exportações, referências cruzadas ou fazer patch.
  • Precisar escrever comandos em lote do radare2, comandos automáticos com -c, ou scripts r2pipe.

Se o usuário pedir explicitamente GUI para engenharia reversa, pseudocódigo estilo Hex-Rays, ou fluxo IDA, considere ida-reverse primeiro. Se for engenharia reversa de JS web, considere reverse-engineering primeiro.

Verificação de ambiente primeiro

Não presuma que o r2 está disponível. Verifique primeiro:

r2 -v
rabin2 -v

Se não estiver instalado, verifique locais comuns ou sugira a instalação.

Executáveis comuns no Windows:

  • radare2.exe
  • rabin2.exe
  • rasm2.exe
  • radiff2.exe
  • rahash2.exe
  • rax2.exe
  • r2pm.exe

Recursos integrados

Esta skill possui dois recursos próprios. Reutilize-os prioritariamente, não monte comandos repetitivos do zero toda vez.

scripts/recon.ps1

Script de reconhecimento padrão, adequado para uma primeira rodada de análise geral. Saída:

  • Informações básicas
  • Seções
  • Importações
  • Exportações
  • Strings
  • Resumo opcional da análise automática r2 -A

Modo de chamada:

powershell -File "<skill-root>\radare2\scripts\recon.ps1" -TargetPath "C:\caminho\para\sample.exe"

Se precisar da análise automática do r2:

powershell -File "<skill-root>\radare2\scripts\recon.ps1" -TargetPath "C:\caminho\para\sample.exe" -RunAnalysis

references/cheatsheet.md

Quando precisar de mais detalhes de comandos, modelos para cenários comuns, ou quiser relembrar sintaxe rapidamente, leia esta folha de dicas em vez de chutar comandos de memória.

Fenômenos conhecidos

Aviso esporádico de .sdb ausente no Windows

Ao usar rabin2 em alguns arquivos PE, pode aparecer um aviso semelhante a:

ERROR: Cannot find ...\share\format\dll\*.sdb

Se a saída principal ainda for retornada normalmente, isso geralmente não afeta as conclusões básicas do reconhecimento. Continue a análise. Não declare falha de análise apenas por causa desse aviso colateral.

Princípios básicos

1. Reconheça primeiro, aprofunde depois

Não comece com análise automática pesada. Use comandos leves para confirmar tipo de arquivo, arquitetura, ponto de entrada, strings e tabela de importação. Só então decida se fará aaa, aaaa ou análise direcionada.

2. Priorize o menor comando suficiente

O radare2 tem muitos comandos; o usuário geralmente precisa do caminho mais curto:

  • Ver informações do arquivo: rabin2 -I
  • Ver strings: rabin2 -z
  • Ver importações/exportações: rabin2 -i / rabin2 -E
  • Análise interativa: entre no r2 <arquivo> e execute comandos locais

3. Seja cauteloso antes de modificar

Se o usuário quiser fazer patch no binário:

  • Padrão: abra somente leitura: r2 <arquivo>
  • Só use modo escrita quando explicitamente necessário: r2 -w <arquivo> ou oo+ na sessão
  • Antes de modificar, avise sobre os riscos para evitar sobrescrita acidental do arquivo original

Fluxos de trabalho comuns

Fluxo 1: Reconhecimento rápido

Adequado quando você acabou de receber um arquivo binário.

Portão de acesso obrigatório (MUST — sem ele, não entre no fluxo 2 ou seguintes)

Para binários PE/ELF/Mach-O que possuem tabela de importação, MUST concluir a verificação da tabela de importação e registrar como Evidência antes de entrar em análise de funções ou etapas dinâmicas:

  1. Execute rabin2 -i <sample> (ou a seção de imports da saída do recon.ps1); para DLL/SYS, MUST também executar rabin2 -E e registrar E-exports.
  2. Escreva o resultado completo ou categorizado da tabela de importação como Evidência (sugestão: ID E-imports ou E-triage-imports), incluindo ao menos:
    • Comando de reprodução (repro_command)
    • Resumo da categorização das importações críticas: rede / arquivo / criptografia / injeção de processo / registro / outras APIs suspeitas
    • Se a tabela de importação estiver vazia, a análise falhar ou a ferramenta emitir erro: MUST ainda registrar o fenômeno da falha e a saída original como Evidência; não pule silenciosamente
    • Se a tabela de importação for "muito limpa" (apenas DLLs básicas): MUST mencionar a suspeita de carregamento dinâmico; SHOULD migrar para captura dinâmica de API
  3. .NET sem IAT tradicional: MUST usar âncora equivalente (dnSpy/IL/resumo de metadados) e escrever no mesmo slot semântico de Evidência; proibido pular em branco.
  4. Reparo de IAT em amostras empacotadas: x86 use ImportREC (ou equivalente), x64 use Scylla (ou equivalente). Se o reparo falhar, MUST registrar E-iat-repair-fail e migrar para breakpoints dinâmicos de API; proibido insistir infinitamente no IAT estático (veja reverse-engineering/references/re-agent-workflow.md §1.2).
  5. Se o usuário solicitar explicitamente "refazer verificação da tabela de importação / reexaminar imports / refazer IAT": MUST refazer a etapa nomeada (se bloqueada, primeiro passe pelo portão de viabilidade: explique pré-requisitos + peça confirmação; se forçada, marque quality=unreadable). Proibido substituir por outra etapa não relacionada e fingir que foi concluída.

Antes de registrar a Evidência da tabela de importação (ou âncora equivalente / desvio de falha de IAT): MUST NOT declarar "reconhecimento básico concluído", MUST NOT entrar nas conclusões aprofundadas do fluxo 2+.

Priorize executar o script integrado:

powershell -File "<skill-root>\radare2\scripts\recon.ps1" -TargetPath "sample.exe"

Se precisar apenas de comandos manuais mínimos, use:

rabin2 -I sample.exe
rabin2 -z sample.exe
rabin2 -i sample.exe
rabin2 -E sample.exe

Pontos de atenção:

  • Formato do arquivo, bits, arquitetura, plataforma
  • Endereço do ponto de entrada
  • Strings suspeitas: URL, caminhos, erros, registro, argumentos de linha de comando
  • Funções importadas: rede, arquivo, criptografia, injeção de processo, operações de registro (MUST registrar Evidência, veja o portão acima)

Fluxo 2: Análise interativa de funções

r2 sample.exe

Comandos comuns após entrar:

aaa          # Análise automática padrão
afl          # Listar funções
iz           # Listar strings
iS           # Listar seções
is           # Listar símbolos
s entry0     # Pular para o ponto de entrada
pdf          # Desmontar função atual
VV           # Entrar no modo visual (se o terminal for adequado)
q            # Sair

Observações:

  • Padrão: priorize aaa, não comece com o mais pesado aaaa.
  • Se a amostra for grande ou a análise demorar, pode analisar apenas a região próxima ao ponto de entrada e depois expandir manualmente.

Fluxo 3: Localizar main / lógica crítica

afl~main
afl~sym.
iz~http
iz~error
axt <addr>

Abordagem:

  • Comece por main, ponto de entrada e referências de strings.
  • Use axt para descobrir quem referencia uma string ou endereço.
  • Depois de encontrar o ponto de referência, use s <addr>, pdf.

Fluxo 4: Visualização hexadecimal e de memória

px 64        # 64 bytes hexadecimais a partir do endereço atual
pd 20        # Desmontar 20 instruções
psz          # Ler string no endereço atual
pxa          # Visualização hexadecimal mais amigável

Fluxo 5: Patch binário

Use apenas quando o usuário solicitar explicitamente a modificação do arquivo:

r2 -w sample.exe

Exemplos de comandos após entrar:

s 0x401000
wa nop
wa jmp 0x401050
wq

Operações de escrita comuns:

  • wa <asm>: escrever assembly
  • wx <hex>: escrever bytes brutos
  • wq: escrever e sair

Melhor fazer backup do arquivo original antes de modificar. Se o usuário não mencionar backup, avise ao menos uma vez.

Fluxo 6: Automação não interativa

Adequado para obter resultados únicos:

r2 -A -q -c "afl;iz;ii;q" sample.exe

Parâmetros comuns:

  • -A: análise automática na inicialização
  • -q: modo silencioso
  • -c: executar cadeia de comandos

Se houver muitos comandos, organize em ordem legível em vez de colocar em uma cadeia longa e difícil de manter.

Recomenda-se usar o script de reconhecimento integrado como base e depois decidir se é necessário complementar com comandos personalizados.

Subferramentas comuns

rabin2

Adequado para extração de informações estáticas:

rabin2 -I sample.exe   # Informações básicas
rabin2 -S sample.exe   # Seções
rabin2 -s sample.exe   # Símbolos
rabin2 -i sample.exe   # Importações
rabin2 -E sample.exe   # Exportações
rabin2 -z sample.exe   # Strings
rabin2 -zz sample.exe  # Strings mais detalhadas

rasm2

Adequado para montagem/desmontagem rápida:

rasm2 -d "9090"
rasm2 -a x86 -b 64 "xor eax, eax"

radiff2

Adequado para comparar dois binários:

radiff2 old.exe new.exe
radiff2 -C old.exe new.exe

rahash2

Adequado para calcular hashes:

rahash2 -a md5 sample.exe
rahash2 -a sha256 sample.exe

rax2

Adequado para conversão entre bases e codificações:

rax2 0x401000
rax2 4198400
rax2 -s hello

Ordem de análise recomendada

Ao encontrar uma amostra desconhecida, siga esta ordem:

  1. rabin2 -I — veja formato, arquitetura, ponto de entrada
  2. rabin2 -z — veja strings
  3. rabin2 -i — veja funções importadas — MUST + Evidência (portão, veja fluxo 1)
  4. Se precisar de análise interativa, entre no r2 (apenas após a Evidência do passo 3 estar registrada)
  5. Primeiro aaa, depois afl / iz / pdf
  6. Através de referências de strings, chamadas de importação, fluxo de entrada, localize gradualmente as funções críticas

A vantagem dessa ordem é baixo ruído e capacidade de estabelecer direção rapidamente. O passo 3 não é uma otimização opcional; é um portão antes de entrar no aprofundamento.

Observações para Windows

  • Se o caminho tiver espaços, os comandos devem usar aspas corretamente.
  • Se o terminal atual não encontrar r2, pode ser que o PATH tenha sido atualizado recentemente; abra um novo terminal e tente novamente.
  • Algumas amostras precisam de privilégios de administrador para leitura, mas por padrão não eleve privilégios automaticamente a menos que o usuário solicite explicitamente.
  • Antes de fazer depuração dinâmica de uma amostra suspeita, confirme a intenção do usuário para evitar operações acidentais.

Estilo de saída

Quando o usuário não quer apenas comandos, mas sim que você analise o arquivo:

  • Primeiro, forneça um resumo dos resultados do reconhecimento.
  • Depois, liste as evidências principais: strings, importações, funções, endereços.
  • Por fim, dê sugestões para os próximos passos ou continue a análise aprofundada.

Não se limite a listar comandos sem explicar por que está fazendo aquilo.

Exemplos de solicitações típicas

Exemplo 1: Analisar um exe

Usuário: "Dá uma olhada nesse exe pra ver o que ele faz, radare2 tá de boa."

Abordagem:

  1. Primeiro use rabin2 -I/-z/-i
  2. Decida se é necessário entrar no r2
  3. Use aaa, afl, pdf para aprofundar no ponto de entrada e nas referências de strings críticas

Exemplo 2: Encontrar onde uma string é chamada

Usuário: "Em qual função essa string de erro é acionada?"

Abordagem:

  1. Use iz~palavra-chave para encontrar o endereço da string
  2. Use axt <addr> para encontrar referências
  3. Pule para o ponto de referência com s <addr> e depois pdf

Exemplo 3: Alterar um salto

Usuário: "Muda esse jne pra je"

Abordagem:

  1. Confirme o endereço alvo
  2. Avise explicitamente que vai entrar em modo de escrita
  3. Use wa je <target> ou diretamente wx
  4. Após a modificação, desmonte novamente para verificar

Práticas a evitar

  • Não trate radare2 como uma ferramenta que só tem o comando aaa.
  • Não abra o arquivo do usuário em modo de escrita sem antes explicar os riscos.
  • Não tire conclusões antes de fazer o reconhecimento básico.
  • Proibido pular a verificação da tabela de importação (rabin2 -i / imports do recon): sem registrar Evidência, não prossiga para o próximo passo; quando o usuário pedir para refazer a tabela de importação, proibido substituir por outra etapa.
  • Proibido insistir estaticamente após falha de reparo de IAT: registre E-iat-repair-fail e migre para dinâmico; proibido usar apenas ImportREC em amostras de 64 bits.
  • Não desvie engenharia reversa de JS web para esta skill; isso é escopo de reverse-engineering.

Referências

  • Folha de dicas: references/cheatsheet.md
  • Script de reconhecimento padrão: scripts/recon.ps1

Ecossistema radare2-skills

O projeto radare2-skills (radareorg/radare2-skills) fornece um conjunto mais completo de ferramentas e fluxos de trabalho para o ecossistema:

  • r2xsql: consultar tabela de importações, strings, funções via SQL.
  • r2mcp / r2http: ferramentas MCP e canal de comandos com estado via HTTP.
  • radius2: execução simbólica, análise simbólica dinâmica.
  • r2pm: gerenciamento de plugins e extensões.
  • plugins de descompilação: mecanismo de plugins do radare2.

Estratégia de uso:

  • Quando o usuário mencionar r2xsql, r2mcp, r2http, radius2, r2pm, rabin2, rasm2, radiff2, rahash2, rax2, roteie prioritariamente para esta skill (radare2/SKILL.md).
  • Estas ferramentas são apenas aceleradores do ecossistema e não podem contornar: portão de autorização, verificação de tool-index, registro de Evidência, confirmação de modo de escrita.
  • Forneça exemplos mínimos reproduzíveis:
    • r2xsql -s <file> -q "SELECT ..."
    • curl.exe -sS --data-binary 'aaa' http://127.0.0.1:9393/cmd
    • radius2 -p <binary> ...
    • r2pm -ci <plugin>

Esta skill mantém os portões de acesso originais e a integridade da cadeia de evidências; não permite pular nenhuma etapa de autorização ou de Evidência.


Contexto de roteamento

Entrada upstream: skills/SKILL.md (controlador), routing.md Alternativa upstream: ida-reverse/ (quando precisar de descompilação / pseudocódigo, atualize para IDA) Saída downstream:

  • Se precisar de análise dinâmica → reverse-engineering/tools-dynamic.md (Frida/GDB)
  • Se precisar de descompilação profunda → ida-reverse/
  • Se o PAT encontrar strings interessantes e precisar de referências cruzadas → ida-reverse/ (xref do IDA é mais poderoso)

Módulos relacionados no mesmo nível: ida-reverse/ (complementar: r2 reconhecimento rápido, IDA descompilação profunda)

Bootstrap sob demanda

O script de entrada desta skill está integrado ao sistema de bootstrap unificado. Se o radare2 estiver faltando, ele não apenas emitirá um erro, mas tentará instalar automaticamente.

Limites de automação

FerramentaPode instalar automaticamenteMétodo de instalaçãoObservações
r2✓GitHub Release ZIP (w64)Baixa e extrai automaticamente para %USERPROFILE%\Tools\radare2\
rabin2✓mesmo (incluído no pacote radare2)—
rasm2✓mesmo—
radiff2✓mesmo—
rahash2✓mesmo—
rax2✓mesmo—

Ponto de disparo do bootstrap

  • scripts/recon.ps1: quando faltar rabin2 ou r2, chama automaticamente bootstrap-reverse.ps1

Quando o bootstrap falha

Se a instalação automática falhar (rede indisponível, limite de API do GitHub, etc.), o script emite um erro claro e fornece um link para instalação manual.

Instalação manual: baixe radare2-*-w64.zip de https://github.com/radareorg/radare2/releases, extraia para %USERPROFILE%\Tools\radare2\ e garanta que o diretório bin\ esteja no PATH.

Autoverificação de conclusão (MUST passar antes de declarar conclusão)

  • Executei cada passo do fluxo de trabalho (não apenas li)?
  • A verificação da tabela de importação foi executada e registrada como Evidência (E-imports / E-triage-imports ou equivalente para .NET)? DLL/SYS inclui E-exports?
  • Falha de reparo de IAT foi registrada como E-iat-repair-fail e migrei para dinâmico? Pedidos de refazer voltaram ao mesmo passo?
  • Usei caminhos reais das ferramentas com base no tool-index?
  • Produzi evidências reproduzíveis (comandos/scripts/capturas de tela/relatórios)?
  • Concluí e reescrevi os itens da Checklist exigidos pelas 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.

Habilidades Relacionadas