Ir para conteúdo
Faça parte da equipe! (2024) ×
Conheça nossa Beta Zone! Novas áreas a caminho! ×
  • Quem está por aqui   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.

A Arte dos Dissassemblers


AceStryker
 Compartilhar

Posts Recomendados

Introdução

Olá a todos, hoje vou ensina-los um pouco do que sei sobre os dissassemblers, estes apenas leêm os bytes de um determinado programa e os interpretam transformando estes bytes em mnemonicos.Por exemplo, E9 significa JMP.

O tópico não te dará tudo na mão mas ajudará a dar seus primeiros passos, primeiro de tudo precisamos abrir nosso debugger, eu usarei o OllyDBG, segue o download:

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

 

Instale.Agora abra o Olly e faça o que eu fiz:

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

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

 

Muito bem, agora aperte F9 para o programa começar a rodar, e agora estamos prontos para começar nosso trabalho!

 

Mãos a Obra

 

-JMP's

 

Os JMP's(JuMP) é o mnemonico responsável por pular o código para um determinado local, vejamos isto neste local do programa:

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

 

A ddress

Byte principal

Bytes de distância

Mnemonico

 

Mas como calcular para onde o JMP vai?Só vejo vários números ai...Tem um jeito de calcular, este jeito pode ser traduzido neste fórmula:

A ddressDoJump = a ddress + Tamanho(No caso do jmp é 5) + BytesDeDistancia

 

Tome cuidado, o processador lê os bytes invertidos, então onde é 991A se lê 1A99, nunca se esqueça disso.

 

Vejamos a conta nesta hipótese:

00401188 + 5 + 1A99 = 00402C26

 

Funcionou perfeitamente, gostou?Agora vamos para o próximo:

 

-CALL

 

O CALL é quase a mesma coisa, olhe só neste caso:

 

004011CD |. E8 BE690A00 CALL OLLYDBG.004A7B90 ; \OLLYDBG.004A7B90

 

Se somarmos 00411CD + 5 + 0A69BE obtemos 004A7B90, então ele funciona exatamente como o JMP.

 

-JMP SHORT

 

Vamos aqui:

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

 

O JMP SHORT como o nome já diz, é como o JMP só que usado para menores distancias, por isto só utiliza 2 bytes, utiliza-se a mesma fórmula, só que ao invéz do tamanho ser 5, é 2

 

00401209 + 2 + C = 00401217

 

-PUSH's

 

Os PUSHs são bem mais fáceis pois não precisa calcular muito, Caso o PUSH seja maior que 79 então seu byte principal será 68 e terá 5 bytes, caso seja 79 ou menor seu byte principal é 6A e só tem 2 bytes, veja o exemplo:

 

 

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

 

Menor que 79, 2 bytes, 6A + Número para jogar na stack

 

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

 

Maior que 79, 5 bytes e byte principal 68(Bytes invertidos lembra)

 

Bom, acho que por hoje é o suficiente, vejo vocês na próxima, abração!

 

AceStryker

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

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

×
×
  • 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.