Pular para conteúdo

Anatomia de executáveis Windows Portable Executable (Windows PE)

Programas de fato executáveis no Windows são os .EXE ou Windows PE. Eles são binários normalmente gerados por algum compilador, como o GCC, e carregam consigo "todas" as instruções para a execução do arquivo.

Ao serem gerados, Windows PE possuem a seguinte estrutura nesta ordem:

  • Cabeçalho DOS
  • DOS Stub
  • Cabeçalho do PE
  • Cabeçalho Opcional
  • Cabeçalho / Tabela de Seção
  • Import / Export Adress Table (IAT)
  • Seções

Existem várias seções num executável, entre elas estão: - .text: contém as instruções a serem executadas. Em tese, deveria ser o único local do programa com instruções executáveis. - .data: armazena dados globais acessíveis pelo programa, como variáveis, strings e funções. - .rdata: é a mesma coisa do .data, mas com dados somente para leitura(ready-only). - .idata: (opcional) contém dados de funções importadas. Se esta seção não estiver presente, muito provavelmente os dados das funções estarão em .rdata. - .edata: contém dados de funções exportadas. - .pdata: (existe apenas em binários de 64 bits) contém dados sobre tratamentos de exceções. - .rsrc: contém recursos utilizados pelo binários, como imagens, strings, áudios, ícone, etc.

Ferramentas de visualização binária

São ferramentas que permitem ao usuário ver o programa em várias bases numéricas. A maioria os programas lê o programa em base binária, hexadecimal. Alguns outros tentam interpretar os bits e extrair algumas Strings ASCII. Enfim, são ferramentas interessantes para aprender análise de malware e analisar malwares manualmente durante emergências.

Frhed

O Frhed mostra o arquivo numa visualização binária, hexadecimal e ASCII. É útil, porque possibilita uma fácil análise manual das assinaturas nos arquivos. Entretanto, não é feito para escabilidade ou automatização.


Também há ferramentas focadas em analisar malwares em executáveis, mas elas serão abordados na sessão Empacotadores.

PEStudio

A ferramenta tem múltiplas funções, mas entre elas, há a visualização dos segmentos de dados do executável. O programa lhe mostra os dados organizados e tenta apontar anomalias e possíveis indícios de atitudes maliciosos.