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.

Tutorial de introdução aos Cheats


→Grand↓Chase←
 Compartilhar

Posts Recomendados

1.1Cria´ão de pointers e injections

 

1) Pointers:

 

a) O que são pointers:

Para simplificar ao máximo, pointers são uma espécie de fun´ão matemática, vc poderia chamar de equa´ão, mas em uma equa´ão o "x" tem valores fixos, numa fun´ão o "x" varia e assim vc pode construir um gráfico, em outras palavras uma fun´ão é ago do tipo F(x)= 25x+54 mas uma equa´ão é algo assim 25x+54=23. No jogo, vc encontrará em inúmeras ocasiões um comando como esse: mov [edi+00000052],esi este é um exemplo de pointer.

 

Entendendo o pointer:

Usando o comando que citei acima: mov [edi+00000052],esi

Vc deve estar se perguntando oq é isso ai? to vendo umas letras e números juntos... mas... não sei oq fazer com isso.

Pois bem, vamos melhorar isso, primeiro vou te falar oq esse comando faz: ele copia o valor que está no "esi" para o endere´o que é obtido pela fun´ão (pointer) "[edi+00000052]".

Lembrando que vc pode encontrar diversos pointers diferentes, esse foi apenas um exemplo simples.

Vc deve ter entendido a base disso, se não entendeu, releia até entender.

 

c)O que fazer com um pointer:

Neste momento vc deve estar falando algo assim "Entendi oq é.... mas... oq eu fa´o com isso em????"

Eu já te respondo, com um pointer vc não pode fazer muita coisa, mas se vc encontrar um bem simples na memória do jogo, é possivem criar um pointer no cheat engine e assim fazer com que seus manhas funcionem sempre.

Mas, existe a principal fun´ão de um pointer que é ser usado em conjunto com "code injections" onde vc faz com que uma seqüencia gigantesca de pointers vire apenas um pointer alterando o código do jogo, fique calmo, eu vou explicar como fazer o pointer no "cheat engine" e como fazer e oq é "code injection"

 

2) Code injection

 

a) O que é code injection?

Acho que não tenho muito oq falar, basicamente é vc colocar o seu código próprio junto do código do jogo, ou pode ser o fato de vc alterar parcialmente o código do jogo de modo a te ajudar.

 

Entendendo o "code injection":

Para fazer o code injection vc deve ter duas coisas: saber o código que vc quer burlar e um lugar livre na memória para vc poder escrever o seu código (conhecido como "code cave")

 

c) Oque poso fazer com "code injection"?

Quase tudo que vc pudér imaginar, por exemplo: com um injection bem básico vc pode criar um hack de bolas infinitas no piball, basta vc achar o código que subtrai uma bola do total de bolas e fazer com que ele adicione uma, e como fazer isso... bom vc terá um código que come´a com "sub" e vc deve mudar para "add" e então pronto vc já terminou.

 

 

Parte prática:

 

Oque vamos usar:

Cheat engine

Pinball 3d

Gunbound

Sua cabe´a

 

 

3)Aprendendo a usar o "ce" para fazer o uso de pointers e de code injection

 

Vamos usar como exemplo o pinball 3d, mas vc pode fazer o mesmo em qualquer jogo.

 

a) Abra o "ce", abra o pinball 3d, selecione o processo do pinball (no "ce")

 

Encontre o endere´o que controla o número de bolas que vc tem.

caso vc não saiba: inicie um novo jogo e procure por 3; perca uma bola e procure por 2; perca outra bola e procure por 1, vc deve ter encontrado um ou dois endere´os.

 

c) Mude o valor do endere´o para 3 (não de freeze) e verifique se está correto, em caso positivo prossiga, em caso negativo procure novamente o endere´o.

 

d) Clique com o botão direito no endere´o e depois clique em "find what writes to that adress", clique em "yes" na pergunta que aparecer. Agora vc deve estar vendo uma janelinha pequena e muito provavelmente em branco.

 

e) Perca uma bola no pinball, volte para o "ce", agora deve ter algum endere´o escrito. Esse endere´o é o que muda o número de bolas.

 

Pronto, vc já sabe procurar pelos endere´os que alteram os valores.

 

 

4) Fazendo um injection simples para bolas infinitas no pinball.

 

Estou contando que você aprendeu o passo anterior, portando falarei diretamente do injection.

 

a) Encontre o endere´o que altera o valor das bolas (como descrito acima), clique nele e depois clique em "Show disassembler", uma janela grande deve aparecer.

 

na nova janela, você vai usar a metade superior, perceba que o primeiro endere´o que aparece é o que vc viu na janela pequena, ele deve ter esse código: "mov [esi+00000146],eax" e ele indica que está copiando o valor do "eax" para o endere´o do pointer [esi+00000146].

Agora eu te pergunto, oq vc pode fazer para fazer as bolas crescerem e não diminuirem? (pense um pouco sobre isso antes de ler mais)

Eu respondo, com este código vc não pode fazer isso, vc pode alterar o valor da bolas ou criar um pointer para pode travar o valor, mas não vai fazer o valor crescer...

Mas, dando uma olhada no código percebemos que estamos copiando o valor do "eax" para o endere´o que temos no "ce", aquele que vc tem no code list, e que vc pode mudar pro valor que bem entender, encontrado procurando pelo número de bolas que vc ainda pode usar, logo o valor do "eax" é igual ao que vemos no endere´o.... pensando um pouco, percebemos que para o valor das bolas diminuir, o valor do "eax" deve diminuir, então... vamos procurar o código que muda o valor do "eax" vc vai encontar isso: "mov eax,[ebp+08]"

 

c) Com esse comando vc vai fazer um hack bem simples, vamos supor que vc queria ganhar 255 bolas, bom... vc deve trocar esse [ebp+08] por 000000ff (255 em hex).

Então o código fica assim: "mov eax,000000ff" aperte enter e clique em "yes" quando perguntar.

 

agora vc pode testar o hack.. ele deve estar funcionando.

 

 

 

5) Outro injection para pinball, mas agora um pouco mais complicado:

Bom, vamos umas este código aqui "mov [esi+00000146],eax" que vc encontrou logo que usou o debugger no endere´o do code-list.

Neste injection, vamos fazer algo mais complicado, mas mais interessante, vamos fazer o número de bolas crescer constantemente.

 

O que vamos fazer: vamos copiar o valor do "eax" para um outro endere´o, então vamos adicionar 2 ao valor contido neste endere´o (2 pq o "eax" sempre vai diminuir em uma unidade e para compensar isso, somamos 2, ou seja: x-1+2=x+1) depois vamos fazer esse novo valor ser copiado para o "eax" e então seguir com o código do jogo.

 

O código ficará assim:

mov [00451f0d],eax // Mover o valor do eax para o endere´o entre []

add dword ptr [00451f0d],02 // Adicionar 2 ao valor contido no endere´o entre []

mov eax,[00451f0d] // Copiar o valor do endere´o entre [] para o eax

mov [esi+00000146],eax // Código do jogo

jmp jogo // Voltar para o próximo endere´o do jogo, (ainda vamos ver qual será)

 

Mãos a abora, vc deve estar naquela janela onde vc pode ver os códigos escritos na memória do jogo, então clique em tools e depois clique em "scan for code caves" ou aperte "ctrl + alt + c". Uma janela vai abrir, mude o valor do tamanho para 100 (deve estar como 12) e manda procurar. Logo depois, uma lista bem grande vai aparecer, eu escolhi este endere´o: 00451ea9, mas vc pode escolher o que mais gostar.

Voltando para o "memory viewer", clique com o botão direito do mouse na janela e em seguida vá na primeira o´ão "go to adress", digite o endere´o que vc escolheu e aperte enter.

Agora vamos fazer nosso código próprio, uma dica que dou, é vc copiar o endere´o do code cave para um arquivo do bloco de notas e fazer o seu código lá, antes de passar para o ce, assim fica mais facil de vc perceber erros no que vc está fazendo.

Neste caso eu já dei o código para vc, mas acho interessante vc tentar criar o seu código próprio, pois é assim que vc vai aprender, de qq maneira eu tenho que esclarecer algumas coisas no código: "Pq essa linha 'mov [00451f0d],eax' copiar o valor do eax para o endere´o '00451f0d' e não para outro endere´o? oq ele tem de diferente?"

Eu respondo, esse endere´o não tem nada de diferente dos outros 99 que temos vagos neste code cave, em outras palavras escolhi um endere´o qualquer para fazer isso... (só escolhi um que ficasse longe do código, para não correr o risclo de colocar comandos nele e assim estragar o injection e fazer o jogo travar)

 

"esse código aqui 'add dword ptr [00451f0d],02' ta muito grande, não tem algo mais facil pra digitar não?"

Eu respondo, no ce vc pode digitar algo muito menor "add [00451f0d],02' que o programa muda para o código acima, mas é sempre bom lembrar que esse é o código simplificado pelo programa e não o código real

 

Imagino que vc tenha conseguido colocar os códigos sem problemas no code cave, (para evitar problemas, clique sempre em yes, quando o programa perguntar, mas caso apare´a um "nop" logo abaixo do seu código e vc deve digitar mais códigos, simplesmente escreva o próximo código sobre o "nop")

Mas, ainda falta o último, o "jmp" não é? Agora nos vamos achar o endere´o que falta para terminar o código. Volte para o código do jogo, no endere´o onde iniciamos tudo (aquele que vc encontrou no debugger, se vc não lembra do endere´o, clique na janela do debugger e depois cliqe em "show disassembler" novamente)

Agora vc deve substituir o código "mov [esi+00000146],eax" por "jmp dode-cave", no meu caso ficou "jmp 00451ea9". Quando vc der enter e depois clicar em "yes", vão aparecer alguns nop's, veja a linha seguinte ao último nop (uma que tem um código normal) copie o endere´o da linha, deve ser "010175c5" então volte para o code cave e finalmente coloque o "jmp", fazendo com que fique assim "jmp 010175c5"

Pronto, agora é só verificar se o jogo trava ou não, quando vc perde uma bola.

 

 

 

6) Pointers usados em conjunto com code injection.

 

Primeiro quero falar que se vc aprendeu tudo até aqui, não terá nenhum problema nesta parte do tutorial, mas se vc não entendeu.... leita tudo até entender... pq só seguir os passos e fazer funcionar "NÃO É" entender.

 

Aqui nós vamos usar o gunbound (sim... um exemplo mais interesante)

Primeiro encontre o endere´o do gift hack, se vc não sabe, procure por um tutorial no forum pois existem vários tutoriais sobre isso, então não vou falar como se faz.

Agora vc deve procurar pelo código que altera o valor do endere´o (aquele processo do debugger "fing what writes to that adress"), com o código em mãos vamos come´ar pra valer, lembrando que eu estou imaginando que vc leu tudo até aqui, então não vou retomar processos feitos anteriormente, vou apenas falar oq vc tem que fazer... e vc deve lembrar.

 

Clique em "show disassembler" e vc verá o endere´o na tela do disassembler, procure por um code cave grande (eu recomendo de 100 ou mais de tamanho).

Vá para o endere´o do code cave e vamos criar nosso código.

A lógica do nosso código é bem simples, se vc tem essa linha "mov [eax+24],ecx" onde o ecx é o valor que é copiado, e [eax+24] é o pointer que indica o endere´o que vc tem no code list do ce.

Entretanto, vc não sabe o valor do "eax", mas... nós vamos fazer uma "gambiarra". Como?, bem simples, suponha que vc copie o valor do "eax" para um outro endere´o e depois some 24 ao valor encontrado no endere´o, não é a mesma coisa que comar 24 ao "eax"?.... é isso que nós vamos fazer...

O código vai ficar assim:

mov [eax+24],ecx // Código do jogo

mov [end],eax // Mover o valor do "eax" para o endere´o que vc escolher

mov [eax+24],ecx // Código do jogo

jmp jogo // Voltar para o jogo

 

Depois vc deve fazer a rotina do jogo pular para o code cave, e por fim colocar o endere´o do jmp do code cave, não vou falar como fazer, pq vc já sabe... praticar é bom...

 

Agora falta só uma coisa, o pointer.

Vá na janela inicial do "CE" e clique em "add adress manualy", clique no box escrito "pointer".

Dois campos aparecerão para vc preencher, no primeiro vc deve colocar o endere´o para onde manfou copiar o "eax", no segundo vc deve colocar 24 (pois é o valor que é somado ao "eax" no código do jogo).

Quando vc terminar isso, vc vai poder travar esse valor em 2, e sempre que vc sair e voltar pro avatar shop, basta o seu código ser lido que o gift vai estar funcionando.

 

Este processo funciona para qualquer coisa, ou seja, se o delay hack possuir um pointer do tipo [eax+35] vc pode fazer a mesma coisa e ter um delay hack que nunca muda de valor.

 

 

7) Injection mais complexo, para fazer o gift hack ficar automático.

 

Neste ponto eu imagino que vc já consiga fazer injections sem que eu fale oq vc deve escrever então eu vou apenas dar a teoria e o código, que vc deve conseguir imaginar uma maneira de adaptar isso para outra coisa.

 

O endere´o do gift por ter vários valores, mas o que nos interessa é que ele fique sempre com o valor 2, coreto?

Então, se conseguirmos criar um código onde ele compare o valor com 2, caso seja igual, ele volta para a rotina do jogo, se for diferente, ele muda o valor para 2 e volta para a rotina do jogo.

Isso vc entendeu, mas como fazer?

Assim:

code cave1

mov [eax+24],ecx // Código original do jogo.

cmp [eax+24],2 // Compara o valor encontrado no endere´o [eax+24] com 2

jne code-cave-2 // Pula para o endere´o do code cave 2 caso seja diferente de 2

mov [eax+24],ecx // Código do jogo

jmp jogo // Pular para a rotina do jogo.

 

code cave2 (basta ser um pouco long dos códigos acima)

mov [eax+24],2 // Mudar o valor do endere´o [eax+24] para 2

jmp jogo // Voltar para a totina do jogo.

 

 

Pronto, vc fez um gift hack automático, basta o seu código ser lido que ta funcionando.

Isso pode ser usado para várias coisas, um bom exemplo seria para o gold hack, imagine um código que ative o hack quando seu gold for menor que 5000 e desative quando o valor for maior que 5000, pois isso é possivel de fazer, mas.... acho que é uma coisa que vc deve tentar fazer por vc mesmo... assim vc aprenderá mais sobre o assunto.

 

 

 

8) Caso vc tenha dúvidas, poste-as aqui que eu ou outro usuário tentará ajudar.

Eu só criei este tutorial para fazer com que os manhas melhorem, e assim fica mais facil de criar coisas novas.

 

 

9) Sugestões para vc treinar:

Tente criar manhas com injection e pointes para jogos offline.

Link para o comentário
Compartilhar em outros sites

  • 2 semanas atrás...
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.