binary-analysis-patterns
Analisar Padrões de Código Binário
Compreenda executáveis compilados sem código-fonte. Esta habilidade fornece padrões de linguagem assembly, reconhecimento de fluxo de controle e orientação para decompilação em tarefas de engenharia reversa.
下载技能 ZIP
在 Claude 中上传
前往 设置 → 功能 → 技能 → 上传技能
开启并开始使用
测试它
正在使用“binary-analysis-patterns”。 O que este padrão assembly faz? ```asm lea eax, [rax + rax*4] add eax, eax ```
预期结果:
Este padrão multiplica um valor por 10. A instrução LEA computa rax * 5 (rax + rax*4), depois o ADD dobra o resultado para obter rax * 10. Compiladores usam esta otimização shift-and-add em vez da instrução MUL mais lenta para multiplicação por constantes.
正在使用“binary-analysis-patterns”。 Como identifico uma instrução switch na desmontagem?
预期结果:
Procure por dois padrões: (1) Jump tables - um registrador é usado como índice em um array de endereços (jmp [table + reg*8]), ou (2) Comparações sequenciais - múltiplas cadeias cmp/je comparando a mesma variável contra diferentes constantes. O padrão jump table é mais comum para instruções switch maiores com muitos casos.
正在使用“binary-analysis-patterns”。 Qual é a diferença entre estes dois padrões? Pattern A: mov eax, [rdi] Pattern B: movzx eax, byte [rdi]
预期结果:
Pattern A lê um inteiro de 4 bytes (dword) da memória, sugerindo tipo int ou uint32. Pattern B lê um único byte e faz zero-extend para 32 bits, sugerindo tipo unsigned char ou uint8. A variante movzx é comumente usada ao trabalhar com flags booleanas, caracteres ASCII ou valores unsigned pequenos que precisam ser promovidos para registradores maiores para operações.
安全审计
安全All 47 static analysis findings are false positives. The detected patterns are Markdown code fence delimiters and assembly code examples in documentation. No executable code, external commands, or security risks present. This is purely educational content about binary analysis patterns.
质量评分
你能构建什么
Engenharia Reversa de Malware
Pesquisadores de segurança usam padrões assembly para entender o comportamento de malware, identificar funções maliciosas e reconstruir a lógica do programa sem acesso ao código-fonte.
Manutenção de Código Legado
Desenvolvedores que mantêm sistemas legados sem documentação usam padrões de desmontagem para entender binários compilados, corrigir bugs e adicionar recursos a aplicações antigas.
Resolução de Desafios CTF
Participantes de Capture The Flag analisam executáveis binários para encontrar flags ocultas, entender o fluxo do programa e explorar vulnerabilidades usando reconhecimento de padrões assembly.
试试这些提示
Explique o que este padrão de código assembly representa em código de alto nível: ```asm xor ecx, ecx loop_start: cmp ecx, [n] jge loop_end ; ... body ... inc ecx jmp loop_start loop_end: ``` Que constructo de programação este padrão implementa?
Desmontei esta função. Ajude-me a entender: 1. Qual é a assinatura da função (parâmetros e tipo de retorno)? 2. Qual convenção de chamada é usada (System V ou Microsoft x64)? 3. Qual é a lógica geral desta função? [cole o código assembly aqui]
Este código assembly acessa uma estrutura de dados complexa. Ajude-me a identificar: 1. Que tipo de estrutura de dados é esta (struct, array, linked list)? 2. Quais são os offsets dos campos e seus prováveis tipos? 3. O que esta estrutura representa no código original? ```asm mov rdi, [struct_ptr] mov eax, [rdi] movzx eax, byte [rdi+4] mov rax, [rdi+8] ```
Preciso de um script Python para Ghidra para: 1. Encontrar todas as funções que chamam 'strcpy' 2. Identificar vulnerabilidades potenciais de buffer 3. Criar um tipo de estrutura para um layout de dados que descobri Forneça o script com explicações do que cada parte faz.
最佳实践
- Comece com análise de strings para identificar funções interessantes - strings referenciadas no código frequentemente revelam o propósito da lógica ao redor
- Siga o fluxo de dados para trás a partir de chamadas API interessantes ou funções de biblioteca para entender como os dados são preparados e validados
- Use cross-references (xrefs) extensivamente - entender quem chama uma função e o que ela acessa revela contexto e propósito
- Documente suas descobertas com comentários e símbolos renomeados imediatamente - análise binária é iterativa e você esquecerá o contexto
避免
- Assumir que a saída do decompiler está correta - decompilação pode produzir código enganoso devido a otimizações, tipos não reconhecidos ou chamadas indiretas
- Analisar builds otimizadas sem entender otimizações do compilador - tail call optimization (jmp em vez de call+ret) e inlining podem obscurecer limites de função
- Focar apenas nas funções 'interessantes' - autores de malware frequentemente escondem lógica em funções utilitárias de aparência comum ou usam técnicas de ofuscação
- Ignorar convenções de chamada específicas da arquitetura - identificar erroneamente passagem de parâmetros leva a assinaturas de função completamente erradas