Ir para conteúdo
Faça parte da equipe! (2024) ×

Criando un TRAINER ou um CHEAT !


cheetoss2bru
 Compartilhar

Posts Recomendados

so dar um clique duplo no form e substituir o codigo existente por esse, depois crie um Timer e coloque o Interval dele 1

 

PRONTO

 

nesse caso se vc apertar as teclas Shift+C+A ele mostra a Mensagem O Cheat foi ativado!

 

Acho que não vou precisar explicar o codigo, então FLW

 

Todas as VbKeys importantes, para por uma letra pasta botar:

 

vbKey(Letrar)

 

Então vamos lá, clique nesse butão do Cheat Engine Imagem anexada

 

Agora, selecione o processo do jogo e clique em "OK".

 

Agora, escreva o valo do hack no caso 100 nesse espaço que tem no Cheat Engine

 

Agora, clique no butão "First Scan", você verá numa lista que encontrou vários resultados com valores 100

 

Então, volte ao jogo e leve um hit mas não morra, por exemplo, você ficou com 75 de life, então volte ao Cheat Engine e no mesmo espaço de texto escreva 75 e clique em "Next Scan".

 

Agora veja que a lista diminuiu, então pegue os valores que estão com nome verde (supostamente vai ter) e clique duas vezes nele.

 

E vai aparecer numa lista igual a essa MAS O ADRESS NÃO VAI SER IGUAL!

 

 

 

Agora, clique no quadradinho de Frozen e dê dois cliques no número 100 da propriedade "Value".

 

Agora bote o life desejado.

 

Volte ao jogo e veja se modificou, se não modificou, volte ao Cheat Engine e clique duas vezes em outro endereço verde e faça a mesma coisa, só não esqueça de tirar o Frozen do que não pegou!

 

Depois de ter achado, você pode usar para fazer seu trainer em alguma linguagem ;D

 

DOwnloa Para ver como ficou

 

2° Voce Precisa do Codigo para Injectar e Pegar o Value do Hack..

 

 

Citação:

Public Const PROCESS_ALL_ACCESS = &H1F0FFFDim f1holder As IntegerDim timer_pos As Long'API DeclarationPublic Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As LongPublic Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As LongPublic Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As LongPublic Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As LongPublic Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal Classname As String, ByVal WindowName As String) As LongPublic Declare Function GetKeyPress Lib "user32" Alias "GetAsyncKeyState" (ByVal key As Long) As IntegerPublic Declare Function ReadProcessMem Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, ByRef lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As LongPublic Function WriteAByte(gamewindowtext As String, address As Long, value As Byte)Dim hwnd As LongDim pid As LongDim phandle As Longhwnd = FindWindow(vbNullString, gamewindowtext)If (hwnd = 0) ThenMsgBox "The Game Is Not Working", vbCritical, "Error"EndExit FunctionEnd IfGetWindowThreadProcessId hwnd, pidphandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid)If (phandle = 0) ThenMsgBox "Can't get ProcessId", vbCritical, "Error"Exit FunctionEnd IfWriteProcessMemory phandle, address, value, 1, 0&CloseHandle hProcessEnd FunctionPublic Function WriteAnInt(gamewindowtext As String, address As Long, value As Integer)Dim hwnd As LongDim pid As LongDim phandle As Longhwnd = FindWindow(vbNullString, gamewindowtext)If (hwnd = 0) ThenMsgBox "The Game Is Not Working", vbCritical, "Error"EndEnd IfGetWindowThreadProcessId hwnd, pidphandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid)If (phandle = 0) ThenMsgBox "The Game Is Not Working", vbCritical, "Error"Exit FunctionEnd IfWriteProcessMemory phandle, address, value, 2, 0&CloseHandle hProcessEnd FunctionPublic Function WriteALong(gamewindowtext As String, address As Long, value As Long)Dim hwnd As LongDim pid As LongDim phandle As Longhwnd = FindWindow(vbNullString, gamewindowtext)If (hwnd = 0) ThenMsgBox "The Game Is Not Working", vbCritical, "Error"EndExit FunctionEnd IfGetWindowThreadProcessId hwnd, pidphandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid)If (phandle = 0) ThenMsgBox "The Game Is Not Working", vbCritical, "Error"Exit FunctionEnd IfWriteProcessMemory phandle, address, value, 4, 0&CloseHandle hProcessEnd FunctionPublic Function ReadAByte(gamewindowtext As String, address As Long, valbuffer As Byte)Dim hwnd As LongDim pid As LongDim phandle As Longhwnd = FindWindow(vbNullString, gamewindowtext)If (hwnd = 0) ThenMsgBox "The Game Is Not Working", vbCritical, "Error"EndExit FunctionEnd IfGetWindowThreadProcessId hwnd, pidphandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid)If (phandle = 0) ThenMsgBox "The Game Is Not Working", vbCritical, "Error"Exit FunctionEnd IfReadProcessMem phandle, address, valbuffer, 1, 0&CloseHandle hProcessEnd FunctionPublic Function ReadAnInt(gamewindowtext As String, address As Long, valbuffer As Integer)Dim hwnd As LongDim pid As LongDim phandle As Longhwnd = FindWindow(vbNullString, gamewindowtext)If (hwnd = 0) ThenMsgBox "The Game Is Not Working", vbCritical, "Error"EndExit FunctionEnd IfGetWindowThreadProcessId hwnd, pidphandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid)If (phandle = 0) ThenMsgBox "The Game Is Not Working", vbCritical, "Error"Exit FunctionEnd IfReadProcessMem phandle, address, valbuffer, 2, 0&CloseHandle hProcessEnd FunctionPublic Function ReadALong(gamewindowtext As String, address As Long, valbuffer As Long)Dim hwnd As LongDim pid As LongDim phandle As Longhwnd = FindWindow(vbNullString, gamewindowtext)If (hwnd = 0) ThenMsgBox "The Game Is Not Working", vbCritical, "Error"EndExit FunctionEnd IfGetWindowThreadProcessId hwnd, pidphandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid)If (phandle = 0) ThenMsgBox "The Game Is Not Working", vbCritical, "Error"Exit FunctionEnd IfReadProcessMem phandle, address, valbuffer, 4, 0&CloseHandle hProcessEnd FunctionPublic Function ReadAFloat(gamewindowtext As String, address As Long, valbuffer As Single) Dim hwnd As Long Dim pid As Long Dim phandle As Long hwnd = FindWindow(vbNullString, gamewindowtext) If (hwnd = 0) Then MsgBox "The Game Is Not Working", vbCritical, "Error" End Exit Function End If GetWindowThreadProcessId hwnd, pid phandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid) If (phandle = 0) Then MsgBox "Can't get ProcessId", vbCritical, "Error" Exit Function End If ReadProcessMem phandle, address, valbuffer, 4, 0& CloseHandle hProcessEnd FunctionPublic Function WriteAFloat(gamewindowtext As String, address As Long, value As Single) Dim hwnd As Long Dim pid As Long Dim phandle As Long hwnd = FindWindow(vbNullString, gamewindowtext) If (hwnd = 0) Then MsgBox "The Game Is Not Working", vbCritical, "Error" End Exit Function End If GetWindowThreadProcessId hwnd, pid phandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid) If (phandle = 0) Then MsgBox "Can't get ProcessId", vbCritical, "Error" Exit Function End If WriteProcessMemory phandle, address, value, 4, 0& CloseHandle hProcessEnd Function

 

 

Esse codigo so faz com que você possa editar a memoria do jogo (memory)

 

Esse modulo esta patched, então crie o seu!

 

Crie um botão, não mude o campo (NAME) do botão, Mude o Caption do botão para Iniciar Hack

 

Crie um Timer, e bote o seguinte codigo dentro:

 

Call WriteALong("(Nome do Jogo)", (Andress Do CE), (Valor que você quer que ele fique))

 

 

vamos dar como exemplo, Warrock

 

