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

Standard

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!

ERP: o que é e ainda devemos aplicar!

Standard

Para começarmos a entender o ERP, é importante sabermos que ele não possui nenhuma ligação direta com a sua sigla. Esqueça a palavra planejamento, ele não faz isso, e esqueça a palavra recurso, um termo descartável. Mas lembre-se da parte empresarial. Ele serve para integrar todos os departamentos e funções de uma companhia em um simples sistema de computador que pode servir a todas necessidades particulares de cada uma das diferentes seções.
É um grande desafio construir um único programa de software que supra as necessidades do departamento financeiro, assim como dos trabalhadores de recursos humanos e também do depósito e é isso que o ERP faz. Cada um desses departamentos, tipicamente, possuem seu próprio sistema de computador, cada um aperfeiçoado para cada necessidade, para a forma de trabalho de cada departamento. O ERP combina todos eles juntos em um só programa de software integrado que trabalha com um banco de dados comum. Dessa forma, os vários departamentos podem mais facilmente dividir informações e se comunicar entre si.

Essa abordagem integradora pode dar um grande retorno financeiro se as companhias instalarem o software adequadamente. Pegue o pedido de um cliente como exemplo: tipicamente, quando um cliente faz um pedido, aquele pedido começa uma jornada em papel, de um lugar para outro na empresa, sendo digitado e redigitado em vários computadores ao longo do caminho. Toda essa jornada causa atrasos e perdas de pedidos, e cada digitação, em um diferente sistema, é convidativo a erros. Ao mesmo tempo, nenhuma companhia sabe realmente em que estágio um pedido se encontra em um determinado momento porque não há como o departamento financeiro, por exemplo, entrar no computador do depósito para ver se o item foi embarcado. “Você terá que ligar para o depósito”, é a resposta familiar dada aos frustrados consumidores.

Como o ERP pode melhorar a performance de uma empresa?

ERP automatiza as tarefas envolvendo a performance de um processo, tal qual a finalização de um pedido, o qual envolve pegar o pedido de um cliente, enviá-lo e cobrá-lo. Com o ERP, quando um representante recebe o pedido de um cliente, ele ou ela, tem todas as informações necessárias para completá-lo. Todas as pessoas na empresa vêm o mesmo visor e têm acesso a um único banco de dados que guarda o novo pedido do cliente. Quando um departamento termina a sua parte em um pedido, este é enviado automaticamente para o próximo departamento via ERP. Para saber em que ponto está um pedido, em um determinado momento, é só checar no ERP. Com sorte, o processo se move como um raio dentro da organização, e os clientes recebem seus pedidos mais rapidamente que antes. O ERP consegue aplicar essa mesma mágica à maioria dos processos empresariais, tal qual manter os funcionários informados sobre seus benefícios ou sobre decisões financeiras em geral.

Esse, pelo menos, é o sonho do ERP. A realidade é bem mais dura.

Vamos retornar aos pontos tratados anteriormente. Aquele processo talvez não tenha sido eficiente, mas ele foi simples. O departamento financeiro fez o seu trabalho, o depósito fez o seu trabalho e se algo deu errado fora das paredes do departamento, esse problema é sempre de outra pessoa. Com o ERP essa história muda sensivelmente: os representante que recebem os pedido dos clientes, não são mais mero digitadores colocando o nome de alguém em um computador e batendo na tecla retornar. O monitor do ERP faz deles pessoas de negócio. Ele vai desde o crédito do cliente, passa pelo departamento financeiro e vai até o fluxo de trabalho do depósito.
O cliente pagará em dia? Nós seremos capazes de embarcar o produto em tempo? Essas são perguntas que os representantes de vendas nunca tiveram que fazer antes e que afeta o cliente e todos os outros departamentos da empresa. Mas não são apenas os representantes que terão que acordar. As pessoas no depósito, que estavam acostumadas a manter as datas na cabeça ou em pedaços de papel, precisam colocar toda informação on-line agora. Se eles não fizerem isso, os representantes de venda verão baixos níveis de produtos no monitor e falarão aos clientes que seus pedidos não estão disponíveis no estoque. Comprometimento, responsabilidade e comunicação nunca foram tão testados antes.

Quanto tempo leva um projeto de ERP?

