Get our toolbar!

Halaman

Tampilkan postingan dengan label Software. Tampilkan semua postingan
Tampilkan postingan dengan label Software. Tampilkan semua postingan

Minggu, 13 Januari 2013

Plugin Development Kit 1.10

Plugin Development Kit 1.10

Unduh PDK 1.10
Kompilasi
Untuk mengkompilasi plugin yang Anda sendiri, Anda membutuhkan beberapa C atau C + + compiler (bersama-sama dengan linker dan run-time library). Plugin antarmuka (berkas plugin.h) kompatibel setidaknya dengan kompiler berikut:
  • Borland C + + 5.5 - baris perintah kompiler, tersedia secara gratis disini  (memerlukan pendaftaran);
  • Borland C + + Builder 5 - berdasarkan sama C + + 5.5;
  • Microsoft Visual C + + 5.0 - agak tua tapi padat dan stabil.
Saya belum mencoba kompiler lain. Tolong beritahu saya jika Anda menemukan ketidakcocokan dan, jika mungkin, saya mengirim dikoreksi versi plugin.h file. Plugin Development Kit termasuk kode sumber untuk dua sampel plugin berfungsi penuh: bookmark, yang memungkinkan untuk mengatur hingga 10 bookmark dalam aplikasi debugged, dan baris perintah, yang mengimplementasikan antarmuka baris perintah. Plugin yang didokumentasikan dengan baik. Anda dapat menggunakannya sebagai template untuk plugin Anda sendiri. Mereka adalah freeware, yaitu hak Anda untuk memodifikasi dan menggunakan kembali kode sumber mereka tidak terbatas dengan cara apapun.
Pengaturan compiler berikut ini diperlukan untuk komunikasi yang benar antara plugin dan OllyDbg. Untuk kompiler yang tercantum di atas, pasukan plugin.h atau cek beberapa aturan:
  • Ekspor semua fungsi callback dengan nama, bukan dengan ordinal;
  • Jika Anda menggunakan C + + compiler, menonaktifkan nama mangling pada semua fungsi callback (menyatakan mereka sebagai extern "C");
  • Angkatan standar C-gaya berlalunya parameter untuk semua API dan fungsi callback (menyatakan mereka sebagai cdecl);
  • Angkatan BYTE keselarasan dari semua struktur dinyatakan di plugin.h;
  • Set default tipe karakter unsigned.
