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.

[TUTO pra iniciantes]Introdução aos cheats


Posts Recomendados

Vocês Podem ficar cansados de ler + lendo você entendera tudo e poderá até fazer chets novos...

 

Apresentação do Cheat Engine (C.E)

 

PARTE 1

 

 

•O que é Cheat Engine?

 

•Cheat Engine é um editor de memória, sua funssao eh alterar os valor do adress do cliente e freeza-lo para que seu valor não mude, mas você deve estar confuso, ```valores`` ``cliente`` ``adress`` `frozen``?

 

•O valor pode ser o valor do numero de vidas que você tem, pode ser seu dinheiro, quanto de força, de defesa e etc.Resumidamente são números que representam a quantidade de algo

 

•O adress é representado por alguns números, ele representa algo no jogo, como suas vidas ( não o numero de vidas que você tem) a sua defesa ( mas n o quanto de defesa você tem ) nele a valores.

 

•O frozen eh um botão usado para freezar (quando uma pessoa fala ``freeze`` é para marcar o quadradinho ) o valor. Assim é organizado no CheatEngine

 

•Nesse screeen pode-se perceber a organização dos itens acima

 

Apesentação e Função dos Ícones Básicos do CE

(CheatEngine)

 

Conhecido como``computadorzinho``

Função: Selecionar o processo

Reação ao clique: Abre uma janela com a lista de processo abertos, onde você deve selecionar o processo do jogo que queres editar

 

``First Scan`` ( primeiro scan)

Função: Procurar pelo valor que você colocou na caixa de value

Reação ao clique: Acha todos os adress que possuem o valor que você colocou na caixa de valor.

 

Next Scan (Prox.scan)

Função: Selecionar dos adress achados anteriormente com o ``first scan``os adress que possuem o valor que você colocou agora na caixa de valores.

 

Undo Scan ( desfazer scan)

Função: Desfazer o ultimo scan.

 

Settings

Função: Ir para abas de configuração do Cheat Engine

 

Botão frozen

Função: Freezar, congelar o valor para que ele não mude.

Reação ao clique:

 

 

Introdução aos cheats

PARTE 2

 

Obs. Inicial: Só prossiga para essa segunda parte se já souber a primeira parte, se não entendeu algo releia, se for o caso de não entender mesmo relendo, pergunte pelo fórum, mas nunca floode.

 

1.1Apresentação dos Value Types

- Há vários value types, eu so vou mostrar agora os básicos (usado na grande maioria dos cheats)

 

Byte- Usado para achar adress`s que representam algo no jogo que é ligavel e desligavel, o valor 1 eh ligado(vivo, ativado, com) e o 0 desligado(morto,desativado, sem) ex.: no jogo a um botão que ativa ou desativa algo

 

4 bites- Usados para achar valores que são numero de algo, ex.: numero de vidas, seu dinheiro no jogo, sua exp, o dinheiro que você ganha no jogo, e etc:

 

Float- Usados para achar valores que variam para décima, mas não para procurar valores decimais, ex: seu life, sua mana.

 

Text – O nome já diz, texto, serve para achar textos no jogo, ex: O seu nick, o nome da sua sala, o nome do server, etc.

 

1.2 Apresentação dos San Types

- Há alguns scan types, irei apresentá-los para você.

Exact Value: O mais conhecido, Serve para achar valores exatos, como 1,2,3,4,5,6,7....

Bigger Than: Pouquíssimo usado, serve para achar um valor maior do que o que você colocou na caixa de valor, especificado, você n sabe qual e o valor, você só sabe que é maior do que o que você colocou no value box

Smaller Than: Tampouco usado quanto o acima, serve para achar valores menores do que o da caixa de valor.

Value beetwen: Nunca vi ser usado por qualquer pessoa, e infelizmente não fasso noção da sua função.

Unknow Intial Value: O Segundo mais usado, serve para achar valores que você não saiba a mínima noção de qual seja.

 

2.1- Como achar valores conhecidos ( exact values ).

- As coisas acima faceis, creio que facilmente você pegou. Agora se você já domina os assuntos acima vai ser muito fácil, eu vou somente da uma dica, quando você da o primeiro scan, você acha muitos valores, talvez milhares, ai você se pergunta, como eu acho o valor certo? Simples, fassa esse valor mudar para que você de o next scan, diferente, ex.: ( to facilitando d+) você tem 3 vidas, de first scan em 3 ( em exact porque é um valor exato) perca uma vida, e procure por 2 , se ainda assim n sobrar poucos valores, perca + 1 ficara com 1 procure por 1, ai você achara o adress ou os adress`s pode ser + de 1, de 2 cliques em todos eles e eles irão para a caixa de baixo freeze todos no valor 3, e pronto,

