oncelikle editlemek istedimiz yerin memory adresini bulmamız gerek

program
Burdan

Bu programı kullanmayı bilmyosanız hic bulaşmayın

yinede biraz anlatıyım programı oyun acıkken calıştırın ve ustteki open process butonuna tıklayarak editlemek istediyiniz oyunu acın search butonundan editlemek istediyiniz vaule yi bulun ve bikac deyişiklik yapıp next searc yapin farkı bulun mesela redalerd gibi oyunlarda parayı editlemek istedinizde once olan parayı aratıp sonra biraz harcayıp farkı bulun




'---------------------------modul başlangıc------------------------------

'Once Ram'e yazmak icin gerekli api'leri deklare edelim.

Private Const PROCESS_ALL_ACCESS As Long = &H1F0FFF
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, ByVal 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, ByVal lpBaseAddress As Any, ByVal 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 Declare Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal Classname As String, ByVal WindowName As String) As Long
Private 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

'Şimdi de fonksiyonumuzu yazıyoruz.

Public Function Longyaz(Offset As Long, WindowName As String, Value As Long) As Boolean

Dim hwnd As Long
Dim ProcessID As Long
Dim ProcessHandle As Long

'Once oyunun pencere numarasını bulalım;
hwnd = FindWindow(vbNullString, WindowName)

If hwnd = 0 Then 'Oyun şuanda acık değilse
MsgBox "Oyun şuanda acık değil!", vbCritical, "Yazma Hatası" 'oyun acıkdeyilse bu hatayı versin isterseniz silebilirsiniz

Exit Function

End If

GetWindowThreadProcessId hwnd, ProcessID

ProcessHandle = OpenProcess(PROCESS_ALL_ACCESS, False, ProcessID)

If ProcessHandle = 0 Then

Exit Function

End If

WriteProcessMemory ProcessHandle, Offset, Value, 4, 0& 'Değeri yazıyoruz
CloseHandle ProcessHandle 'Yazma işlemi bitti, pencere kulbunu kapatıyoruz


End Function
'------------------buraya kadar--------------------------


KULLANILIŞI:

Ben bu konuda ornek olarak half -life adlı oyunu icin bi kod yazdım mermi bitmemesi icin

''boş bi form oluşturun ve ustune 1 command butonu ekleyin

'Temsil edecek. Modulun kullanılışı tek satır. Değiştirmek istediğimiz her değer icin bu tek satırı tekrarlayacaz.

'KULLANIM: Longyaz hafıza_adresi, oyunun_pencere_yazısı, yazılacak_değer

Şoyle ki,
'------------------------Oyun icin---------------------------------------

Private Sub Command1_Click()

Longyaz &HD5E104, "Half life", 60 'mermi

End Sub


'--------------------------------------------

'unutmamanız gereken memory adresini yazarken başında &H olmasına dikkat edin ornekte gosterdiyim gibi

'pencere adresini bulmak icin oyunu simge durumuna kucultup mouse le ustune geldinizde gorunecektir


Hak ettiysem rep verebilirsiniz

not: alıntıdır
__________________