Sabtu, 17 September 2011

0 Keygenning MFC-Anwendung Crme V1

Date: Sabtu, 17 September 2011 05.26
Category:
Author: deny saputra
Share:
Responds: 0 Comment

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 :)
{images: crackme #1}
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:
{images: Pesan Error}
Pesan Error
Sekarang breakpoint sebelum pesan “badboyz” tersebut, tepatnya di address “004013C5″
{images: Breakpoint}
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 ]
01procedure TForm1. Button1Click(Sender: TObject);
02var
03len,serial:integer;
04name:string;
05begin
06name:=edit1.Text;
07len:=length(name);
08if name='' then begin
09edit2.Text:='please insert your name...';
10end else begin
11asm
12Pushad
13mov eax,name
14mov edx,len
15xor ecx,ecx
16xor ebx,ebx
17@loop:
18movsx esi,byte ptr ds:[ecx+eax]
19add ebx,esi
20mov serial,ebx
21inc ecx
22cmp ecx,edx
23jl @loop
24Popad
25end;
26edit2.Text:=inttostr(serial);
27end;
28end;
Dan ini dia source code keygen-nya:
[ With Out Inline ASM In Delphi ]
01procedure TForm1.Button2Click(Sender: TObject);
02var
03len,count,serial,i:integer;
04name:string;
05begin
06name:=edit1.Text;
07len:=length(name);
08if name='' then begin
09edit2.Text:='please insert your name...';
10end else begin
11serial:=$0;
12for i:=0 to len do begin
13count:=ord(name[i]);
14serial:=serial+count;
15end;
16edit2.Text:=inttostr(serial);
17end;
18end;
Thanks – N – Enjoy
( RaY-29 )

//E.O.F

Artikel Terkait :



Posting Komentar