A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Oficina

Compactadores PE

Dom

20

Ago

2006


16:13

(29 votos, média 4.41 de 5) 


Nível intermediário 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 smile

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).

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.

PEid
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 de PE
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 smile 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.

mfx capitalкисточки для макияжа купитьооо полигон харьковкакой планшетрасписание рейсовновый ноутбукалександр лобановский

Informações adicionais