Kali ini saya akan membahas bagaimana membuat keygen dari target MFC-Anwendung crme1. Tentunya itulah tidak mudah dibandingkan dengan teknik patching. Dengan dukungan dan masukan dari teman2, semua mastah dan team reverse engineering, yaitu diantaranya: bo3l4q, GrindStone, Jowy, k3p06, Yohukm, Ortega, Apakekdah, IUG, IDSH, KocokJaya, Unregistered, X-Code, Spyrozone, Coder, CiS, iNFECTiON, dll. Akhirnya dapat membuat keygen, walaupun belum hebat2 banget
crackme #1
- Target : MFC-Anwendung crme1
- Protection : Serial
- Compiller : Microsoft Visual C++ 6.0
- Level : Easy
- Tools : Ollydbg v1.10
- Skills : ASM, Delphi, Reverse, Logic
Ok, sekarang load targetnya ke Ollydbg, lalu jalankan (F9). Isi aja semua, lalu klik “Register”. Dan pastinya akan muncul pesan, yg mengatakan bahwa serial yang kita input salah, seperti yang terlihat pada gambar di bawah ini:
Pesan Error
Sekarang breakpoint sebelum pesan “badboyz” tersebut, tepatnya di address “004013C5″
Breakpoint
004013FE 3BC3 cmp eax,ebx
00401400 75 1E jnz short crme1.00401420
00401402 68 68304000 push crme1.00403068 ; ASCII "Yippie"
00401407 68 4C304000 push crme1.0040304C ; ASCII "Programm ist registriert"
0040140C 8BCF mov ecx,edi
0040140E E8 45020000 call <jmp.&MFC42.#4224_CWnd::MessageBoxA>
00401413 6A 00 push 0
00401415 8BCF mov ecx,edi
00401417 E8 48020000 call <jmp.&MFC42.#6334_CWnd::UpdateData>
0040141C 5F pop edi
0040141D 5E pop esi
0040141E 5B pop ebx
0040141F C3 retn
00401420 68 38304000 push crme1.00403038 ; ASCII "neinneinnein ..."
00401425 68 20304000 push crme1.00403020 ; ASCII "das war wohl nix ..."
0040142A 8BCF mov ecx,edi
0040142C E8 27020000 call <jmp.&MFC42.#4224_CWnd::MessageBoxA>
00401431 6A 00 push 0
Nah itu dia yg menentukan apakah serial yg kita input sama dengan serial yg sebenarnya. Sekarang kita lihat algo/loopnya, sebelum code tersebut, yaitu:
004013DB 50 push eax
004013DC 8BCE mov ecx,esi
004013DE E8 7B020000 call
004013E3 8B16 mov edx,ds:[esi]
004013E5 33C9 xor ecx,ecx
004013E7 8B52 F8 mov edx,ds:[edx-8]
004013EA 85D2 test edx,edx
004013EC 7E 0B jle short crme1.004013F9
004013EE 0FBE3401 movsx esi,byte ptr ds:[ecx+eax]
004013F2 03DE add ebx,esi
004013F4 41 inc ecx
004013F5 3BCA cmp ecx,edx
004013F7 ^ 7C F5 jl short crme1.004013EE
004013F9 8B47 64 mov eax,ds:[edi+64]
004013FC 6A 00 push 0
Setelah di analisa, maka hasilnya:
- name di isi ke EAX
- length name di isi ke EDX (mov edx,ds:[edx-8])
- ambil setiap byte dari name lalu di isi ke ESI (movsx esi,byte ptr ds:[ecx+eax])
- dijumlahkan nilai dari EBX dengan nilai ESI (add ebx,esi)
- maka real serial-nya akan tersimpan di EBX
[ With Inline ASM In Delphi ]
01 | procedure TForm1. Button1Click(Sender: TObject); |
09 | edit2 . Text:= 'please insert your name...' ; |
18 | movsx esi, byte ptr ds:[ecx+eax] |
26 | edit2 . Text:=inttostr(serial); |
Dan ini dia source code keygen-nya:
[ With Out Inline ASM In Delphi ]
01 | procedure TForm1 . Button2Click(Sender: TObject); |
03 | len,count,serial,i: integer ; |
09 | edit2 . Text:= 'please insert your name...' ; |
12 | for i:= 0 to len do begin |
16 | edit2 . Text:=inttostr(serial); |
Thanks – N – Enjoy
( RaY-29 )
Posting Komentar