- Bây giờ chúng ta hãy load chương trình vào trong OllyDbg.. Nếu nó hiện ra 1 bảng thông báo thì cứ nhấn OK , sau đó nó lại cho ta chọn Yes Analysis & No Analysis.. Sau đó click chuột ph
Trang 1của chúng ta tầm bậy các bạn ạ Thế có ức ko cơ chứ :(( , mà cũng đúng thôi , nếu chúng
ta nhập đúng thì chúng ta đã chẳng phải ngồi đây Hihi ! :w00t: Khi chúng ta exit cái Dialog Box đó nó còn pop-up ra 1 cái nag nhắc nhở ta : "Please register " , đòi tiền như đòi nợ ấy :sad: Biết rồi nói mãi , làm gì mà cứ nhắc hoài thế , chờ tý nữa tớ sẽ đưa Serial (not money ) cho ngay thôi mà Hihi ! :P
Ok , chúng ta hãy ghi nhớ lấy tất cả những thứ đó
- Bây giờ chúng ta hãy load chương trình vào trong OllyDbg Nếu nó hiện ra 1 bảng thông báo thì cứ nhấn OK , sau đó nó lại cho ta chọn Yes (Analysis) & No (Analysis)
Ta chọn No (Analysis) Sau đó click chuột phải chọn Search for / All referenced text strings để tìm chuỗi thông báo trên Ặc ặc mấy 1 phút mà vẫn không thấy cái chuỗi thông báo đó đâu cả Chẳng nhẽ chúng ta lại chịu bó tay trước thời cuộc sao Không đâu các bạn cứ bình tĩnh , chúng ta lại sử dụng phương pháp Stack của anh Moonbaby
- Nhấn Ctrl + F2 để load lại chương trình vào trong OllyDbg Nhấn F9 để Run chương trình Chúng ta lại nhập FS như ở trên vào Xong nhấn OK , xuất hiện thông báo :
"Series number error , please check it and try again " Giữ nguyên chương trình ,
quay trở lại Ollydbg , nhấn F12 , Olly sẽ dừng chương trình lại Nhấn tiếp Alt + K để hiện cửa sổ : “Call stack of main thread “ Ta thấy ngay thông báo :
*** Ở đây chúng ta chú ý đến dòng màu đỏ :
Code:
Call stack of main thread
Address Stack Procedure / arguments Called from Frame
0012E928 003218A9 ? USER32.MessageBoxA verypdf.003218A3
0012E92C 001502FE hOwner = 001502FE ('Please registe
0012E930 00337308 Text = "Series number error, pleas
0012E934 00000000 Title = NULL
0012E938 00000010 Style = MB_OK|MB_ICONHAND|MB_APPLM
***Double-click vào cột Called from của dòng này , chúng ta đến địa chỉ :
Code:
0032189D 68 08733300 PUSH verypdf.00337308 ; ASCII "Series
number error, please check it and try again."
003218A2 56 PUSH ESI
003218A3 FF15 34333300 CALL NEAR DWORD PTR DS:[333334] ;
USER32.MessageBoxA ===> We’re here
003218A9 68 FB030000 PUSH 3FB ===> Set BreakPoint here
003218AE 56 PUSH ESI
*** Sau khi đặt BP tại đây , Ollydbg sẽ dừng chương trình lại , nhấn F8 để xuất hiện lại
Trang 2thông báo : "Series number error, please check it and try again " Nhấn OK để chấp nhận thông báo này , chương trình sẽ dừng lại tại điểm BP mà chúng ta vừa đặt Xoá điểm BP này đi RETN , nhìn lên trên 1 chút chúng ta sẽ thấy đoạn code sau Đây là tử huyệt , chúng ta sẽ đặt BP tại đây :
Code:
00321849 FF15 2C333300 CALL NEAR DWORD PTR DS:[33332C] ;
USER32.GetDlgItemTextA ===> Set BreakPoint Here
0032184F 68 60A83300 PUSH verypdf.0033A860 ; ASCII "0361985"
II/ Cracking :
***OK, sau khi đặt BP tại đó , chúng ta nhấn F9 để Run chương trình , ta sẽ thấy hộp thoại đăng kí xuất hiện lại , sau khi đã nhập FS đầy đủ như ở trên ta đã làm , nhấn OK Chúng ta sẽ quay trở lai Olly và chương trình sẽ Ice tại điểm mà chúng ta set BP
Nhìn xuống phía dưới 1 chút , chúng ta sẽ thấy hàm Call Đây chính là lệnh gọi hàm kiểm tra Series : :w00t:
Code:
00321854 E8 A7F7FFFF CALL verypdf.00321000
*** Ở đây chúng ta cũng thấy lệnh text thanh ghi EAX Vì vậy chúng ta sẽ Trace Into vào trong hàm Call trên xem nó làm gì với FS của chúng ta :
Code:
00321849 FF15 2C333300 CALL NEAR DWORD PTR DS:[33332C] ;
USER32.GetDlgItemTextA ===> We're here
0032184F 68 60A83300 PUSH verypdf.0033A860 ; ASCII "0361985"
00321854 E8 A7F7FFFF CALL verypdf.00321000 ===> gọi hàm check Serial
-Trace Into -
00321000 83EC 18 SUB ESP, 18
00321003 53 PUSH EBX
00321004 56 PUSH ESI
00321005 8B7424 24 MOV ESI, DWORD PTR SS:[ESP+24] ===> Đưa Input vào ESI
00321009 8D5424 08 LEA EDX, DWORD PTR SS:[ESP+8]
0032100D 57 PUSH EDI
0032100E 32DB XOR BL, BL
00321010 8A46 0E MOV AL, BYTE PTR DS:[ESI+E] ===> Đưa ký tự thứ 15 trong chuỗi FS vào AL
00321013 8A4E 0F MOV CL, BYTE PTR DS:[ESI+F] ===> Đưa ký tự thứ
16 trong chuỗi FS vào CL
00321016 52 PUSH EDX
Trang 300321017 884424 1C MOV BYTE PTR SS:[ESP+1C], AL ===> đoạn
SS:[ESP+1C] chứa ký tự thứ 15
0032101B 885C24 1D MOV BYTE PTR SS:[ESP+1D], BL
0032101F 884C24 10 MOV BYTE PTR SS:[ESP+10], CL ===> đoạn
SS:[ESP+10] chứa ký tự thứ 16
00321023 885C24 11 MOV BYTE PTR SS:[ESP+11], BL
00321027 E8 49150000 CALL verypdf.00322575
0032102C 8BF8 MOV EDI, EAX ===> Đưa ký tự thứ 16 trong chuỗi FS vào EDI
0032102E 8D4424 1C LEA EAX, DWORD PTR SS:[ESP+1C] ===> EAX chứa ký tự thứ 15
00321032 50 PUSH EAX
00321033 E8 3D150000 CALL verypdf.00322575
00321038 03F8 ADD EDI, EAX ===> lấy tổng của ký tự 15 + ký tự 16 0032103A 83C4 08 ADD ESP, 8
0032103D 83FF 0B CMP EDI, 0B ===> so sánh với 0B
00321040 74 09 JE SHORT verypdf.0032104B ==> Nếu bằng thì tiếp tục quá trình tính toán Serial
00321042 5F POP EDI
00321043 5E POP ESI
00321044 33C0 XOR EAX, EAX
00321046 5B POP EBX
00321047 83C4 18 ADD ESP, 18
0032104A C3 RETN
0032104B 8A0E MOV CL, BYTE PTR DS:[ESI] ===> Đưa ký tự thứ nhất trong chuỗi FS vào CL
0032104D 8A56 01 MOV DL, BYTE PTR DS:[ESI+1] ===> Đưa ký tự thứ 2 trong chuỗi FS vào DL
00321050 8D4424 0C LEA EAX, DWORD PTR SS:[ESP+C]
00321054 884C24 18 MOV BYTE PTR SS:[ESP+18], CL
00321058 50 PUSH EAX
00321059 885C24 1D MOV BYTE PTR SS:[ESP+1D], BL
0032105D 885424 10 MOV BYTE PTR SS:[ESP+10], DL
00321061 885C24 11 MOV BYTE PTR SS:[ESP+11], BL
00321065 E8 0B150000 CALL verypdf.00322575
0032106A 8D4C24 1C LEA ECX, DWORD PTR SS:[ESP+1C]
0032106E 8BF8 MOV EDI, EAX
00321070 51 PUSH ECX
00321071 E8 FF140000 CALL verypdf.00322575
00321076 03F8 ADD EDI, EAX ===> lấy tổng của ký tự thứ nhất + ký tự thứ 2
00321078 83C4 08 ADD ESP, 8
0032107B 83FF 09 CMP EDI, 9 ===> so sánh với 9
Trang 40032107E 74 09 JE SHORT verypdf.00321089 ===> Nếu bằng thì tiếp tục quá trình tính toán Serial
00321080 5F POP EDI
00321081 5E POP ESI
00321082 33C0 XOR EAX, EAX
00321084 5B POP EBX
00321085 83C4 18 ADD ESP, 18
00321088 C3 RETN
00321089 8A4E 05 MOV CL, BYTE PTR DS:[ESI+5] ===> Đưa ký tự thứ 6 trong chuỗi FS vào CL
0032108C 33C0 XOR EAX, EAX
0032108E 80F9 26 CMP CL, 26 ===> so sánh ký tự thứ 6 với ký tự ' & '
00321091 5F POP EDI
00321092 5E POP ESI
00321093 5B POP EBX
00321094 0F94C0 SETE AL
00321097 83C4 18 ADD ESP, 18
0032109A C3 RETN
-
00321859 83C4 04 ADD ESP, 4
0032185C 85C0 TEST EAX, EAX ===> kiểm tra EAX= 0 ?
0032185E 74 39 JE SHORT verypdf.00321899 ===> nếu EAX=0 thì nhảy đến bắn Bad boy
00321860 6A 40 PUSH 40
00321862 68 70733300 PUSH verypdf.00337370 ; ASCII "Thank you purchased the"
00321867 68 3C733300 PUSH verypdf.0033733C ; ASCII "Thank you purchased the PDF Password Remover v2.2."
*** Như vậy theo phân tích ở trên ta thấy Real Serial của chương trình sẽ phải thoả mãn các yêu cầu sau : :w00t:
1 Chiều dài tối thiểu phải là 16 ký tự
2 ở vị trí thứ 6 trong chuỗi Ser phải là ký tự mặc định ‘ & ’
3 Các ký tự ở vị trí S[0] , S[1] , S[14] , S[15] phải là các ký tự thoả mãn điều kiện sau : S[0] + S[1] = 0x9
S[14] + S[15] = 0xB
4 Các ký tự còn lại là mặc định
*** Từ đó ta có thể dễ dàng suy ra Real Serial của chương trình là : 18345&0361985056
Trang 5****** Chúng ta lại làm tiếp những động tác quen thuộc cuối cùng , tắt Ollydbg , chạy thử chương trình , nhập vào :
Series : 18345&0361985056
Hoặc :
Series : 54321&0123456738
OK ! Done ! Chương trình cảm ơn chúng rối rít ta kìa “thank you ……”, ngại quá :wub: (chúng ta đâu có đưa money cho họ , chỉ đưa vài con số thui mà , có gì đâu mà thanx ) Thế mà vừa lúc trước mắng ta te tua : serial tầm bậy Đã bảo là chờ tý sẽ có Serial ngay
mà lại ko nghe , cứ pop-up ra nhắc nhở ta đăng ký hoài Hihiiiiiiiii…… ! :laugh: Enjoy !
SOURCE CODE FOR PDF Password Remover v2.2
Code:
char reaSerial[20]={0};
char reaRandChart[37]="1478523690POIUYTREWQASDFGHJKLMNBVCXZ";
int i=0;
i=0;
while ( i < 16 )
{
reaSerial[i] = reaRandChart[rand()%36];
i++;
}
reaSerial[0] = reaRandChart[rand()%8];
reaSerial[1] = (0x9 - ((reaSerial[0] & 0xFF) - 0x30)) + 0x30;
reaSerial[14] = reaRandChart[rand()%9];
reaSerial[15] = (0xB - ((reaSerial[1] & 0xFF) - 0x30)) + 0x30;
reaSerial[5] = 0x26;
SetDlgItemText(IDC_Serial,reaSerial);
Chúc thành công ! :)
Trang 6
SoftWare : PDF Split-Merge v1.1
Copyright by : Copyright @ 2001-2003 verypdf.com Inc