Call WriteALong("WarRock", &H7DB120, 1120403456)

 

WriteALong é para pegar o verdadeiro valor dentro do Warrock.

007DB120 é o Andress da Stamina, você bota o &H que fica no lugar dos zero, serve para o codigo do modulo ler ele e poder botar na memoria, e 1120403456 é o maximo de stamina.

 

Oque esse codigo fazer é dar Freeze no valor da Stamina para ela nunca decer

 

Agora de um clique duplo no primeiro botão e bote o seguinte codigo:

 

Timer1.Interval = 1

 

Ele dira que é para o Timer1 fikar ON, resumindo para o cheat execultar

 

Agora crie um outro Botão com no Caption o texto OFF e dentro dele bote o codigo:

 

Timer1.Interval = 0

 

 

Ele dira que é para o Timer1 fikar OFF, resumindo o cheat parar se funcionar

 

3° Codigo de Injeçao do Value :

Call WriteALong("WarRock", &H7DB120, 1120403456)

 

Azul : Nome da Janela do Jogo

Vermelho : Endereço do Codigo hack Encontrado no 1° Passo | Exemplo de Value : CheatEngine (011FB5A0), VB6 (&H11FB5A0).

Verde : Valor do hack (Value) | Exemplo : "99999"

 

 

 

4° Pegando o Valor do Endereço Hack

Dim Valor As Long

Call ReadALong("Gunbound", &H11FB5A0, Valor)

Text1.Text = Valor

So criar um Botao e um TextBox.

 

5° Ah.. Mais eu quero usar DKHack no GB mais esses Codigos nao Funfa =/ :

 

--- Array Of Bytes ---

 

Coloque esses Dois Codigos em um Module

 

 

Código:

Public Sub ByteStringToByteArray(strString As String, ByRef byteArray() As Byte)

Dim current_byte As Byte

Dim c, d, intSize As Integer

Dim strTemp As String

 

ReDim byteArray(0) As Byte

 

For c = 1 To Len(strString)

If (Mid(strString, c, 1) <> " ") Then

strTemp = strTemp & Mid(strString, c, 1)

End If

Next c

 

intSize = Round(Len(strTemp) / 2)

ReDim Preserve byteArray(intSize) As Byte

 

d = 0

For c = 1 To Len(strTemp) Step 2

current_byte = Val("&H" + Mid(strTemp, c, 2))

byteArray(d) = current_byte

d = d + 1

Next c

End Sub

 

Public Sub WriteByteString(lngAddress As Long, strValue As String, Optional ByRef NumberOfBytesWritten As Long = 0)

Dim hwnd, processHandle, processId As Long

Dim bytValue() As Byte

 

hwnd = FindWindow(vbNullString, CurrentProcess)

If (hwnd = 0) Then Exit Sub

 

GetWindowThreadProcessId hwnd, processId

processHandle = OpenProcess(PROCESS_ALL_ACCESS, False, processId)

ByteStringToByteArray strValue, bytValue

WriteProcessMemory processHandle, lngAddress, bytValue(0), UBound(bytValue), NumberOfBytesWritten

CloseHandle processHandle

End Sub

 

 

 

Código:

CurrentProcess = "Gunbound"

Call WriteByteString(&H11FB5A0, "00 00 00 00 00 00 00")

OBS : E so um Exemplo !!!

 

 

7° Por Final Undetectando o Seu Trainer =

 

 

Código:

Public Const PROCESS_ALL_ACCESS = &H1F0FFF

Dim f1holder As Integer

Dim timer_pos As Long

 

 

 

Citação:

'API Declaration

Public Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As Long, lpdwProcessId As Long) As Long

Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long

Public Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long

Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal Classname As String, ByVal WindowName As String) As Long

Public Declare Function GetKeyPress Lib "user32" Alias "GetAsyncKeyState" (ByVal key As Long) As Integer

Public Declare Function ReadProcessMem Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, ByRef lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long

 

Public Function WriteAByte(gamewindowtext As String, address As Long, value As Byte)

