Monday, April 9, 2018

Keygenning MFC Anwendung Crme V1

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

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.