Post edited 22:16 – 11/03/2010 by iboo48
Merhaba arkadaÅŸlar,
trainer yapımını videolu olarak bir oyun üzerinde anlatmıştım ama videoda problem çıktı(oyun ekranı gözükmüyo), o yüzden moderatörümüz caliber'in Cheat Engine Tutorial'de pointer bulma videosundaki verilere dayalı olarak bir trainer yaptım…
Zaten yazdığım kodların yanlarına anlayabilmeniz ve düzenleyebilmeniz açısından notlar aldım…
Cheat Engine Tutorial Step 6 için hazırladım, caliber'in anlatımında(http://www.trgct.com/users/cal…../Step%206/) ki iÅŸlemleri yaparak aÅŸağıdaki verileri elde ettik;
pencere adı = Cheat Engine Tutorial
pointer = 00460C34
ofset = 0
bu değerleri 16′lık sistemde yazmamız gerekiyor, bunun için başına "&H" koymamız yeterli…
Aşağıda verdiğim kodları Visual Basicde Formu sağ tıklıyarak "view code" ye yapıştırın… Forma 1 textbox ve 1 buton ekleyin…
Kodların yanına eklediğim notlarla rahatlıkla düzenleyebileceğinizi düşünüyorum…
Â
Â
Â
Â
'Formumuza 1 Textbox, 1 Command Buton ekliyoruz…
Private Declare Function FindWindow Lib "user32″ Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32″ (ByVal hWnd As Long, lpdwProcessId As Long) As Long
Private Declare Function OpenProcess Lib "kernel32″ (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function WriteProcessMemory Lib "kernel32″ (ByVal hProcess As Long, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
Private Declare Function ReadProcessMemory Lib "kernel32″ (ByVal hProcess As Long, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
Private Declare Function CloseHandle Lib "kernel32″ (ByVal hObject As Long) As Long
Private Const PROCESS_ALL_ACCESS As Long = &H1F0FFF
'Cheat Engine Tutorial Step6 password = 098712
Private Sub Command1_Click()
On Error Resume Next
Dim hWnd As Long, pID As Long, hProcess As Long
hWnd = FindWindow(vbNullString, "Cheat Engine Tutorial") 'pencere adını giriyoruz (Cheat Engine Tutorial)
GetWindowThreadProcessId hWnd, pID
hProcess = OpenProcess(PROCESS_ALL_ACCESS, False, pID)
Dim pointer As Long
pointer = &H460C34  'buraya pointerimizi önüne "&H" koyarak yazıyoruz. (00460C34)
Dim buffer As Long
Dim adres As Long
Dim offset As Long
offset = &H0 'buraya ofset degerimizi önüne "&H" koyarak girecez. (Burada ofset = 0)
'assemble kodumuz "mov [eax],edx" , eger "mov [eax+4c],edx" olsaydı ofset degerimiz "4c" olacaktı.
If ReadProcessMemory(hProcess, ByVal pointer, buffer, 4, 0) <> 0 Then
adres = CLng(buffer) + offset
End If
'birden fazla ofset bulduysak aşağıya yazdığım kodların başlarındaki kesme işaretini silip her ofset değeri için tekrar tekrar ekleyebiliriz.
'offset = &H 'buraya ofset degerimizi girecez
'If ReadProcessMemory(hProcess, ByVal adres, buffer, 4, 0) <> 0 Then
'adres = CLng(buffer) + offset
'End If
buffer = CLng(Text1.Text)
If (WriteProcessMemory(hProcess, ByVal adres, buffer, 4, 0&)) = 1 Then
MsgBox "İşlem başarıyla tamamlandı", vbInformation
End If
CloseHandle (hProcess)
End Sub
Bişeyler paylaşmak istedim, belki işinize yarar… 