Get our toolbar!

Halaman

Kamis, 14 Maret 2013

80x86 32-bit dan Disassembler Assembler

Salam sejah terah un tuk semua agan-agan yang lagi butuh info... Ini ada sedikit info untuk agan-agan semua, semoga bermanfaat untuk agan semuanya...
Maaf gan sekarang baru sempat ngepos lagi ini karena ane sibuk ngurusin kerjaan di dunia datar jadi nggak sempat  ngurusin yang d.dunia aer ini


Hukum Bagian
Pengantar
Penjelasan singkat tentang fungsi
Berkumpul
Checkcondition
Decodeaddress
Disasm
Disassembleback
Disassembleforward
Isfilling
Printfloat * fungsi Ambil sumber


Hukum Bagian Paket ini termasuk kode sumber dari 32-bit Disassembler dan 32-bit Assembler baris tunggal untuk 80x86-kompatibel prosesor. Sumber adalah versi sedikit dilucuti dari kode yang digunakan dalam OllyDbg v1.04 dan terbukti baik oleh pengguna yang banyak. (Jika Anda belum pernah mendengar sebelumnya, OllyDbg adalah 32-bit Assembler tingkat debugger dengan kemampuan analisis yang kuat yang membuat biner kode mesin dimengerti).
Program ini adalah perangkat lunak bebas, Anda dapat menyebarluaskannya dan / atau memodifikasinya di bawah ketentuan GNU General Public License seperti yang diterbitkan oleh Free Software Foundation; baik versi 2 dari Lisensi, atau (dengan pilihan Anda) versi lain. Program ini didistribusikan dengan harapan bahwa itu akan berguna, tetapi TANPA JAMINAN APAPUN; bahkan tanpa jaminan yang termasuk dari DAGANGAN atau KECOCOKAN UNTUK TUJUAN TERTENTU. Lihat GNU General Public License ( http://www.fsf.org/copyleft/gpl.html) untuk lebih jelasnya.
Anda seharusnya menerima salinan dari GNU General Public License (gpl.txt) bersama dengan program ini, jika tidak, tulis ke Free Software Foundation, Inc, 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
Semua nama merek dan nama produk yang digunakan dalam Assembler 80x86 dan disassembler, menyertai file atau dalam file help adalah merek dagang, merek dagang terdaftar, atau nama dagang dari pemiliknya masing-masing.


Pengantar Disassembler memahami semua perintah standar 80x86, FPU, MMX, AMD MMX ekstensi, Athlon / PIII MMX ekstensi dan 3DNow! petunjuk. Ini tidak decode SSI atau SSI2 perintah. Disassembler mengasumsikan 32 bit kode dan segmen data tetapi benar decode diawali 16-bit perintah. Beberapa decoding mode memungkinkan Anda untuk memilih jumlah informasi dikembalikan (yang berbanding terbalik dengan kecepatan eksekusi): Perintah panjang saja, informasi dasar yang berguna untuk analisis kode, atau decoding penuh dengan sampah dan bentuk assembler. Beberapa pilihan pilih format yang diinginkan. Disassembler dan Assembler mendukung MASM dan mode IDEAL Borland.
Assembler mengubah perintah tunggal dari bentuk ASCII ke kode biner. Hal ini memungkinkan untuk menemukan pengkodean beberapa kemungkinan, atau bahkan untuk membuat pola pencarian dengan operan tidak terdefinisi.
Paket ini termasuk file-file berikut:
  • disasm.h - umum definisi
  • disasm.c - Disassembler
  • assembl.c - Assembler
  • asmserv.c - tabel perintah dan fungsi layanan
  • main.c - Program demo
Ukuran Jumlah sumber melebihi 3800 baris teks padat (lebih dari 190 K!). Saya telah menggunakan Borland C dan tidak menjamin bahwa ia akan bekerja dengan compiler lain Silakan mengatur jenis karakter default untuk unsigned! Silakan juga menempatkan pernyataan berikut ke dalam file utama dari program Anda,. Dan tidak # define MAINPROG di lain file: # Define MAINPROG / / Tempatkan semua variabel unik di sini
# Include "disasm.h"
(Saya menggunakan trik ini untuk mendefinisikan variabel global bersama). Di bawah ini adalah sebagian kecil kode dibongkar dengan OllyDbg 1.04 menggunakan pengaturan teks yang berbeda:
004505B3 A1 DC464B00 MOV EAX, DS: [4B46DC]
004505B8 8B0498 MOV EAX, DS: [EAX + EBX * 4]
004505BB 50 PUSH EAX
004505BC 8D85 E0FBFFFF LEA EAX, SS: [EBP-420]
004505C2 50 PUSH EAX
004505C3 E8 141BFCFF PANGGILAN 004120DC
004505C8 83C4 08 ADD ESP, 8
004505CB 43 INC EBX
004505CC 3B1D D8464B00 CMP EBX, DS: [4B46D8]
004505D2 0F8C AFFEFFFF JL 00.450.487
004505D8 80BD E0FDFFFF 00 CMP BYTE PTR SS: [EBP-220], 0
004505DF 75 14 JNZ 004505F5 PENDEK
004505E1 68 B39E4600 PUSH 469EB3
004505E6 8D85 E0FDFFFF LEA EAX, SS: [EBP-220]
004505EC 50 PUSH EAX
004505ED E8 521BFCFF PANGGILAN 00.412.144

004505B3 A1 DC464B00 mov eax, [dword ds: 4B46DC]
004505B8 8B0498 mov eax, [dword ds: eax + ebx * 4]
004505BB 50 push eax
004505BC 8D85 E0FBFFFF lea eax, [dword ss: EBP-420]
004505C2 50 push eax
004505C3 E8 141BFCFF panggilan 004120DC
004505C8 83C4 08 add esp, 8
004505CB 43 inc ebx
004505CC 3B1D D8464B00 cmp ebx, [dword ds: 4B46D8]
004505D2 0F8C AFFEFFFF jl 00.450.487
004505D8 80BD E0FDFFFF 00 cmp [byte ss: EBP-220], 0
004505DF 75 14 jnz 004505F5 singkat
004505E1 68 B39E4600 mendorong 469EB3
004505E6 8D85 E0FDFFFF lea eax, [dword ss: EBP-220]
004505EC 50 push eax
004505ED E8 521BFCFF panggilan 00.412.144


Penjelasan singkat tentang fungsi
  • int Merakit (char * cmd, ip ulong, t_asmmodel * model, upaya int, int constsize, char * errtext) - merakit perintah teks ke kode biner;
  • int Checkcondition (int kode, bendera ulong) - memeriksa apakah bendera bertemu kondisi perintah;
  • int Decodeaddress (addr ulong, dasar ulong, int addrmode, char * symb, int nsymb, char * komentar) - pengguna-fungsi yang disediakan alamat menerjemahkan ke nama simbolik;
  • ulong Disasm (char * src, srcsize ulong, srcip ulong, t_disasm * disasm, int disasmmode) - menentukan panjang dari perintah biner atau disassembles ke teks;
  • ulong Disassembleback (char * blok, dasar ulong, ukuran ulong, ip ulong, int n) - berjalan kode biner mundur;
  • ulong Disassembleforward (* blok char, dasar ulong, ukuran ulong, ip ulong, int n) - berjalan kode biner ke depan;
  • int Isfilling (addr ulong, char * data, ukuran ulong, ulong menyelaraskan) - menentukan apakah perintah setara dengan PDN;
  • int Print3dnow (char * s, char * f) - mengkonversi 3DNow! konstan untuk teks tanpa memicu pengecualian FPU untuk operan tidak valid;
  • int Printfloat10 (char * s, ext ganda yang panjang) - mengkonversi 10-byte konstan mengambang ke teks tanpa menyebabkan pengecualian;
  • int Printfloat4 (char * s, float f) - mengkonversi 4-byte konstan mengambang ke teks tanpa menyebabkan pengecualian;
  • int Printfloat8 (char * s, ganda d) - mengkonversi 8-byte konstan mengambang teks tanpa menyebabkan pengecualian.


Berkumpul Fungsi Assemble (), seperti yang diharapkan, mengubah perintah dari bentuk ASCII ke kode biner 32 bit. Ini saham table perintah dengan Disasm (), jadi jika beberapa perintah dapat dibongkar, dapat dirakit kembali juga, dengan satu pengecualian: Merakit tidak mendukung 16 bit alamat. Dengan beberapa pengecualian penting, 16 alamat bit tidak dapat digunakan dalam program Win32.
Beberapa perintah memiliki lebih dari satu encoding. Merakit () memungkinkan Anda untuk menemukan mereka semua. Hal ini penting, misalnya, jika Anda ingin menemukan kode sesingkat mungkin atau untuk menemukan semua kejadian yang mungkin dari perintah ini dalam kode. Ada dua parameter, constsize dan berusaha. Parameter pertama memilih ukuran langsung konstan dan alamat konstan (8 atau 32 bit), kedua adalah terjadinya perintah dalam tabel perintah. Untuk menemukan semua varian, panggilan Merakit () dengan upaya = 0,1,2 ... dan untuk setiap upaya dengan constsize = 0,1,2,3 asalkan keberhasilan fungsi laporan untuk setidaknya satu constsize. Kode yang dihasilkan dapat mengulang. Perlu diketahui bahwa jika perintah menggunakan alamat memori, hanya satu bentuk akan dihasilkan dalam setiap kasus: [EAX * 2] tetapi tidak [EAX + EAX], [EBX + EAX] tetapi tidak [EAX + EBX], [EAX] tidak akan menggunakan SIB byte, tidak ada DS: awalan dan sebagainya.
Merakit mengkompilasi juga perintah tidak tepat yang mencakup operan umum berikut:
  • R8 - register 8-bit (untuk tetap AL, BL, CL, DL, AH, BH, CH, DH)
  • R16 - register 16 bit (AX, BX, CX, DX, SP, BP, SI, DI)
  • R32 - register 32 bit (EAX, EBX, ECX, EDX, ESP, EBP, ESI, EDI)
  • FPU - register FPU (ST0. ST7.)
  • MMX - register MMX (MM0. MM7.)
  • CRX - register kontrol (CR0. CR7.)
  • DRX - register debug (DR0. DR7.)
  • CONST - setiap konstanta
Hal ini memungkinkan untuk menghasilkan pola pencarian tidak tepat, di mana topeng berisi nol bit pada posisi yang diduduki oleh operan tepat dalam kode biner. Misalnya, pola yang dihasilkan untuk perintah MOV R32, CONST akan cocok baik MOV EAX, 1 dan MOV ECX, 12345678h. Fungsi kembali jumlah byte dalam kode dirakit atau non-positif (nol atau negatif) nomor dalam kasus kesalahan atau ketika varian dipilih oleh kombinasi upaya dan constsize tidak ada. Jumlah ini adalah posisi negatif dari kesalahan dalam perintah masukan. Jika Anda menghasilkan kode dieksekusi, perintah tidak tepat biasanya tidak diperbolehkan. Untuk memastikan bahwa perintah yang tepat, periksa bahwa semua byte yang signifikan dalam topeng mengandung 0xFF.
int Merakit (char * cmd, ip ulong, t_asmmodel * model, upaya int, int constsize, char * errtext);
Parameter:
  • cmd - pointer ke nol perintah ASCII dihentikan;
  • pi - alamat byte pertama dari perintah biner yang dihasilkan dalam memori;
  • Model - pointer ke struktur yang menerima kode mesin dan masker, lihat penjelasan rinci di bawah ini;
  • upaya - indeks encoding alternatif perintah. Panggil Merakit dengan upaya = 0,1,2 ... untuk mendapatkan semua versi kemungkinan perintah. Hentikan urutan ini ketika Merakit kesalahan laporan;
  • constsize - ukuran diminta data alamat konstan dan segera. Panggil Merakit dengan constsize = 0,1,2,3 untuk mendapatkan semua encoding yang mungkin dari versi yang dipilih oleh upaya;
  • errtext - pointer ke buffer teks panjang pada byte TextLen setidaknya yang menerima deskripsi kesalahan terdeteksi.
t_asmmodel: struktur yang menerima kode dirakit. typedef struct {t_asmmodel / / Model untuk mencari perintah assembler
kode char [MAXCMDSIZE], kode / / Binary
Char mask [MAXCMDSIZE]; / / Masker untuk kode biner (0: bit diabaikan)
int panjang; / / Panjang kode, byte (0: kosong)
int jmpsize; / / Offset ukuran jika lompat relatif
int jmpoffset; / / Offset relatif terhadap IP
jmppos int; / / Posisi melompat offset di command
} T_asmmodel;
Anggota:
  • kode - kode biner dari perintah. Hanya yang memiliki bit 1 dalam bit mask sesuai yang signifikan;
  • topeng - topeng perbandingan. Cari rutin mengabaikan bit semua kode di mana topeng diatur ke 0;
  • panjang - panjang kode dan masker, byte. Jika panjang adalah 0, model pencarian kosong atau tidak valid;
  • jmpsize - jika nol, perintah adalah melompat relatif dan jmpsize adalah ukuran offset dalam byte;
  • jmpoffset - jika jmpsize adalah nol, melompat diimbangi relatif terhadap alamat dari perintah berikut, jika tidak terdefinisi;
  • jmppos - jika jmpsize adalah nol, posisi byte pertama dari offset dalam kode, jika tidak terdefinisi.


Checkcondition Memeriksa apakah bendera 80x86 memenuhi kode kondisi dalam perintah. Pengembalian 1 jika kondisi terpenuhi dan 0 jika tidak.
int Checkcondition (int kode, bendera ulong);
Parameter:
  • Kode - byte perintah yang berisi kode kondisi;
  • bendera - isi register EFL.


Decodeaddress Kustom yang disediakan pengguna fungsi yang mengubah konstan (alamat) ke nama simbolik. Awalnya, kode sumber termasuk fungsi boneka yang mengembalikan 0.
Decodeaddress () alamat memori decode atau konstan untuk string ASCII dan opsional komentar alamat ini. Pengembalian panjang string didekode (tidak termasuk terminal 0), atau 0 pada kesalahan atau jika nama simbolis tidak tersedia.
int Decodeaddress (addr ulong, char * symb, int nsymb, char * komentar);
Parameter:
  • addr - alamat untuk memecahkan kode dalam ruang alamat program debugged;
  • symb - pointer ke buffer panjang setidaknya nsymb byte mana Decodeaddress () menempatkan string yang diterjemahkan;
  • nsymb - panjang, dalam karakter, buffer symb;
  • komentar - pointer ke string dengan panjang setidaknya TextLen byte atau NULL, menerima komentar terkait dengan addr.


Disasm Fungsi (dan kompleks) yang paling penting dalam paket ini. Tergantung pada disasmmode tertentu, Disasm () melakukan salah satu dari empat fungsi:
  • DISASM_SIZE - cepat menentukan ukuran perintah. Gunakan mode ini jika Anda ingin berjalan melalui kode. Dalam mode ini, memperlakukan semua anggota disasm sebagai tidak terdefinisi;
  • DISASM_DATA - menentukan ukuran dan operan analisis. Gunakan mode ini untuk analisis cepat, misalnya, jika Anda perlu untuk menghitung tujuan melompat. Anggota disasm ditandai dengan tanda bintang (*) tidak terdefinisi;
  • DISASM_FILE - menentukan ukuran, analisis operan dan disassembles perintah, namun tidak berusaha untuk mengubah alamat ke simbol. Gunakan mode ini jika tidak ada korespondensi antara alamat dan simbol, misalnya, jika Anda membuang isi dari file biner;
  • DISASM_CODE - pembongkaran penuh.
Fungsi mengembalikan ukuran dari perintah dibongkar. Ada konstanta global beberapa yang mempengaruhi perilaku fungsi ini. Mereka dijelaskan kemudian dalam bagian ini. Semua konstanta simbolis dijelaskan dalam disasm.h file. ulong Disasm (char * src, srcsize ulong, srcip ulong, t_disasm * disasm, int disasmmode);
Parameter:
  • src - pointer ke kode biner yang harus dibongkar;
  • srcsize - ukuran src. Panjang perintah 80x86 terbatas MAXCMDSIZE byte;
  • srcip - alamat perintah;
  • disasm - pointer ke struktur yang menerima hasil pembongkaran, lihat penjelasan rinci di bawah ini;
  • disasmmode - pembongkaran modus, salah DISASM_xxx (lihat di atas).
t_disasm: struct typedef t_disasm {/ / Hasil pembongkaran
ulong pi, pointer / / Instruksi
Char sampah [TextLen]; / / (*) sampah Heksadesimal dari perintah
Char hasil [TextLen]; / / (*) Perintah Dibongkar
Char komentar [TextLen]; / / (*) komentar Singkat
int cmdtype; / / Salah satu C_xxx
int memtype; / / Jenis variabel dibahas dalam memori
int nprefix; / / Jumlah prefiks
int diindeks; / / Alamat berisi register (s)
ulong jmpconst, alamat melompat / / Konstan
ulong jmptable; / / Kemungkinan alamat tabel saklar
ulong adrconst, bagian / / Konstan alamat
ulong immconst; / / Segera konstan
zeroconst int; / / Entah berisi nol konstan
fixupoffset int; / / Kemungkinan offset 32 bit fixups
int fixupsize, ukuran total / / Kemungkinan fixups atau 0
int kesalahan, / / Error saat pembongkaran perintah
int peringatan; / / Kombinasi DAW_xxx
} T_disasm;
Anggota:
  • pi - alamat perintah dibongkar;
  • dump - string ASCII, dump heksadesimal diformat dari perintah;
  • Hasilnya - ASCII string, perintah dibongkar sendiri;
  • komentar - string ASCII, komentar singkat yang berlaku untuk seluruh perintah;
  • cmdtype - jenis perintah dibongkar, salah satu dari C_xxx mungkin ORed dengan C_RARE untuk menunjukkan bahwa perintah jarang dalam aplikasi Win32 biasa. Perintah dari C_MMX jenis tambahan mengandung ukuran data MMX dalam 3 bit paling signifikan (0 berarti 8-byte operan). Non-MMX perintah mungkin memiliki bit set C_EXPL yang berarti bahwa beberapa operan memori memiliki ukuran yang tidak sesuai dengan aturan 80x86 standar;
  • memtype - jenis memori operan, salah satu dari DEC_xxx, atau DEC_UNKNOWN jika operan adalah non-standar atau perintah tidak mengakses memori;
  • nprefix - jumlah prefiks bahwa perintah ini mengandung;
  • diindeks - jika alamat memori berisi indeks mendaftar, diatur untuk skala, dinyatakan 0;
  • jmpconst - alamat tujuan melompat jika alamat ini adalah konstan, dan 0 sebaliknya;
  • jmptable - jika melompat tidak langsung dapat diartikan sebagai saklar, alamat dasar tabel switch dan 0 sebaliknya;
  • adrconst - bagian konstan alamat memori;
  • immconst - langsung konstan atau 0 jika perintah tidak mengandung konstanta langsung. Perintah-satunya yang mengandung dua konstanta yang langsung ENTER. Disasm () mengabaikan konstan kedua yang tetap 0 dalam banyak kasus;
  • zeroconst - nol jika perintah mengandung konstan nol langsung;
  • fixupoffset - permulaan yang memungkinkan dari 32 fixup bit dalam perintah, atau 0 jika perintah tidak dapat berisi fixups;
  • fixupsize - ukuran total kemungkinan fixups (0, 4 atau 8). Jika perintah mengandung baik alamat konstan dan segera langsung, mereka selalu berdekatan pada prosesor 80x86;
  • error - Disasm () tidak mampu membongkar perintah (misalnya, perintah tidak ada atau melintasi ujung blok memori), salah satu dari DAE_xxx;
  • peringatan - perintah yang mencurigakan atau tidak bermakna (misalnya, jauh melompat atau MOV EAX, EAX didahului dengan awalan segmen), kombinasi bit DAW_xxx;
Global bendera yang mempengaruhi teks perintah dibongkar:
  • yang ideal - kekuatan IDEAL decoding modus
  • huruf kecil - gaya huruf kecil
  • tabarguments - menyisipkan tab antara mnemonik dan argumen
  • extraspace - ruang ekstra insert antara argumen
  • putdefseg - menunjukkan segmen standar
  • showmemsize - selalu menampilkan ukuran memori
  • shownear - menunjukkan pengubah DEKAT
  • shortstringcmds - menggunakan bentuk pendek dari perintah string yang
  • sizesens - mode decoding ukuran-sensitif mnemonik (16/32 bit) seperti:
0 - PUSHA / PUSHAD
1 - PUSHAW / PUSHAD
2 - PUSHAW / PUSHA
  • simbolik - menampilkan alamat simbolis, membutuhkan Decodeaddress ()
Global bendera yang memperingatkan perintah yang berpotensi tidak valid:
  • farcalls - menerima panggilan jauh, kembali & alamat
  • decodevxd - decode panggilan VxD (Win95/98)
  • istimewa - menerima perintah istimewa
  • iocommand - menerima I / O perintah
  • badshift - menerima pergeseran keluar dari kisaran 1 .. 31
  • extraprefix - menerima prefiks berlebihan
  • lockedbus - menerima LOCK prefiks
  • stackalign - menerima operasi tumpukan teralign
  • iswindowsnt - ketika memeriksa perintah berbahaya, asumsikan NT berbasis OS
Jika Disasm () bertemu perintah berpotensi valid dan bendera yang sesuai adalah 0, itu set bit dalam disasm-> peringatan dan pesan tempat peringatan di disasm-> komentar.


Disassembleback Menghitung alamat instruksi assembler yang adalah n petunjuk (maksimal 127) kembali dari instruksi di pi ditentukan. Pengembalian alamat instruksi ditemukan. Dalam kasus kesalahan, mungkin kurang dari n petunjuk terpisah.
Perintah 80x86 memiliki panjang variabel. Disassembleback menggunakan metode heuristical perintah terpisah dan dalam beberapa (mencengangkan langka!) Kasus dapat kembali jawaban valid.
Disassembleback ulong (char * blok, dasar ulong, ukuran ulong, ip ulong, int n);
Parameter:
  • blok - pointer ke copy kode;
  • dasar - alamat byte pertama dalam blok kode;
  • Ukuran - ukuran blok kode;
  • pi - alamat instruksi saat ini;
  • n - jumlah instruksi untuk berjalan kembali.


Disassembleforward Menghitung alamat instruksi assembler yang n petunjuk maju dari instruksi di alamat yang ditentukan. Pengembalian alamat instruksi ditemukan. Dalam kasus kesalahan, mungkin kurang dari n petunjuk terpisah.
ulong Disassembleforward (* blok char, dasar ulong, ukuran ulong, ip ulong, n int, int usedec);
Parameter:
  • blok - pointer ke copy kode;
  • dasar - alamat byte pertama dalam blok kode;
  • Ukuran - ukuran blok kode;
  • pi - alamat instruksi saat ini;
  • n - jumlah instruksi untuk berjalan ke depan.


Isfilling Fungsi menentukan apakah instruksi runcing adalah perintah no-tindakan (setara dengan PDN) yang digunakan oleh kompiler yang berbeda untuk mengisi kesenjangan antara prosedur atau blok data ke perbatasan selaras tertentu. Pengembalian panjang mengisi perintah dalam byte atau 0 jika perintah tidak mengisi diakui.
int Isfilling (addr ulong, data char *, ukuran ulong, ulong menyelaraskan);
Parameter:
  • addr - alamat byte pertama dari perintah dianalisis;
  • Data - pointer ke perintah biner;
  • Ukuran - ukuran data;
  • menyelaraskan - keselarasan diasumsikan dari perintah non-mengisi berikutnya (kekuatan 2), atau 0 jika keselarasan tidak diperlukan.


Printfloat * fungsi Fungsi-fungsi decode 4 -, 8 -, 10-byte floating point number atau 8-byte 3DNow! operan ke dalam bentuk teks ke string s. Mereka benar decode semua kasus Nans atau INFs tanpa memicu pengecualian floating point. Jika operan bukan nomor titik yang valid floating, fungsi cetak pembuangan heksadesimal nomor. Kembali panjang string didekode dalam bytes, tidak termasuk terminal 0.
int Print3dnow (char * s, char * f);
int Printfloat10 (char * s, ext ganda yang panjang);
int Printfloat4 (char * s, float f);
int Printfloat8 (char * s, ganda d);

Copyleft (C) 2001 Oleh Yuschuk

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

Rabu, 02 Januari 2013

Cara dualboot BackTrack 5 dan Windows 7/8

BackTrack adalah distribusi Linux yang didasarkan pada Ubuntu , yang dirancang untuk hacker dan / atau profesional keamanan, dan sarat dengan Free Software terbaik dan aplikasi penetrasi pengujian Sumber Terbuka yang tersedia.
The latest edition is BackTrack 5 R2 (the “R” is for Revolution), and the most recent article about it published on this website, before the publication of this one, is Install BackTrack 5 Revolution 2 on external hard drive . Edisi terbaru adalah BackTrack 5 R2 ("R" adalah untuk Revolusi), dan artikel terbaru tentang hal itu dipublikasikan di website ini, sebelum penerbitan satu ini, adalah Install BackTrack 5 Revolution 2 pada hard drive eksternal .
BackTrack 5 R2 Startx
In this article, the steps required to dual-boot the KDE edition with Windows 7 (there is also a GNOME edition), are presented. Dalam artikel ini, langkah-langkah yang diperlukan untuk dual-boot edisi KDE dengan Windows 7 (ada juga edisi GNOME), disajikan. To begin, download an installation image from here . Untuk memulai, men-download gambar instalasi dari sini . Burn it to a DVD, then place the DVD in your computer's optical drive and reboot. Burn ke DVD, kemudian menempatkan DVD dalam drive optik komputer Anda dan reboot. The system will boot into a console and you will see a prompt just like the one in the image below. Sistem akan boot ke konsol dan Anda akan melihat prompt seperti yang ada di gambar di bawah ini. To boot into a Live KDE desktop, type startx and press the Enter key on your keyboard. Untuk boot ke desktop KDE Live, jenis startx dan tekan tombol Enter pada keyboard Anda.
Once in the Live desktop, click on the Install BackTrack icon on the desktop. Setelah di desktop Live, klik pada ikon Install BackTrack pada desktop. And when the installer launches, click through the first few steps until you get to the one shown below, It is the fourth of eight steps of the installation process. Dan ketika installer meluncurkan, klik melalui beberapa langkah pertama sampai Anda mendapatkan yang ditunjukkan di bawah, ini adalah yang keempat dari delapan langkah dari proses instalasi. Notice that you have four disk partitioning options. Perhatikan bahwa Anda memiliki pilihan disk empat partisi. How you want to set up the dual-boot system will determine which one you select. Bagaimana Anda ingin membuat sistem dual-boot akan menentukan mana yang Anda pilih.
Since the objective is to set up a dual-boot system, you obviously do not want to choose the second option (Erase and use entire disk). Karena tujuannya adalah untuk membuat sebuah sistem dual-boot, Anda jelas tidak ingin memilih pilihan kedua (Menghapus dan menggunakan seluruh disk). Select the first option if all the space on the disk is taken up by Windows and you want the installer to shrink Windows and install BackTrack. Pilih opsi pertama jika semua ruang pada disk diambil oleh Windows dan Anda ingin installer menyusut Windows dan menginstal BackTrack. Select option 3 (Use the largest continuous free space) only if there is unpartitioned space on the target disk and you want the installer to auto-partition the space. Pilih opsi 3 (Gunakan ruang terbesar bebas terus-menerus) hanya jika ada unpartitioned ruang pada disk target dan Anda ingin installer untuk auto-partisi ruang. Use the fourth option (Specify partitions manually (advanced)) if you want to create a custom set of partitions. Gunakan opsi keempat (Tentukan partisi secara manual (lanjutan)) jika Anda ingin membuat seperangkat kebiasaan partisi. This assumes that you have some knowledge of disk partitioning in Linux. Ini mengasumsikan bahwa Anda memiliki pengetahuan tentang partisi disk di Linux. If you do not, and want to go this route, you might want to read guide to disks and disk partitions in Linux and tips for dual-booting Windows and Linux . Jika Anda tidak, dan ingin pergi rute ini, Anda mungkin ingin membaca panduan untuk disk dan partisi disk di Linux dan tips untuk dual-boot Windows dan Linux .
Just to show how this can be done manually, the last option is selected for this tutorial. Hanya untuk menunjukkan bagaimana hal ini dapat dilakukan secara manual, opsi terakhir yang dipilih untuk tutorial ini.
BackTrack 5 R2 Disk Partitioning Options
And it just so happens that the target disk has some unpartitioned space. Dan kebetulan bahwa target disk memiliki beberapa ruang unpartitioned. So the next step is to select it and click the Add button. Jadi langkah berikutnya adalah pilih dan klik tombol Add. By default, the BackTrack 5 installer creates just two partitions – one for the root partition, and the other for Swap. Secara default, BackTrack 5 installer menciptakan hanya dua partisi - satu untuk partisi root, dan yang lainnya untuk Swap. For a distribution of this sort, that is likely all you need, unless you want to add an NTFS partition at the end for whatever reason you can think of. Untuk distribusi semacam ini, yang mungkin semua yang Anda butuhkan, kecuali jika Anda ingin menambahkan partisi NTFS di akhir untuk alasan apa pun yang dapat Anda pikirkan. For this tutorial, just two partitions will be created. Untuk tutorial ini, hanya dua partisi akan dibuat.
BackTrack 5 R2 Advanced Partitioning Tool
This is the partition setup window. Ini adalah jendela pengaturan partisi. Since there are two existing partitions (the Windows 7 partitions), the installer will attempt to create the BackTrack partitions as logical partitions, which is just fine. Karena ada dua partisi yang ada (Windows 7 partisi), installer akan mencoba untuk menciptakan partisi BackTrack sebagai partisi logis, yang baik-baik saja. BackTrack, like any Linux distribution, can boot from a logical or primary partition. BackTrack, seperti distribusi Linux, dapat boot dari partisi logis atau primer. If you are confused about “primary” and “logical,” take a few minutes to read guide to disks and disk partitions in Linux . Jika Anda bingung tentang "primer" dan "logika," mengambil beberapa menit untuk membaca panduan untuk disk dan partisi disk di Linux .
What you need to do at this step, is specify the amount of disk space you want to use for BackTrack 5, then select the file system from the “Use as” dropdown menu (the default is ext4). Apa yang perlu Anda lakukan pada langkah ini, adalah menentukan jumlah ruang disk yang ingin Anda gunakan untuk BackTrack 5, kemudian pilih sistem file dari "Gunakan sebagai" menu dropdown (default adalah ext4). Finally, select the mount point from the “Mount point” dropdown menu. Akhirnya, pilih mount point dari "titik Gunung" menu dropdown.
BackTrack 5 R2 Create Partition
This is what the same step looks like after the right values have been specified. Inilah langkah yang sama seperti setelah nilai-nilai yang tepat telah ditetapkan. Click OK to return to the main window. Klik OK untuk kembali ke jendela utama.
BackTrack 5 R2 Create Root Partition


For the next partition, which should be for Swap, select “swap area” from the “Use as” menu and specify the amount of disk space you want. OK . Untuk partisi berikutnya, yang harus untuk Swap, pilih "swap area" dari "Gunakan sebagai" menu dan menentukan jumlah ruang disk yang Anda inginkan. OK.
BackTrack 5 R2 Create Swap Partition
Back to the main window, click Forward to move to the next step. Kembali ke jendela utama, klik Forward untuk pindah ke langkah berikutnya.
BackTrack 5 R2 Create Partition Cmpleted
On the next step, shown here, the installer gives a summary of what it will do, based on the selections you made. Pada langkah berikutnya, ditampilkan di sini, installer memberikan ringkasan dari apa yang akan dilakukan, berdasarkan pada pilihan Anda. And this is also where you specify where you want the installer to install GRUB, the boot loader. Dan ini juga di mana Anda menentukan di mana Anda ingin installer untuk menginstal GRUB, boot loader. By default, GRUB, the GR and U nified B ootloader, is installed in the Master Boot Record (MBR). Secara default, GRUB, GR dan ootloader U B nified, dipasang di Master Boot Record (MBR). In setting up a dual-boot system with Windows, installing it there will overwrite the Windows boot loader, which could cause major headaches for you when you reinstall or upgrade Windows, or install certain anti-virus programs. Dalam menyiapkan sistem dual-boot dengan Windows, menginstal sana akan menimpa loader boot Windows, yang dapat menyebabkan sakit kepala utama bagi Anda ketika Anda menginstal ulang atau upgrade Windows, atau menginstal beberapa program anti-virus. The recommended option is to install GRUB in the root partition of BackTrack, which in this case, is /dev/sda5 . Pilihan yang disarankan adalah menginstal GRUB di partisi root BackTrack, yang dalam hal ini, adalah / dev/sda5. So, to change where GRUB should be installed, click Advanced . Jadi, untuk mengubah mana GRUB harus diinstal, klik Advanced.
BackTrack 5 R2 Install Summary
That should land you here. Itu harus mendarat di sini. You can see that /dev/sda is the “Device for boot loader installation.” That is just another way of saying that GRUB will be installed in the MBR. Anda dapat melihat bahwa / dev / sda adalah Itu hanya cara lain untuk mengatakan GRUB yang akan dipasang di MBR "Perangkat untuk instalasi boot loader.".
BackTrack 5 R2 Install GRUB MBR
For this tutorial, you want to change it to /dev/sda5 . OK . Untuk tutorial ini, Anda ingin mengubahnya ke / dev/sda5. OK.
BackTrack 5 R2 Install GRUB Root Partition
Back to the installer summary window, click Install to continue with the rest of the installation. Kembali ke jendela installer ringkasan, klik Install untuk melanjutkan dengan sisa instalasi.
BackTrack 5 R2 Install
After installation has completed successfully, reboot the computer. Setelah instalasi selesai dengan sukses, reboot komputer. It will boot into Windows, which is expected. Ini akan boot ke Windows, yang diharapkan. The next task is to add an entry for BackTrack 5 to Windows 7′s boot menu. Tugas berikutnya adalah menambahkan sebuah entri untuk BackTrack 5 sampai menu boot Windows 7. To do that, you need another application. Untuk melakukan itu, Anda perlu aplikasi lain. The easiest to use that I have found is a free-for-personal-use software from NeoSmart Technologies called EasyBCD. Yang paling mudah untuk menggunakan bahwa saya telah menemukan adalah perangkat lunak bebas-untuk-pribadi-dari penggunaan Teknologi NeoSmart disebut EasyBCD. You may download it from here . Anda dapat mendownloadnya dari sini . After download, install it in the same way that you would install any other Windows application. Setelah download, install dengan cara yang sama bahwa Anda akan menginstal aplikasi Windows lainnya.
After installation, launch it. Setelah instalasi, memulai. EasyBCD's main window is shown below. Jendela utama EasyBCD ini yang ditampilkan di bawah ini. To add an entry for BackTrack 5, click Add New Entry . Untuk menambahkan entri untuk BackTrack 5, klik Add New Entry.
Windows Boot Menu EasyBCD
Now, you are here. Sekarang, Anda berada di sini. Click on the Linux/BSD tab. Klik pada tab Linux / BSD. Select GRUB 2 from the “Type” dropdown menu, then modify the “Name” field to reflect the name of the distribution. Pilih GRUB 2 dari menu "Type" dropdown, kemudian memodifikasi "Nama" lapangan untuk mencerminkan nama distribusi. Click on the Add Entry button, then on the Edit Boot Menu tab to see the result. Klik pada tombol Add Masuk, kemudian pada tab Boot Menu Edit untuk melihat hasilnya. GRUB 2 is the version of GRUB used by BackTrack 5. GRUB 2 adalah versi GRUB digunakan oleh BackTrack 5.
BackTrack 5 R2 Add Windows Boot Menu EasyBCD
This is what the result should be. Inilah hasilnya seharusnya. Exit EasyBCD, then restart the computer. Exit EasyBCD, kemudian restart komputer.
BackTrack 5 R2 Windows Boot Menu EasyBCD
You should now see a boot menu that looks just like this one. Sekarang Anda akan melihat menu boot yang terlihat seperti satu ini. Boot into both operating systems one after the other to verify that everything is alright. Boot ke kedua sistem operasi satu demi satu untuk memverifikasi bahwa semuanya baik-baik saja. Happy hacking. Selamat hacking.
Windows 7 Dual-Boot BackTrack 5 Boot Menu

Cara Merubah Password Root di Ubuntu

Cara Merubah Password Root di Ubuntu.

Merubah atau membuat password root sangat penting, karena hak akses kita terbatas pada hal-hal yang bersifat administrative, seperti halnya membuat user atau membuka file-file system dan lainnya. Nah begini Cara Merubah Password Root di Ubuntu  :

  1. Buka Terminal atau dengan menekan tombol ctrl+alt+T.
  2. Kemudian ketikkan perintah berikut ini :
    su passwd root
  3. Masukkan password administrator, lalu masukan password root yang sama dan baru 2 kali (new dan re-write password).
Selesai deh Cara Merubah Password Root di Ubuntu. Moga bermanfaat. Terima Kasih.

NeXpose Enterprise Edition

NeXpose Enterprise Edition adalah resiko keamanan intelijen solusi yang dirancang untuk organisasi dengan jaringan besar. Ini percobaan 7-hari bebas membuka semua fitur NeXpose termasuk penemuan, deteksi, verifikasi, risiko, pelaporan klasifikasi analisis dampak, dan fitur mitigasi.
Dengan pemindai kerentanan Perusahaan Anda dapat

     Skala untuk IP Unlimited (Hingga 512 IP untuk diadili)
     Memindai aplikasi web dan menyesuaikan template scan untuk mengoptimalkan pemindaian
     Temukan dan memindai aset virtual
     Pengaturan penilaian konfigurasi canggih dan manajemen kebijakan
     Membuat laporan kepatuhan (misalnya PCI) dan laporan remediasi
     Buat ekspor CSV kustom & template laporan kustom untuk laporan lanjutan
     Mengintegrasikan dengan sistem keamanan perusahaan (misalnya, SIEM, GRC, IPS, dll)
     Pilih model penyebaran beberapa (software, alat, dikelola layanan, mesin virtual)

     Windows ato Linux
Silahkan Download Disini
Nexpose Virtual Appliance Enterprise 
Disini

NeXpose Community

NeXpose Community Edition adalah gratis, single-user kerentanan scanner yang dirancang khusus untuk penggunaan individu dan organisasi dengan kurang dari 30 orang. Ini didukung oleh pemenang penghargaan mesin kami scan dan menawarkan fitur-fitur terkini. Dukungan tersedia melalui Komunitas Rapid7 luas.
Dengan pemindai kerentanan komunitas Anda dapat

     Memindai hingga 32 IP
     Memindai jaringan, OS dan DBs
     Deployment Pilihan: software


Silakah Downlod untuk:
Windows 32bit
Windows 64bit
Linux 32bit
Linux 64bit
Linux Virtual

 




 

Membuat Icon (IcoFX)

Membuat Icon (IcoFX)


Teman-teman pada kesempatan kali ini saya mau berbagi program untuk membuat icon. Nama programnya adalah IcoFx cara menggunakan nya cukup sederhana. Programnya ringan dan tidak membutuhkan free space yang banyak
Bagi teman-teman yang belum memilik program ini silahkan teman-teman download


Disini