Funcionamento Geral
Um Trainer tem um processo básico que altera um valor na memória. Esse valor pode ser a quantidade de vida que você tem num Jogo ou até mesmo um numero qualquer. A memória no caso pode ser o Jogo,um software qualquer.
A memória atribui um endereço em cada valor,esse endereço pode ser pego utilizando qualquer software que "desmonte" a memória do jogo,o mais usado é o cheatengine que já faz praticamente tudo,ele lê e altera o valor para você.
Agora vamos para parte de programação.
Funções "writeprocessmemory()" e "readprocessmemory()"
Essas são as Funções que nos vamos Utilizar,logicamente essas são as principais. A função "writeprocessmemory()" como a própria função já diz ela escreve um processo na memória,ou seja ela escreve um novo valor num determinado endereço.
A função "readprocessmemory()" faz a mesma coisa,a única diferença é que ao invés de escrever ela lê o endereço na memória,pode ser usado para verificar o valor atual do endereço.
Função“FindWindow”
Essa Função vai nos auxiliar na procura de nossa Janela. Essa Função depende de uma Operação Lógica para Funcionar, ou seja, “<=0” e “>0” .
No exemplo abaixo temos que se achar a janela com o nome “Webcheats” o form vai enviar uma mensagem.
No exemplo acima utilizamos “>0” o pode ser usado caso não ache a janela. “<=0” ( para Utilizar é só substituir)If FindWindow(nil,'WebCheats')>0 then begin
Showmessage(‘Achou Janela’); end;
Variáveis "ler" "escrever"
Nos vamos Utilizar algumas variáveis que vão nos auxiliar no trainer Essas Variáveis podem ser alteradas para qualquer nome,para Facilitar vamos Utilizar as expressões "ler" e "escrever".
A pergunta que mais é feita e como se criar uma variável e para que ela serve. Vou explicar os 2 únicos jeitos de trabalhar como uma variável no Delphi.
O que é uma variável?
Variável é uma Função que vai criar um Nome para um único destino. Ex:
Temos o Nome: "WebCheats"
Vocês não concordam que ao invés de digitar 10 vezes "webcheats" é mais fácil digitar "WC" ?
É basicamente essa a função de uma variável, dar um atalho a outra função, no exemplo abaixo é utilizando o componente edit1.
Temos a função showmessage() e queremos dar uma mensagem sempre que for digitado algo no edit1.text,só que vamos utilizar também o que for escrito no edit1 para mudar o nome de uma Label,ao invés de digitar:
Agora você deve estar se perguntando,como que eu crio uma variável? no exemplo acima você viu apenas como utilizar agora vou ensinar como criar no delphi.showmessage(edit1.text) e label1.caption:=edit1.text
podemos criar uma variável com o nome texto e fazer assim:
showmessage(texto) e label1.caption:=texto
A variável nos facilitou muito.
Lembrando que eu citei que existe 2 jeitos de se criar e utilizar uma variável.
1º jeito de se criar:
Na Imagem abaixo vemos a parte "var" destacada e logo em baixo "form1:Tform1;"
Esse é o 1º jeito de inserir uma variável.
Para inserir outra variável é só colocar: Nome:string;
Ex: Texto:string;
Para Utilizar essa variável você deve indicar o que ela faz na Função de um botão ou de um componente qualquer. Ex:
Na imagem a variável texto é utilizada ao invés de "edit1.text" e logo em seguida temos uma Função qualquer mostrando essa variável.
LEMBRE-SE: a variável "texto" pode ser o que você quiser,pois você a declarou "globalmente" você pode por exemplo nesse mesmo projeto em outra função colocar que Texto vai ser edit2.text a única coisa que muda é que você tem que colocar texto:=edit2.text;.
2º Jeito de criar uma variável:
Esse jeito é o mais Utilizado,no primeiro jeito nos declaramos uma variável global,ou seja ela pode ser Utilizada em muitos caso. Já nesse ele é somente para uma Função de um Componente.
Na Imagem abaixo você pode notar que temos “var” antes de “Begin” e logo em seguida: Texto:string; depois Begin e a sua Função Comum
.
Esse é o 2º Jeito de se Declarar uma variável.
Encerramos aqui essa parte de variáveis e vamos iniciar nossa próxima parte.
Inserindo os Componentes
Você não é obrigado a Utilizar a mesma maneira que na imagem abaixo,seja criativo e arrume seu Form de um jeito legal, mas é claro,utilizando os componentes citados.
Components:
Agora que você viu praticamente tudo vamos começar com a parte da programação.Edit1 ; Edit2; Edit3 ; Label1 ; Label2; Label3 ; Label4 ; Label5; Label6; Timer1; XP ; button1.
Declare as Seguintes variáveis globais:
Vamos agora inserir a Função do nosso Timer:Código:
PH : THandle;
Código:
PID, ThID, R : DWORD;
Escrever : DWORD;
H : THandle;
Código:
var
ValorAtual:integer;
Ler:dword;
ver:integer;
begin
If FindWindow(nil, 'Janela do Jogo')<=0 then
begin
label1.Caption:='Não Achou Processo'
end;Deixar o Timer Ligado e com 1 Segundo.If FindWindow(nil,'Janela do Jogo')>0 then
begin
ver:=StrToInt(edit4.Text);
label1.Caption:='Achou Processo';
H := FindWindow(nil, 'Janela do Jogo');
ThID := GetWindowThreadProcessId(H, @PID);
PH := OpenProcess(PROCESS_ALL_ACCESS,FALSE,PID);
readprocessmemory(PH,pointer(ver),addr(ValorAtual) ,4,Ler);
label2.Caption:=inttostr(ValorAtual);
end;
Note que na Função temos “ Janela do Jogo “ você deve substituir pela “Caption” ( Nome da janela) do Jogo que você vai Utilizar o Trainer.
Agora Para Finalizar vamos Colocar na Função do Nosso Botão “editar” ( button1 )
Código:
Feito isso você deve estar agora com o Trainer Funcionando perfeitamente.var
NovoValor:integer;
Novoendereco:integer;
Escrever:dword;
begin
NovoValor:=StrToInt(edit1.Text);
Novoendereco:=StrToInt(edit2.Text);
writeprocessmemory(PH,pointer(Novoendereco), addr(NovoValor),4,escrever);
end;
Esse Tutorial não tem como Objetivo Montar para um game certo,pois é você quem deve fazer,eu estou apenas aqui para ajudar e ensinar.
Existe muitos jeitos de montar um Trainer é claro,esse é um jeito simples mostrando como Utilizar as Funções básicas de um Trainer.
Créditos: Felipe
Post: MaahRox~



LinkBack URL
About LinkBacks