Instalar o ERP não foi um processo fácil para as companhias que o fizeram. Não se engane quando vendedores de ERP dizem que o tempo de implantação, em média, é de três ou seis meses. As implementações que foram feitas em um curto tempo (porque seis meses é um curto tempo), todas foram realizadas em pequenas empresas, ou foram limitadas a pequenas áreas da empresa, ou apenas usaram as partes financeiras do programa ( no qual o ERP é apenas um caro sistema de contabilidade). Para fazer o ERP certo, a forma como você faz negócio terá que mudar, bem como a forma como as pessoas trabalham. E esse tipo de mudança não acontece sem dor. A não ser que a maneira como você negocia esteja indo extremamente bem, pedidos são embarcados no período certo, a sua produtividade é maior do que a dos seus concorrentes, seus clientes estão completamente satisfeitos, sendo que, nesses casos, não há nenhuma razão para pensar em instalar o ERP.
O importante é não focar-se no tempo que levará a sua implantação, já que transformações reais com o ERP normalmente levam entre um e três anos em média, mas sim entender porque você precisa dele e como você pode utilizá-lo para aumentar seus negócios.

Como o ERP melhorará os meus negócios?

Há três razões principais pelas quais firmas adotam o ERP:

– Para integrar dados financeiros: Como o CEO tenta entender a performance geral da companhia, ele ou ela podem encontrar diferentes versões da verdade. O financeiro tem os seus números, vendas tem outra versão, e as diferentes unidades podem, cada uma, ter a sua própria versão do quanto eles podem contribuir para a receita. O ERP cria uma única versão da verdade que não pode ser questionada porque todos estão usando o mesmo sistema.
– Para uniformizar o processo de manufatura: Empresas de manufatura, especialmente aquelas com um grande apetite por fusões e aquisições, geralmente descobrem que diferentes unidades da empresa usam diferentes métodos e sistemas de computador. Uniformizar esses processos, usando um único e integrado sistema de computador, pode economizar tempo, aumentar a produtividade e reduzir gastos.
– Para uniformizar as informações de RH: Principalmente em firmas com múltiplas unidades de negócio, o departamento de Recursos Humanos talvez não tenha um único e simples método para acompanhar o tempo dos empregados e comunicá-los sobre seus benefícios e serviços. O ERP pode fazer isso.

O ERP irá se adequar ao meu jeito de negociar?

É difícil para as empresas entenderem se a forma delas negociarem se adapta ao padrão ERP antes de todos os cheques de pagamento terem sido assinados e a implementação ter começado. A razão mais comum pela qual as empresas fogem dos projetos multimilionários do ERP é porque elas descobrem que o software não suporta algum dos importantes processos dos seus negócios. Nesse momento, só há duas coisas a serem feitas: mudar o processo para se adaptar ao software, o qual significará mudanças profundas nas formas de se fazer negócio, o que apesar de ser positivo para a produtividade da empresa, mexe em papéis de pessoas importantes e com responsabilidades e que apenas poucas empresas têm coragem para fazer. Ou, mudar o software para que este se adapte ao processo, o que diminuirá a velocidade do projeto e provavelmente deturpará o sistema.
Não é necessário dizer que a mudança para o ERP é um projeto que necessita fôlego. Além de orçar pelo custo do software, executivos financeiros devem planejar o preço da consultoria, as adaptações, testes de integração e uma longa lista de outros gastos antes que os benefícios do ERP comecem aparecer.

Quando receberei o retorno do ERP – e de quanto será este retorno?

Não espere revolucionar seus negócios com o ERP. A implantação dele requer uma reorganização na forma como as coisas funcionam mais internamente na sua empresa do que externamente com clientes, fornecedores ou parceiros. Mas, para quem tem paciência, esse é um projeto com retorno garantido. Um estudo feito em 63 empresas que adotaram o sistema descobriu que os benefícios costumam aparecer em média oito meses depois da instalação do novo sistema, ou seja, em 31 meses. Após esse período, a média de economia anual com o sistema ERP é em torno de U$1.6 milhões.

O custo escondido do ERP

Embora diferentes empresas encontrem diferentes problemas durante o orçamento, aqueles que implantaram o ERP concordam que certos custos são normalmente maiores que outros. A partir das experiências estudadas, pode-se dizer que os gastos mais significativos ocorrem nas áreas: de treinamento, integração e teste; de conversão e análise de dados; consultorias, na substituição de pessoal – com a constante implementação; e, também, com a depressão “pós-ERP”.


De qualquer forma, os benefícios que podem ser obtidos se a empresa tiver maturidade para aceitar as mudanças e se adequar a elas, são bem maiores que as desvantagens. O ERP é um avanço que com certeza agrega valor a uma empresa.