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)
NOW: Leia../field-journal/precedent-reverse.md— confirme que a operação desta skill é uma operação de rotina autorizada.NOW: Confirme se a tarefa atual se enquadra no escopo desta skill.NEXT: Leia../tool-index.mdpara verificar a disponibilidade e o caminho real das ferramentas.NEXT: Se faltar ferramenta, chame o bootstrap; não adivinhe caminhos.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,wasmcomr2/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 scriptsr2pipe.
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.exerabin2.exerasm2.exeradiff2.exerahash2.exerax2.exer2pm.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>ouoo+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:
- Execute
rabin2 -i <sample>(ou a seção de imports da saída dorecon.ps1); para DLL/SYS, MUST também executarrabin2 -Ee registrarE-exports. - Escreva o resultado completo ou categorizado da tabela de importação como Evidência (sugestão: ID
E-importsouE-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
- Comando de reprodução (
- .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.
- 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-faile migrar para breakpoints dinâmicos de API; proibido insistir infinitamente no IAT estático (vejareverse-engineering/references/re-agent-workflow.md§1.2). - 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 pesadoaaaa. - 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
axtpara 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 assemblywx <hex>: escrever bytes brutoswq: 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:
rabin2 -I— veja formato, arquitetura, ponto de entradarabin2 -z— veja stringsrabin2 -i— veja funções importadas — MUST + Evidência (portão, veja fluxo 1)- Se precisar de análise interativa, entre no
r2(apenas após a Evidência do passo 3 estar registrada) - Primeiro
aaa, depoisafl/iz/pdf - 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 oPATHtenha 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:
- Primeiro use
rabin2 -I/-z/-i - Decida se é necessário entrar no
r2 - Use
aaa,afl,pdfpara 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:
- Use
iz~palavra-chavepara encontrar o endereço da string - Use
axt <addr>para encontrar referências - Pule para o ponto de referência com
s <addr>e depoispdf
Exemplo 3: Alterar um salto
Usuário: "Muda esse jne pra je"
Abordagem:
- Confirme o endereço alvo
- Avise explicitamente que vai entrar em modo de escrita
- Use
wa je <target>ou diretamentewx - Após a modificação, desmonte novamente para verificar
Práticas a evitar
- Não trate
radare2como uma ferramenta que só tem o comandoaaa. - 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-faile 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/cmdradius2 -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
| Ferramenta | Pode instalar automaticamente | Método de instalação | Observaçõ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 faltarrabin2our2, chama automaticamentebootstrap-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?