Translate For Your Language

English French German Spain Italian Dutch Russian Portuguese Japanese Korean Arabic Chinese Simplified
by : BTF
DomaiNesia


close

Wednesday, February 20, 2013

Tutorial Membuat Cheat Game Dengan Vb6 [Part 2]

dipostingan saya yang satunya udah kita sudah mengenal memmory address dan apa yang dimanfaatkan oleh cheater untuk membuat suatu kecurangan dalam bermain game.
biasanya kebanyakan orang memanfaatkan seperti memmory address nya uang dalam game atau memmory addressnya darah dalam game atau juga memmory addressnya score dalam game dan masih banyak lagi.. sekarang yang dibahas disini adalah bagaimana langkah-langkah cara untuk memanfaatkan memmory address dan bagaimana code-code dalam bentuk vb. seperti apaya?

oke langsung aja. dalam hal ini kita akan berinteraksi dengan system windowsnya sendiri yang biasa disebut API (Aplication Programming Interface)

langkah pertama API yang kita gunakan:
"Findwindow"

Private Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" ( _
ByVal IpClassname As String, _
ByVal IpWindowName As String) As Long
API
API ini berfungsi untuk mencari suatu program/aplikasi yang sedang Running.
#text berwarna merah = nama API dimana kita bisa memanggil fungsi API tersebut dengan keyword "FindWindow"
#text berwarna biru = merupakan parameter pertama. parameter ini bisa diisi sesuai nama Class Name dari aplikasi/program. contoh microsoft word memiliki class name yaitu "OpusApp".
#text berwarna Hijau = merupakan parameter kedua. parameter ini bisa diisi sesuai nama Window Name nya atau judul window nya seperti gambar dibawah:

Contoh Pemanggilan fungsi API ini untuk mencari microsoft word:
Klik show untuk melihat
Dim Hwndx As Long Hwndx = FindWindow("OpusApp", vbNullString) If Hwndx <> 0 Then Msgbox"Microsoft Word Ditemukan!" 'kalau yang ini untuk mencari notepad dalam windows Hwndx = FindWindow(vbNullString, "Untitled - Notepad") If Hwndx <> 0 Then Msgbox"Notepad Ditemukan"



API Kedua yang dibutuhkan yaitu:
"GetWindowThreadProcessId"

Private Declare Function GetWindowThreadProcessId Lib "user32" ( _
ByVal hwnd As Long, _
lpdwProcessId As Long) As Long
API ini berfungsi untuk mendapatkan Process ID dari sebuah aplikasi/program yang sedang running.
#text berwarna biru = Merupakan Parameter pertama. diisi dengan Hasil Return dari pemanggilan fungsi "Findwindow" tadi
#text berwarna Hijau = merupakan parameter kedua. diisi dengan variable bertipe Long untuk menyimpan sementara Process ID dari Program (Process ID ini akan Return ke Variable yang diisi pada parameter kedua).
contoh penggunaan API "GetWindowThreadProcessId"
Klik show untuk melihat
Dim Hwndx As Long, pid As long Hwndx = FindWindow(vbNullString, "Untitled - Notepad") If Hwndx = 0 Then Exit Sub GetWindowThreadProcessId Hwndx, pid MsgBox pid

code diatas berfungsi untuk mendapatkan Process ID dari Notepad yang nantinya akan disimpan di Variable bernama "pid"

API Ketiga yang dibutuhkan yaitu:
"OpenProcess"

Private Declare Function OpenProcess Lib "kernel32" ( _
ByVal dwDesiredAccess As Long, _
ByVal bInheritHandle As Long, _
ByVal dwProcessId As Long) As Long
API ini berfungsi untuk meng-set suatu Akses ke memmory address suatu aplikasi/program. jika kalian tidak menggunakan api ini akan percuma dan gagal karena akses ke memmory address tidak diperbolehkan. akhirnya harus pake API ini untuk memperbolehkan program cheat kita untuk mengakses Memmory Address.
#Tulisan warna biru = merupakan parameter pertama. bisa diisi dengan nilai "&H1F0FFF". nilai tersebut saya ambil dari konstanta PROCESS_ALL_ACCESS yang artinya membuka semua akses ke memmory address mulai dari 'Read Memory','Write Memory'.
#Tulisan warna hijau = Merupakan Parameter kedua. diisi dengan "False"
#tulisan Warna kuning = Merupakan parameter ketiga. diisi dengan Process ID yang didapatkan melalu fungsi API "GetWindowThreadProcessId"
Contoh Penggunaannya:
Klik show untuk melihat
On Error Resume Next Dim Hwndx As Long, pid As Long, OpenX As Long Hwndx = FindWindow(vbNullString, "Untitled - Notepad") GetWindowThreadProcessId Hwndx, pid OpenX = OpenProcess(&H1F0FFF, False, pid) If OpenX <> 0 Then MsgBox "OpenProcess Sukses!", vbInformation Else MsgBox "OpenProcess Gagal!", vbCritical End If

