Ir para conteúdo
Faça parte da equipe! (2024) ×

Engenharia Reversa


Owner
 Compartilhar

Posts Recomendados

Vou ensinar oque é Engenharia Reversa e alguns exemplos pra vocês:

 

Saiba o que é Engenharia Reversa:

 

Engenharia reversa é decompilação, é o contrario de compilação. Quando você compilar um programa em Delphi ( com extensão .exe ) a engenharia reversa reverte o programas para o código, no caso no delphi as fontes.

Usa muito disto quando há perda de arquivos do HD, e etc.

Mas não somente para isso, para fazer uma correção ou também determinar se há um vírus ou código malicioso.

 

Como fazer isso:

 

Toda descompilação é em assembly, uma linguagem dificil de entender, mas para fazer é meio complicado:

Baixe o programa OllyDBG:

[DOWN]Downlaod[/DOWN]

[DOWN]Download²[/DOWN]

* Escolha uns dos downloads, caso um não dá certo o outro esta disponivel (:

Agora baixe o DeDe:

[DOWN]Download[/DOWN]

[DOWN]Download²[/DOWN]

* Escolha uns dos downloads, caso um não dá certo o outro esta disponivel (:

Pra fazer uma engenharia reversa ou usar este programa, tem que ter um conhecimento em Assembly para entender as linhas de fontes.

Aperta em open e escolha um arquivo exe:

30498237.jpg

* Vai carregar e aparecer uma tela igual há essa.

50420069.jpg

* Assembly (ou asm, com é abreviada) é uma linguagem de baixo nível que basicamente interpreta os códigos operacionais, veja um exemplo do comando MOV:

É necessário se cadastrar para acessar o conteúdo.

Ele move o valor 1 para o registrador EAX, veja outro exemplo:

É necessário se cadastrar para acessar o conteúdo.

 

Veja os comandos mais utilizados:

 

MOV destino, origem

Move o valor do campo origem para o destino. Essa instrução possui diversas variações, por isso ela pode aparecer de diversas formas diferentes (pode-se trabalhar com constantes, memória, pilha, etc). Alguns exemplos:

 

É necessário se cadastrar para acessar o conteúdo.

 

CMP arg1, arg2

Realiza uma comparação entre os dois operandos. A comparação é feita simplesmente subtraindo os dois operandos e caso o resultado for zero (valores iguais), ele seta a ZF para 1. Vale lembrar que essa operação não altera os valores dos operandos, apenas as flags.

 

É necessário se cadastrar para acessar o conteúdo.

 

JMP endereço

Faz um salto incondicional e obrigatório para o endereço indicado.

 

É necessário se cadastrar para acessar o conteúdo.

 

JZ endereço / JE endereço

Faz um salto condicional. Caso o valor da zero flag seja 1, ele realiza o salto. Normalmente utilizado junto com um CMP para realizar um desvio caso a comparação seja verdadeira.

 

É necessário se cadastrar para acessar o conteúdo.

 

JNZ endereço / JNE endereço

Semelhante ao item acima, mas realiza o salto somente quando a zero flag não foi setada (ZF = 0).

 

É necessário se cadastrar para acessar o conteúdo.

 

ADD destino, arg1

Adiciona o valor de arg1 ao destino. Também possui diversas variações, pelas mesmas razões do comando MOV. Se o resultado estourar o limite do destino, a CF é setada.

 

É necessário se cadastrar para acessar o conteúdo.

 

SUB destino, arg1

Realiza uma subtração dos operandos. As variações e características são as mesmas do comando ADD.

 

É necessário se cadastrar para acessar o conteúdo.

 

PUSH valor

Coloca o valor no topo da pilha (Stack). O comando PUSH é amplamente utilizado nas chamadas de funções (CALL), pois é através da pilha que a função busca seus argumentos.

 

É necessário se cadastrar para acessar o conteúdo.

 

POP destino

Remove o valor do topo da pilha e o armazena no destino.

 

É necessário se cadastrar para acessar o conteúdo.

 

CALL local

Faz chamada a uma função. É possível passar o local de diversas formas para o comando CALL, desde uma constante, registrador ou até mesmo uma função externa dentro de uma DLL. O comando CALL usa a pilha para indicar o endereço para o qual a função deve retornar depois de finalizada a sua execução.

 

É necessário se cadastrar para acessar o conteúdo.

 

Depois de observar as fontes no OllyBDG, abra o DeDe e abra o arquivo exe. Depois vc espere o termino e veja, o Project, Unit e etc.

Você sabe tudo pelo DeDe, mostra os componentes usados, o tamanho de cada um e outros.

30306452.jpg

E para ver as informações no Delphi, vá em Project e Salve o projeto, e se tiver sorte, talvez tenha o form com as fontes.

Agora estude os codigos, e aprende em assembly para entender.

 

Faça uma Engenharia Reserva:

Programa que usarei de exemplo: Download - Calculadora de IMC

Vou utilizar o DeDe.

 

Abra o arquivo e aperte em Process, e aguarde ate o arquivo ser processado, logo apos verá uma tela assim:

63368418.jpg

10143158.jpg

93861142.jpg

Agora navegue pelas abas, vá em Project e escolha um destino e aperte em Create Files, depois disso vá no destino que você escolheu e abra o projeto em Delphi, e escolha o Viem Forme escolha Form1 e veja que o projeto esta ali:

60078799.jpg

71914113.jpg

 

Acho que é só isso pessoal, até a proxima.

4I1ShmNRGyg2k.webp

Link para o comentário
Compartilhar em outros sites

Esse DeDe é uma merda,não aparecem os códigos,e sim o design.SOMENTE,não perdi mais tempo com essa BOSTA,só funcionou em um projeto vagabundo que eu fiz no Delphi 7.Além de que 90% dos executáveis são protegidos.

 

Enfim,perda de tempo.

Link para o comentário
Compartilhar em outros sites

Esse DeDe é uma merda,não aparecem os códigos,e sim o design.SOMENTE,não perdi mais tempo com essa BOSTA,só funcionou em um projeto vagabundo que eu fiz no Delphi 7.Além de que 90% dos executáveis são protegidos.

 

Enfim,perda de tempo.

 

Vejo que você não entende nada de RE dizer que DeDe e uma merda deveria apagar esse post.

 

1º todos sabem que o Delphi gera um .exe com muita tralha incluida no source é só você debugar um programa em delphi e outro em assembly verá que o delphi o .exe vai para 300kb enquanto o feito em assembly fica com seus 2kb isso porque o compilador do assembly gera bytes nulos no final do source. Isso é um exe que printa uma mensagem no console.

 

Dai que entra o DeDe para você encontrar as offsets e address porque debugar um executavel feito em delphi é mais complicado porque gera muito lixo no exe final.

 

DeDe pega os endereços de botões, checkboxs, labels, pega constants uma mão na roda para crackers ou pequenos aventureiros.

 

Isso foi um pequeno exemplo do que da para fazer se você souber usar essa ferramenta.

 

Como tenho experiência em cracking durante 3 anos posso afirmar isso.

Link para o comentário
Compartilhar em outros sites

#open|Fire

 

1. Desculpa corrigir, mas é ER não RE.

 

2. DeDe não faz mágica, ele mostra muitas coisas úteis, pra um cracker ou hacker, como você disse.

 

3. Ele facilita muito a vida de uma pessoa que deseja copiar um programa, não os códigos, mas o visual já é algo importante.

Feliz 2011 e Abrasz :amor:

4I1ShmNRGyg2k.webp

Link para o comentário
Compartilhar em outros sites

Cracking é ilegal se você vende o serial ou o patch que você obteve ilegalmente ou forma um grupo para fazer keygens e distribuir malware pela internet.

 

Depois irei postar alguns sources de keygens feitos por min, somente para estudo é claro.

Link para o comentário
Compartilhar em outros sites

Open fire me aruma uma key orignal do war sem ser usada '-' ;D

 

Se você está falando de key para jogar na battle pode esquecer porque essas keys são cadastradas online, quando você compra o cd original vem com a cdkey essa key já está cadastrada no bd da battle.net é quase igual a steam.

Link para o comentário
Compartilhar em outros sites

Este tópico está impedido de receber novos posts.
 Compartilhar

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...

Informação Importante

Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.