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

Cracker Handbook 1.0 part 301 ppt

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 (131.08 KB, 6 trang )

Chương trình này ngoài việc dễ bị crack số đăng kí ra ta còn có thể crack cả
password, thật vậy:

Khi khởi động chương trình yêu cầu ta nhập mật khẩu (chẳng hạn mật khẩu thực
của em là 123456789 mà em chỉ nhập 1234)
chương trình sẽ báo lỗi -> cách crack cũng như bình thường



Ta tìm thấy chuỗi này ở
Code:
00408771 . 68 1C174500 PUSH IEWatche.0045171C ; ASCII
"Incorrect password, please input again."

Code:
00408742 . E8 49AEFFFF CALL IEWatche.00403590 +++++===>> set bp
here
00408747 . 8B0D 30754600 MOV ECX,DWORD PTR DS:[467530]
+++++===>> Fake password
0040874D 8B5424 18 MOV EDX,DWORD PTR SS:[ESP+18]
+++++===>> Real Password
00408751 . 51 PUSH ECX
00408752 . 52 PUSH EDX
00408753 . E8 DA4E0200 CALL IEWatche.0042D632 +++++===>> gọi hàm
so sánh
00408758 . 83C4 14 ADD ESP,14
0040875B . 85C0 TEST EAX,EAX +++++===>> Nếu EAX = 0 password
entered was OK
0040875D .^0F84 9CFEFFFF JE IEWatche.004085FF +++++===>> Tiếp tục
khởi động chương trình
00408763 . 8B87 64020000 MOV EAX,DWORD PTR DS:[EDI+264]


00408769 . 50 PUSH EAX
0040876A . 51 PUSH ECX
0040876B . 8BCC MOV ECX,ESP
0040876D . 896424 1C MOV DWORD PTR SS:[ESP+1C],ESP
00408771 . 68 1C174500 PUSH IEWatche.0045171C ; ASCII
"Incorrect password, please input again."
00408776 . E8 959AFFFF CALL IEWatche.00402210
0040877B . E8 00540100 CALL IEWatche.0041DB80
Chương trình này bảo mật kém quá phải không các bác???
Takada(REA)
Crack bộ Soft cua trang www.jklnsoft.com

REA - Reverse Engineering Associatinon SoftWare

Homepage :
Production : JKLNSoft , Inc
SoftWare : Batch Image Resizer v2.01
Copyright by : Copyright (C) 2004 JKLNSoft.com
Packed : N/A
Language : Microsoft Visual C++ 6.0
Crack Tools : OllyDbg 1.09d, PEiD v0.92
Unpack tools : N/A
Request : Real Serial .
Introduction : Batch Image Resizer v2.01



I/ Information :
- Đồ nghề các bạn để hết đâu rùi , lôi ra đi nào :w00t: . Now , Let's go ! Như được
lập trình sẵn cứ thế ta làm : Dùng PEid v0.92 để Detect , chúng ta biết chương

trình ko bị pack & được viết bằng Microsoft Visual C++ 6.0 . Phù thế là ko phải
unpack > sướng . hihiiii :)