Dim hWnd As Long

Dim pid As Long

Dim phandle As Long

hWnd = FindWindow(vbNullString, gamewindowtext)

If (hWnd = 0) Then

MsgBox "The Game Is Not Working", vbCritical, "Error"

End

Exit Function

End If

GetWindowThreadProcessId hWnd, pid

phandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid)

If (phandle = 0) Then

MsgBox "Can't get ProcessId", vbCritical, "Error"

Exit Function

End If

WriteProcessMemory phandle, address, value, 1, 0&

CloseHandle hProcess

End Function

 

Public Function WriteAnInt(gamewindowtext As String, address As Long, value As Integer)

Dim hWnd As Long

Dim pid As Long

Dim phandle As Long

hWnd = FindWindow(vbNullString, gamewindowtext)

If (hWnd = 0) Then

MsgBox "The Game Is Not Working", vbCritical, "Error"

End

End If

GetWindowThreadProcessId hWnd, pid

phandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid)

If (phandle = 0) Then

MsgBox "Can't get ProcessId", vbCritical, "Error"

Exit Function

End If

WriteProcessMemory phandle, address, value, 2, 0&

CloseHandle hProcess

End Function

 

Public Function WriteALong(gamewindowtext As String, address As Long, value As Long)

Dim hWnd As Long

Dim pid As Long

Dim phandle As Long

hWnd = FindWindow(vbNullString, gamewindowtext)

If (hWnd = 0) Then

MsgBox "The Game Is Not Working", vbCritical, "Error"

End

Exit Function

End If

GetWindowThreadProcessId hWnd, pid

phandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid)

If (phandle = 0) Then

MsgBox "Can't get ProcessId", vbCritical, "Error"

Exit Function

End If

WriteProcessMemory phandle, address, value, 4, 0&

CloseHandle hProcess

End Function

 

Public Function ReadAByte(gamewindowtext As String, address As Long, valbuffer As Byte)

Dim hWnd As Long

Dim pid As Long

Dim phandle As Long

hWnd = FindWindow(vbNullString, gamewindowtext)

If (hWnd = 0) Then

MsgBox "The Game Is Not Working", vbCritical, "Error"

End

Exit Function

End If

GetWindowThreadProcessId hWnd, pid

phandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid)

If (phandle = 0) Then

MsgBox "Can't get ProcessId", vbCritical, "Error"

Exit Function

End If

ReadProcessMem phandle, address, valbuffer, 1, 0&

CloseHandle hProcess

End Function

 

Public Function ReadAnInt(gamewindowtext As String, address As Long, valbuffer As Integer)

Dim hWnd As Long

Dim pid As Long

Dim phandle As Long

hWnd = FindWindow(vbNullString, gamewindowtext)

If (hWnd = 0) Then

MsgBox "The Game Is Not Working", vbCritical, "Error"

End

Exit Function

End If

GetWindowThreadProcessId hWnd, pid

phandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid)

If (phandle = 0) Then

MsgBox "Can't get ProcessId", vbCritical, "Error"

Exit Function

End If

ReadProcessMem phandle, address, valbuffer, 2, 0&

CloseHandle hProcess

End Function

 

Public Function ReadALong(gamewindowtext As String, address As Long, valbuffer As Long)

Dim hWnd As Long

Dim pid As Long

Dim phandle As Long

hWnd = FindWindow(vbNullString, gamewindowtext)

If (hWnd = 0) Then

MsgBox "The Game Is Not Working", vbCritical, "Error"

End

Exit Function

End If

GetWindowThreadProcessId hWnd, pid

phandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid)

If (phandle = 0) Then

MsgBox "Can't get ProcessId", vbCritical, "Error"

Exit Function

End If

ReadProcessMem phandle, address, valbuffer, 4, 0&

CloseHandle hProcess

End Function

 

Public Function ReadAFloat(gamewindowtext As String, address As Long, valbuffer As Single)

Dim hWnd As Long

Dim pid As Long

Dim phandle As Long

