Dica: Comprimindo executáveis com o UPX


03-10-2007 por Equipe GdH
Dica: Comprimindo executáveis com o UPX
[03/10] :. Dica: Comprimindo executáveis com o UPX: Esta dica interessa a programadores em geral, seja Windows ou Linux, ou a redistribuidores de aplicações personalizadas... Você sabia que é possível tornar seus programas bem menores, sem muito trabalho? Por Marcos Elias Picão

http://www.guiadohardware.net/dicas/...aveis-upx.html

Comente aqui!
03-10-2007 por Fergo
É um ótimo compressor, muitas vezes supera seus concorrentes pagos como ASPack e Execryptor. Por ser gratuito e código aberto, é possível modificar o aplicativo para dificultar o unpacking e alterar a assinatura (concordando com as normas da GPL, claro).

Fergo
03-10-2007 por emtudo
Dica muito boa!

eu não sabia que podia ser descompactado na verdade eu nem sabia que era uma compactacao, eu achava que o programa removia bibliotecas desnecessarias, eu tentei alterar muitos com hexa decimal depois de gerar um arquivo compactado (mas eu usava outro compactador). mas eram tentativas inuteis, nem editor hexadecimal nem resource code.

Para falar a verdade desde 1999 que trabalho com informatica e nunca entrou na minha cabeca a logica de "compactacao de arquivos"

alguem ai tem um link que explica com mais detalhe esta logica?
desde ja grato!
03-10-2007 por Fergo
Existem diversos tipos de compressão, métodos, teorias, com e sem perda de dados (mp3 e zip por exemplo, respectivamente). Você pode dar uma olhada no artigo da Wikipedia que fala sobre compressão de arquivos:
http://en.wikipedia.org/wiki/File_compression
(o artigo em inglês é bem mais completo, mas pode acessar a versão em português através do menu na esquerda do Wikipedia).

Para o caso de compressão de executável, basicamente o que ocorre é que os packers adicionam mais uma seção no EXE (no upx, ela se chama .upx). Dentro dessa sessão há um pequeno código conhecido como "loader", que tem a função de descomprimir os dados presentes no arquivo .exe, já que a compressão torna o aplicativo inválido, pois os dados foram todos embaralhados e comprimidos. A única função do loader é buscar pelos dados e descomprimí-los, jogando o resultado na memória e criando um processo do Windows (WriteProcessMemory()), que será o aplicativo descomprimido pronto para uso

[]s
Fergo
03-10-2007 por emtudo
Citação:
Postado Originalmente por Fergo Ver Mensagens
Existem diversos tipos de compressão, métodos, teorias, com e sem perda de dados (mp3 e zip por exemplo, respectivamente). Você pode dar uma olhada no artigo da Wikipedia que fala sobre compressão de arquivos:
http://en.wikipedia.org/wiki/File_compression
(o artigo em inglês é bem mais completo, mas pode acessar a versão em português através do menu na esquerda do Wikipedia).

Para o caso de compressão de executável, basicamente o que ocorre é que os packers adicionam mais uma seção no EXE (no upx, ela se chama .upx). Dentro dessa sessão há um pequeno código conhecido como "loader", que tem a função de descomprimir os dados presentes no arquivo .exe, já que a compressão torna o aplicativo inválido, pois os dados foram todos embaralhados e comprimidos. A única função do loader é buscar pelos dados e descomprimí-los, jogando o resultado na memória e criando um processo do Windows (WriteProcessMemory()), que será o aplicativo descomprimido pronto para uso

[]s
Fergo
Estou lendo o artigo (versao portugues), parece esta bem explicado... Mas pensando no caso do upx, acabo que ele carrega quase que a mesma coisa para a memoria, ja que ele tem que carregar um 'loader' para descompactar o arquivo e colocar na memoria... ou seja, ele descompacta o arquivo fica com quase a mesma quantidade na memoria, bom, acho que a unica coisa que nao vai para memoria entao seria o que ele retira, correto?


editado:

É, do jeito que eu pensava o artigo, mas é uma coisa muito misteriosa que nao entra na minha cabeca apenas por um fator:

Eu quando comecei a informatica, eu pegava um arquivo "arquivo.exe" e mandava compactar, ele ficava do mesmo tamanho ou maior, ai eu pegava o arquivo "arquivo.exe" e o "arquivo.txt" e mandava compacatar os dois juntos, ai o arquivo ficava pela metade..., ja fiz isso muitas vezes é isso que nao deixa eu entender o misterio da "compressao e compactacao"
04-10-2007 por marcoselias
Uma coisa sobre o licenciamento e a modificação do arquivo final... Eu penso que não seja uma violação de licença, embora os autores desencorajam fazer isso (como modificar o arquivo já comprimido, como citei no texto).

Vejo que não seria considerável violação pelo programa ser aberto e GPL. Seria quase o mesmo que você modificar o código fonte trocando o nome do programa, sem remover os créditos. Sendo GPL, você tem a liberdade de personalizá-lo. Um software livre pode ser modificado de diversas formas, não somente no código fonte... Se o UPX não insere informações de créditos que queira que sejam visíveis para os usuários, digamos que o problema é dele

O que vocês acham? Não seria errado modificar o arquivo depois de comprimido. Uma também que o conteúdo principal do programa será seu.
04-10-2007 por Blade Runner
Boa dica, valeus!
04-10-2007 por Fergo
É permitido modificar o UPX, os autores permitem isso (readme), mas é necessário levar em conta as condições da licença GNU/GPL, já que o programa a utiliza.

Emtudo, esse comportamento que você descreveu é bastante estranho, pois a compressão comum (ZIP/RAR, 7Z) independe do tipo do arquivo, apenas do conteúdo do mesmo.

Fergo
04-10-2007 por emtudo
Citação:
Postado Originalmente por Fergo Ver Mensagens
É permitido modificar o UPX, os autores permitem isso (readme), mas é necessário levar em conta as condições da licença GNU/GPL, já que o programa a utiliza.

Emtudo, esse comportamento que você descreveu é bastante estranho, pois a compressão comum (ZIP/RAR, 7Z) independe do tipo do arquivo, apenas do conteúdo do mesmo.

Fergo
se nao me engano eu usava a versao 7 ou 8 do winzip, isso erra quando eu estava no curso basico em 1999, hoje eu nem uso windows, so linux.

mas eu cansei de ver isso... muitas vezes...
as vezes eu queria compactar um programa para caber em um disquete, ai compactava e ele nao cabia no disquete, entao eu juntava com mais um arquivo txt qualquer e compactava os dois juntos, ai cabia no disquete, realmente é estranho, mas depois se tiver oportunidade de fazer alguns testes...

talvez seja ate falha da versao, ou algo assim, nao sei, mas que acontecia acontecia.
05-10-2007 por matheus2
Funciona Mesmo!
Usei o UPX e comprime mesmo o arquivo ficou bem pequeno, muito bom!
13-10-2007 por gonelli
estou com problemas no upx. quando eu clico em ok para decompres aparece 'no change'. alguém me pode me explicar por q?
13-10-2007 por marcoselias
Citação:
Postado Originalmente por gonelli Ver Mensagens
estou com problemas no upx. quando eu clico em ok para decompres aparece 'no change'. alguém me pode me explicar por q?
Vc está tentando descompactar um arquivo que realmente foi comprimido pelo UPX?

Outra coisa a verificar é se ele não está aberto ou em uso por algum outro programa...

Caso não seja isso, o arquivo pode ter sido modificado depois de comprimido, ou está corrompido.
25-04-2008 por N-ton
informação útil
Citação:
Postado Originalmente por Equipe GdH Ver Mensagens
[03/10] :. Dica: Comprimindo executáveis com o UPX: Esta dica interessa a programadores em geral, seja Windows ou Linux, ou a redistribuidores de aplicações personalizadas... Você sabia que é possível tornar seus programas bem menores, sem muito trabalho? Por Marcos Elias Picão

http://www.guiadohardware.net/dicas/...aveis-upx.html

Comente aqui!
achei útil a informação passada pelo artigo.
estou interessado porque tenho um problema de espaço dificil
de resolver.por isso vou ficar mais atento a materia.
 
Guia do Hardware Melhores Tópicos