Dasar Game Hacking Part II extra !!

Dasar Game Hacking Part II extra !!

Sebelumnya saya ingin menjelaskan bahwa edisi extra ini memang tidak disatukan dengan Part II
Part II merupakan pengenalan dan cara mengatasi DMA dengan mudah, sedangkan edisi extra berisi tentang mengatasi DMA secara lebih baik

Pada Part II kita sudah mengenal apa itu DMA, dan bagaimana cara mudah mengatasi dengan nop

Walau demikian pengunaan Nop sangat terbatas sekali, dan tidak bisa selalu diandalkan dalam mengatasi DMA, lalu bagaimana ?

Code Injection adalah solusinya, dengan code injection kita bisa menuliskan perintah yang kita inginkan agar bisa digunakan untuk merubah variabel dalam game
Kita akan membagi menjadi 4 bagian :

Bag.I Teori Dasar Code Injection

Bag.II Assembler

Bag.III Mengatasi DMA dengan Code Injection

Bag.IV Membuat Trainer + Code Injection dengan TMK

## BAG.1. Teori Dasar Code Injection ##

Apa itu Code Injection ?


Code Injection yang jika diterjemahkan berarti menginjeksi/memasukkan suatu kode. Tentu saja kode disini adalah kode yang kita bisa tulis sendiri.

Tujuan dari code injection adalah menciptakan penghubung dari Game ke kode yang kita tulis kemudian kembali lagi ke Game setelah kode yang kita tulis dijalankan.

Perhatikan pada bagian berikut ini untuk memahami code injection.

Sebelum memakai code injection
0120:00008096 01585A ADD [EAX+5A],EBX
0120:00008099 xxxxxxxxxx CALL D88E8815
0120:0000809B B486 MOV AH,86

Sesudah memakai code injection
0120:00008096 01585A ADD [EAX+5A],EBX
0120:00008099 E9xxxxxxxx JMP 500000
0120:0000809B B486 MOV AH,86

*Code yang kita buat*
0120:00500000 xxxxxxxxxx CALL D88E8815
0120:00500002 E9xxxxxxxx JMP 809B

Bisa kita lihat saat kita memakai code injection, kita melompat menuju ke daerah kode buatan kita dan melompat kembali setelah kita selesai menjalankan kode kita.

## BAG.2. Assembler ##

Umumnya kode yang kita tulis harus berupa bahasa assembler, jadi agar bisa mengerti dan menulis code injection kita juga harus mengerti sedikit tentang perintah pada assembler
Disini akan saya berikan beberapa perintah yang penting untuk dimengerti :

#a.1.MOV
biasa digunakan untuk mengisi suatu variabel dengan nilai baik dari variabel lain, pointer, maupun pengisian value secara langsung.

#a.2.PUSH
digunakan untuk menyimpan value pada variabel kedalam stack

#a.3.POP
digunakan untuk mengambil value yang tersimpan didalam stack

#b.1.ADD
Add biasa dipakai untuk menambahkan nilai pada suatu variabel

#b.2.SUB
Sub digunakan untuk mengurangi nilai pada suatu variabel

#b.3.MUL
Mul digunakan pada sistem perkalian pada suatu variabel

#b.4.INC
Seperti Add, Inc digunakan untuk menaikkan satu nilai pada suatu variabel

#b.5.DEC
Seperti Inc namun digunakan untuk mengurangi nilai variabel sebesar satu

#b.6.CMP
digunakan sebagai perbandingan antara dua buah variabel, biasa disambung dengan perintah jumps yang sesuai

#c.1.JMP
jmp biasa digunakan untuk melompat menuju suatu alamat memori dalam aplikasi

#c.2.CALL
digunakan untuk memanggil rutin dalam address yang sudah ditentukan

#c.3.RET
digunakan untuk keluar dari rutin tertentu

#d.1.NOP
nop yang berarti no operation, dimaksudkan untuk tidak melakukan apa-apa pada baris yang ditentukan

Seperti yang kita lihat diatas adalah beberapa perintah assembler yang berguna untuk digunakan pada code injection, saya menyarankan kalau memang berminat belajar hacking game maka perlu untuk lebih mengenal bahasa assembler.

Banyak sekali tutorial diluar sana tentang assembler

## BAG.3. Mengatasi DMA dengan Code Injection ##

Kita akan belajar mengatasi dma dengan mengunakan code injection, disamping kita akan belajar membuat code injection.

Tools :
1. T-Search
2. Code Caver
3. Mine Sweeper
4. Biasa Logika :smiley_beer:
5. Kertas dan Pulpen/Pensil
6. Makanan atau Minuman kesukaan kamu

Tujuan :
Mencoba mengerti dasar code injection dan mempraktekkannya
Sebelum kita memulai ada satu hal yang harus kita lakukan, yaitu mencari tempat untuk menaruh kode buatan kita.. Kita tidak bisa sembarangan menaruh kode buatan kita karena akan menyebabkan crash pada game tersebut.

Tempat yang kita cari disebut dengan "Code Cave", Code Cave adalah suatu lokasi pada memori dalam game yang bernilai 90 atau 00 yang saling menyambung minimal sebesar 10 blok
Cara mencari "Code Cave", jalankan codecaver.exe, lalu pada process pilih winmine.exe, pada search type pilih "zeros", lalu pada bagian section uncheck .text dan .rsrc
Kemudian tekan tombol Find Cave, maka akan muncul baris sebagai berikut