- Vẫn là động tác quen thuộc : Chạy thử chương trình , chúng ta thấy hiện lên một
1 Dialog Box : “Wellcome to Batch Image Resizer ”. Nhìn xuống dưới 1 chút ta
thấy dòng : "Try to register " , nhìn thấy mà tức cả mắt :(( . Nó đồng nghĩa với
việc họ chỉ cho chúng ta dùng thử nếu chúng ta ko Register (tức là ta phải đưa
money cho họ đó bạn :wacko: ) . Đưa money để buy soft , chúng ta đâu có thói
quen này . Và lần này cũng vậy thôi , thông cảm nhé hãng Jklnsoft . "no Money,
no Register , and Free all " ==> đó là mục tiêu của chúng ta . Hihiiiii ! :D

- OK ! típ nhé . Ở đây ta còn thấy 1 button : Continue , click thử vào xem sao . Oh
! Cái đầu tiên chúng ta cần tìm là chỗ họ bắt ta Regiter , nhìn xuống dưới , Oh !
:w00t: đây rùi , button : Enter Code . Click vào đó , chúng ta sẽ điền các thông tin
cần thiết xem nó bảo sao . Ở đây mình nhập là : Email
: & Code : 0361985 . Nhấn OK , một cái Nag
văng ra , nó làm ta mừng hụt : "Thanks for Registratinon. Please restart Batch
Image Resizer " :wacko: . Nhấn tiếp OK , mở lại chương trình ta vẫn thấy hiện
Dialog box bắt đăng ký . Như vậy ta suy đoán chương trình sẽ lưu thông tin ta
Registed vào Reg rồi check nó mỗi khi ta Run chương trình . :)

*** Ok ! nghĩ sao làm vậy .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 đó click chuột
phải chọn Search for / All referenced text strings để tìm chuỗi thông báo trên . ah !
nó đây rùi , double click vào String đó ta được đưa trở lại Olly . Ặc ặc :(( nhìn
lướt qua mà thấy toàn là hàm Call MFC , ít manh mối quá . Để coi trong mớ bòng
bong String có gì đáng giá ko ? ở đây chúng ta tìm thấy 1 loạt String như sau :
Code:
Text strings referenced in BatchIma:.text
Address Disassembly Text string


00405AAB PUSH BatchIma.0041D35C ASCII "Email"
00405AB4 PUSH BatchIma.0041D348 ASCII "Registration Info"
00405AC6 PUSH BatchIma.0041D334 ASCII "Registration Code"
00405ACF PUSH BatchIma.0041D348 ASCII "Registration Info"
00405AEC PUSH BatchIma.0041D494 ASCII ""
00405B12 PUSH BatchIma.0041D480 ASCII
"54QEKKCHERPL6X8Q"
00405C33 PUSH BatchIma.0041D4B8 ASCII "aaaaaaaa"
00405D98 PUSH BatchIma.0041D4A4 ASCII "0000000000000000"
- Chúng ta thấy 2 Template String :
Code:
00405AEC PUSH BatchIma.0041D494 ASCII ""
00405B12 PUSH BatchIma.0041D480 ASCII
"54QEKKCHERPL6X8Q"
một ý nghĩ chạy qua trong đầu : biết đâu 2 Template String này lại là RU & RS thì
sao ? nghĩ sao làm vậy , ta chạy chương trình Batch Image , nhập vào 2 Template
String trên , hiện nag , restart lại chương trình , chậc chậc nó vẫn bắt ta
Register , như vậy 2 String trên là ko đúng rồi . :sick:
Trở lại Olly , ta cứ thử Double click vào Temp String trên xem có khai thác được
gì từ đây ko ? Ta được đưa đến đoạn Code sau : :w00t:
Code:
00405B12 |. 68 80D44100 PUSH BatchIma.0041D480 ; ASCII
"54QEKKCHERPL6X8Q" ==> We're here .
00405B17 |. 50 PUSH EAX
00405B18 |. FFD7 CALL NEAR EDI
00405B1A |. 83C4 08 ADD ESP, 8
00405B1D |. 85C0 TEST EAX, EAX
00405B1F |. 75 0E JNZ SHORT BatchIma.00405B2F
00405B21 |. 68 04DB4100 PUSH BatchIma.0041DB04

- Nhìn xuống phía dưới 1 chút chúng ta sẽ Set BreakPoint tại đây :
Code:
00405B58 |. 50 PUSH EAX ; |Arg1
00405B59 |. E8 82000000 CALL BatchIma.00405BE0 ;
\BatchIma.00405BE0 ==> Set BreakPoint here .

II/ Craking :

***OK, sau khi đặt BP tại đó , chúng ta nhấn F9 để Run chương trình , Olly sẽ Ice
tiến trình tại điểm mà ta vừa đặt BP . Chúng ta sẽ Trace Into vào trong hàm Call
này nếu bạn muốn xem cơ chế tạo Ser của nó . có thể trace over cũng lấy đc RS :
:happy:
Code:
00405B59 |. E8 82000000 CALL BatchIma.00405BE0 ;
\BatchIma.00405BE0 ==> We're here .
Trace Into
-

00405BE0 /$ 6A FF PUSH -1
00405BE2 |. 68 D74A4100 PUSH BatchIma.00414AD7 ; SE
handler installation
00405BE7 |. 64:A1 0000000>MOV EAX, DWORD PTR FS:[0]
00405BED |. 50 PUSH EAX
00405BEE |. 64:8925 00000>MOV DWORD PTR FS:[0], ESP
00405BF5 |. 83EC 2C SUB ESP, 2C
00405BF8 |. 53 PUSH EBX
00405BF9 |. 56 PUSH ESI
00405BFA |. C74424 0C 000>MOV DWORD PTR SS:[ESP+C], 0
00405C02 |. 8D4424 48 LEA EAX, DWORD PTR SS:[ESP+48]
00405C06 |. BB 01000000 MOV EBX, 1

00405C0B |. 50 PUSH EAX
00405C0C |. 8D4C24 0C LEA ECX, DWORD PTR SS:[ESP+C]
00405C10 |. 895C24 40 MOV DWORD PTR SS:[ESP+40], EBX
00405C14 |. E8 25DF0000 CALL <JMP.&MFC42.#535>
00405C19 |. 8B4C24 08 MOV ECX, DWORD PTR SS:[ESP+8] ==> đưa
Input vào ECX .
00405C1D |. C64424 3C 02 MOV BYTE PTR SS:[ESP+3C], 2
00405C22 |. 8B41 F8 MOV EAX, DWORD PTR DS:[ECX-8]
00405C25 |. 83F8 0A CMP EAX, 0A
00405C28 |. 0F8E 98010000 JLE BatchIma.00405DC6
00405C2E |. 83F8 10 CMP EAX, 10
00405C31 |. 7D 0E JGE SHORT BatchIma.00405C41
00405C33 |. 68 B8D44100 PUSH BatchIma.0041D4B8 ; ASCII
"aaaaaaaa"
00405C38 |. 8D4C24 0C LEA ECX, DWORD PTR SS:[ESP+C]
00405C3C |. E8 91DE0000 CALL <JMP.&MFC42.#941>
00405C41 |> 8B7424 08 MOV ESI, DWORD PTR SS:[ESP+8] ==> đưa
Input vào ESI
00405C45 |. 8D4424 20 LEA EAX, DWORD PTR SS:[ESP+20]
00405C49 |. 33D2 XOR EDX, EDX ==> bắt đầu tính toán với EDX=0
00405C4B |. 2BF0 SUB ESI, EAX
======chương trình sẽ thực hiện vòng lặp này để lấy và check từng
char FU mà ta nhập vào======
00405C4D |> 8D4C14 20 /LEA ECX, DWORD PTR SS:[ESP+EDX+20]
00405C51 |. 8A040E |MOV AL, BYTE PTR DS:[ESI+ECX] ==> đưa
S[0] vào AL
00405C54 |. 3C 61 |CMP AL, 61 ==> so sánh S[0] với 61
00405C56 |. 8801 |MOV BYTE PTR DS:[ECX], AL
00405C58 |. 7C 08 |JL SHORT BatchIma.00405C62 ==> nhảy nếu nhỏ
hơn

00405C5A |. 3C 66 |CMP AL, 66 ==> so sánh S[0] với 66
00405C5C |. 7F 04 |JG SHORT BatchIma.00405C62 ==> nhảy nếu lớn
hơn
00405C5E |. 24 CE |AND AL, 0CE ==> nếu nhỏ hơn thì And tiếp AL với
0CE
00405C60 |. 8801 |MOV BYTE PTR DS:[ECX], AL
00405C62 |> 8A01 |MOV AL, BYTE PTR DS:[ECX] ==> đưa S[0] vào
AL
00405C64 |. 3C 41 |CMP AL, 41 ==> so sánh S[0] với 41
00405C66 |. 7C 08 |JL SHORT BatchIma.00405C70 ==> nhảy nếu nhỏ
hơn
00405C68 |. 3C 46 |CMP AL, 46 ==> so sánh S[0] với 46
00405C6A |. 7F 04 |JG SHORT BatchIma.00405C70 ==> nhảy nếu lớn
hơn
00405C6C |. 2C 42 |SUB AL, 42 ==> nếu nhỏ hơn thì tiếp tục trừ AL cho
42
00405C6E |. EB 02 |JMP SHORT BatchIma.00405C72
00405C70 |> 2C 32 |SUB AL, 32 ==> trừ AL cho 32
00405C72 |> 42 |INC EDX ==> tăng EDX lên 1
00405C73 |. 8801 |MOV BYTE PTR DS:[ECX], AL
00405C75 |. 83FA 10 |CMP EDX, 10 ==> so sánh EDX với 10
00405C78 |.^ 7C D3 \JL SHORT BatchIma.00405C4D ==> tiếp tục vòng
lặp nếu nhỏ hơn .
=======lặp 16 lần thì check xong & hết vòng lặp thứ nhất======

00405C7A |. 55 PUSH EBP
00405C7B |. 8D6C24 14 LEA EBP, DWORD PTR SS:[ESP+14]
00405C7F |. 57 PUSH EDI
00405C80 |. B8 06000000 MOV EAX, 6
00405C85 |. 83ED 06 SUB EBP, 6

========bắt đầu vòng lặp thứ 2 để tạo Rel Ser========

00405C88 |> 8D70 FA /LEA ESI, DWORD PTR DS:[EAX-6]

×