code diatas berfungsi untuk menjadikan process menjadi Process_ALL_ACCESS jadi kalian bisa Read Memory atau Write Memory

API Keempat yang dibutuhkan yaitu:
"WriteProcessMemmory"

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
API ini berfungsi untuk mem-write Data Memmory Address suatu program/aplikasi
#Tulisan berwarna biru = merupakan parameter pertama. diisi dengan hasil return dari API "OpenProcess".
#Tulisan berwarna Hijau = merupakan prameter kedua. nah disini anda harus mengisikan alamat Address berbentuk angka ingat tambahkan kata kunci "&H" sebelum kalian menuliskan Alamat Addressnya contoh jika kalian ingin mem-write address 04699709 ini, sebelum mengisi parameter ini diubah dulu menjadi "&h4699709". karena alamat tersebut merupakan bilangan Hexa. baca disini.
#Tulisan berwarna kuning = merupakan parameter ketiga. inilah sebuah value yang akan dikirimkan ke memmory address yang akan dituju terserah parameter ini mau berbentuk hexa atau decimal gak masalah.
#Tulisan berwarna merah = merupakan Parameter keempat. parameter ini menentukan jumlah bytes yang untuk pem-write an kedalam Memory Address. jika kalian ingin memwrite dengan type Unsigned Long isi parameter ini menjadi "4" ini hanya akan mencapai jangkauan buffer dari 0 hingga 4294967295 . satuan diparameter ini berbentuk bytes.
#Tulisan berwarna Coklat = diparameter ini isi saja dengan "0&" alias parameter ini adalah nol.
jadi secara keseluruhan contoh nya seperti ini:

code dibawah contoh untuk mem-Write memory pada address "0227E16A" pada Notepad dengan jangkauan Unsigned Long, walaupun di vb6 tidak ada variable Unsigned Long tapi bisa diakalin kok.
Klik show untuk melihat
dalam code ini kita menampung value sementara dengan variable string karena vb6 tidak support dengan Unsigned Long jika bervariable Long(Signed Long) jangkauan hanya sampai 2147483647(setengahnya dari Unsigned Long) jadi gimana dong? hehehe.. kan code dibawah kita tidak memakai wadah bertipe Long tetapi pakai string.
Klik show untuk melihat
Private Function WriteUnsignedLong(Address As Long, Value As String) Dim Hwndx As Long, PID As Long, OpenX As Long Hwndx = FindWindow(vbNullString, "Untitled - Notepad") GetWindowThreadProcessId Hwndx, PID OpenX = OpenProcess(&H1F0FFF, False, PID) If Val(Value) >= 4294967295# Then Exit Function 'jika Value Besar dari Unsigned Long maka exit function If Val(Value) >= 2147483647 Then 'jika value melebihi Batas Signed Long Dim NewVal As Long Value = Value / 2 WriteProcessMemory OpenX, Address, Val(Val(Value) * 2), 4, 0& Else 'jika value lain dari antara jangkauan maximal Signed Long sampai Unsigned Long akan masuk ke blok ini WriteProcessMemory OpenX, Address, CLng(Value), 4, 0& End If End Function
Untuk Pengambilan Function
WriteUnsignedLong &H227E16A, (Value yang kalian inginkan)
code diatas cuma contoh pengubahan value sebuah Memory Address bagaimana kalau address game yang seperti Money, Score, Health/darah?? caranya sama kaya code diatas cuman kita ganti target parameter pertama di API FindWindow menjadi game yang kita inginkan dan Memory Address nya dirubah menjadi alamat memory dari money/score/darah.
bagaimana cara mencari address tersebut dan bagaimana mencari address statis agar alamat memory tidak berubah-ubah? jawabannya nanti ada Tutorial Membuat Cheat Game Dengan Vb6 [Part 3]. Sekian dulu yah capek ngetik neh.. hahaha...
kalau ada yang gak ngerti silahkan tanya di Comment kalau sempet tak jawab.

Newer Post Older Post Home

0 comments:

Post a Comment