OllyDbg ( Melacak Jalan )
Run jejak pertama kali diperkenalkan di OllyDbg 1.04. Teknik debugging pada dasarnya sangat sederhana.
Kode dijalankan langkah demi langkah, dan debugger protokol setiap
perintah, bersama dengan register dan bendera, di buffer lingkaran
besar.
Ketika pengecualian terjadi, seseorang dapat backtrace beberapa (atau
ratusan ribu) perintah terakhir dan menganalisis kondisi yang
menyebabkan kesalahan.
OllyDbg 1.06 telah meningkatkan kemungkinan jejak run. Jalankan jejak menunjukkan register dimodifikasi dan membuat pesan penting dan operan fungsi diketahui.
Satu dapat mengatur kondisi untuk menghentikan jejak menjalankan kode,
profil ditelusuri, tulis menjalankan jejak ke disk untuk mengatasi
keterbatasan memori atau untuk membandingkan dua berjalan, debug diri
dimodifikasi program, menemukan ount ketika perintah di lokasi tertentu
dieksekusi untuk terakhir kalinya, dan sebagainya.
Harap diingat, bagaimanapun, bahwa jejak berjalan lambat. Pada prosesor 500-MHz, OllyDbg dapat melacak hingga 2500 (Windows 95) atau (NT) 5000 perintah per detik.
Untuk mempercepat jejak berjalan, seseorang dapat menandai kuasi-linear
potongan kode (tanpa melompat ke luar) yang harus dijalankan sekaligus. Dan satu batasan lebih: OllyDbg tidak menyimpan isi memori diakses.
Untuk membuat Anda terbiasa dengan jejak run, mari kita coba untuk men-debug aplikasi konsol sederhana:
- # Include
- batal f1 (void) {printf ("a");};
- batal f2 (void) {printf ("b");};
- f3 kekosongan (void) {printf ("c");};
- void (* f [3]) () = {f1, f2, f3};
- void main (void) {
- int i, j, k;
- untuk (i = 0; i <100; i + +) {
- for (j = 0; j <1000000; j + +); / / Panjang kode
- k = i/33;
- if (k> 3) melanjutkan;
- f [k] (); / / Di sini error (ketika i == 99)!
- };
- printf ("\ n");
- };
Fungsi f1, f2 dan f3 huruf cetak a, b, dan c. Program utama memanggil setiap fungsi 33 kali, kemudian mencetak newline dan berakhir ... setidaknya dalam teori.
(Anda telah menemukan kesalahan, jangan Anda Well done,? Tetapi di sini
kita belajar bagaimana untuk datang ke hasil yang sama dengan
menggunakan jejak run). Cobalah untuk menjalankan
rtrace.exe, dan dalam beberapa detik itu crash:
Oh, tidak! Sesuatu yang pasti salah! Seperti OllyDbg adalah just-in-time debugger pilihan Anda, Anda menekan "Debug", tapi jendela Disassembler kosong! Alamat 00620061 poin ke mana-mana, dan Anda memiliki sekali tidak tahu perintah yang melompat ke lokasi ini. Mari kita coba dari awal. Tekan Ctrl + F2 (shortcut untuk Restart), kemudian Ctrl + F11 (Trace ke dalam) dan menunggu satu atau dua menit. Konsol masih kosong. Mungkin beberapa bagian dari kode waktu terlalu lama untuk mengeksekusi? Jeda menjalankan jejak dengan menekan F12 (Jeda) atau Esc. Dalam modul executable, klik RTRACE dan pilih "Lihat profil run jejak":
Sebuah perintah atau urutan perintah di alamat 00401191 dieksekusi lebih dari 24000 kali. Ikuti baris ini di Disassembler:
Siklus 3-perintah singkat mengeksekusi F4240 (desimal 1000000) kali. Pada 5000 perintah per detik, OllyDbg akan membutuhkan 10 menit untuk melacak siklus ini. Perhatikan bahwa urutan kuasi-linear, yaitu tidak memiliki melompat ke luar. Dari menu pop-up, pilih "Run jejak | Loncat seleksi ketika menelusuri". Garis merah di kolom keempat menunjukkan bahwa perintah dikeluarkan dari jejak run.
Ketika OllyDbg Encounters dikecualikan urutan, ia menetapkan breakpoint
sementara pada perintah yang segera mengikuti blok dikecualikan (dalam
kasus kami, 00.401.199), dan berjalan sekaligus.
Tentu saja, setiap kembali atau melompat ke luar akan membuat benar
melacak mungkin, sehingga OllyDbg memeriksa potongan kode Anda ingin
mengecualikan dan dalam kasus-kasus sulit meminta Anda untuk konfirmasi.
Lanjutkan menjalankan jejak. Angka sekarang muncul dengan cepat. Dalam waktu 20 detik, OllyDbg laporan kesalahan:
Konfirmasi kesalahan ini, buka jendela Run jejak (tombol dengan periode '...' pada toolbar) dan gulir ke bawah:
Sekarang kita dapat melihat bahwa perintah yang melompat ke 00620061 adalah
PANGGILAN EAX pada 004011AF, dan alamat tidak valid dihitung satu perintah sebelum panggilan. DoubleClick baris ini untuk melihatnya dalam disassembler. Register dan informasi yang berwarna abu-abu untuk menekankan bahwa mereka tidak sebenarnya, tetapi diambil dari jejak:
Alamat konstan 0040A128 poin ke array dari 3 fixups mengandung alamat dari fungsi f1, f2 dan f3. Ketika perintah ini dieksekusi untuk terakhir kalinya, EAX berisi indeks 3, di luar batas-batas array itu.
Dua perintah sebelumnya harus melakukan batas pemeriksaan, tetapi
kondisi tidak valid: jump diambil ketika EAX lebih besar dari 3. Kondisi yang benar akan "lebih besar atau sama". DoubleClick tidak valid line dan kondisi yang benar:
Setelah Anda merakit perintah baru, baris dalam Disassembler mendapat merah, menunjukkan perintah yang dimodifikasi. Pilih lagi dan dalam menu pop-up pilih item "Salin ke file eksekusi" kuat. Hal ini berlaku modifikasi langsung ke file eksekusi:
Yang Anda butuhkan adalah untuk menyimpan executable dimodifikasi (dengan nama yang berbeda, tentu saja) dan memeriksa. Sekarang program itu bekerja dengan benar! Itu mudah, bukan? ..
Anda dapat mendownload tutorial ini dan
rtrace.exe sampel program
di sini
Mau tanya gan apa bisa mba olly merubah bentuk dialog" misalnya; apakah anda ingin keluar ya atau tidak" di suatu software? whimawan56@gmail.com
BalasHapusaku ora mudeng belas :o :o
BalasHapusCrack Software Dengan Ollydbg ~ Black World >>>>> Download Now
BalasHapus>>>>> Download Full
Crack Software Dengan Ollydbg ~ Black World >>>>> Download LINK
>>>>> Download Now
Crack Software Dengan Ollydbg ~ Black World >>>>> Download Full
>>>>> Download LINK