Perlu diingat bahwa semua petunjuk yang Anda dapatkan dari OllyDbg mungkin NULL. Ini adalah kesalahan yang sangat umum untuk menganggap sebaliknya. Gunakan statis run-time perpustakaan yang terhubung langsung ke plugin anda, jika perbedaan antara versi run-time DLL akan membuat OllyDbg tidak stabil. Jangan membagi plugin anda tidak perlu menjadi DLL beberapa. Jika Anda membutuhkan file data yang tidak dimodifikasi oleh pengguna, cobalah untuk menempatkan data ini langsung ke plugin anda sebagai sumber daya.
Untuk menghubungkan plugin anda ke OllyDbg, Anda juga perlu ollydbg.lib impor perpustakaan. Beberapa kompiler (Borland) termasuk utilitas bernama implib yang memindai file executable (dalam kasus kami, ollydbg.exe) dan menghasilkan jenis khusus dari perpustakaan dengan daftar semua fungsi diekspor. Beberapa produk lainnya, seperti MSVC, dapat menghasilkan perpustakaan impor dari file definisi (ollydbg.def). Produk serupa dari vendor lain juga tersedia. Untuk detail, silakan berkonsultasi dokumentasi.
Dan, last but not least, jangan buang sumber daya! Jangan ekspor fungsi callback yang tidak terpakai dan membuat cepat program anda! OllyDbg dalam versi saat ini mendukung hingga 32 plugin. Jika masing-masing dari mereka akan mengambil hanya 50 ms untuk menolak jalan pintas global, maka 50 ms untuk jendela-spesifik pintas ... Anda DO mengerti apa yang saya maksud, kan?
Isi plug110.zip
Plugin kit arsip berisi file berikut:
Direktori root:
bookmark.c - sumber bookmark Plugin
cmdexec.c - sumber Plugin baris perintah
command.c - sumber Plugin baris perintah
cmdline.rtf - RTF sumber bantuan (hlp.) file untuk plugin baris perintah
ollydbg.def - OllyDbg file definisi, beberapa kompiler membutuhkannya untuk menghasilkan ollydbg.lib impor perpustakaan
plugin.h - header dengan definisi antarmuka Plugin
plugins.hlp - ini file help
Direktori BC55: sample.bpr - proyek file untuk BCB 5, menghasilkan sample.dll (sama seperti bookmark.dll)
sample.cpp - file utama untuk sample.bpr
bookmark.mak - membuat file untuk BC 5.5, menghasilkan bookmark.dll
cmdline.bpr - proyek file untuk BCB 5, menghasilkan cmdline.dll
cmdline.cpp - file utama untuk cmdline.bpr
cmdline.mak - membuat file untuk BC 5.5, menghasilkan cmdline.dll
ollydbg.lib - OllyDbg impor perpustakaan dalam format OMF
Direktori VC50: bookmark.dsp - proyek file untuk Visual Studio 97, menghasilkan bookmark.dll
bookmark.dsw - proyek file untuk Visual Studio 97, menghasilkan bookmark.dll
bookmark.mak - membuat file untuk VC 5.0, menghasilkan bookmark.dll
cmdline.dsp - proyek file untuk Visual Studio 97, menghasilkan cmdline.dll
cmdline.dsw - proyek file untuk Visual Studio 97, menghasilkan cmdline.dll
cmdline.mak - membuat file untuk VC 5.0, menghasilkan cmdline.dll
ollydbg.lib - OllyDbg impor perpustakaan dalam format COFF
Membuat plugin sampel dengan BC5.5 Untuk membangun DLL sampel dengan BC 5.5, silakan lakukan hal berikut:
1. Copy file bookmark.c, cmdexec.c, command.c, plugin.h, bc55 \ bookmark.mak, bc55 \ cmdline.mak, bc55 \ ollydbg.lib ke direktori yang sama;
2. Dengan asumsi bahwa Anda BC 5.5 compiler diinstal ke c:, \ bc55 mengeluarkan perintah berikut:
c: \ bc55 \ bin \ make-f bookmark.mak
c: \ bc55 \ bin \ make-f cmdline.mak
3. Misalkan Anda menulis plugin sendiri, myplug, yang terdiri dari file sumber ac, bc dan sumber daya c.rc. Yang Anda butuhkan adalah untuk mengubah nama bookmark.mak untuk myplug.mak dan memodifikasi tiga baris di dekat bagian atas dari file dengan cara berikut: PROYEK = myplug.dll
OBJFILES = a.obj b.obj
RESFILES = c.rc
dan kemudian perintah c: \ bc55 \ bin \ make-f myplug.mak Membuat plugin sampel dengan BCB 5 Proyek BCB harus berisi utama C + + program dengan nama yang sama dengan proyek dan perpanjangan. Cpp. Untuk alasan ini, bookmark Plugin dibuat dengan Builder disebut sample.dll. Tentu saja, hal ini tidak berpengaruh pada fungsi.
Untuk membangun sample.dll, silakan lakukan hal berikut:
1. Copy file bookmark.c, plugin.h, bc55 \ sample.bpr, bc55 \ sample.cpp dan bc55 \ ollydbg.lib ke direktori yang sama;
2. Buka sample.bpr di Builder dan membuat proyek.
Untuk membangun cmdline.dll, silakan lakukan hal berikut:
1. Copy file cmdexec.c, command.c, plugin.h, bc55 \ cmdline.bpr, bc55 \ cmdline.cpp dan bc55 \ ollydbg.lib ke direktori yang sama;
2. Buka cmdline.bpr di Builder dan membuat proyek.
Membuat plugin sampel dengan VC 5,0 dari baris perintah
Untuk membangun DLL sampel dengan VC 5.0, silakan lakukan hal berikut:
1. Copy file bookmark.c, cmdexec.c, command.c, plugin.h, vc50 \ bookmark.mak, vc50 \ cmdline.mak dan vc50 \ ollydbg.lib ke direktori yang sama;
2. Dalam file mak., Mengedit baris
TERMASUK = c: \ vc \ include
LIBPATH = c: \ vc \ lib
sehingga mereka menunjuk ke Anda menyertakan dan direktori perpustakaan; 3. Dengan asumsi bahwa kompiler VC Anda, cl.exe, dan membuat utilitas, nmake.exe, berada di c: \ vc \ bin, jalankan perintah berikut:
c: \ vc \ bin \ nmake-f bookmark.mak
c: \ vc \ bin \ nmake-f cmdline.mak
Membuat plugin sampel dari Visual Studio Untuk membangun bookmark.dll:
1. Copy file bookmark.c, plugin.h, vc50 \ bookmark.dsp, vc50 \ bookmark.dsw dan vc50 \ ollydbg.lib ke direktori yang sama;
2. Proyek Buka bookmark dalam Visual Studio dan membuatnya.
Untuk membangun cmdline.dll:
1. Copy file cmdexec.c, command.c, plugin.h, vc50 \ cmdline.dsp, vc50 \ cmdline.dsw dan vc50 \ ollydbg.lib ke direktori yang sama;
2. Proyek terbuka cmdline dalam Visual Studio dan membuatnya.

 

