Tải bản đầy đủ (.pdf) (66 trang)

Thủ thuật sử dụng máy tính: CRACK MỘT VÀI SOFT CỦA WWW.VERYPDF.COM pot

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (866.07 KB, 66 trang )



ĐỀ TÀI

Thủ thuật sử dụng máy
tính
CRACK MỘT VÀI SOFT
CỦA
WWW.VERYPDF.COM
CRACK MỘT VÀI SOFT CỦA
WWW.VERYPDF.COM
SoftWare : PDF2Word v1.4
Copyright by : Copyright @ 2001-2003 verypdf.com Inc
Packed : UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo
Language : Microsoft Visual C++ 6.0
Unpack Tools: UPX Unpack , hoặc dùng plugin của PeiD (có RebuildPE )
Crack Tools : OllyDbg 1.09d, PEiD 0.92
Request : Real Serial .
Introduction : PDF2Word v1.4
PDF2Word(pdf to word) software enable export the text, images and other
contents from pdf document into word document, so you can reuse your
PDF content, pdf to word software will preserving text, layout and bitmap
images in the generated word document.
PDF2Word(pdf to word) software is a standalone program and does not
require Microsoft Word, Adobe Acrobat, or even Acrobat Reader.
I/ Information :
- Dùng PEid v0.92 để Detect , chúng ta biết chương trình được pack bằng
UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo . Ta dùng tool : UPX
Unpack để unpack chương trình này , hoặc chúng ta cũng có thể dùng Plugin
của PEiD (có ReBuildPE ) để unpack . Sau khi unpack xong , lại dùng PEiD
v0.92 để Detect , chúng ta biết chương trình được viết bằng Microsoft


