UPX - UPX

UPX
Ultimate Packer for eXecutebles.png
lançamento inicial 26 de maio de 1998 ; 22 anos atras  ( 26/05/1998 )
Versão estável
3,96 / 23 de janeiro de 2020 ; 11 meses atrás  ( 2020-01-23 )
Repositório Edite isso no Wikidata
Escrito em C ++ , montagem
Sistema operacional Microsoft Windows , Linux , macOS , DOS , Atari TOS
Plataforma i386 , MIPS , AMD64 , ARM , PowerPC , m68k
Disponível em Inglês
Tipo Compressão executável
Licença GPL com exceção para executáveis ​​compactados, proprietário para algoritmo de compactação em distribuições binárias
Local na rede Internet upx .github .io

UPX ( Ultimate Packer for Executables ) é um compactador executável de código aberto que suporta vários formatos de arquivo de diferentes sistemas operacionais.

Compressão

O UPX usa um algoritmo de compactação de dados chamado UCL, que é uma implementação de código aberto de partes do algoritmo proprietário NRV ( Not Really Vanished ).

O UCL foi projetado para ser simples o suficiente para que um descompressor possa ser implementado em apenas algumas centenas de bytes de código. UCL não requer memória adicional a ser alocada para descompactação, uma vantagem considerável que significa que um executável compactado UPX geralmente não requer memória adicional.

UPX (desde 2.90 beta) pode usar LZMA na maioria das plataformas; entretanto, isso é desabilitado por padrão para 16 bits devido à baixa velocidade de descompressão em computadores mais antigos (use --lzma para forçá-lo).

A partir da versão 3.91, o UPX também oferece suporte a arquivos executáveis ​​de 64 bits (x64) na plataforma Windows . Este recurso está atualmente declarado como experimental .

Descompressão

O UPX suporta dois mecanismos de descompactação: uma técnica local e extração para arquivo temporário .

A técnica local, que descompacta o executável na memória, não é possível em todas as plataformas suportadas. Tem a vantagem de ser mais eficiente em termos de memória, e que o ambiente configurado pelo SO permanece correto.

O resto usa a extração para arquivo temporário. Este procedimento envolve sobrecarga adicional e outras desvantagens; entretanto, permite que qualquer formato de arquivo executável seja compactado. O método de extração para arquivo temporário tem várias desvantagens:

  • Permissões especiais são ignoradas, como suid .
  • argv[0] não será significativo.
  • Várias instâncias em execução do executável são incapazes de compartilhar segmentos comuns.

A embalagem UPX não modificada é freqüentemente detectada e descompactada por scanners de software antivírus . O UPX também possui um recurso integrado para descompactar executáveis ​​não modificados compactados com ele mesmo.

Formatos suportados

UPX suporta os seguintes formatos:

Atualmente, o UPX não oferece suporte a arquivos PE contendo código CIL destinado a ser executado no .NET Framework .

Notas

Referências

links externos