Crack Software Dengan Ollydbg

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

Debugging DLL

Debugging DLL

OllyDbg 1.10 dapat men-debug DLL mandiri. Windows tidak dapat memulai DLL secara langsung, sehingga OllyDbg menggunakan executable kecil bernama loaddll.exe. Program ini disimpan sebagai sumber daya dikemas. Jika file Anda mencoba untuk membuka sebuah perpustakaan link dinamis, OllyDbg otomatis ekstrak loaddll.exe dan mulai itu, melewati nama perpustakaan sebagai parameter.
Dengan bantuan loaddll, Anda dapat memanggil fungsi-fungsi yang diekspor oleh perpustakaan debugged. Saya akan menjelaskan fitur ini pada contoh fungsi API Windows 'MessageBox dan wsprintf yang berada di user32.dll.

Contoh 1: MessageBox

1. Memuat DLL dalam cara yang sama seperti biasa. File exe. OllyDbg mengeluarkan peringatan:

Request to load DLL

Tentu saja, kita menjawab dengan "Ya". OllyDbg mulai loaddll, perpustakaan beban dan jeda pada breakpoint yang segera preceeds loop jendela utama. Alamat ini diberi label sebagai Firstbp. Kemudian OllyDbg menganalisis DLL dan menampilkan kode. Perhatikan bahwa Windows secara otomatis mengeksekusi kode DLL startup ketika DLL dimuat ke memori.

2. Dari menu utama, pilih "Debug | ekspor Panggil DLL". Dialog muncul adalah non-modal, sehingga Anda masih memiliki akses penuh ke semua fitur OllyDbg. Anda dapat menelusuri kode dan data, breakpoints set, memodifikasi memori dan sebagainya.

3. Pilih fungsi yang ingin Anda panggil. Kami akan mulai dengan MessageBox. Perhatikan bahwa nama ini adalah generik, pada kenyataannya ada versi ASCII MessageBoxA dan UNICODE versi MessageBoxW. Mari kita coba dengan yang kedua. Seperti yang kita pilih itu, persegi panjang ke kanan mengatakan: Jumlah argumen: 4. Analyzer menetapkan bahwa fungsi berakhir dengan RET 10 dan jumlah benar diakui parameter. RET nnn khas untuk fungsi-fungsi yang menggunakan konvensi pemanggilan PASCAL (parameter yang berlalu di stack, parameter pertama didorong terakhir, fungsi menghapus parameter setelah panggilan). Windows yang paling 'API fungsi PASCAL-gaya.

4. Mengatur jumlah argumen tumpukan. Dalam kasus kami ini tidak diperlukan, karena OllyDbg sudah tahu jumlah argumen dalam panggilan ke MessageBoxW. Tapi, tentu saja, Anda dapat mengganti keputusan ini kapan saja dengan mengklik kotak centang yang sesuai ke kiri.

