1. Trang chủ
  2. » Công Nghệ Thông Tin

Cracker Handbook 1.0 part 303 docx

7 72 1
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 7
Dung lượng 92,01 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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.. nghĩ sao làm vậy .Bây giờ chúng ta hãy load chương trình vào trong OllyDb

Trang 1

ký :-o 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 :w00t:

*** 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 ppp:.text

Address Disassembly Text string

004023A7 PUSH ppp.004181B4 ASCII

"aaaaaaaaaaaaaaaaaaaaaaaaa"

0040250E PUSH ppp.004181A0 ASCII "0000000000000000"

0040259F PUSH ppp.0041817C ASCII "UserName"

004025A8 PUSH ppp.00418168 ASCII "Registration Info"

004025BA PUSH ppp.004181D0 ASCII "Registration Code" 004025C3 PUSH ppp.00418168 ASCII "Registration Info"

Theo như kinh nghiệm cracked soft trên thì ta thấy chuỗi toàn char 0 này :

“0000000000000000” dường như là 1 Template String để chương trình đặt lần

lượt từng char RS sau khi đã mã hoá vào đó

OK ! bây giờ chúng ta Double click vào String đó xem sao , chúng ta sẽ đến 1 Procedure Code Đặt vệt sáng vào đầu Procedure này , nhấn Ctrl + R để mở cửa sổ

“References in pp ” , ta sẽ thấy Procedure này được gọi bởi 1 hàm Call : :w00t: Code:

004025F5 CALL ppp.00402360

*** Double click vào hàm Call này chúng ta sẽ đến được đoạn Code sau :

Code:

004025F4 | 50 PUSH EAX ; |Arg1

004025F5 | E8 66FDFFFF CALL ppp.00402360 ;

\ppp.00402360 ===> Set BreakPoint here

004025FA | 8B7424 0C MOV ESI, DWORD PTR SS:[ESP+C]

004025FE | 8B4424 08 MOV EAX, DWORD PTR SS:[ESP+8]

Trang 2

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 : Code:

004025F5 | E8 66FDFFFF CALL ppp.00402360 ;

\ppp.00402360 ==> We're here

-Trace

into -

00402360 /$ 6A FF PUSH -1

00402362 | 68 87F34000 PUSH ppp.0040F387 ; SE handler installation

00402367 | 64:A1 0000000>MOV EAX, DWORD PTR FS:[0]

0040236D | 50 PUSH EAX

0040236E | 64:8925 00000>MOV DWORD PTR FS:[0], ESP

00402375 | 83EC 2C SUB ESP, 2C

00402378 | C74424 04 000>MOV DWORD PTR SS:[ESP+4], 0

00402380 | 8D4424 40 LEA EAX, DWORD PTR SS:[ESP+40]

00402384 | 8D4C24 00 LEA ECX, DWORD PTR SS:[ESP]

00402388 | 50 PUSH EAX

00402389 | C74424 38 010>MOV DWORD PTR SS:[ESP+38], 1

00402391 | E8 F8C20000 CALL <JMP.&MFC42.#535>

00402396 | 8B4C24 00 MOV ECX, DWORD PTR SS:[ESP] ==> đưa Input vào ECX

0040239A | C64424 34 02 MOV BYTE PTR SS:[ESP+34], 2

0040239F | 8B41 F8 MOV EAX, DWORD PTR DS:[ECX-8]

004023A2 | 83F8 10 CMP EAX, 10

004023A5 | 7D 0E JGE SHORT ppp.004023B5

004023A7 | 68 B4814100 PUSH ppp.004181B4 ; ASCII

"aaaaaaaaaaaaaaaaaaaaaaaaa"

004023AC | 8D4C24 04 LEA ECX, DWORD PTR SS:[ESP+4]

004023B0 | E8 35C10000 CALL <JMP.&MFC42.#941>

004023B5 |> 56 PUSH ESI

004023B6 | 8B7424 04 MOV ESI, DWORD PTR SS:[ESP+4] ==> đưa Input vào ESI

004023BA | 8D4424 1C LEA EAX, DWORD PTR SS:[ESP+1C]

004023BE | 33D2 XOR EDX, EDX ==> bắt đầu tính toán với EDX=0

