melakukan proses hacking dan cara menggunakan API tersebut untuk merubah
data dari Memory Address. kalau di postingan part2 hanya mempelajari
tentang cara mengubah data memory address aja itu juga prosessnya pada
notepad bukan di game.. kalau untuk game bagaimana? nah itu dia yang
akan kita bahas.
oke langsung aja alat yang dibutuhkan disini adalah:
-visual basic 6
juga dibutuhkan ketelitian dan pantang menyerah dalam mempelajari tehnik - tehnik cracking
disini kita menggunakan game PlantsVsZombies untuk sebagai contoh, soalnya cuma ada game itu saja di kompi saya.. hehehe
tutorial ini tentang bagaimana penghackan jumlah sun di game tersebut.
sekarang buka Cheat Engine kalian dan open process pada gamenya.
pilih
pada scan type: "exact value" dan value type: "4 byte" kemudian
masukanlah jumlah sun yang kalian punya contoh: 50 lalu klik "First
Scan" setelah keluar banyak address kembali ke game ubah sun kalian
misalnya kalian mengambil matahari atau menanam tanaman sehingga Sun nya
akan berubah. setelah itu kalian masukan lagi sun yang telah berubah
nilainya ke kotak value pada cheat engine lalu klik next sehingga kalian
mendapat 1 buah address saja. jika kalian mendapatkan lebih dari 1
ulangi cara tadi sampai kalian mendapatkan 1 address. setelah ketemu
addressnya masukan address nya ke table cheat engine. seperti gambar
dibawah
sip setelah ketemu address sun nya tinggal kita masukan ke visual basic 6 tapi tunggu dulu
address
yang kita scan dan dapatkan tadi bukanlah address yang static. address
tersebut dapat berubah ketika game nya relog atau game tersebut dicoba
pada komputer lain. sekarang kita lanjut tutorialnya cara mencari
address yang tidak dinamis biasanya disebut
pointer.
klik
kanan pada address di table kemudian klik "Find out what writes to this
address" jika ada pesan klik yes saja nanti akan muncul kotak dialog
kosong seperti gambar dibawah
disini kita mencari address lain yang mem-write data dari address sun tersebut.
setelah
muncul kotak dialognya kalian kembali ke game lalu lakukan perubahan
pada nilai sun (saran perubahan sun sebaiknya naik sebesar 25 yaitu dgn
cara mengambil sun yang jatuh kebawah) . setelah melakukan perubahan
pada Sun nantinya akan muncul seperti ini:
klik lah address nya lalu kalian klik More Information sehingga akan muncul seperti ini:
lihatlah intruksi assembly pada address yang berwarna merah pada gambar diatas yaitu:
add [eax+00005560],
ecx <- apa artinya intruksi diatas?
jika kita sudah mengenal intruksi dasar pada assembly pasti kita tahu apa artinya kode diatas?
kita
lihat pada kata kunci "add"(tulisan berwarna merah) intruksi ini
terdiri atas 2 parameter jika dilihat parameter kesatu adalah berwarna
hijau dan parameter kedua adalah berwarna
biru
kode ini mengintruksikan
parameter pertama ditambah oleh parameter kedua.
coba kita lihat pada parameter pertama:
[eax+00005560] -> apa artinya ini? kita lihat
pada register bernama
"eax" lihatlah pada gambar diatas yang saya lingkari
"EAX =102E30B0" jadi parameter pertama ini mengacu pada address EAX + 5560
artinya
102E30B0+5560 silahkan kalian buktikan di calculator windows dengan
menjumlahkan kedua bilangan tersebut ingat bilangan ini berbentuk hexa
maka hasilnya adalah address Sun yang kalian dapat tadi.
lihatlah register bernama
"ecx"(parameter kedua) jika lihat gambar diatas nilai yang tersimpan pada register
"ecx"
adalah 19 (dalam bentuk bilangan hexa) jika dirubah ke angka decimal
adalah 25. mengapa 25? karena saya telah melakukan perubahan nilai Sun
sebesar '25'
jadi arti intruksi jika diterjermahin lagi artinya "tambahkan pada address eax+5560 dengan ecx"
atau lebih mudahnya tambahkan Address Sun dengan nilai sebesar 25.
ingat kode diatas hanya berlaku pada anda yang melakukan perubah nilai Sun menambah bukan berkurang.
oke kembali ke topik bagaimana cara mencari Address yang tidak statis? jika kita lihat pada intruksi tadi nilai
"5560" adalah offset dan
"eax"
adalah nilai yang akan ditambahkan offset nantinya. kedua nilai
tersebut adalah pointer penunjuk ke alamat address sun yang kalian
temukan tadi. jadi kembalilah ke cheat engine centrang Hex lalu masukan
value
"eax" pada intruksi assembly tadi
yaitu
: 102E30B0
kemudian klik new scan dan setelah itu akan muncul banyak address
kalian pilih yang paling atas dan masukan ke table Cheat Engine seperti
gambar di bawah:
bisa
kita liat pada contoh gambar diatas address yang kita dapat adalah
0018926C inilah address statis yang bisa kita gunakan sebagai pointer
untuk menunjukan alamat dari address sun.
ada untuk pointer rumusnya begini:
Address = value dari address 0018926C + offset yang kalian dapat tadi. hal ini mirip dengan pointer pada parameter
pertama dari intruksi
add [eax+00005560],ecx dimana value dari address 0018926C merupakan nilai dari register
"eax". oke sekarang tinggal gimana coding nya pada vb6, perhatikan code dibawah ini
'declare dulu
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 FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal IpClassname As String, ByVal IpWindowName _
As String) As Long
Private
Declare Function ReadProcessMemory 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 CloseHandle Lib "kernel32.dll" (ByVal hObject As Long) As Long
Dim Hwndx As Long
Dim PID As Long
Dim OpenX As Long
Dim BaseAddr As String
Private Function ReadMemory(Address As Long) As Long 'modul ini berfungsi untuk membaca value dari base address
'fungsi ini hanya dapat membaca value hanya sampai jangkauan Signed Long (32,767)
Dim OpenZ As Long, PID As Long
Hwndx = 0
Hwndx = FindWindow("MainWindow", vbNullString) 'mencari windows
If Hwndx = 0 Then Exit Function
GetWindowThreadProcessId Hwndx, PID
OpenZ = OpenProcess(&H10, False, PID)
If OpenZ = 0 Then Exit Function
ReadProcessMemory OpenZ, Address, ReadMemory, 4, 0&
CloseHandle OpenZ
End Function
Private Function WriteMMry(Addres As Long, Value As Long)'modul ini berfungsi untuk mem-write memory
Hwndx = 0
Hwndx = FindWindow("MainWindow", vbNullString) 'mencari windows
If Hwndx = 0 Then
MsgBox "Game Tidak Ditemukan!", vbCritical, "Error"
Exit Function
End If
GetWindowThreadProcessId Hwndx, PID 'mendapatkan ProcessID target
OpenX = OpenProcess(&H1F0FFF, False, PID) 'membuka akses pada program
If OpenX <> 0 Then WriteProcessMemory OpenX, Addres, Value, 4, 0&
CloseHandle OpenX
End Function
sekarang bagaimana cara memanfaatkan pointer untuk mencari address sun tadi pada modul di vb6
untuk pemanggilan fungsi nya dan sekaligus cara penulisan pointer di vb6:
BaseAddr = ReadMemory(&H18926C) 'membaca value dari base address
BaseAddr = Val(BaseAddr) + Val(&H5560) 'penambahan, ini sebagai pointer ke address
WriteMMry "&h" & Hex(BaseAddr), 9999 'mem-write address sun dengan nilai 9999
jika
kalian melakukan tutorial ini dengan benar kalian telah berhasil
membuat suatu cheat game /trainer yang bisa di pakai di komputer orang
lain. bagi yang ga ngerti comment aja kalau sempet tak jawab kok. bagi
yang gak mudeng2 jangan pernah putus asa!