Jump to content

Duvida OllyDbg


Arthur Cypriano

Recommended Posts

Olá pessoal, tudo bem?
Recentemente comecei um projeto pessoal e estou precisando estudar programação e (Acho que engenharia reversa hehe) para alteração de alguns dados... Sei bem pouco de VB e um  pouco mais de C#!

vi um video do Papo Binario mostrando como encontrar uma função que um programa roda pelo OllyDbg (No caso era a função puts.)

nesse meu exemplo, esta é uma busca que eu fiz no Olly por "/near". /near é um comando dentro do jogo em que move o seu personagem pra onde esta o outro... Então, se eu digitar /near killer123, eu me teleporto para exatamente onde o jogador "killer123" esta.

a Duvida é o seguinte: Em algum lugar, deveria ter um codigo especificando o que esse /near faz, certo? como sei la,
" If (TextoDigitado.text == "/near" + " " + playername)

{ myPosition.pos = playername.pos }; "

é possivel eu encontrar isso pelo Olly? existem muitos exemplos como esse que eu gostaria de ir mais a fundo e entender como o jogo funciona

OBS: na aba "Executable Modules" eu encontei a linha C:\windows\system32\msvcrt.dll. Isso significa que o jogo foi feito em C!?

Anexei uma print da minha tela pra dar uma ajuda haha
desde ja, Agradeço! 

OllyDbg_Duvida.png

Link to comment
Share on other sites

21 hours ago, Arthur Cypriano said:

Em algum lugar, deveria ter um codigo especificando o que esse /near faz, certo?

Certo! E você tá bem perto, olhando este print que você mandou. No hex dump você tá vendo a string "/near", no entanto, ao tentar disassemblar os bytes dessa string, o disassembler as interpreta como instruções, que não são. Por isso essa confusão de DAS, OUTS, POPAD, JB, etc. A questão é que estes bytes pertencem à string "/near" e não podem ser interpretados como código.

O que você pode fazer aí é buscar por referências ao endereço 0067DFDC, ou seja, instruções que referenciem este endereço, por exemplo, um PUSH 0067DFDC, para encontrar trechos de código que utilizem essa string para fazer algo, o que provavelmente vai ter deixar perto de onde quer. Dependendo da versão do seu Olly, isso pode mudar um pouco, mas no 2.01 é clicar com o botão direito no primeiro byte aí no dump referente à string desejada, no caso, o 2F e escolher "Find references to -> Selected block" ou pressionar Ctrl+R.

refsto.png.584f26cbfdc8e1c5c772f08a5d03d3b9.png

O Olly vai te mostrar uma lista de endereços de instruções que referenciam este endereço de alguma forma, caso existam (há outras maneiras de referência indireta). Aí é investigá-los.

Há outras maneiras também. Como o que você busca é uma referência à uma constante, pode buscar por ela (Search for -> Constant) e colocar o endereço da string (0067DFDC), selecionar "Entire block" e clicar em OK. Ou "Search for -> All constants..." para ver todos os trechos de código onde este endereço aparece.

21 hours ago, Arthur Cypriano said:

na aba "Executable Modules" eu encontei a linha C:\windows\system32\msvcrt.dll. Isso significa que o jogo foi feito em C!?

C/C++, sim. Não vejo muito outro motivo pra carregar a biblioteca de runtime de C/C++ da Microsoft. ?

Em tempo, ótimas dúvidas. Recomendo você fazer o CERO e ler o nosso livro e acompanhar o curso de Ghidra que tá rolando também.

Abraços!

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...