Trang 3

004023C0 | 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====== -

004023C2 |> 8D4C14 1C /LEA ECX, DWORD PTR SS:[ESP+EDX+1C] 004023C6 | 8A040E |MOV AL, BYTE PTR DS:[ESI+ECX] ==> đưa S[0] vào AL

004023C9 | 3C 61 |CMP AL, 61 ==> so sánh S[0] với 61

004023CB | 8801 |MOV BYTE PTR DS:[ECX], AL

004023CD | 7C 08 |JL SHORT ppp.004023D7 ==> nhảy nếu nhỏ hơn 004023CF | 3C 66 |CMP AL, 66 ==> so sánh S[0] với 66

004023D1 | 7F 04 |JG SHORT ppp.004023D7 ==> nhảy nếu lớn hơn 004023D3 | 24 CE |AND AL, 0CE ==> nếu nhỏ hơn thì And tiếp AL với 0CE

004023D5 | 8801 |MOV BYTE PTR DS:[ECX], AL

004023D7 |> 8A01 |MOV AL, BYTE PTR DS:[ECX] ==> đưa S[0] vào

AL

004023D9 | 3C 41 |CMP AL, 41 ==> so sánh S[0] với 41

004023DB | 7C 08 |JL SHORT ppp.004023E5 ==> nhảy nếu nhỏ hơn 004023DD | 3C 46 |CMP AL, 46 ==> so sánh S[0] với 46

004023DF | 7F 04 |JG SHORT ppp.004023E5 ==> nhảy nếu lớn hơn 004023E1 | 2C 42 |SUB AL, 42 ==> nếu nhỏ hơn thì tiếp tục trừ AL cho

42

004023E3 | EB 02 |JMP SHORT ppp.004023E7

004023E5 |> 2C 32 |SUB AL, 32 ==> trừ tiếp AL cho 32

004023E7 |> 42 |INC EDX ==> tăng EDX lên 1

004023E8 | 8801 |MOV BYTE PTR DS:[ECX], AL

004023EA | 83FA 10 |CMP EDX, 10 ==> so sánh EDX với 10

004023ED |.^ 7C D3 \JL SHORT ppp.004023C2 ==> 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====== -

004023EF | 53 PUSH EBX

004023F0 | 55 PUSH EBP

004023F1 | 8D6C24 14 LEA EBP, DWORD PTR SS:[ESP+14]

004023F5 | 57 PUSH EDI

004023F6 | B8 06000000 MOV EAX, 6

004023FB | 83ED 06 SUB EBP, 6

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

Trang 4

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

00402401 | 8BD8 |MOV EBX, EAX

00402403 | 8BCE |MOV ECX, ESI

00402405 | 83E3 0F |AND EBX, 0F

00402408 | 83E1 0F |AND ECX, 0F

0040240B | 8D78 01 |LEA EDI, DWORD PTR DS:[EAX+1]

0040240E | 0FBE5C1C 28 |MOVSX EBX, BYTE PTR SS:[ESP+EBX+28]

00402413 | 0FBE540C 28 |MOVSX EDX, BYTE PTR SS:[ESP+ECX+28]

00402418 | 8D48 FC |LEA ECX, DWORD PTR DS:[EAX-4]

0040241B | 03D6 |ADD EDX, ESI

0040241D | 83E1 0F |AND ECX, 0F

00402420 | 0FBE4C0C 28 |MOVSX ECX, BYTE PTR SS:[ESP+ECX+28]

00402425 | 0FAFD1 |IMUL EDX, ECX

00402428 | 8D48 FD |LEA ECX, DWORD PTR DS:[EAX-3]

0040242B | 83E1 0F |AND ECX, 0F

0040242E | 0FBE4C0C 28 |MOVSX ECX, BYTE PTR SS:[ESP+ECX+28]

00402433 | 03CE |ADD ECX, ESI

00402435 | 0FAFCB |IMUL ECX, EBX

00402438 | 03D1 |ADD EDX, ECX

0040243A | 8D48 FB |LEA ECX, DWORD PTR DS:[EAX-5]

0040243D | 8D58 FF |LEA EBX, DWORD PTR DS:[EAX-1]

00402440 | 83E1 0F |AND ECX, 0F