Visual C++ 6.0 . :w00t:
- Chạy thử chương trình , chúng ta thấy hiện lên một 1 Dialog Box : “Please
register pdf2word v1.4 !”và chương trình chỉ cho phép chúng ta chỉ dùng
thử nếu ta không đưa money cho họ :(( . Đưa money á ! nghe lạ thế nhỉ .
Money còn phải dùng vào nhiều việc lắm , thông cảm nhé Software .
Hihi ! :D
OK ! Bây giờ chúng ta nhập đại 1 Email & Series vào cái hộp Dialog Box
xem nó thông báo thế nào . Ở đây em nhập như sau : Email
: & Series : 0361985 . Nhấn OK , một cái
nag văng ra , đập ngay vào mặt chúng ta , nó chửi chúng ta : "Series number
error, please check it and try again " :sad: . 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 " , biết rồi nói
mãi , làm gì mà cứ nhắc hoài thế , tý nữa sẽ có Serial (not money ) ngay thôi
mà . Hihi ! :D
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 , 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ất vài giây nhưng chúng ta vẫn không thấy chuỗi thông báo
đó đâu cả . Chúng ta đành bó tay chịu chết sao , không đâu các bác cứ bình
tĩnh , chúng ta sẽ 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 các FU và 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:
0012E014 0043C64E ? USER32.MessageBoxA
df2word.0043C648

***Double-click vào cột Called from của dòng này , chúng ta đến địa chỉ :
Code:
00429BFB 68 E0734600 PUSH unpacked.004673E0 ;
ASCII "Series number error, please check it and try again."
00429C00 56 PUSH ESI
00429BCB FF15 24874400 CALL NEAR DWORD PTR
DS:[<&USER32.Mess>; USER32.MessageBoxA
00429BD1 68 FCA64600 PUSH unpacked.0046A6FC >>>> Set
BreakPoint here 00429BD6 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 thô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 :
Code:
00429B38 FF15 1C874400 CALL NEAR DWORD PTR
DS:[<&USER32.GetD>; USER32.GetDlgItemTextA >>>>> Set BreakPoint
Here .
00429B3E 68 FCA64600 PUSH unpacked.0046A6FC
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 FU,FS đầy đủ , 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 :
Code:
00429B43 E8 78F8FFFF CALL unpacked.004293C0
Ở đâ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:
00429B38 FF15 1C874400 CALL NEAR DWORD PTR
DS:[<&USER32.GetD>; USER32.GetDlgItemTextA >>>> We’re here .
00429B3E 68 FCA64600 PUSH unpacked.0046A6FC
00429B43 E8 78F8FFFF CALL unpacked.004293C0
Trace into
004293C0 83EC 30 SUB ESP, 30
004293C3 55 PUSH EBP
004293C4 56 PUSH ESI
004293C5 8B7424 3C MOV ESI, DWORD PTR SS:[ESP+3C]
004293C9 57 PUSH EDI
004293CA 8A06 MOV AL, BYTE PTR DS:[ESI] >>>đưa kí tự
đầu tiên của FS vào AL .
004293CC 8A4E 01 MOV CL, BYTE PTR DS:[ESI+1] >>> đưa
kí tự thứ 2 của FS vào CL
004293CF 8A56 0E MOV DL, BYTE PTR DS:[ESI+E] >>> đưa
kí tự thứ 15 của FS vào DL
004293D2 884424 18 MOV BYTE PTR SS:[ESP+18], AL
004293D6 32C0 XOR AL, AL
004293D8 884C24 30 MOV BYTE PTR SS:[ESP+30], CL
004293DC 8A4E 0F MOV CL, BYTE PTR DS:[ESI+F] >>> đưa
kí tự thứ 16 của FS vào CL
004293DF 884424 19 MOV BYTE PTR SS:[ESP+19], AL
004293E3 884424 31 MOV BYTE PTR SS:[ESP+31], AL
004293E7 884424 25 MOV BYTE PTR SS:[ESP+25], AL
004293EB 884424 0D MOV BYTE PTR SS:[ESP+D], AL
004293EF 8A46 02 MOV AL, BYTE PTR DS:[ESI+2] >>> đưa
kí tự thứ 3 của FS vào AL
004293F2 3C 24 CMP AL, 24 >>>>so sánh ky tu thu 3 với ký tự
$

004293F4 885424 24 MOV BYTE PTR SS:[ESP+24], DL
004293F8 884C24 0C MOV BYTE PTR SS:[ESP+C], CL
004293FC 75 52 JNZ SHORT unpacked.00429450 >>> Nếu ko
bằng thì nhảy đến bắn Bad boy
004293FE 8B3D 2C864400 MOV EDI, DWORD PTR
DS:[<&msvcrt.atoi>; MSVCRT.atoi
00429404 8D5424 0C LEA EDX, DWORD PTR SS:[ESP+C]
00429408 52 PUSH EDX
00429409 FFD7 CALL NEAR EDI >>>>> Trừ ký tự thứ 16 cho
0x30
0042940B 8BE8 MOV EBP, EAX
0042940D 8D4424 1C LEA EAX, DWORD PTR SS:[ESP+1C]
00429411 50 PUSH EAX
00429412 FFD7 CALL NEAR EDI >>>>> Trừ ký tự đầu tiên
cho 0x30
00429414 03E8 ADD EBP, EAX >>>> tổng của ký tự thứ 1 và
thứ 16
00429416 83C4 08 ADD ESP, 8
00429419 83FD 0A CMP EBP, 0A >>>> so sánh với 0A
0042941C 75 32 JNZ SHORT unpacked.00429450 >>> Nếu ko
bằng thì nhảy đến bắn Bad boy
0042941E 8D4C24 24 LEA ECX, DWORD PTR SS:[ESP+24]
00429422 51 PUSH ECX
00429423 FFD7 CALL NEAR EDI >>>> Trừ ký tự thứ 15 cho
0x30
00429425 8D5424 34 LEA EDX, DWORD PTR SS:[ESP+34]
00429429 8BE8 MOV EBP, EAX
0042942B 52 PUSH EDX
0042942C FFD7 CALL NEAR EDI >>>> Trừ ký tự thứ 2 cho
0x30

0042942E 03E8 ADD EBP, EAX >>>> tổng của ký tự thứ 2 và
ký tự thứ 15
00429430 83C4 08 ADD ESP, 8
00429433 83FD 0A CMP EBP, 0A >>>> so sánh với 0A
00429436 75 18 JNZ SHORT unpacked.00429450 >>>> Nếu ko
bằng thì nhảy đến bắn Bad boy
00429438 807E 03 24 CMP BYTE PTR DS:[ESI+3], 24 >>>> so
sánh ký tự thứ 4 với ký tự $
0042943C 75 12 JNZ SHORT unpacked.00429450 >>> Nếu ko
bằng thì nhảy đến bắn Bad boy
0042943E 8A4E 05 MOV CL, BYTE PTR DS:[ESI+5] >>>> đưa
ký tự thứ 6 vào CL
00429441 33C0 XOR EAX, EAX
00429443 80F9 23 CMP CL, 23 >>>> so sánh ký tự thứ 6 với ký
tự #
00429446 5F POP EDI
00429447 5E POP ESI
00429448 5D POP EBP
00429449 0F94C0 SETE AL
0042944C 83C4 30 ADD ESP, 30
0042944F C3 RETN

00429B48 83C4 04 ADD ESP, 4
00429B4B 85C0 TEST EAX, EAX >>>> if EAX=0
00429B4D 74 18 JE SHORT unpacked.00429B67 >>>> then :
bắn Bad boy
00429B4F 6A 02 PUSH 2
00429B51 56 PUSH ESI
***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 : :wub:

1. Chiều dài tối thiểu phải là 16 ký tự
2. ở các vị trí thứ 3,4,6 trong chuỗi Ser phải là các ký tự mặc định :
vị trí thứ 3 là $
vị trí thứ 4 là $
vị trí thứ 6 là #
3.Và các ký tự ở vị trí S[0] , S[1] , S[14] , S[15] phải là các ký tự trong
khoảng từ 1> 9 Và chúng phải thoả mãn điều kiện sau :
S[0] + S[15] = 0xA
S[1] + S[14] = 0xA
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à :
12$$2#1230345689
*** Tắt Ollydbg , chạy thử chương trình , nhập vào :
Email :
Series : 12$$2#1230345689
Hoặc :
Email :
Series : 85$$9#0361985552
OK ! Done ! Cái nag đó mất tiêu rồi . Chương trình đã được Registered .
:w00t:
Enjoy ! :)
Chúc thành công ! :wink:
SoftWare : PDF2HTML v1.6 .
Copyright by : Copyright @ 2001-2003 verypdf.com Inc
Packed : N/A .
Language : Microsoft Visual C++ 6.0
Crack Tools : OllyDbg 1.09d, PEiD 0.92
Unpack tools : N/A .
Request : Real Serial .
Introduction : PDF2HTML v1.6 .

PDF to HTML converter allows conversions of PDF documents into HTML
format, which is more suitable for Internet publishing. The converter
produces fully functional HTML documents with texts, pictures, graphics
and bookmarks, using the original PDF document formatting and allowing
for Internet publishing of your documents, thus exposing their content to
search engines and significantly increasing your site audience.
PDF to HTML software is a standalone program and does not require Adobe
Acrobat, or even Acrobat Reader.
I/ Information :
- Dùng PEid v0.92 để Detect , chúng ta biết chương trình không bị Pack , và
được viết bằng Microsoft Visual C++ 6.0 . Phù , thế là không phải Unpack .
Đỡ quá ! :w00t: :)
- Chạy thử chương trình , chúng ta thấy hiện lên một 1 Dialog Box : “Please
register pdf2html v1.6 !”và chương trình chỉ cho phép chúng ta chỉ dùng thử
nếu ta không đưa money cho họ :sad: . Đưa money á ! nghe lạ thế nhỉ .
Money còn phải dùng vào nhiều việc lắm , thông cảm nhé Software .
Hihi ! :D
OK ! Bây giờ chúng ta nhập đại 1 Email & Series vào cái hộp Dialog Box
xem nó thông báo thế nào . Ở đây em nhập như sau : Email
: & Series : 0361985 . Nhấn OK , một cái
nag văng ra , đập ngay vào mặt chúng ta , nó chửi chúng ta : "Series
number error, please check it and try again ". :wacko: 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
" , biết rồi nói mãi , làm gì mà cứ nhắc hoài thế , chờ tý nữa sẽ có Serial
(not money ) ngay thôi mà . Hihi ! :)
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 , click chuột
phải chọn Search for / All referenced text strings để tìm chuỗi thông báo trên
. A có rồi , cứ tưởng như soft trên phải dùng đến phương pháp Stack . Click
double lên chuỗi thông báo đó , ta trở lại Olly , đến được đoạn code sau :

Code:
0043C63B > \6A 10 PUSH 10 ; /Style =
MB_OK|MB_ICONHAND|MB_APPLMODAL
0043C63D . 6A 00 PUSH 0 ; |Title = NULL
0043C63F . 68 F0C04D00 PUSH pdf2html.004DC0F0 ; |Text
= "Series number error, please check it and try again. " >>> We’re here .
0043C644 . 8B55 08 MOV EDX, DWORD PTR SS:[EBP+8] ; |
- Lần ngược lên trên 1 chút . Chúng ta sẽ thấy đoạn mã sau . Đây là tử huyệt
:
Code:
0043C60C . FF15 18654A00 CALL NEAR DWORD PTR
DS:[<&USER32.GetD>; \GetDlgItemTextA >>>> Set BreakPoint Here .
0043C612 . 68 AC544E00 PUSH pdf2html.004E54AC ;
/Arg1 = 004E54AC ASCII "ZLTA987654325JNX"
II/ Cracking :
***OK ! sau khi đã đặt BP tại đó . Nhấn F9 để Run chương trình . Chúng ta
sẽ thấy xuất hiện 1 Dialog bắt nhập Email và Series . Ta nhập đại vào 1
Email , ở đây sẽ nhập là : Email : & Series
: 0361985 . 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. :w00t:
- 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 Serial :
Code:
0043C617 . E8 DBF5FFFF CALL pdf2html.0043BBF7 ;
\pdf2html.0043BBF7
*** Ở đâ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:
0043C60C . FF15 18654A00 CALL NEAR DWORD PTR
DS:[<&USER32.GetD>; \GetDlgItemTextA >>> We’re here .

0043C612 . 68 AC544E00 PUSH pdf2html.004E54AC ;
/Arg1 = 004E54AC ASCII "ZLTA987654325JNX"
0043C617 . E8 DBF5FFFF CALL pdf2html.0043BBF7 ;
\pdf2html.0043BBF7
Trace into
0043BBF7 /$ 55 PUSH EBP
0043BBF8 |. 8BEC MOV EBP, ESP
0043BBFA |. 83EC 3C SUB ESP, 3C
0043BBFD |. 56 PUSH ESI
0043BBFE |. 8B45 08 MOV EAX, [ARG.1] >>> Đưa Input vào
EAX
0043BC01 |. 8A08 MOV CL, BYTE PTR DS:[EAX] >>>đưa kí
tự đầu tiên của FS vào CL .
0043BC03 |. 884D F4 MOV BYTE PTR SS:[EBP-C], CL
0043BC06 |. C645 F5 00 MOV BYTE PTR SS:[EBP-B], 0
0043BC0A |. 8B55 08 MOV EDX, [ARG.1] >>> đưa Input vào
EDX .
0043BC0D |. 8A42 01 MOV AL, BYTE PTR DS:[EDX+1] >>>
đưa kí tự thứ 2 của FS vào AL
0043BC10 |. 8845 E8 MOV BYTE PTR SS:[EBP-18], AL
0043BC13 |. C645 E9 00 MOV BYTE PTR SS:[EBP-17], 0
0043BC17 |. 8B4D 08 MOV ECX, [ARG.1] >>> đưa Input vào
ECX
0043BC1A |. 8A51 0E MOV DL, BYTE PTR DS:[ECX+E] >>>
đưa kí tự thứ 15 của FS vào DL
0043BC1D |. 8855 DC MOV BYTE PTR SS:[EBP-24], DL
0043BC20 |. C645 DD 00 MOV BYTE PTR SS:[EBP-23], 0
0043BC24 |. 8B45 08 MOV EAX, [ARG.1] >>> đưa Input vào
EAX
0043BC27 |. 8A48 0F MOV CL, BYTE PTR DS:[EAX+F] >>> đưa

kí tự thứ 16 của FS vào CL
0043BC2A |. 884D D0 MOV BYTE PTR SS:[EBP-30], CL
0043BC2D |. C645 D1 00 MOV BYTE PTR SS:[EBP-2F], 0
0043BC31 |. 8B55 08 MOV EDX, [ARG.1] >>> đưa Input vào
EDX
0043BC34 |. 8A42 02 MOV AL, BYTE PTR DS:[EDX+2] >>> đưa
kí tự thứ 3 của FS vào AL
0043BC37 |. 8845 C4 MOV BYTE PTR SS:[EBP-3C], AL
0043BC3A |. C645 C5 00 MOV BYTE PTR SS:[EBP-3B], 0
0043BC3E |. 0FBE4D C4 MOVSX ECX, BYTE PTR SS:[EBP-3C]
>>> đưa kí tự thứ 3 của FS vào ECX
0043BC42 |. 83F9 24 CMP ECX, 24 >>> so sánh ký tự thứ 3 với ký
tự ‘ $ ‘
0043BC45 |. 74 04 JE SHORT pdf2html.0043BC4B >>> nếu bằng
thì tiếp tục thực hiện . Còn nếu ko bằng thì
0043BC47 |. 33C0 XOR EAX, EAX
0043BC49 |. EB 67 JMP SHORT pdf2html.0043BCB2 >>> nhảy
đến bad boy
0043BC4B |> \8D55 F4 LEA EDX, [LOCAL.3]
0043BC4E |. 52 PUSH EDX
0043BC4F |. E8 2CBA0300 CALL pdf2html.00477680
0043BC54 |. 83C4 04 ADD ESP, 4
0043BC57 |. 8BF0 MOV ESI, EAX
0043BC59 |. 8D45 D0 LEA EAX, [LOCAL.12]
0043BC5C |. 50 PUSH EAX
0043BC5D |. E8 1EBA0300 CALL pdf2html.00477680
0043BC62 |. 83C4 04 ADD ESP, 4
0043BC65 |. 03F0 ADD ESI, EAX >>> lấy tổng ký tự thứ nhất +
ký tự thứ 16 .
0043BC67 |. 83FE 0A CMP ESI, 0A >>>> so sánh với 0xA

0043BC6A |. 75 23 JNZ SHORT pdf2html.0043BC8F >>> nhảy
đến Bad boy nếu ko bằng
0043BC6C |. 8D4D E8 LEA ECX, [LOCAL.6]
0043BC6F |. 51 PUSH ECX
0043BC70 |. E8 0BBA0300 CALL pdf2html.00477680
0043BC75 |. 83C4 04 ADD ESP, 4
0043BC78 |. 8BF0 MOV ESI, EAX
0043BC7A |. 8D55 DC LEA EDX, [LOCAL.9]
0043BC7D |. 52 PUSH EDX
0043BC7E |. E8 FDB90300 CALL pdf2html.00477680
0043BC83 |. 83C4 04 ADD ESP, 4
0043BC86 |. 03F0 ADD ESI, EAX >>>lấy tổng ký tự thứ 2 + ký tự
thứ 15
0043BC88 |. 83FE 0A CMP ESI, 0A >>> so sánh với 0xA
0043BC8B |. 75 02 JNZ SHORT pdf2html.0043BC8F >>> nhảy
đến Bad boy nếu ko bằng
0043BC8D |. EB 04 JMP SHORT pdf2html.0043BC93
0043BC8F |> 33C0 XOR EAX, EAX
0043BC91 |. EB 1F JMP SHORT pdf2html.0043BCB2
0043BC93 |> 8B45 08 MOV EAX, [ARG.1] >>> đưa Input vào
EAX .
0043BC96 |. 8A48 03 MOV CL, BYTE PTR DS:[EAX+3] >>> đưa
kí tự thứ 4 của FS vào CL
0043BC99 |. 884D C4 MOV BYTE PTR SS:[EBP-3C], CL
0043BC9C |. C645 C5 00 MOV BYTE PTR SS:[EBP-3B], 0
0043BCA0 |. 0FBE55 C4 MOVSX EDX, BYTE PTR SS:[EBP-3C]
>>>đưa ký tự thứ 4 vào EDX .
0043BCA4 |. 83FA 2F CMP EDX, 2F >>> so sánh ký tự thứ 4 với
ký tự ‘ / ‘
0043BCA7 |. 74 04 JE SHORT pdf2html.0043BCAD

0043BCA9 |. 33C0 XOR EAX, EAX
0043BCAB |. EB 05 JMP SHORT pdf2html.0043BCB2
0043BCAD |> B8 01000000 MOV EAX, 1
0043BCB2 |> 5E POP ESI
0043BCB3 |. 8BE5 MOV ESP, EBP
0043BCB5 |. 5D POP EBP
0043BCB6 \. C3 RETN

0043C61C . 83C4 04 ADD ESP, 4
0043C61F . 85C0 TEST EAX, EAX
0043C621 . 74 18 JE SHORT pdf2html.0043C63B >>> nếu
EAX=0 thì bắn nag .
0043C623 . 6A 40 PUSH 40 ; /Style =
MB_OK|MB_ICONASTERISK|MB_APPLMODAL
0043C625 . 68 B4C04D00 PUSH pdf2html.004DC0B4 ;
|Title = "Thank you registered"
0043C62A . 68 CCC04D00 PUSH pdf2html.004DC0CC ;
|Text = "Thank you registered pdf2html v1.6."
***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 :
1. Chiều dài tối thiểu phải là 16 ký tự
2. ở các vị trí thứ 3,4 trong chuỗi Ser phải là các ký tự mặc định :
vị trí thứ 3 là $
vị trí thứ 4 là /
3.Và các ký tự ở vị trí S[0] , S[1] , S[14] , S[15] phải là các ký tự trong
khoảng từ 1> 9 . Và chúng phải thoả mãn điều kiện sau :
S[0] + S[15] = 0xA
S[1] + S[14] = 0xA
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à :

12$/012345678989
*** Tắt Ollydbg , chạy thử chương trình , nhập vào :
Email :
Series : 12$/012345678989
Hoặc :
Email :
Series : 62$/456789897684
OK ! Done ! Chương trình cảm ơn chúng rối rít ta kìa “thanks ……”, ngại
quá :wub: (chúng ta đâu có đưa money cho họ ) . Thế mà vừa lúc trước
mắng ta te tua : serial :D tầm bậy (mà cũng đúng thôi ) . Đã 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…… ! :D
Enjoy !
Chúc thành công !
SoftWare : PDF2TXT v3.0 .
Copyright by : Copyright @ 2001-2003 verypdf.com Inc
Packed : N/A .
Language : Microsoft Visual C++ 6.0
Crack Tools : OllyDbg 1.09d, PEiD 0.92
Unpack tools : N/A .
Request : Real Serial .
Introduction : PDF2TXT v3.0 .
PDF2TXT(pdf to text) software can extract text from pdf files it does
NOT need Adobe Acrobat software. PDF2TXT(pdf to text) processes at
very high speed and you can convert multiple pdf files to text files at one
time.
I/ Information :
- OK! Bây giờ chúng ta lại bắt đầu làm những động tác “nhà nghề” quen
thuộc . Now, Let’s go ! :w00t: . Dùng PEid v0.92 để Detect , chúng ta biết
chương trình không bị Pack , và được viết bằng Microsoft Visual C++ 6.0 .

Phù , thế là không phải Unpack . Đỡ quá ! :D
- Chạy thử chương trình , chúng ta thấy hiện lên một 1 Dialog Box : “Please
register PDF2TXT v3.0 “ , và chương trình chỉ cho phép chúng ta dùng thử
100 lần nếu chúng ta ko đưa money cho họ và đổi lại họ sẽ đưa số Serial cho
chúng ta . Đưa money để buy soft á . Nghe hơi lạ tai , chúng ta đâu có thói
quen này , và lần này cũng vậy thôi hãng VeryPdf ạ ! Hihiiiii :P Muốn
vậy thì chúng ta chỉ có 1 cách duy nhất là Kill & Kill nó thôi . Thông cảm
nhé hãng VeryPdf , $ còn phải dùng vào nhiều việc lém . haha ! :)
- OK ! bây giờ nhìn vào Dialog ta thấy mã ID của Software : Product ID :
[ZLTA987654325JNX] (cái này ta ko cần quan tâm làm gì cho mệt óc ) .
Nhìn xuống phía dưới là chỗ mà ta phải nhập Series , đây mới là chỗ ta cần .
OK ! ta nhập đại vào 1 cái Series xem nó bảo sao . Ở đây em nhập là :
[B]Series : 0361985 . [/b] Nhấn OK . Oh ! 1 cái nag văng ra như súng AK
đập ngay vào mặt chúng ta : "Series number error , please check it and
try again " . Nó chửi Serial củ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 ! :cool: 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 " , 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 )
ngay thôi mà . Hihi ! :wub:
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 , 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ất mấy vài phút mà vẫn không thấy cá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 Stackcủ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 , ở đây ta nhập là
Series : 0361985. 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:
Address Stack Procedure / arguments Called from
Frame
0012F548 10001A39 ? USER32.MessageBoxA
verypdf.10001A33
0012F54C 000E01F6 hOwner = 000E01F6 ('Please registe
0012F550 100172F4 Text = "Series number error, pleas
0012F554 00000000 Title = NULL
0012F558 00000010 Style = MB_OK|MB_ICONHAND|MB_APPLM
***Double-click vào cột Called from của dòng màu đỏ này , chúng ta đến
địa chỉ sau :
Code:
10001A2D 68 F4720110 PUSH verypdf.100172F4 ; ASCII
"Series number error, please check it and try again."
10001A32 56 PUSH ESI
10001A33 FF15 3C330110 CALL NEAR DWORD PTR
DS:[<&USER32.Mess>; USER32.MessageBoxA ===> We’re here .
10001A39 68 FB030000 PUSH 3FB ===> Set BreakPoint Here .
10001A3E 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 thô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 :
Code:
100019D9 FF15 34330110 CALL NEAR DWORD PTR
DS:[<&USER32.GetD>; USER32.GetDlgItemTextA ===> Set

BreakPoint Here .
100019DF 68 30A80110 PUSH verypdf.1001A830 ; 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. :w00t:
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 :
Code:
100019E4 E8 87F7FFFF CALL verypdf.10001170
Ở đâ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:
100019D9 FF15 34330110 CALL NEAR DWORD PTR
DS:[<&USER32.GetD>; USER32.GetDlgItemTextA ===> We're here .
100019DF 68 30A80110 PUSH verypdf.1001A830 ; ASCII
"0361985"
100019E4 E8 87F7FFFF CALL verypdf.10001170 ===> gọi hàm
check Serial .
Trace Into
-
10001170 83EC 18 SUB ESP, 18
10001173 53 PUSH EBX
10001174 56 PUSH ESI
10001175 8B7424 24 MOV ESI, DWORD PTR SS:[ESP+24] >>>
Đưa Input vào ESI
10001179 8D5424 08 LEA EDX, DWORD PTR SS:[ESP+8]
1000117D 57 PUSH EDI

1000117E 32DB XOR BL, BL
10001180 8A46 0E MOV AL, BYTE PTR DS:[ESI+E] ===> Đưa
ký tự thứ 15 trong chuỗi FS vào AL
10001183 8A4E 0F MOV CL, BYTE PTR DS:[ESI+F] ===>
Đưa ký tự thứ 16 trong chuỗi FS vào CL
10001186 52 PUSH EDX
10001187 884424 1C MOV BYTE PTR SS:[ESP+1C], AL ===>
đoạn SS:[ESP+1C] chứa ký tự thứ 15
1000118B 885C24 1D MOV BYTE PTR SS:[ESP+1D], BL
1000118F 884C24 10 MOV BYTE PTR SS:[ESP+10], CL ===>
đoạn SS:[ESP+10] chứa ký tự thứ 16
10001193 885C24 11 MOV BYTE PTR SS:[ESP+11], BL
10001197 E8 55160000 CALL verypdf.100027F1
1000119C 8BF8 MOV EDI, EAX ===> Đưa ký tự thứ 16 trong
chuỗi FS vào EDI
1000119E 8D4424 1C LEA EAX, DWORD PTR SS:[ESP+1C]
===> EAX chứa ký tự thứ 15
100011A2 50 PUSH EAX
100011A3 E8 49160000 CALL verypdf.100027F1
100011A8 03F8 ADD EDI, EAX ===> lấy tổng của ký tự 15 +
ký tự 16
100011AA 83C4 08 ADD ESP, 8
100011AD 83FF 0B CMP EDI, 0B ===> so sánh với 0B
100011B0 74 09 JE SHORT verypdf.100011BB ==> Nếu bằng
thì tiếp tục quá trình tính toán Serial .
100011B2 5F POP EDI
100011B3 5E POP ESI
100011B4 33C0 XOR EAX, EAX
100011B6 5B POP EBX
100011B7 83C4 18 ADD ESP, 18

100011BA C3 RETN
100011BB 8A0E MOV CL, BYTE PTR DS:[ESI] ===> Đưa ký
tự thứ nhất trong chuỗi FS vào CL
100011BD 8A56 01 MOV DL, BYTE PTR DS:[ESI+1] ===>
Đưa ký tự thứ 2 trong chuỗi FS vào DL
100011C0 8D4424 0C LEA EAX, DWORD PTR SS:[ESP+C]
100011C4 884C24 18 MOV BYTE PTR SS:[ESP+18], CL
100011C8 50 PUSH EAX
100011C9 885C24 1D MOV BYTE PTR SS:[ESP+1D], BL
100011CD 885424 10 MOV BYTE PTR SS:[ESP+10], DL
100011D1 885C24 11 MOV BYTE PTR SS:[ESP+11], BL
100011D5 E8 17160000 CALL verypdf.100027F1
100011DA 8D4C24 1C LEA ECX, DWORD PTR SS:[ESP+1C]
100011DE 8BF8 MOV EDI, EAX
100011E0 51 PUSH ECX
100011E1 E8 0B160000 CALL verypdf.100027F1
100011E6 03F8 ADD EDI, EAX ===> lấy tổng của ký tự thứ
nhất + ký tự thứ 2
100011E8 83C4 08 ADD ESP, 8
100011EB 83FF 08 CMP EDI, 8 ===> so sánh với 8
100011EE 74 09 JE SHORT verypdf.100011F9 ===> Nếu bằng
thì tiếp tục quá trình tính toán Serial .
100011F0 5F POP EDI
100011F1 5E POP ESI
100011F2 33C0 XOR EAX, EAX
100011F4 5B POP EBX
100011F5 83C4 18 ADD ESP, 18
100011F8 C3 RETN
100011F9 8A4E 05 MOV CL, BYTE PTR DS:[ESI+5] ===> Đưa
ký tự thứ 6 trong chuỗi FS vào CL

100011FC B0 24 MOV AL, 24 ===> Đưa ký tự ' $ ' vào AL
100011FE 3AC8 CMP CL, AL ===> so sánh ký tự thứ 6 với ký
tự ' $ '
10001200 74 09 JE SHORT verypdf.1000120B ===> Nếu bằng
thì tiếp tục quá trình tính toán Serial .
10001202 5F POP EDI
10001203 5E POP ESI
10001204 33C0 XOR EAX, EAX
10001206 5B POP EBX
10001207 83C4 18 ADD ESP, 18
1000120A C3 RETN
1000120B 3846 06 CMP BYTE PTR DS:[ESI+6], AL ===> so
sánh ký tự thứ 7 với ký tự ' $ '
1000120E 74 09 JE SHORT verypdf.10001219 ===> Nếu bằng
thì tiếp tục quá trình tính toán Serial .
10001210 5F POP EDI
10001211 5E POP ESI
10001212 33C0 XOR EAX, EAX
10001214 5B POP EBX
10001215 83C4 18 ADD ESP, 18
10001218 C3 RETN
10001219 8A4E 07 MOV CL, BYTE PTR DS:[ESI+7] ===>
Đưa ký tự thứ 8 trong chuỗi FS vào CL
1000121C 33C0 XOR EAX, EAX
1000121E 80F9 40 CMP CL, 40 ===> so sánh ký tự thứ 8 này với
ký tự ' @ '
10001221 5F POP EDI
10001222 5E POP ESI
10001223 5B POP EBX
10001224 0F94C0 SETE AL ===> gán EAX== 0x1

10001227 83C4 18 ADD ESP, 18
1000122A C3 RETN

100019E9 83C4 04 ADD ESP, 4
100019EC 85C0 TEST EAX, EAX ===> kiểm tra EAX= 0 ?
100019EE 74 39 JE SHORT verypdf.10001A29 ===> nếu
EAX=0 thì nhảy đến bắn Bad boy .
100019F0 6A 40 PUSH 40
100019F2 68 50730110 PUSH verypdf.10017350 ; ASCII
"Thank you purchased the"
100019F7 68 28730110 PUSH verypdf.10017328 ; ASCII
"Thank you purchased the PDF2TXT v3.0."

×