5. Isi daftar argumen. Dialog ini mendukung hingga 10 parameter tumpukan. Parameter adalah setiap ekspresi yang valid yang tidak menggunakan register. Jika poin operan ke memori, Dump jendela ke kanan dari argumen menampilkan isi memori ini Loaddll.exe cadangan 10 buffer memori, 1 K masing-masing, dicap sebagai Arg1 .. Arg10, bahwa Anda dapat dengan bebas menggunakan untuk tujuan apapun.. Selain itu, dialog mendukung dua pseudovariables: menangani dari <Hwnd> orangtua jendela diciptakan oleh loaddll.exe dan menangani dari <Hinst> contoh loaddll 's. Untuk kenyamanan Anda, bila Anda menggunakan ekspor Panggilan untuk pertama kalinya, OllyDbg menambahkan mereka ke daftar sejarah.
MessageBoxW mengharapkan 4 parameter:
  • menangani jendela pemilik. Di sini, kita hanya pilih <Hwnd>;
  • alamat teks UNICODE dalam kotak pesan. Pilih Arg2 dan tekan Enter. Dump menampilkan isi buffer memori dalam format heksadesimal. Penyangga ini awalnya diisi dengan nol. Klik kanan pada Dump dan pilih "Text | UNICODE (32 chars)" presentasi. Pilih karakter pertama dan tekan Ctrl + E (atau, sebaliknya, pilih "Binary | Edit" dari menu). Pada, tipe window "Teks dalam kotak" muncul atau teks lainnya untuk menampilkan;
  • alamat judul UNICODE dari kotak pesan. Pilih Arg3 dan menulis "judul Kotak" dalam format UNICODE memori menunjuk;
  • gaya kotak pesan sebagai kombinasi dari konstanta MB_xxx. OllyDbg tahu mereka, ketik di sini MB_OK | MB_ICONEXCLAMATION.
6. Set mendaftar argumen. Daftar argumen jarang dalam fungsi diekspor. Namun demikian, dukungan OllyDbg mendaftar argumen, juga.

7. Pilih opsi. Sembunyikan panggilan berarti bahwa kotak dialog harus menghilang dari layar ketika fungsi dijalankan. Opsi ini berguna saat eksekusi membutuhkan waktu yang signifikan, atau jika Anda mengatur breakpoints. Anda juga dapat menutup dialog secara manual. Bila fungsi disebut selesai eksekusi, OllyDbg otomatis akan membuka kembali ekspor Panggil. Jeda setelah panggilan berarti bahwa aplikasi debugged akan berhenti setelah eksekusi.
Jika semuanya dilakukan dengan benar, dialog akan terlihat seperti gambar ini:

Before call

8. Memanggil fungsi dengan menekan Call OllyDbg otomatis backup semua Dumps, memverifikasi dan menghitung parameter dan register, menghilangkan dialog dari layar dan kemudian memanggil MessageBoxW.. Seperti yang diharapkan, kotak pesan muncul di layar:

Message box

Bingo! Tekan OK. MessageBoxW kembali dan Call ekspor sukses laporan. Perhatikan bahwa sekembalinya EAX berisi 1. Ini adalah nilai numerik dari IDOK konstan ("OK ditekan"). Ini adalah sederhana, bukan?

Contoh 2: wsprintf

1. Pilih fungsi. Saya berharap, ekspor Panggilan masih terbuka? Seperti MessageBox, wsprintf juga memiliki dua bentuk: ASCII wsprintfA dan UNICODE wsprintfW. Kami akan bermain dengan bentuk ASCII nya. Seperti wsprintf menerima jumlah variabel argumen, menggunakan C konvensi pemanggilan. Perbedaan utama dari PASCAL adalah bahwa hal itu adalah tanggung jawab memanggil kode untuk membersihkan tumpukan dari parameter setelah panggilan. Fungsi C berakhir dengan RET dan Analyzer tidak dapat menentukan jumlah argumen.

2. Mengatur jumlah argumen tumpukan wsprintfA memiliki jumlah variabel argumen,. Berapa banyak - tergantung pada format string. Mari kita coba panggilan berikut:
wsprintf (Arg1, "Arg3 =% i, Arg4 =% 08X", 100,0 x12345678);
Seperti yang Anda lihat, kami memiliki 4 argumen, jadi klik pada kotak centang "4".