00402443 | 83E3 0F |AND EBX, 0F

00402446 | 0FBE4C0C 28 |MOVSX ECX, BYTE PTR SS:[ESP+ECX+28] 0040244B | 0FBE5C1C 28 |MOVSX EBX, BYTE PTR SS:[ESP+EBX+28]

00402450 | 0FAFCB |IMUL ECX, EBX

00402453 | 03D1 |ADD EDX, ECX

00402455 | 8D48 FE |LEA ECX, DWORD PTR DS:[EAX-2]

00402458 | 8BDF |MOV EBX, EDI

0040245A | 83E1 0F |AND ECX, 0F

0040245D | 83E3 0F |AND EBX, 0F

00402460 | 0FBE4C0C 28 |MOVSX ECX, BYTE PTR SS:[ESP+ECX+28]

00402465 | 0FBE5C1C 28 |MOVSX EBX, BYTE PTR SS:[ESP+EBX+28] 0040246A | 0FAFCB |IMUL ECX, EBX

0040246D | 03D1 |ADD EDX, ECX

0040246F | 8D48 03 |LEA ECX, DWORD PTR DS:[EAX+3]

00402472 | 83E1 0F |AND ECX, 0F

00402475 | 8D58 07 |LEA EBX, DWORD PTR DS:[EAX+7]

00402478 | 83E3 0F |AND EBX, 0F

Trang 5

0040247B | 0FBE4C0C 28 |MOVSX ECX, BYTE PTR SS:[ESP+ECX+28]

00402480 | 0FBE5C1C 28 |MOVSX EBX, BYTE PTR SS:[ESP+EBX+28]

00402485 | 03CE |ADD ECX, ESI

00402487 | 0FAFCB |IMUL ECX, EBX

0040248A | 8D58 02 |LEA EBX, DWORD PTR DS:[EAX+2]

0040248D | 83E3 0F |AND EBX, 0F

00402490 | 0FBE5C1C 28 |MOVSX EBX, BYTE PTR SS:[ESP+EBX+28]

00402495 | 03DE |ADD EBX, ESI

00402497 | 8D70 04 |LEA ESI, DWORD PTR DS:[EAX+4]

0040249A | 83E6 0F |AND ESI, 0F

0040249D | 0FBE7434 28 |MOVSX ESI, BYTE PTR SS:[ESP+ESI+28] 004024A2 | 0FAFDE |IMUL EBX, ESI

004024A5 | 03CB |ADD ECX, EBX

004024A7 | 8D70 F8 |LEA ESI, DWORD PTR DS:[EAX-8]

004024AA | 8D58 06 |LEA EBX, DWORD PTR DS:[EAX+6]

004024AD | 83E6 0F |AND ESI, 0F

004024B0 | 83E3 0F |AND EBX, 0F

004024B3 | 0FBE7434 28 |MOVSX ESI, BYTE PTR SS:[ESP+ESI+28] 004024B8 | 0FBE5C1C 28 |MOVSX EBX, BYTE PTR SS:[ESP+EBX+28] 004024BD | 0FAFF3 |IMUL ESI, EBX

004024C0 | 03CE |ADD ECX, ESI

004024C2 | 8D70 F9 |LEA ESI, DWORD PTR DS:[EAX-7]

004024C5 | 8D58 05 |LEA EBX, DWORD PTR DS:[EAX+5]

004024C8 | 83E6 0F |AND ESI, 0F

004024CB | 83E3 0F |AND EBX, 0F

004024CE | 0FBE7434 28 |MOVSX ESI, BYTE PTR SS:[ESP+ESI+28] 004024D3 | 0FBE5C1C 28 |MOVSX EBX, BYTE PTR SS:[ESP+EBX+28] 004024D8 | 0FAFF3 |IMUL ESI, EBX

004024DB | 03CE |ADD ECX, ESI

004024DD | 0FAFCA |IMUL ECX, EDX

004024E0 | C1F9 0A |SAR ECX, 0A

004024E3 | 83E1 1F |AND ECX, 1F

004024E6 | 83F9 0A |CMP ECX, 0A

004024E9 | 7D 05 |JGE SHORT ppp.004024F0

004024EB | 83C1 50 |ADD ECX, 50