hWnd = FindWindow(vbNullString, gamewindowtext)

If (hWnd = 0) Then

MsgBox "The Game Is Not Working", vbCritical, "Error"

End

Exit Function

End If

ReadProcessMem phandle, address, valbuffer, 1, 0&

CloseHandle hProcess

End Function

 

Public Function ReadAnInt(gamewindowtext As String, address As Long, valbuffer As Integer)

Dim hWnd As Long

Dim pid As Long

Dim phandle As Long

hWnd = FindWindow(vbNullString, gamewindowtext)

If (hWnd = 0) Then

MsgBox "The Game Is Not Working", vbCritical, "Error"

End

Exit Function

End If

GetWindowThreadProcessId hWnd, pid

phandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid)

If (phandle = 0) Then

MsgBox "Can't get ProcessId", vbCritical, "Error"

Exit Function

End If

ReadProcessMem phandle, address, valbuffer, 2, 0&

CloseHandle hProcess

End Function

 

Public Function ReadALong(gamewindowtext As String, address As Long, valbuffer As Long)

Dim hWnd As Long

Dim pid As Long

Dim phandle As Long

hWnd = FindWindow(vbNullString, gamewindowtext)

If (hWnd = 0) Then

MsgBox "The Game Is Not Working", vbCritical, "Error"

End

Exit Function

End If

GetWindowThreadProcessId hWnd, pid

phandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid)

If (phandle = 0) Then

MsgBox "Can't get ProcessId", vbCritical, "Error"

Exit Function

End If

ReadProcessMem phandle, address, valbuffer, 4, 0&

CloseHandle hProcess

End Function

 

Public Function ReadAFloat(gamewindowtext As String, address As Long, valbuffer As Single)

Dim hWnd As Long

Dim pid As Long

Dim phandle As Long

hWnd = FindWindow(vbNullString, gamewindowtext)

If (hWnd = 0) Then

MsgBox "The Game Is Not Working", vbCritical, "Error"

End

Exit Function

End If

 

GetWindowThreadProcessId hWnd, pid

phandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid)

If (phandle = 0) Then

MsgBox "Can't get ProcessId", vbCritical, "Error"

Exit Function

End If

 

ReadProcessMem phandle, address, valbuffer, 4, 0&

CloseHandle hProcess

End Function

 

Public Function WriteAFloat(gamewindowtext As String, address As Long, value As Single)

Dim hWnd As Long

Dim pid As Long

Dim phandle As Long

 

hWnd = FindWindow(vbNullString, gamewindowtext)

If (hWnd = 0) Then

MsgBox "The Game Is Not Working", vbCritical, "Error"

End

Exit Function

End If

 

GetWindowThreadProcessId hWnd, pid

phandle = OpenProcess(PROCESS_ALL_ACCESS, True, pid)

If (phandle = 0) Then

MsgBox "Can't get ProcessId", vbCritical, "Error"

Exit Function

End If

 

WriteProcessMemory phandle, address, value, 4, 0&

CloseHandle hProcess

End Function

 

 

Lembrando q esse modulo esta patched.intaum vo explicar um modo pra vcs a tornalo UD.

 

 

Oque você tem que tentar e editar certas "strings" no modulo.

 

[link]http://img512.imageshack.us/img512/1783/11gmt8ikl3.jpg[/link]

 

 

Tudo oque você tem que fazer é mudar essas strings para o que você quiser! Isso não intereça! MAS lembre-se de fazer algo bem destinto, que ninguem ja tenha feito. Varias pessoas fazem isso e você não quer fazer a mesma coisa que elas!. Justamente para ja ficar patched. Eu sugiro que você ponha uma coisa bem dificil com eltras e numero. EXEMPLO: escoladopadwan1990. =D

 

Agora! É facil para mudar todoas as strings, aperte no binoculo que você ve na tela principal do Visual Basic ou apenas aperte Ctrl(Control) + F. Exemplo

 

 

 

 

 

WriteAByte

 

 

 

