Você está na página 1de 3

Aldeia Numaboa - Compactadores PE http://www.numaboa.com.br/informatica/oficina/12...

Oficina

Compactadores PE

Dom (28 votos, média 4.43 de 5)

20 Categoria: Ferramentas de Engenharia Reversa


Última atualização: Quarta, 15 Abril 2009 12:43
Ago Escrito por vovó Vicki
Acessos: 11288
2006

16:13

Compactadores PE funcionam como zipadores de executáveis com uma diferença:


arquivos zip, na sua forma compactada, ficam inacessíveis enquanto que executáveis
compactados, apesar de "encolhidos", continuam funcionando normalmente.
Mas, antes de entrar em maiores detalhes, que tal saber o que é o formato PE?
O formato Portable Executable (daí PE), é o formato de arquivos executáveis usados no
sistema operacional Windows de 32 e de 64 bits. O termo portable deve-se à portabilidade
no sistema de 32 bits (e, por extensão, ao de 64 bits). Basicamente, o formato PE é uma
estrutura de dados que mantém encapsuladas as informações que o carregador do Windows
necessita para administrar o código executável. Isto inclui as referências a bibliotecas
dinâmicas, a tabelas de exportação e importação da API e aos dados de gerenciamento de
recursos. O formato PE inclui, entre outros tipos, os arquivos EXE, DLL e OBJ.
Se tudo isto estiver parecendo muito esotérico para o seu gosto, desista do resto do texto...
não adianta insistir. Mas, se você ainda estiver acompanhando a linha de raciocínio, então vai

dar para encarar o próximo tópico

O que é um compactador PE
Um compactador PE comprime e/ou esconde o conteúdo de um arquivo PE porque rearranja
as seções do arquivo binário eliminando seções vazias e/ou compactando algumas partes.
Além disto, insere suas próprias rotinas de descompactação. O efeito desta alteração é a
redução do arquivo executável e o fenômeno é que, apesar de ter seu tamanho diminuído,
ele continua sendo executável!
Diminuir o tamanho de executáveis tornou-se prático por causa da Internet. É muito melhor
fazer um download de um mega do que fazer o download de vários megabytes. Esconder o
conteúdo de executáveis também tem várias vantagens: limita o roubo de código, esconde
endereços de rede, URLs, canais de IRC e dificulta a alteração do código (como a aplicação
de ferramentas de cracking que alteram limites de tempo de uso ou registros de licença).

1 de 3 13-06-2012 08:11
Aldeia Numaboa - Compactadores PE http://www.numaboa.com.br/informatica/oficina/12...

Os compactadores mais usados


Atualmente (estou falando de 2006) os compactadores mais usados são o UPX, o
Armadillo/SoftwarePassport, o Aspack/Asprotect, o Softwrap, o Petite e o PeLock. Em menor
escala encontramos o Shrinker e o WWPack.
O UPX é um freeware de código aberto. Muito eficiente, costumo usá-lo com frequência no
software de minha autoria que disponibilizo para os usuários da Aldeia Numaboa. O objetivo
é apenas "economizar" no download - a segurança é coisa secundária. Aliás, querer proteger
qualquer código usando o UPX é utopia porque existem inúmeros descompactadores que
revertem o processo justamente porque o UPX é um compactador de código aberto...
Os demais possuem várias opções de proteção e são largamente difundidos. Apesar de
serem comerciais, os respectivos descompactadores continuam sendo os maiores entraves.

Como descobrir que um executável foi compactado


Muitas vezes, quando submetemos um executável a um debugger ou decompilador,
recebemos uma mensagem qualquer informando que o arquivo não segue os padrões usuais
de um PE e que provavelmente esteja compactado. Até aí, tudo bem. Mas, como descobrir
qual compactador foi usado? É neste momento que o sonho de qualquer curioso é possuir
um programinha mágico que dê uma dica confiável.
Eu também me rendi a esta tentação e saí à procura de um aplicativo que me ajudasse a
desvendar este mistério. Tive a sorte de encontrar o PEid, um freeware disponibilizado por
uma equipe de desenvolvedores que mantém este software caprichado. O identificador de PE
analisa principalmente as seções do PE compactado e compara seus achados com padrões
num banco de assinaturas. Atualmente existem mais de 600 e o interessante é que o usuário
pode ampliar o banco de dados com novas assinaturas.
Antes de mais nada, dê uma chegadinha no site do PEid ou na seção de
downloads/informática/utilitários aqui da Aldeia e baixe o aplicativo. A instalação não tem
nada de especial: basta abrir o arquivo zip numa pasta própria. Depois disso, execute o PEid,
clique no botão superior direito [...] e escolha um executável qualquer. Neste laboratório usei
um programinha do tipo crackme compactado com o UPX. Se você quiser usar o mesmo
programa, faça o download do Rebelx crackme três na seção de downloads/informatica
/crackme/crackme para iniciantes.

2 de 3 13-06-2012 08:11
Aldeia Numaboa - Compactadores PE http://www.numaboa.com.br/informatica/oficina/12...

Identificador de PE

Observe que na área de texto logo acima dos botões o PEid indica "UPX 0.89.6 - 1.02 / 1.05
- 1.24 (Delphi) stub -> Markus & Laszlo", ou seja, o executável foi compactado com o UPX.
Além disto, também é possível ver as seções do PE: clique no botão [>] do lado direito de EP
Section (onde a primeira seção mostrada é UPX1) para abrir a janela mostrada logo abaixo.

Seções do PE

Estas são algumas das "marcas" deixadas pelo compactador que o PEid identificou. O
executável analisado possui três seções: UPX0, UPX1 e .rsrc. Garanto que UPX0 e UPX1 não

estão lá por acaso O Aspack costuma criar uma seção .aspack e outra cujo nome pode
ser determinado (geralmente aparece como .adata, seu nome default). O PECompact cria as
seções PEC2 e PECompact2... e assim por diante.
Bem vindo ao mundo dos identificadores. Explore o PEid à vontade, instale os plugins
oferecidos no site do projeto e divirta-se! É uma excelente ferramenta, principalmente para
ser usada nos crackme.

3 de 3 13-06-2012 08:11