004024EE | EB 0D |JMP SHORT ppp.004024FD

004024F0 |> 83F9 12 |CMP ECX, 12

004024F3 | 7D 05 |JGE SHORT ppp.004024FA

004024F5 | 83C1 28 |ADD ECX, 28

Trang 6

004024F8 | EB 03 |JMP SHORT ppp.004024FD

004024FA |> 83C1 2F |ADD ECX, 2F

004024FD |> 880C28 |MOV BYTE PTR DS:[EAX+EBP], CL

00402500 | 8BC7 |MOV EAX, EDI

00402502 | 8D50 FA |LEA EDX, DWORD PTR DS:[EAX-6]

00402505 | 83FA 10 |CMP EDX, 10

00402508 |.^ 0F8C F0FEFFFF \JL ppp.004023FE

-========Loop=16 times , End loop 2======== -

0040250E | 68 A0814100 PUSH ppp.004181A0 ; ASCII

"0000000000000000"

00402513 | 8D4C24 14 LEA ECX, DWORD PTR SS:[ESP+14]

00402517 | E8 7EBE0000 CALL <JMP.&MFC42.#860>

0040251C | 5F POP EDI

0040251D | 5D POP EBP

0040251E | 33F6 XOR ESI, ESI

00402520 | 5B POP EBX

-=========Start Loop 3 , loop=16=========

-00402521 |> 8A4434 0C MOV AL, BYTE PTR SS:[ESP+ESI+C] ==> lần lượt đưa từng char của Rel Ser vào EAX

00402525 | 8D4C24 04 LEA ECX, DWORD PTR SS:[ESP+4]

00402529 | 50 PUSH EAX

0040252A | 56 PUSH ESI

0040252B | E8 58C10000 CALL <JMP.&MFC42.#5856>

00402530 | 46 INC ESI ==> ESI ++

00402531 | 83FE 10 CMP ESI, 10 ==> so sánh ESI với 10

00402534 |.^ 7C EB JL SHORT ppp.00402521 ==> nếu nhỏ hơn thì tiếp tục vòng lặp

-End loop 3 -

-=====đến đây nhìn sang cửa sổ bên cạnh , ta sẽ thấy Real Ser của c/t sau khi tính toán được đặt trong thanh ghi EAX===== -

00402536 | 8B7424 40 MOV ESI, DWORD PTR SS:[ESP+40]

0040253A | 8D4C24 04 LEA ECX, DWORD PTR SS:[ESP+4]

0040253E | 51 PUSH ECX

0040253F | 8BCE MOV ECX, ESI

00402541 | E8 48C10000 CALL <JMP.&MFC42.#535>

00402546 | B8 01000000 MOV EAX, 1

0040254B | 894424 08 MOV DWORD PTR SS:[ESP+8], EAX

Trang 7

0040254F | 8D4C24 04 LEA ECX, DWORD PTR SS:[ESP+4]

00402553 | 884424 38 MOV BYTE PTR SS:[ESP+38], AL

00402557 | E8 32BE0000 CALL <JMP.&MFC42.#800>

0040255C | 8D4C24 44 LEA ECX, DWORD PTR SS:[ESP+44]

00402560 | C64424 38 00 MOV BYTE PTR SS:[ESP+38], 0

00402565 | E8 24BE0000 CALL <JMP.&MFC42.#800>

0040256A | 8B4C24 30 MOV ECX, DWORD PTR SS:[ESP+30]

0040256E | 8BC6 MOV EAX, ESI

00402570 | 5E POP ESI

00402571 | 64:890D 00000>MOV DWORD PTR FS:[0], ECX

00402578 | 83C4 38 ADD ESP, 38

0040257B \ C2 0800 RETN 8

-

004025FA | 8B7424 0C MOV ESI, DWORD PTR SS:[ESP+C]

004025FE | 8B4424 08 MOV EAX, DWORD PTR SS:[ESP+8]

- Nhìn sang của sổ bên cạnh, chúng ta thấy 1 vầng hào quang sáng chói hiện ra Vâng đó chính là RS- cái mà chúng ta cần tìm : :kiss:

Code:

ASCII "A5I8A4LQ4X5IK3DN"

Ngày đăng: 03/07/2014, 18:20

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN