Skip to content

Como decompilar programas em Delphi – How to Decompiler Delphi application decompilar delphi

PRESTE ATENÇÃO em TODO o artigo para depois não dizer que o NerdBlog cometeu crime ou que “não souberam passar o macete”.
Irei mostrar a parte “burocrática da coisa” e a parte expert da “coisa”.

O texto abaixo foi tirado do link (logo após a nossa avaliação): http://www.ramosdainformatica.com.br/art_recentes01.php?CDA=45

Questão/Problema:

Aqui vou esclarecer porque não é possível decompilar aplicações desenvolvidas em Delphi. E apresentar as ferramentas existentes que prometem fazer isso.

Resposta:

Sempre encontramos pessoas interessadas em decompilar programas desenvolvidos em Delphi, sempre com desculpas de perda dos Fontes, ou perda de Disco Rígido.

O que é Decompilação? É muito simples, é o inverso de compilação. É a transformação de um Executável, em seu código fonte, no caso do Delphi, formulários e os fontes.

Suponha-se que você desenvolveu um Sistema que levou meses e até anos para estar pronto, derrepente você perde todos os fontes, ficando com apenas o executável. Qual a solução? Utilizar a engenharia reversa (decompilação) para recuperar todo seu trabalho (os fontes).

Uhhmm, então quer dizer que posso decompilar o projeto de outras pessoas? Bem, sim e não…

Então é possível Decompilar um programa?

Não, claro que não. Total decompilação não é possível – não exatamente como ele foi desenvolvido, ou seja, com o fonte original….

Quando um projeto em Delphi é compilado e linkado, para produzir um executável, a maioria dos nomes usados no programa é convertido em endereços. Na decompilação, se você observar em seus fontes originais, com os fontes de um executável decompilado, você irá perceber a troca de nomes em constantes, variáveis e procedures.

Porque e quando usar:

A engenharia reversa, pode ser usada por várias razões, eis algumas:

Ø Recuperação de Código Perdido;
Ø Migração de Aplicações para uma plataforma de Hardware nova;
Ø Determinação de existência de Vírus e/ou código fonte malicioso;
Ø Correção de erros, quando o dono da aplicação não está disponível para fazer a correção;
Ø Recuperação dos fontes de outra pessoa;

Mas é Legal?

Engenharia Reversa NÃO é cracking, embora as vezes é difícil traçar um panorama entre os dois. Programas de computador são protegidos por direitos autorais e leis de marca registrada. Em alguns países são permitidos, como por exemplo a Rússia.

Na Rússia, se você compra um programa, ele é seu, pode-se fazer o que quiser com ele, inclusive aplicar a engenharia reversa. Recentemente um russo, decompilou alguns programas da Macromedia, alterou-os e distribuiu gratuitamente pela Internet, e a Macromedia não pode fazer nada contra isso, pois conforme as Leis da Rússia, o programa, uma vez alterado (não importa o que) passa ser de propriedade do indivíduo que o alterou.

Mas atenção, isso é apenas na Rússia. No Brasil, deve-se tomar bastante cuidado, por isso recomendo consultar um advogado, antes de realizar algum tipo de engenharia reversa, seja ela qual for.

Algumas leis que permitem a engenharia reversa:

Ø Suspeita da existência de Vírus e/ou código fonte malicioso;
Ø Correção de erros, quando o dono da aplicação não está disponível para fazer a correção;

Mas existem outras leis, mas deve ser consultado com especialistas antes de sua execução.

Para escrever este texto, tive que consultar um advogado, o qual me falou que não haveria problemas, uma vez que é somente para estudos, e que os exemplos de decompilação de programas, sejam feitos com um programa por mim desenvolvido.

Por enquanto, os produtos da Inprise, não possui nenhum produto capaz de decompilar um arquivo executável (.exe) ou a “Delphi Compiled Unit” (DCU), volta para o código original (.PAS).

Delphi compiled unit: DCU

Quando um projeto Delphi é compilado, os arquivos .pas são convertidos para .dcu. Armazenando assim, em arquivos binários os fontes do projeto. Ou seja, unit1.dcu é igual a unit1.pas.

Isso significa que se você tem somente os DCU do projeto pode decompilar e obter os fontes do projeto. Errado. O arquivo com formato DCU não é documentado, e muda de versão para versão.

Após a Compilação: Engenharia Reversa no Delphi

Para quem quer tentar decompilar um projeto desenvolvido em Delphi. Eis algumas coisas que deveria saber:

Os programas desenvolvidos em Delphi, tem seus arquivos divididos em dois tipos de formatos: Código ASCII (.pas, .dpr) e arquivos de recursos (resource files) (.res, .rc, .dfm, .dcr).

Os arquivos DFM, contém os detalhes (Propriedades) dos objetos contidos em um formulário. Quando criamos um executável, o Delphi armazena as informações dos Formulários em um arquivo DFM para a geração do EXE.

Todas informações de um componente dos formulários, suas propriedades, localização e até mesmo nome, são armazenados em um arquivo DFM pelo Delphi. (Não os códigos de procedimento de eventos, esses são armazenados em arquivos .pas e .dcu.). Para se obter o arquivo DFM de um executável, é necessário conhecer a fundo como funciona um executável Win32.

Todos os programas compilados pelo Delphi, possuem as seguintes seções: CODE, DATA, BSS, .idata, tls, .rdata, .rsrc. O mais importante ponto de vista de decompilação são os códigos e seções de .rsrc.

Entre muitos recursos que são armazenados em um arquivo executável, o RT_RCDATA segura as informações que estavam armazenadas em arquivos DFM, antes da compilação.

Alguns Decompiladores Existentes no Mercado

A arte da Engenharia Reversa, é uma área para técnicos, acostumados com a linguagem Assembler e Debugers, No entanto há diversas ferramentas que ajudam qualquer pessoa a realizar a engenharia reversa em Delphi.

Se você está interessado em aplicar a engenharia reversa em seus programas, aconselho a dar uma olhada nestes programas de Decompilação para Delphi:

DeDe (www.balbaro.com/dede/index.html )

DeDe é um grande programa de decompilação de programas desenvolvidos em Delphi. Ele analisa todo o executável, e fornece o seguinte:

Ø Todos os DFM, podendo ser alterados pelo Delphi;
Ø Todos os Fontes, .pas, .res, .dfm, etc… Todos comentados com os fontes em Assembler.
Ø Muito bom, se não fosse os arquivos .pas serem em Assembler, às vezes não podendo ser recompilado.

Reverendepro (www.puthoon.com/Revendepro/index.html )

Reverendepro acha quase todas estruturas (classes, types, procedures, etc) no programa e gera a representação de pascal e procedures escritas em Assembler. Devido a algumas limitações do Assembler, às vezes pode não ser recompilado. Os códigos fontes deste decompilador é livre. Devido a algumas limitações deste decompilador eu não pude explorar ele mais a fundo.

MRIP ( www.delphi32.com/vcl/4549/ )

Este programa procura e extraí arquivos de outros arquivos. MRIP pode pegar mais de 100 formatos de arquivos. O mais importante para nós é que o MRIP pode decompilar qualquer executável Delphi. Esta ferramenta pode extrair todos os recursos de uma aplicação Delphi: Cursores, Ícones que o DFM arquiva, arquivos .pas e outros. Nos arquivos PAS não contém os procedimentos de eventos. MRPI é uma aplicação DOS.

DfmExplorer (www.instinct.org/fravia/aitodelp.htm )

Isso é o que o DfmExplorer faz (Inclui os Fontes): Ele procura e separa todos os arquivos DFM do executável.

Exe2Dpr (www.instinct.org/fravia/aitodelp.htm )

Este programa é talvez o mais utilizado na decompilação de aplicações Delphi, mas ele só pega o DPR de um Executável.

CONCLUSÃO

A engenharia reversa (decompilação), é possível no Delphi? Sim, mas não 100%.

Então vamos acabar agora com este mito de decompilação de executáveis Delphi. Mas aconselho a você explorar todas as ferramentas aqui citadas, como uma forma de aprendizagem e curiosidade, e fazendo com que você mesmo, tire as suas próprias conclusões.

É isso aí, espero ter esclarecido este tabu, que sempre acompanha milhares de programadores.
++++++++++++++++++++++++++++++++++++++++++++++++

Agora entra a parte maliciosa da coisa (aonde o NerdBlog entra).

Já que entendemos como funciona a legislação brasileira sobre decompilação nós agora podemos tentar “salvar o mundo”… rsrsrs.

Primeiro passo
Ache o programa Certo!
Isto mesmo, testei a sistemática da situação e só obtive bons resultados com a seguinte ferramenta:

– reshacker em: http://angusj.com/resourcehacker/

O que ela me “rendeu” e como fiz?
Primeiro tive que decompilar a aplicação delphi que é o sistema da empresa, no caso, aquele EXE do tamanho do mundo.
Abrindo o reshacker a sua única dificuldade será  apontar a origem e o destino da decompilação.
Feito isto, quando o processo começar será gerado todo o fonte (inclusive arquivos de imagem bmp, por exemplo, tais arquivos retornam também).
Terminada a decompilação você terá em mãos o fonte.
Abra o projeto com o delphi e tente compilar (para localizar algum erro), caso consiga sucesso, parabéns, agora você tem o fonte do sistema, caso contrário o que você terá de problemas são os componentes ou erro de caracters (sendo muito fácil a correção, para este caso).

Acabou tudo, isto quer dizer que não posso mais concluir o meu projeto de decompilação delphi com sucesso?
NADA DISSO, faça como o carinha do site (aquele tosco de camisa do hacker),  o que você vai fazer é -> Buscar os componentes que “podem” ser os que você precisa.
O podem entre aspas duplas significa que nem sempre você vai encontrar todos os componentes necessários, até por que algumas pessoas vendem componentes feitos sob demanda de um cliente importante, em outras palavras, algo customizado, então trate de preparar seu cliente torrent e seu emule + limewire para pegar fogo com suas pesquisar e mandar ver. Antes iremos fazer uma busca básica nos sites:

http://inf.unisul.br/~osmarjr/delphi/componentes.htm
http://www.webmundi.com/delphi/dfuncaoc.asp?SubTipo=Visuais

Pronto, dependendo de sua aplicação a agonia acabará aí, mas a minha foi além… rsrsrs… mas houve triunfo.

De posse disto, instale os componentes no delphi e veja a necessidade que as units estão declarando e etc, em outras palavras, veja se lhe faltará algo mais e BINGO!

7 Comments

  1. Muito bom esse teu blog cara. aueheauhaeuha. Aquele bunequinho hacker eh um show.

  2. BoTTHead BoTTHead

    Post muito bom mesmo, pena que nenhum dos links de decompiladores estão funcioanando. 🙁

  3. manefilho manefilho

    isso me ajudou muito, e o blog está de parabens, obrigado

  4. Hillner de Paiva Hillner de Paiva

    Esse MRIP é sensacional! Linha de comando MRIP Project.exe e tecla F7!
    Recomendado experiência em DOS.

Leave a Reply

Your email address will not be published. Required fields are marked *

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