01005000 - 16 zeros
0100508e - 10 zeros
010050e6 - 10 zeros
01005159 - 35 zeros
01005180 - 56 zeros
010051c1 - 31 zeros
010051f5 - 11 zeros

note: pencet reset/refresh jika winmine.exe tidak ada
note: baris diatas muncul pada komputer yang saya gunakan

Kita akan memakai 01005000 sebagai tempaat untuk menaruh kode kita, Catat di kertas lokasi ini !!

MULAI !!
Tujuan kita tetap sama yaitu menghentikan timer pada minesweeper, kita akan mencari address yang mengatur waktu, pada saya addressnya adalah 010056F0 (belum tentu sama dengan komputer anda)

Tidak berbeda pada Part II, kita akan melakukan langkah yang hampir sama
Pilih AutoHack->Enable Debugger
Kemudian Pilih AutoHack->AutoHack Window untuk memunculkan jendela autohack
Klik kanan pada address yang ada di cheat list, kemudian pilih autohack, address yang kita dapatkan akan muncul di kanan bawah jendela autohack.

Seperti biasa kita mainkan minesweeper, dan Boom breakpoint yang kita pasang pada 010056F0
mengenai sasaran kita.

Pada bagian bawah Jendela Autohack, terdapat beberapa bar yaitu :
[debug event][disassembler][thread][register]
Klik pada bar [disassembler], lalu klik pada salah satu list di jendela AutoHack, saya klik pada (1003020: inc dword ptr[0x10056f0]), maka pada bar [disassembler] akan muncul kode-kode asembler.

Kode Asm (bisa berbeda dikomputer kalian) :
01003020 FF05F0560001 inc dword ptr [0x10056F0]
01003026 E88CFBFFFF call 0x01002BB7

Pada Part II kita cukup menopkan saja pada address ini, namun kita hendak mencoba code injection bukan ?!

Catat baik-baik kedua line tersebut pada secarik kertas atau tulis di notepad, karena kita akan mengubah kode tersebut.

Kembali ke jendela autohack, klik kanan pada line "01003020 FF05F0560001 inc dword ptr [0x10056F0]" lalu pilih assemble, akan muncul kotak assemble masukkan "jmp 1005000" hingga menjadi seperti ini..

Sebelum
01003020 FF05F0560001 inc dword ptr [0x10056F0]
01003026 E88CFBFFFF call 0x01002BB7

Sesudah
01003020 E9DB1F0000 jmp 0x01005000
01003025 90 nop
01003026 E88CFBFFFF call 0x01002BB7

note: jika hasil tidak sesuai dengan sesudah, pada 01003025 klik kanan lalu pilih assemble, pada kotak aassemble masukan "nop"

Langkah pertama sudah selesai, sekarang waktunya kita menulis kode buatan kita sendiri...
Pada jendela menu autohack, pilih edit->disassemble, akan muncul kotak disassemble, masukan 1005000 kemudian tekan disassemble

Kamu akan dibawa menuju ke daerah memori 1005000, klik kanan lalu pilih assemble dan masukkan "inc dword ptr [0x10056F0]" lalu tekan assemble

dibawahnya yaitu pada daerah memori 1005006, klik kanan lalu pilih assemble dan masukkan "jmp 1003026"

menjadi seperti berikut:
Sebelum
01005000 000000
01005004 000000

Sesudah
01005000 FF05F0560001 inc dword ptr [0x10056F0]
01005006 E91BE0FFFF jmp 0x01003026

Kita sudah berhasil membuat kode sendiri, namun kode ini masih tetap menaikkan timer dari minesweeper, maka kita perlu mengubahnya menjadi:

01005000 90 nop
01005001 90 nop
01005002 90 nop
01005003 90 nop
01005004 90 nop
01005005 90 nop
01005006 E91BE0FFFF jmp 0x01003026

dan wa'lah coba minesweeper kamu mainkan, timer tidak akan naik nilainya.
note : Contoh Code Injector ini masih terdapat pada memori, berarti jika kita matikan minesweeper maka kode yang kita tulis akan hilang.

## BAG.IV. Membuat Trainer + Code Injection ##

Sekarang kita akan menerapkan kode kita memakai TMK
Buat project baru, tambahkan sebuah tombol pada form
beri nama tombol tersebut "inject", lalu pada "write memory actions" kita akan memasukkan kode berikut:

poke 1003020 E9 DB 1F 00 00 90
poke 01005000 90 90 90 90 90 90 E9 1B E0 FF FF

dan silakan dicoba trainer dengan code injectionnya :capede:
mudah bukan memahami code injector ?

sebelumnya mohon maaf kalau tidak ada gambar, disebabkan karena terlalu lama dalam upload, dan saya belum terbiasa mengupload gambar. Jika ada yang berniat menyumbang gambar langkah2 ini saya persilakan untuk melakukannya.

Bila ada yang kurang mengerti harap dibaca terlebih dahulu, coba tiap langkah satu-persatu, jika memang ada yang tidak mengerti baru bertanya disini.

Semua yang ada di tutorial ini sudah dicoba dan berjalan dengan baik, bila ada kesalahan harap baca dan praktekan perlahan-lahan.

thx for all


Credit to CyberX � Kritik dan saran nya
-Fendie- GTS nya
Mopez Pembuat tutorial
Whitehat
Mandy thanks atas dokumentasi nya.

Sumber : N3

comment 0 komentar:

Posting Komentar

Delete this element to display blogger navbar

 
© Berbagi Itu Indah | Design by Blog template in collaboration with Concert Tickets, and Menopause symptoms
Powered by Blogger