Minggu, 17 Maret 2013

Tutorial Cara Patch Program


Halo sobat, sekarang saya akan memberitahu cara mempatch program dengan aplikasi IDA.
Simak dengan seksama yah artikel saya :D

Pengantar

Ini bukan kejadian langka ketika kita ingin memuat executable biner dalam debugger, mengubah beberapa byte dan kemudian simpan biner diubah ke hard drive, membuat executable, baru ditambal. Sebenarnya, ini cukup sering jika kita mencoba untuk membuat sebuah patch untuk permainan sederhana atau program lain untuk bersenang-senang. Hal ini juga bisa menjadi keterampilan yang berguna untuk memiliki jika kode program tertentu yang dikaburkan dan kami ingin membersihkannya dan menyimpannya.

Program Patching di IDA

Tujuan utama Ida tidak patch biner, karena ketika Anda pertama kali memuat biner, ia mengambil snapshot dari biner dan membangun representasi internal, yang disimpan dalam database IDB.. Karena itu, dieksekusi biner tidak lagi diperlukan untuk debug dan mengeksekusi program, semuanya disimpan dalam database arsip IDB dan dapat digunakan oleh para insinyur terbalik..

Mari kita pertama kita lihat di pilihan menu Sunting - program Patch, yang dapat ditampilkan pada gambar di bawah ini:


Pada gambar di atas kita dapat melihat tiga pilihan: Perubahan byte, kata Perubahan dan Merakit, yang dapat digunakan untuk mengubah database yang menggunakan Ida untuk mewakili biner. Dengan pilihan ini, kita tidak akan benar-benar mengubah executable biner itu sendiri, tetapi hanya representasi database executable yang menggunakan Ida untuk membalikkan. Kita dapat menggunakan pilihan yang disajikan di atas untuk mengubah database Ida, yang kita kemudian dapat digunakan untuk membuat executable biner baru ditambal.

Jika program patch submenu pada menu Edit tidak hadir, kita perlu mengubah file konfigurasi idagui.cfg dan mengubah opsi konfigurasi DISPLAY_PATCH_SUBMENU ke YES sebagaimana dapat kita lihat pada gambar di bawah ini:


Setelah itu, kita perlu me-restart Ida untuk submenu Program Patch menjadi tersedia.

Sunting The - Program Patch - Perubahan pilihan byte dapat digunakan untuk mengubah satu atau lebih byte dalam database Ida. Mari kita pertama beralih ke tampilan heksadesimal, yang dapat dilihat pada gambar di bawah ini:


Kita saat ini berada di byte pertama 0x91 di alamat 0x004011E5. Jika sekarang kita tekan pada Edit - Program Patch - byte Patch, sebuah jendela pop-up baru akan ditampilkan menyuguhkan 16 byte pertama dari awal kursor kami, yang terletak di alamat 0x004011E5. Pada gambar di atas, kita dapat melihat bahwa 16 bytes pertama memang yang sama persis seperti pada gambar di bawah.


Pada "Address" di sini menyajikan alamat virtual di mana kursor kita saat ini berada. "File offset" menyajikan jumlah byte offset pada mana byte disajikan terletak pada biner asli. Dan "Original value" ​​menyajikan 16 byte asli terletak di alamat virtual saat ini. Byte ini tidak pernah berubah bahkan jika kita memodifikasi 16 byte yang sama terletak di alamat virtual yang sama beberapa kali, mereka selalu mencerminkan byte dari executable biner asli.

Jika kita menutup kotak dialog tanpa mengubah byte dan membuka yang lain dengan Edit - Program patch - Patch kata pilihan menu, kita akan disajikan dengan dialog yang bisa kita lihat di bawah:


Kita dapat melihat bahwa dialog ini hanya memungkinkan kita untuk mengubah dua byte pada satu waktu, sedangkan sebelumnya diperbolehkan mengubah 16 byte. Hal ini jelas membuat dialog sebelumnya lebih berguna, karena kita dapat mengubah byte lagi pada suatu waktu.
Tapi ada juga pilihan ketiga untuk menambal file database Ida yang dapat diakses melalui Edit – Patch program – Assemble menu option. Dialog ditunjukkan di bawah ini:


Dengan dialog Assemble, kita dapat memasukkan instruksi perakitan yang sebenarnya ke dalam kotak masukan dan petunjuk otomatis akan dikonversi menjadi byte heksadesimal yang sesuai, yang disimpan di lokasi alamat virtual. Kita bisa hanya masukan satu instruksi pada satu waktu sekalipun. Jika kita membuka merakit dialog dan masukkan "mov eax, 10" instruksi di sana dua kali, kita akan mendapatkan petunjuk heksadesimal berikut:


Kita bisa melihat bahwa "mov eax, 10" instruksi secara otomatis dikonversi ke byte: B8 0A 00 00 00, yang kita bisa lihat ditampilkan pada awal gambar sebelumnya (dengan latar belakang coklat). Jika kita beralih ke tampilan perakitan, kita dapat melihat instruksi seperti disajikan pada gambar di bawah:


Kita bisa melihat bahwa dua yang pertama instruksi yang "mov eax, 10" seperti yang kita telah diinput dalam kotak dialog perakitan. Sejauh ini, kami telah melihat tiga cara yang mungkin untuk mengubah file database Ida, dan paling banyak, kami telah mampu mengubah 16 byte sekaligus.

Mari kita juga kita lihat pilihan yang dapat diakses melalui File – Product File pada menu pilihan di Ida. Semua pilihan disajikan pada gambar di bawah:


Kita bisa melihat bahwa Ida mampu menciptakan berbagai format file, seperti ASM, EXE, HTML, C, dll Mari kita menjelaskan apa masing-masing pilihan dalam file Produce dapat digunakan untuk. Ida dapat digunakan untuk menghasilkan format file berikut:

MAP: File yang berisi informasi tentang nama simbol dari executable. Ketika membuat file MAP, kita akan dapat memilih nama simbol untuk memasukkan di dalamnya. Sebuah kotak dialog seperti yang disajikan pada gambar di bawah ini akan ditampilkan, meminta kami apa yang kita ingin memasukkan dalam file MAP:


ASM: file yang berisi semua informasi yang dibutuhkan untuk membuat file biner dengan assembler. Assembler harus memahami sintaks bahwa Ida menggunakan untuk hal ini menjadi mungkin. Ida menggunakan perakitan yang dipilih di bawah Options - General - Analisis menu pilihan, yang dapat dilihat pada gambar di bawah ini, dalam kasus kami, "Intel 80x86 Generic" assembler Target sedang digunakan.


Ketika file ASM dibuat, berikut ini dicetak ke jendela output: "Assembler file has been created, total 30178 lines."

INC: file yang berisi informasi tentang struktur dan data enum struktur.

LST: file yang berisi instruksi perakitan dibongkar dari jendela View-A IDA.

EXE: opsi ini pada dasarnya harus membuat file executable baru, tetapi sebagian besar waktu, tidak bekerja karena Ida tidak tahu bagaimana untuk mengembalikan impor, ekspor dan sumber daya kembali ke executable.

DIF: opsi ini menghasilkan file diff yang menghadirkan semua byte berubah dalam database Ida. Jika kita ingin menambal dieksekusi biner asli, kita dapat menggunakan opsi ini untuk mendapatkan semua byte berubah yang kita kemudian dapat berlaku untuk dieksekusi aslinya. Gambar di bawah ini menyajikan sampel dasar perubahan. Dalam contoh ini, 10 perubahan yang telah dibuat, dimana angka pertama dalam garis adalah offset dalam executable biner, byte kedua adalah nilai sebelumnya byte berubah dan byte ketiga adalah byte saat ini digunakan bahwa kita telah diganti yang lama dengan.

HTML: opsi ini pada dasarnya sama dengan pilihan LST, di mana Ida menghasilkan instruksi pembongkaran dalam format HTML.

Jika kita ingin menambal sebuah program di Ida mudah, kita dapat men-download pe_scripts.zip dari sini dan extract. Arsip zip berisi file yang disajikan pada gambar di bawah:


Untuk contoh ini, mari kita membuat proyek konsol baru dalam Visual Studio dan membuat file sumber utama berikut:

#include "stdafx.h"
#include "stdio.h"

int _tmain(int argc, _TCHAR* argv[])
{
printf("Hello Dear Windows!\n");

/* wait */
getchar();
}

Kita bisa melihat bahwa program ini benar-benar sederhana, semua hal ini adalah mencetak "Hello Dear Windows!" String pada layar dan kemudian menunggu pengguna untuk memasukkan kunci. Hal ini dilakukan untuk satu-satunya alasan bahwa kita tidak perlu mengatur breakpoints pada akhir program, karena pelaksanaan program dihentikan sambil menunggu input dari pengguna. Setelah kita mengkompilasi dan menjalankan program, kita akan disajikan dengan jendela baru yang dapat dilihat pada gambar di bawah ini:


Sekarang mari kita memuat program hello.exe baru ke Ida. Ketika loading program ke Ida, kita harus hapus centang pada "Make imports section" karena pilihan ini akan mengkonversi definisi idata. Bagian untuk arahan "extrn" dan memotong itu. Jika ada beberapa data di bagian idata, Maka data ini akan hilang, itulah sebabnya mengapa kita harus menonaktifkan opsi ini ketika memuat dieksekusi. Dialog di mana kita telah menonaktifkan "Make imports section" dapat dilihat pada gambar di bawah ini:


Setelah dieksekusi telah dimuat, kita perlu menjalankan skrip pe_sections.idc untuk menerjemahkan semua bagian dari file executable ke dalam database Ida. Kita bisa menjalankan file dengan memilih dalam dialog File - Script file. Sebelum script dijalankan, kita akan memiliki segmen disajikan pada gambar di bawah ini dimuat ke database Ida.

Kita dapat melihat bahwa beberapa segmen telah dimuat ke dalam database Ida. Sekarang saatnya untuk mengubah byte dalam database Ida. Dalam kasus kami, kami akan mengubah string "Hello Dear Windows!" Menjadi "Hello Dear Linux!" Kami dengan cepat dapat menemukan string dengan membuka jendela Strings.

String "Hello Dear Windows!" Terletak di 0x0041573C, yang di segmen rdata. Untuk menambal string, kita klik dua kali pada entri di jendela Strings, yang akan membawa kita ke pembongkaran. Kami kemudian harus berubah ke tampilan Hex. Setelah itu, kita harus mengklik pada huruf 'W' yang merupakan bagian dari kata 'Windows' dan klik pada Edit - Patch Program - Change byte. Sebuah jendela pop-up baru akan ditampilkan dan disajikan pada gambar di bawah:


Kita bisa melihat bahwa string yang kita berubah sesuai persis dengan "Windows \! N" string. Kita perlu mengubah byte di atas untuk "Linux \! N" byte string. Untuk mendapatkan byte yang tepat, kita dapat menggunakan bahasa pemrograman Python untuk mengkonversi string menjadi representasi heksadesimal nya. Kita bisa melakukannya dengan perintah disajikan di bawah ini:

>>> "Linux!\n".encode("hex")
'4c696e7578210a

The 4c696e7578210a byte adalah representasi heksadesimal dari string "Linux \ n!" Yang kita perlu masukan ke kotak patch Bytes dialog seperti yang ditunjukkan di bawah ini:


Setelah menyimpan byte baru, memori di lokasi itu akan terlihat seperti ini:


Kita bisa melihat bahwa byte telah benar berubah. Untuk menyimpan dieksekusi, kita dapat menjalankan script pe_write.idc dengan menggunakan file - file Script dan menyimpan dieksekusi sebagai hello.exe. Setelah itu, kita dapat menjalankan program dari konsol dan harus mencetak bukannya "Hello Dear Linux!" dari "Hello Dear Windows!"


Kesimpulan


Kami telah melihat kemampuan bahwa Ida memiliki patch untuk biner. Sebagian besar fungsi menyimpan perubahan ke dalam database Ida, tapi kita kemudian dapat mengekspor perubahan ke berbagai format. Format yang paling berguna adalah DIF, yang output hanya perbedaan dibuat untuk dieksekusi. Kita tidak bisa benar-benar mengekspor file sebagai EXE, karena fungsi tersebut kemungkinan besar akan gagal. Inilah sebabnya mengapa kita harus menggunakan pe_scripts, yang baik untuk mengekspor database saat Ida ke dalam executable biner EXE. Kami juga telah membuat contoh untuk menunjukkan bagaimana mengubah string di dieksekusi menggunakan Ida.

5 komentar

bisa bantu paching aplikasi ak kagak mas

mohon bantuannya bg, bisa gak pacthing program ini...
bisa abg download di http://www.gfautocatch .cu .cc/GFAutoCatchv2.24.zip.
applikasi buat main game di FB bg, dari dulu nyari cara gimana bisa full version.
mohon bantuan sangat dari abg....

Gan boleh minta cheat GFAutoCatchv2.24 yg full versi gk, capek nyari yg full tp gk dapet
kalo ada kirim ke andrian.alfan90@gmail.com
makasi sbelumnya

Biasakan sebelum berkomentar, bagikan link ke teman anda untuk membantu kami membuat artikel lainnya yang bermanfaat. Komentar yang kami balas hanya yang berguna dan bermanfaat.
Emoticon Emoticon