Sunday, January 3, 2016

Keygenning MFC-Anwendung Crme V1



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

No comments:

Post a Comment