3. Isi daftar argumen.
  • Argumen pertama adalah buffer. Pilih <Arg1> dan mengubah format dump untuk ASCII (32 chars);
  • Argumen kedua adalah format string. Pilih <Arg2> dan mengubah dump untuk ASCII (32 karakter). Pilih karakter pertama, tekan Ctrl + E (biner edit) dan jenis format string di bidang ASCII;
  • Argumen ketiga adalah 100 konstanta desimal. Secara default, OllyDbg mengasumsikan format heksadesimal. Titik desimal di akhir desimal pasukan konstan;
  • Argumen keempat adalah konstanta heksadesimal, ketik saja seperti. OllyDbg menerima segala bentuk: 0x12345678, 12345678h atau hanya 12345678;
4. Memanggil fungsi. Jika semuanya dilakukan dengan benar, Anda akan mendapatkan hasil sebagai berikut:

Result of call to wsprintfA

Karakter disorot dalam dump Arg1 adalah yang dimodifikasi oleh panggilan. Dalam register EAX, wsprintf kembali jumlah karakter dalam string output: 0x17 (desimal 23.).

Rincian dan sumber

loaddll. exe adalah aplikasi Win32 kompak ditulis dalam Assembler. Silahkan lihat pada kode sumbernya di sini . Eksekusi dimulai pada MULAI. Loaddll mendapatkan baris perintah, melompat nama executable (harus diambil dalam tanda kutip ganda!), Ekstrak path ke DLL dan lolos ke LoadLibrary. Pada kesalahan, ia menempatkan pointer ke pesan kesalahan pada lokasi tetap dan keluar dengan kode 0x1001. Pada keberhasilan, menciptakan jendela utama sederhana dan jeda pada Firstbp. Breakpoint ini diatur oleh OllyDbg pada startup.
Semua komunikasi dengan OllyDbg dilakukan melalui daerah penghubung 128-byte. Daerah ini harus dimulai di alamat 0x420020 segera setelah keyphrase. Beberapa kata pertama berisi alamat di loaddll.exe digunakan oleh OllyDbg untuk mengatur breakpoints dan parameter, diikuti dengan alamat fungsi untuk memanggil, isi register, jumlah argumen dan argumen itu sendiri. Jumlah argumen dibatasi hingga 10. Jika argumen adalah pointer ke memori, Anda dapat menggunakan 10 buffer data, 1 Kbyte masing-masing, yaitu sebagai Arg1, Arg2, ..., Arg10. Ini dan beberapa nama lainnya yang diekspor dan dengan demikian dikenal OllyDbg.
Ketika loaddll melewati jendela utama loop (WINLOOP), terus-menerus memeriksa apakah alamat fungsi diekspor dalam PROCADR tidak 0. Jika hal ini terjadi, loaddll menghemat isi ESP dan EBP dan mendorong 16 nol ke dalam stack. Hal ini diperlukan untuk menghindari kecelakaan jika pengguna menentukan valid sejumlah argumen. Kemudian mendorong argumen dan register set. Pada Prepatch alamat ada 16 NOP s yang dapat Anda gunakan untuk patch kecil. Jika Anda memerlukan lebih banyak ruang, Anda dapat melompat ke Patcharea 2 Kbytes panjang. Perhatikan bahwa OllyDbg tidak ekstrak loaddll.exe dari sumber daya jika file dengan nama ini sudah ada.
Pada CallDLL ekspor disebut. Perintah ini diikuti oleh 16 NOP s. Kemudian rutin menghemat register dimodifikasi dan offset ESP setelah panggilan. Jika Anda menyediakan nomor yang tidak valid argumen untuk PASCAL-fungsi gaya, OllyDbg akan dapat melaporkan kesalahan ini kepada Anda. Akhirnya, loaddll mengembalikan ESP dan EBP, nol PROCADR dan istirahat di INT3 di alamat Selesai. Ketika titik ini tercapai, OllyDbg tahu eksekusi itu selesai.
Perlakukan LOADDLL.ASM sebagai freeware. Saya tidak akan protes jika Anda menggunakan program ini sebagai bagian keseluruhan atau (tanpa hak cipta) dalam program Anda sendiri. Tapi jangan berani menggunakan Bug Hijau (LOADDLL.RC) dalam proyek-proyek yang tidak berhubungan dengan OllyDbg! Itu saja untuk saat ini, nikmatilah!
Download Ollydbg 1.10 disini
Download Cmdline 1.10 disini
Download Plugin 1.10    disini
Download Ollydbg 2.00 disini 

Lihat sumber asli artikel klik DISINI