Bagaimana cara membuat key generator (keygen)
Pengenalan
------------
Saya tidak bertanggung jawab dari penggunaan informasi ini. :P
Tutorial ini, adalah untuk HANYA pengetahuan pendidikan. :D
Hai, dalam tutorial ini, saya bermaksud untuk mengajarkan cara membuat cantik
sederhana keygen, sebuah program yang disebut v1.1.3 W3Filer 32.
W3Filer adalah web downloader cukup bagus ...
Saya kira sebagian dari Anda mungkin tahu program.
Saya beranggapan kalau Anda mengerti:
A. Bagaimana menggunakan debugger (dalam hal ini, SoftIce).
B. Cara retak, umumnya (menemukan rutinitas perlindungan, patch mereka, dll ..).
C. Bagaimana menggunakan Disassembler (pengetahuan ini dapat membantu).
D. Majelis.
E. Bagaimana kode di Turbo Pascal ™.
Alat `Anda perlukan:
A. SoftIce 3.00/01 atau yang lebih baru.
B.WD32Asm. (Tidak harus).
C. Program W3Filer V1.13 (jika tidak tersedia dalam paket ini), dapat ditemukan di
www.windows95.com Saya percaya.
D. Turbo Pascal (versi APAPUN).
Yah, bla bla cukup, mari kita pergi cracking ...
Jalankan W3Filer 32.
Layar nag muncul, dan, tuntutan pendaftaran (Hmm, ini sux ;-)) Sekarang,
Kami melihat program ini memiliki beberapa jenis nomor seri (Mine adalah 873.977.046),
Mari kita menjaga serial dalam pikiran, aku yakin kita `ll bertemu lagi selama kita berada di
debugger.
Nah, sekarang, mari kita meletakkan nama dan dummy reg kode ...
menetapkan BP di GetDlgItemTextA, dan, tekan OK.
Kami pop dalam GetDlgItemTextA, Mari menemukan pendaftaran rutin ...
I `ll menyimpan pekerjaan Anda, rutinitas pendaftaran adalah:
: 00404DB2 8D95A8FAFFFF lea edx, ptr EBP [dword + FFFFFAA8]
: 00404DB8 52 push edx ---> nama pengguna Anda di sini.
: 0040A2C9 E80B550000 00404DB9 panggilan ---> Pendaftaran rutin.
: 83C408 menambahkan 00404DBE esp, 00000008 ---> Entahlah apa itu.
: Pengidentifikasi Boolean 00404DC1 85C0 test eax, eax --->, 0 jika
: Pendaftaran 00404DDC ---> 00404DC3 7D17 jge gagal, 1 jika
OK.
Nah, Mari kita masukkan 40A2C9 CALL, dan melihat apa yang ada di dalamnya:
(Silakan baca komentar saya dalam kode).
* Yang merekomendasikan sebuah CALL di Alamat:
|: 00404DB9,: 00407F76
|
: 0040A2C9 55 push EBP
: 0040A2CA 8BEC mov EBP, esp
: Tambahkan 81C4B0FEFFFF 0040A2CC esp, FFFFFEB0
: 0040A2D2 53 push ebx
: 0040A2D3 56 push esi
: 0040A2D4 57 push edi
: 0040A2D5 8B5508 mov edx, dword ptr [EBP 08]
: 0040A2D8 8DB500FFFFFF lea esi, dword ptr [EBP + FFFFFF00]
: 0040A2DE 33C0 XOR eax, eax
: 0040A2E0 EB16 JMP 0040A2F8
* Yang merekomendasikan (U) Langsung onditional © nconditional atau di Alamat:
|: © 0040A2FB
|
: 0040A2E2 0FBE0A movsx ecx byte, ptr [edx] ----> Berikut Memulai
bagian yang menarik.
: 0040A2E5 83F920 CMP ecx, 00000020 ----> ecx adalah arus
char dalam nama pengguna, Hmm, 20h = '' ...
: 0040A2E8 740D je 0040A2F7 ----> Mari kita lihat,
: 0040A2EA 8A0A byte mov cl, ptr [edx] ----> Secara umum, semua loop ini
tidak, adalah menyalin
nama pengguna dari
[EDX], untuk [ESI], TANPA ruang!
(Ingatlah hal ini!).
: 0040A2EC 880C06 mov byte ptr [esi + eax], cl
: 0040A2EF 42 inc edx
: 0040A2F0 40 inc eax
: Mov byte ptr C6040600 0040A2F1 [esi + eax], 00
: 0040A2F5 EB01 JMP 0040A2F8
* Yang merekomendasikan (U) Langsung onditional © nconditional atau di Alamat:
|: 0040A2E8 ©
|
: 0040A2F7 42 inc edx
* Yang merekomendasikan sebuah Langsung (U) onditional © nconditional atau di Alamat:
|: 0040A2E0 (U),: 0040A2F5 (U)
|
: 803A00 0040A2F8 CMP byte ptr [edx], 00
: 0040A2FB 75E5 0040A2E2 JNE ----------------> loop ini, kami punya
apa yang dilakukannya,
Mari kita lanjutkan tracing
kode ...
: 0040A2FD 56 push esi --------> Nama pengguna didorong, dalam rangka
untuk
Upcase itu karakter.
* Referensi Untuk: USER32.CharUpperA, Ord: 0000h
|
: 0040A2FE E80F330000 Panggil Pengguna CharUpper ---!> Setelah itu, nama kita di
huruf.
: 56 push esi 0040A303 -----> nama kita dalam huruf besar di sini.
* Referensi Untuk: cw3220mt._strlen, Ord: 0000h
|
: 0040A304 0040D378 E86F300000 Panggil ---> Ini adalah panjang nama kami.
: 0040A309 59 pop ecx
: 0040A30A 8BC8 ecx mov Panjang, ecx eax ---> =.
: 0040A30C 83F904 CMP ecx, 00000004 ---> Panjang> = 4 (HARUS).
: 0040A30F 7D05 jge 0040A316 ---> Mari kita pergi ke alamat ini ...
: 0040A311 83C8FF atau eax, FFFFFFFF
: 0040A314 EB67 JMP 0040A37D
* Yang merekomendasikan (U) Langsung onditional © nconditional atau di Alamat:
|: © 0040A30F
|
: 0040A316 33D2 XOR edx, edx
: 0040A318 33C0 XOR eax, eax
: 0040A31A 3BC8 CMP ecx, eax
: 0040A31C 7E17 0040A335 jle ---> (Tidak penting, hanyalah sia-sia
pemeriksaan).
================================================== =================================
============ DARI SINI DAN AKTIF, KODE PENTING, PERHATIAN MEMBAYAR ==================
================================================== =================================
Satu hal sebelum kita melanjutkan, EDX = 00000000h seperti yang kita masukkan ke instruksi berikutnya.
* Yang merekomendasikan (U) Langsung onditional © nconditional atau di Alamat:
|: 0040A333 ©
|
: 0040A31E 0FBE1C06 movsx ebx byte, ptr [esi + eax] ---> EBX Hmm, itu SHL adalah karakter oleh 03h ...
(Ingat bahwa).
: 0040A325 0FBE3C06 movsx edi, byte ptr [esi + eax] ---> Sekarang EDI Ini mengalikan karakter oleh
offset nama pengguna! (Ingat bahwa).
: 0040A32C 03DF menambah ebx, edi Menambahkan -----> hasilnya ke EBX (Itu
Dikupas (Ding Dong =)).
: 03D3 add edx 0040A32E, EDX = EDX -----> ebx + EBX! - Ini adalah INTI yang
rutin ini pendaftaran!
: 0040A330 40 inc eax -----> Meningkatkan EAX per satu (selanjutnya char).
: 0040A331 3BC8 CMP ecx, eax
: 0040A333 7FE9 jg 0040A31E ----> Jika ecx HMMMMMM, Apa yang ada dalam
di sini ?????
: 0040A33A C1F803 sar eax, 03 ---------> WAIT! Ketik Sice '?
EAX '
Apakah nomor ini pada EAX melihat
akrab dengan kita? ;-)
Jika Anda masih don `t mengerti,
daripada, Ini
kami SERIAL NUMBER! (PLEASE, mengambil
Anda waktu, dan memeriksa dengan
diri sendiri - don `t percaya padaku!). OK,
jadi sekarang kita tahu,
Bahwa SHR EAX oleh 03 (SAR
hampir identik dengan SHR).
: 0040A33D 03D0 menambahkan edx, eax ---------> Hmm, menambahkan hasil dari
loop, nomor seri shr'd oleh 03h
: 0040A33F -------> 52 push edx Mari kita lanjutkan. (Pada titik ini, saya
dapat memberitahu Anda, nomor reg, adalah
dalam EDX - hanya bahwa jumlah reg
dalam HEX -> Itulah cara Anda memasukkannya).
* Kemungkinan StringData Ref dari Data obj -> "% lx"
|
: 0040A340 685EF54000 push 0040F55E
: 0040A345 8D95B0FEFFFF lea edx, ptr [EBP + dword FFFFFEB0]
: 0040A34B 52 push edx
* Referensi Untuk: USER32.wsprintfA, Ord: 0000h
|
: 0040A34C E8E5320000 Call 0040D636 -------> satu ini, tidak HEX2STR (Membawa
nilai dari EDX, dan mengubahnya ke string hex).
: 0040A351 83C40C menambahkan esp, 0000000C
: 0040A354 8D8DB0FEFFFF lea ecx, dword ptr [EBP + FFFFFEB0] -----> ketik 'd ecx' -
Inilah nomor reg! Itu sudah cukup bagi kami, sisa
kode, adalah
hanya untuk membandingkan kode reg benar dengan kita.
: 0040A35A 51 push ecx
* Referensi Untuk: USER32.CharLowerA, Ord: 0000h
|
: 0040A35B E8B8320000 Call 0040D618
: 0040A360 8D85B0FEFFFF lea eax, ptr [EBP + dword FFFFFEB0]
: 0040A366 50 push eax
: 0040A367 FF750C push [EBP 0 C]
* Referensi Untuk: cw3220mt._strcmp, Ord: 0000h
|
: 0040A36A E875300000 Panggil 0040D3E4
: 0040A36F 83C408 add esp, 00000008
: 0040A372 85C0 test eax, eax
: 7405 je 0040A374 0040A37B
: 0040A376 83C8FF atau eax, FFFFFFFF
: 0040A379 EB02 JMP 0040A37D
* Yang merekomendasikan (U) Langsung onditional © nconditional atau di Alamat:
|: 0040A374 ©
|
: 0040A37B 33C0 XOR eax, eax
* Yang merekomendasikan sebuah Langsung (U) onditional © nconditional atau di Alamat:
|: 0040A314 (U): 0040A379 (U)
|
: 5F pop edi 0040A37D
: 5E pop esi 0040A37E
: 0040A37F 5B pop ebx
: 0040A380 8BE5 mov esp, EBP
: 0040A382 5D pop EBP
: 0040A383 C3 ret
Membuat keygen aktual
~~~~~~~~~~~~~~~~~~~~~~
Sekarang, setelah aku menjelaskan bagaimana program menghitung pendaftaran
kode, Anda dapat menulis keymaker Anda sendiri, tanpa melihat kode saya, atau
melihat kode saya (dalam Turbo Pascal - maaf untuk semua pecinta C Anda ;-) kali).
Itu saja, inilah sumber keygen saya:
Potong di sini ------------------- ----------------------------- ----------------
Program W3FilerKeygen;
var
Key, SerialNum, EB, ED, angka: Longint;
Aku, x: Byte;
Nama, KeyHex: String;
mulai
Writeln ('W3Filer32 v1.1.3 Keymaker');
writeln ('Cracked oleh rasa sakit ^ ^''97 / Pemberontak!');
Write ('Nama Anda:'); (Dibaca nama)
readln (Nama);
Write ('Serial Number:');
readln (SerialNum); (Ya, kami memerlukan nomor seri untuk perhitungan!)
Key: = 0;
x: = 0;
Untuk I: = 1 to panjang (Nama) melakukan
mulai
Nama [I]: = upcase (Nama [i]);
Jika [Nama saya] '' kemudian mulai
eb: = Ord (Nama [I]) 3 SHL; (EB = Nama [I] SHL 03h)
Ed: = Ord (Nama [I]); (ED = Nama [I])
ed: = ed * (x); (* ED ED = Offset)
inc (x);
eb: = eb + ed; (ED Tambahkan ke EB)
Key: = + EB kunci; (EB Tambahkan ke KEY)
akhir;
akhir;
Key: = + kunci (SerialNum SHR 3); (Tambahkan 03h SerialNum SHR ke Key)
(Dari sini, ini hanya HEX2STRING -> I `m cukup yakin itu
Cukup explaintory, lain - pergi dan belajar dasar nomor lagi! ;-))
KeyHex :='';
ulangi
Kunci digit: = mod 16;
kunci: = tombol div 16;
Jika 10 digit maka KeyHex: = Chr (Angka 10 + Ord ('a')) + KeyHex;
sampai 0 = kunci;
writeln ('Kunci Anda:', KeyHex);
writeln ('Nikmati!');
Selesai......................................................... :D :D :D
Label: Tips dan trik
0 Komentar:
Posting Komentar
Berlangganan Posting Komentar [Atom]
<< Beranda