Você aperta Ctrl(Control) + F, aparecerá uma telinha de procura, aperte em "Replace...", quando a tela mudar irá ter duas textBox respectivamente:

 

Find What

Replace With

 

 

Em Find What ponha WriteAByte

Em Replace With ponha escoladopadwan1990, como eu dei no exemplo

 

Depois aperte em "Replace ALL" !

 

Depois de tudo isso você so fez com que as strings ficasem indetectaveis, UD.

 

Para as outras strings você apenas mudar o numero final, no meu exemplo é escoladopadwan1990... Para a seguna string você precisa por algo como escoladopadwan1991....Terceira escoladopadwan1992... E assim vai. Conseguiu pegar o raciocinio? Se não melhor se matar.

 

As Strings que você precisará mudar:

 

 

1) WriteAByte

2) WriteAnInt

3) WriteALong

4) ReadAByte

5) ReadAnInt

6) ReadALong

7) ReadAFloat

Cool WriteAFloat

9) hWnd

10) Pid

11) phandle

12) Address

13) GetKeyPress

14) GetWindowThreadProcessId

15) OpenProcess

16) WriteProcessMemory

 

 

No botão ou time irá ficar:

 

exemplo:

 

1) escoladopadwan1991

2) escoladopadwan1992

3) escoladopadwan1993

 

Call 3NOME DA LISTA QUE VOCÊ MODIFICOU ("GunBound", &H8AF0B8, 3) ->

 

Call escoladopadwan1993("GunBound", &H8AF0B8, 3)

 

8° Ahh.. meu deus nao sei oque e Pointer dry.gif" Olha aki :

 

Tutorial sobre DMA (memória dinâmica)

 

oq é DMA:

Bom, basicamente são endereços que mudam, pode ser quando o jogo é fechado e aberto, quando vc morre, quando vc perde vida, etc.... existem muitas possibilidades.

 

Teoria:

 

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 hacks 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 vc 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, vc 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 google 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.

 

 

 

dirol.gif 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 hacks melhorem, e assim fica mais facil de criar coisas novas.

 

 

9) Sugestões para vc treinar:

Tente criar hacks com injection e pointes para jogos offline.

Tente criar um gift hack que verifique o seu lvl, caso vc não possa dar gift, faça o código mudar para um lvl que possa fazer isso.

 

 

10) Se vc tem alguma sugestão para mim, poste aqui, que eu tentarei adicionar ao tutorial, ou arrumarei a parte que não está muito clara....

 

O gift hack vc pode encontar o tutorial no google, assim nao teram mais duvidas.

 

9° Se voce quiser Seu Trainer/Cheat Ativado por Hotkeys (Apertando uma Letra do teclado) Ultilize esse Codigo :

 

 

Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

Private Sub Form_Load()

Timer1.Enabled = True

End Sub

 

Private Sub Timer1_Timer()

If GetAsyncKeyState(vbKeyShift) And GetAsyncKeyState(vbKeyC) And GetAsyncKeyState(vbKeyA) Then

MsgBox "O Cheat foi ativado!"

End If

End Sub

 

 

so dar um clique duplo no form e substituir o codigo existente por esse, depois crie um Timer e coloque o Interval dele 1

 

PRONTO

 

nesse caso se vc apertar as teclas Shift+C+A ele mostra a Mensagem O Cheat foi ativado!

 

Acho que não vou precisar explicar o codigo, então FLW

 

Todas as VbKeys importantes, para por uma letra pasta botar:

 

vbKey(Letrar)

 

vbKeyLButton Left Mouse Button

vbKeyRButton Right Mouse Button

vbKeyCancel Cancel Key

vbKeyMButton Middle Mouse button

vbKeyBack Back Space Key

vbKeyTab Tab Key

vbKeyClear Clear Key

vbKeyReturn Enter Key

vbKeyShift Shift Key

vbKeyControl Ctrl Key

vbKeyMenu Menu Key

vbKeyPause Pause Key

vbKeyCapital Caps Lock Key

vbKeyEscape Escape Key

