Packers ou Compressores

Posted by

Packers são programas utilizados para comprimir dados de um arquivo executável.

Este tipo de programas utiliza técnicas de compressão para juntar dados comprimidos e dados não comprimidos de um arquivo executável e reorganizam o mesmo de forma a que o executável automaticamente extraia a parte comprimida enquanto estiver a ser executado em memória.

Este tipo de software também possui aplicações legítimas para desenvolvedores de software, muitos distribuidores de software utilizam este tipo de programas para ofuscar  comprimir o tamanho de programas quando armazenados em disco ou até mesmo para aqueles que distribuem os seus softwares em CDs e DVDs que possuem um espaço limitado.

No entanto este tipo de programas é muito utilizado para ofuscar os dados de um executável, uma técnica muito utilizada por programadores de malware que têm como objectivo ofuscar o executável para dificultar o trabalho dos engenheiros de software que desejam analisar o comportamento do malware.

Existe uma grande variedade de packers, cada um com a vantagem e desvantagem, alguns são desenvolvidos para uma família especifica de executáveis ou arquitectura, outros são mais abrangentes funcionam com mais famílias de executáveis (por exemplo executáveis Windows e UNIX) ou englobam mais arquitecturas (por exemplo 32 bits ou x86, 64 bits ou x86_64 ou ARM).

Hoje vou dar um exemplo utilizando o packer UPX que é um dos mais populares e utilizados. Este é um programa de simples utilização e também é de código aberto.

Para instalar o UPX no Debian, Ubuntu ou qualquer distribuição derivada dos mesmos devemos instalar o pacote “upx-ucl”.

[php]sudo apt-get install upx-ucl[/php]

O programa também possui uma versão para Windows que pode ser encontrada na sua página principal.

O programa possui duas opções de utilização, uma para comprimir um arquivo que é a opção padrão, e outra para descomprimir usando a opção “-d”.

Neste exemplo vamos comprimir o executável o programa whoami.exe, um simples executável que apresenta no ecrã o nome do utilizador que esta actualmente com a sessão iniciada.

[php]upx whoami.exe[/php]

O upx conseguiu atingir um nível de compressão de quase 50%, e no entanto o programa ainda pode ser executado, nada altera-se no comportamento do executável.

Para descomprimir um executável vamos simplesmente utilizar a opção “-d”.

[php] upx -d whoami.exe [/php]

Assim voltamos o executável ao seu estado normal.

Existe um utilitário que pode ser utilizado para identificar o packer (e em alguns casos a versão) utilizados em um determinado executável chamado “Exeinfo PE” que pode ser encontrado no seguinte link.

Para mais informações sobre packers recomendo a leitura desta página da Wikipédia.

Espero que o artigo tenha sido útil, até a próxima…

Leave a Reply

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

This site uses Akismet to reduce spam. Learn how your comment data is processed.