-Agora tente fazer com outras coisas.

 

2.2- Como achar valores desconhecidos ( Unknow Values )

-Esse é mais complexo porque acha milhares de valores, mas não é difícil,vou dar um exemplo em float e em a defeat hack (para o bixo já nascer morto). Enfrentando o bixo Proucure por unknow intial value(scan type) e float (porque eh um life e varia para dacimais), agora hite (bata) o bixo, vá em scan type e coloque decreased value (valores que baixaram)e de next scan, agora mude o scan type pra unchanged value (valores que não mudaram) vai e da uns 5 scans (sem bater no bixo), agora bate novamente e procure por decreased value, repita esse processo ate que sobre poucos valores (no max. 5) de dois cliques nos adress e freeze em 0, ele estará morto.

Experimente fazer com outros tipos de valores e cheats (sem tutorias, deduza como seria tal cheat que ainda não foi criado), como 4 bites, text, e byte.

 

 

 

Avançado 1

 

 

PARTE 3

 

 

 

 

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, você poderia chamar de equação, mas em uma equação o "x" tem valores fixos, numa função o "x" varia e assim você 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, você 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

você 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 você pode encontrar diversos pointers diferentes, esse foi apenas um exemplo simples.

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

 

c)O que fazer com um pointer:

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

Eu já te respondo, com um pointer você não pode fazer muita coisa, mas se você 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 você 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 é você colocar o seu código próprio junto do código do jogo, ou pode ser o fato de você alterar parcialmente o código do jogo de modo a te ajudar.

 

Entendendo o "code injection":

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

 

c) O que posso fazer com "code injection"?

Quase tudo que você pudér imaginar, por exemplo: com um injection bem básico você pode criar um hack de bolas infinitas no piball, basta você achar o código que subtrai uma bola do total de bolas e fazer com que ele adicione uma, e como fazer isso... bom você terá um código que começa com "sub" e você deve mudar para "add" e então pronto você 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 você 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 você tem.

caso você 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, você 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 você 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, você 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 você 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 você 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 você não pode fazer isso, você 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 você tem no code list, e que você pode mudar pro valor que bem entender, encontrado procurando pelo número de bolas que você 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" você vai encontar isso: "mov eax,[ebp+08]"

 

c) Com esse comando você vai fazer um hack bem simples, vamos supor que você queria ganhar 255 bolas, bom... você 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 você 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 você 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, você deve estar naquela janela onde você 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 você 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 você escolheu e aperte enter.

Agora vamos fazer nosso código próprio, uma dica que dou, é você 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 você perceber erros no que você está fazendo.

Neste caso eu já dei o código para você, mas acho interessante você tentar criar o seu código próprio, pois é assim que você 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 você 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 você 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 você 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 você encontrou no debugger, se você não lembra do endereço, clique na janela do debugger e depois cliqe em "show disassembler" novamente)

Agora você deve substituir o código "mov [esi+00000146],eax" por "jmp dode-cave", no meu caso ficou "jmp 00451ea9". Quando você 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 você perde uma bola.

 

 

6) Pointers usados em conjunto com code injection.

 

Primeiro quero falar que se você aprendeu tudo até aqui, não terá nenhum problema nesta parte do tutorial, mas se você 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 você 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 você 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 você leu tudo até aqui, então não vou retomar processos feitos anteriormente, vou apenas falar oq você tem que fazer... e você deve lembrar.

 

Clique em "show disassembler" e você 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 você 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 você tem no code list do ce.

Entretanto, você não sabe o valor do "eax", mas... nós vamos fazer uma "gambiarra". Como?, bem simples, suponha que você 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 você escolher

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

jmp jogo // Voltar para o jogo

 

Depois você 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 você 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 você preencher, no primeiro você deve colocar o endereço para onde manfou copiar o "eax", no segundo você deve colocar 24 (pois é o valor que é somado ao "eax" no código do jogo).

Quando você terminar isso, você vai poder travar esse valor em 2, e sempre que você 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] você 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 você já consiga fazer injections sem que eu fale oq você deve escrever então eu vou apenas dar a teoria e o código, que você 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 você 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, você 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 você deve tentar fazer por você mesmo... assim você aprenderá mais sobre o assunto.

 

 

 

8) Caso você 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 você treinar:

Tente criar manhas com injection e pointes para jogos offline.

 

 

FIM

 

Esse eh o fim deste Tutorial.

 

 

Creditos:

MeLLo que desenvolveu o tutorial de pointers e injection

FlaV1n que desenvolvi as partes,Apresentação do Cheat Engine, Apresentação e Função dos Ícones Básico do CE e a parte de Introdução aos cheats

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.