vbKeySpace Spacebar Key

vbKeyPageUp Page Up Key

vbKeyPageDown Page Down Key

vbKeyEnd End Key

vbKeyHome Home Key

vbKeyLeft Left Arrow Key

vbKeyUp Up Arrow Key

vbKeyRight Right Arrow Key

vbKeyDown Down Arrow Key

vbKeySelect Select Key

vbKeyPrint Print Screen Key

vbKeyExecute Execute Key

vbKeySnapshot Snapshot Key

vbKeyInsert Insert Key

vbKeyDelete Delete Key

vbKeyHelp Help Key

vbKeyNumlock Delete Key

 

vbKeyA through vbKeyZ are the key code constants for the alphabet

vbKey0 through vbKey9 are the key code constants for numbers

vbKeyF1 through vbKeyF16 are the key code constants for the function keys

vbKeyNumpad0 through vbKeyNumpad9 are the key code constants for the numeric key pad

 

Math signs are:

vbKeyMultiply - Multiplication Sign (*)

vbKeyAdd - Addition Sign (+)

vbKeySubtract - Minus Sign (-)

vbKeyDecimal - Decimal Point (.)

vbKeyDivide - Division sign (/)

vbKeySeparator - Enter (keypad) sign

 

 

Exemplo :

Crie -

*Timer, Botao*

 

Adicione o Codigo ao Timer :

 

 

If GetAsyncKeyState(vbKeyTab) Then

MsgBox "O Cheat foi ativado!"

End If

 

Nesse Exemplo Letra Tab abertada Aparecera a mensagem (O Cheat Foi Ativado).

 

Modificando no Codigo Outras Opçoes :

Mais de Uma Letra : If GetAsyncKeyState(vbKeyTab) And GetAsyncKeyState(vbKeyA) Then = TAB + A

2 Opçoes e Ativaçao : If GetAsyncKeyState(vbKeyTab) Or GetAsyncKeyState(vbKeyA) Then = TAB ou A

 

11° Dicas Para se Fazer um BOT ! :

Voce Precisara do Codigo do 4° Passo

 

Dim Valor As Long

Call ReadALong("Gunbound", &H11FB5A0, Valor)

Text1.Text = Valor

 

Muito Facil.

Vamos Criar um Bot de Auto Life !

1° Va no Jogo e de First Scan no Seu Life no CheatEngine (4bytes/exact value), Exemplo 2000

2° Volte ao Jogo e Perca Life, Exemplo 1700 e de Next Scan no Cheat Engine.

 

Va Repetindo ate achar o Endereço hack Certo...

 

3° Vamos Dizer que vc Achou o Endereço : "&H11FB5A0"

 

Crie um Timer com "Interval = 1", dps coloque esse Codigo no Evento Timer1_Timer

 

 

Código:

Dim Valor As Long

Call ReadALong("JOGO", &H11FB5A0, Valor)

Text1.Text = Valor

If Text1.text <= 500 Then

SendKeys "{F1}"

End If

 

 

Sobre o Codigo :

<= 500 - Menor que 500 de Life

 

SendKeys "{F1}" - Mandando o Comando para Apertar F1[Dica] Criando Um Trainer Ou Um Cheat.! Completo

 

 

 

 

 

 

Ta ae galera !:eek:

Link para o comentário
Compartilhar em outros sites

"so dar um clique duplo no form e substituir o codigo existente por esse, depois crie um Timer e coloque o Interval dele 1

 

PRONTO

 

nesse caso se vc apertar as teclas Shift+C+A ele mostra a Mensagem O Cheat foi ativado!

 

Acho que não vou precisar explicar o codigo, então FLW

 

Todas as VbKeys importantes, para por uma letra pasta botar:

 

vbKey(Letrar)"

 

 

Sei La Uh Q è "Form":confused:

 

 

Explica melhor pq acei interessante :eek:

Link para o comentário
Compartilhar em outros sites

Este tópico está impedido de receber novos posts.
 Compartilhar

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • 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.