Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Avanado 1
PARTE 3
a) O que so pointers:
Para simplificar ao mximo, pointers so uma espcie de funo matemtica, voc poderia cha
de equao, mas em uma equao o "x" tem valores fixos, numa funo o "x" varia e assim vo
pode construir um grfico, em outras palavras uma funo ago do tipo F(x)= 25x+54 mas
uma equao algo assim 25x+54=23. No jogo, voc encontrar em inmeras ocasies um comand
omo 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 nmeros juntos...
mas... no sei oq fazer com isso.
Pois bem, vamos melhorar isso, primeiro vou te falar oq esse comando faz: ele co
pia o valor que est no "esi" para o endereo que obtido pela funo (pointer) "[edi+000
00052]".
Lembrando que voc pode encontrar diversos pointers diferentes, esse foi apenas um
exemplo simples.
voc deve ter entendido a base disso, se no entendeu, releia at entender.
c)O que fazer com um pointer:
Neste momento voc deve estar falando algo assim "Entendi oq .... mas... oq eu fao c
om isso em????"
Eu j te respondo, com um pointer voc no pode fazer muita coisa, mas se voc encontrar
um bem simples na memria do jogo, possivem criar um pointer no cheat engine e as
sim fazer com que seus manhas funcionem sempre.
Mas, existe a principal funo de um pointer que ser usado em conjunto com "code inj
ections" onde voc faz com que uma seqencia gigantesca de pointers vire apenas um p
ointer alterando o cdigo do jogo, fique calmo, eu vou explicar como fazer o point
er no "cheat engine" e como fazer e oq "code injection"
2) Code injection
a) O que code injection?
Acho que no tenho muito oq falar, basicamente voc colocar o seu cdigo prprio junto d
o cdigo do jogo, ou pode ser o fato de voc alterar parcialmente o cdigo do jogo de
modo a te ajudar.
Entendendo o "code injection":
Para fazer o code injection voc deve ter duas coisas: saber o cdigo que voc quer bu
rlar e um lugar livre na memria para voc poder escrever o seu cdigo (conhecido como
"code cave")
Parte prtica:
Oque vamos usar:
Cheat engine
Pinball 3d
Gunbound
Sua cabea
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 endereo que controla o nmero de bolas que voc tem.
caso voc no saiba: inicie um novo jogo e procure por 3; perca uma bola e procure p
or 2; perca outra bola e procure por 1, voc deve ter encontrado um ou dois endereo
s.
c) Mude o valor do endereo para 3 (no de freeze) e verifique se est correto, em cas
o positivo prossiga, em caso negativo procure novamente o endereo.
d) Clique com o boto direito no endereo e depois clique em "find what writes to th
at 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 endereo esc
rito. Esse endereo o que muda o nmero de bolas.
Pronto, voc j sabe procurar pelos endereos 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 endereo 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 endereo que
aparece o que voc viu na janela pequena, ele deve ter esse cdigo: "mov [esi+00000
146],eax" e ele indica que est copiando o valor do "eax" para o endereo do pointer
[esi+00000146].
Agora eu te pergunto, oq voc pode fazer para fazer as bolas crescerem e no diminui
rem? (pense um pouco sobre isso antes de ler mais)
Eu respondo, com este cdigo voc no pode fazer isso, voc pode alterar o valor da bola
s ou criar um pointer para pode travar o valor, mas no vai fazer o valor crescer.
..
Mas, dando uma olhada no cdigo percebemos que estamos copiando o valor do "eax" p
ara o endereo que temos no "ce", aquele que voc tem no code list, e que voc pode mu
dar pro valor que bem entender, encontrado procurando pelo nmero de bolas que voc
ainda pode usar, logo o valor do "eax" igual ao que vemos no endereo.... pensando
um pouco, percebemos que para o valor das bolas diminuir, o valor do "eax" deve
diminuir, ento... vamos procurar o cdigo que muda o valor do "eax" voc vai enconta
r 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).
Ento o cdigo fica assim: "mov eax,000000ff" aperte enter e clique em "yes" quando
perguntar.
agora voc pode testar o hack.. ele deve estar funcionando.
ele que voc encontrou no debugger, se voc no lembra do endereo, clique na janela do
debugger e depois cliqe em "show disassembler" novamente)
Agora voc deve substituir o cdigo "mov [esi+00000146],eax" por "jmp dode-cave", no
meu caso ficou "jmp 00451ea9". Quando voc der enter e depois clicar em "yes", vo
aparecer alguns nop's, veja a linha seguinte ao ltimo nop (uma que tem um cdigo no
rmal) copie o endereo da linha, deve ser "010175c5" ento 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 no, quando voc perde uma bola.
8) Caso voc tenha dvidas, poste-as aqui que eu ou outro usurio tentar ajudar.
Eu s criei este tutorial para fazer com que os manhas melhorem, e assim fica mais
facil de criar coisas novas.
9) Sugestes para voc treinar:
Tente criar manhas com injection e pointes para jogos offline.
FIM
Esse eh o fim deste Tutorial.
OBS: nao sejam ingratos agradeam e comentem!!!