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

Cracker Handbook 1.0 part 114 pot

8 105 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

Tiêu đề Cracker Handbook 1.0 Part 114 Pot
Tác giả Ceycey, CoSH
Trường học CrackMe
Thể loại tài liệu
Năm xuất bản 2003
Thành phố N/A
Định dạng
Số trang 8
Dung lượng 85,15 KB

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

Nội dung

>>>> Quá trình này gọi một chuỗi lệnh xử lý và so sánh, vậy CALL ở đây bao gồm quá trình xử lý và so sánh, cuối cùng cho ra kết quả để thực hiện lệnh nhảy.. không lưu ý đến đoạn mã nằm n

Trang 1

Posted by: moonbaby Dec 11 2003, 02:17 PM

Homepage : http://crackme.de

CrackMe : ceycey.zip ( ceycey.exe )

Coder : Ceycey ( Borland Delphi 4.0 - 5.0 )

Type : Serial

Packed : UPX 0.89.6 - 1.02 / 1.05 - 1.24 (Delphi) stub ->

Markus & Laszlo

Crack Tool : OllyDbg 1.09d

Unpack Tool : UPXUnpack

Request : Correct Serial

Rule : N/A

Note : N/A

-

>>>> Set BreakPoint tại đây:

00457615 | 8B83 D4020000 MOV EAX,DWORD PTR DS:[EBX+2D4]

>>>> Đây là quá trình gọi chuỗi và so sánh hai chuỗi

00457615 | 8B83 D4020000 MOV EAX,DWORD PTR DS:[EBX+2D4] 0045761B | E8 E8C9FCFF CALL Un-ceyce.00424008

00457620 | 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]

00457623 | BA 6C764500 MOV EDX,Un-ceyce.0045766C ; ASCII

"ULTRADMA "

00457628 | E8 5FC6FAFF CALL Un-ceyce.00403C8C

0045762D | 75 13 JNZ SHORT Un-ceyce.00457642 < === Patch ở đây nếu muốn

>> Chuỗi nhập vào được chứa ở đây

00457620 | 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]

>> Chuỗi UL… được chứa ở đây

00457623 | BA 6C764500 MOV EDX,Un-ceyce.0045766C ; ASCII

"ULTRADMA "

>> Ở đây ta đặt ra một câu hỏi là chuỗi này là chuỗi gì, chỉ có hai trường hợp là chuỗi Magic hoặc chuỗi S thực

Trang 2

>>>> Quá trình này gọi một chuỗi lệnh xử lý và so sánh, vậy CALL ở đây bao gồm quá trình xử lý và so sánh, cuối cùng cho ra kết quả để thực hiện lệnh nhảy

00457628 | E8 5FC6FAFF CALL Un-ceyce.00403C8C

0045762D | 75 13 JNZ SHORT Un-ceyce.00457642

>> Trace thẳng vào trong lệnh gọi này, ta thấy câu lệnh sau

00403C93 39D0 CMP EAX,EDX ; Un-ceyce.0045766C

>> Trong khi đó, như ở trên ta đã nói, vậy ta kết luận ngay được chuỗi chứa trong EDX là chuỗi S thực Ở đây, các dấu (.) nằm sau chữ

ULTRADMA là dấu chấm, theo hệ hex là 2E

>>>> Vậy

Serial : ULTRADMA

Posted by: moonbaby Dec 11 2003, 02:19 PM

Homepage : http://crackme.de

CrackMe : cosh2.zip (crackme2.exe )

Coder : CoSH (Microsoft Visual C++ 6.0)

Type : Serial

Packed : N / A

Crack Tool : OllyDbg 1.09d

Unpack Tool : N / A

Request : Correct Serial

Rule : N/A

Note : N/A

-

>>>> Chương trình này rất lạ, nếu cứ đi tìm các điểm đặt BreakPoint mà

Trang 3

không lưu ý đến đoạn mã nằm ngay bên thông báo sai có thể làm mất rất nhiều thời gian:

>> Quá trình kiểm tra chuỗi U nhập vào, nếu chuỗi dưới 5 ký tự sẽ nhảy đến thông báo sai

004014D6 E8 6F030000 CALL <JMP.&MFC42.#3876>

004014DB 8B1D FC214000 MOV EBX,DWORD PTR

DS:[<&USER32.PostQuitM>; USER32.PostQuitMessage

004014E1 83F8 05 CMP EAX,5

004014E4 /7E 50 JLE SHORT crackme2.00401536

>> Quá trình kiểm tra chuỗi S nhập vào, nếu chuỗi dưới 5 ký tự sẽ nhảy đến thông báo sai

004014EB E8 5A030000 CALL <JMP.&MFC42.#3876>

004014F0 83F8 05 CMP EAX,5

004014E4 /7E 50 JLE SHORT crackme2.00401536

>>>> Quan sát đọan mã nằm ngay trên thông báo sai Ta thấy ở đây bao gồm một lọat quá trình so sánh và sau đó là nhảy đến thông báo sai, nên đây chính là chuỗi S thực được lưu trong chương trình dưới dạng từng ký

tự tách rời

00401511 8B07 MOV EAX,DWORD PTR DS:[EDI]

00401513 8038 36 CMP BYTE PTR DS:[EAX],36 < ==== ASCII “6”

00401516 75 1E JNZ SHORT crackme2.00401536

00401518 8078 01 32 CMP BYTE PTR DS:[EAX+1],32 < ==== ASCII

“2”

0040151C 75 18 JNZ SHORT crackme2.00401536

0040151E 8078 02 38 CMP BYTE PTR DS:[EAX+2],38 < ==== ASCII

“8”

00401522 75 12 JNZ SHORT crackme2.00401536

00401524 8078 03 37 CMP BYTE PTR DS:[EAX+3],37 < ==== ASCII

“7”

00401528 75 0C JNZ SHORT crackme2.00401536

Trang 4

0040152A 8078 04 2D CMP BYTE PTR DS:[EAX+4],2D < ====

ASCII “-”

0040152E 75 06 JNZ SHORT crackme2.00401536

00401530 8078 05 41 CMP BYTE PTR DS:[EAX+5],41 < ==== ASCII

“A”

00401534 74 17 JE SHORT crackme2.0040154D

Chương trình này không quan tâm đến U nhập là gì mà chỉ cần tìm đúng S

mà thôi ( U phải có từ 5 ký tự )

>>>> Vậy

Serial : 6287-A

Posted by: moonbaby Dec 11 2003, 02:21 PM

Homepage : http://crackme.de

CrackMe : cosh3.zip (crackme3.exe )

Coder : CoSH (Microsoft Visual C++ 6.0)

Type : Serial

Packed : N / A

Crack Tool : OllyDbg 1.09d

Unpack Tool : N / A

Request : Correct Serial

Rule : N/A

Note : N/A

-

>>>> Set BreakPoint tại đây:

00401570 | 33C0 XOR EAX,EAX

>>>> Đây là quá trình mã hoá chuỗi đầu tiên, mã hoá chuỗi U nhập vào

Trang 5

00401576 | B9 01000000 MOV ECX,1

0040157B | 33D2 XOR EDX,EDX

0040157D | 8B45 E4 MOV EAX,DWORD PTR SS:[EBP-1C]

00401580 |> 8A18 /MOV BL,BYTE PTR DS:[EAX]

00401582 | 32D9 |XOR BL,CL

00401584 | 8818 |MOV BYTE PTR DS:[EAX],BL

00401586 | 41 |INC ECX

00401587 | 40 |INC EAX

00401588 | 8038 00 |CMP BYTE PTR DS:[EAX],0

0040158B |.^ 75 F3 \JNZ SHORT crackme3.00401580

Gán cho ECX giá trị 1, đây là biến rất quan trọng trong quá trình xử lý chuỗi

00401576 | B9 01000000 MOV ECX,1

Đưa giá trị của chuỗi U nhập vào EAX

0040157D | 8B45 E4 MOV EAX,DWORD PTR SS:[EBP-1C]

Đưa từng ký tự của U được chứa trong EAX vào BL Ở đây hơi đặc biệt tí,

BL chính là giá trị thấp của EBX ( xem EBX chia làm hai giá trị cao BH và giá trị thấp BL ), nhưng có thể nói nôm na là đưa từng ký tự của chuỗi U ở EAX vào EBX để tiến hành mã hoá

00401580 |> 8A18 /MOV BL,BYTE PTR DS:[EAX]

Tiến hành phép toán EBX xor ECX ( CL là giá trí cao của ECX, ở đây ta coi là ECX )

00401582 | 32D9 |XOR BL,CL

Đưa giá trị vào lưu ở địa chỉ của EAX tức là thay thế ký tự đầu tiên của U bằng một ký tự mới mã hoá

00401584 | 8818 |MOV BYTE PTR DS:[EAX],BL

Tăng ECX lên 1 đơn vị, có nghĩa ECX = 2h

00401586 | 41 |INC ECX

Chuyển đến ký tự thứ hai

00401587 | 40 |INC EAX

Kiểm tra xem đã hết chuỗi chưa, nếu chưa thì tiếp tục, còn không thì qua giai đoạn khác

00401588 | 8038 00 |CMP BYTE PTR DS:[EAX],0

0040158B |.^ 75 F3 \JNZ SHORT crackme3.00401580

Trang 6

Quá trình này cứ lặp cho đến hết chuỗi Ở đây ta chú ý ba điểm :

1- Giá trị của từng ký tự của U thay đổi

2- Giá trị của biến đếm ECX tăng theo môic vòng lặp Vì thế giá trị của nó với từng ký tự của chuỗi nhập sẽ thay đổi cho dù ký tự chuỗi nhập có giống nhau đi nữa

3- Chuỗi mới được mã hoá sẽ thay thế hoàn toàn chuỗi U nhập và được lưu

ở cùng một địa chỉ

Quá trình mã hoá thứ hai, mã hoá chuỗi S nhập vào

00401593 | B9 0A000000 MOV ECX,0A

00401598 | 33D2 XOR EDX,EDX

0040159A | 8B45 F0 MOV EAX,DWORD PTR SS:[EBP-10]

0040159D |> 8A18 /MOV BL,BYTE PTR DS:[EAX]

0040159F | 32D9 |XOR BL,CL

004015A1 | 8818 |MOV BYTE PTR DS:[EAX],BL

004015A3 | 41 |INC ECX

004015A4 | 40 |INC EAX

004015A5 | 8038 00 |CMP BYTE PTR DS:[EAX],0

004015A8 |.^ 75 F3 \JNZ SHORT crackme3.0040159D

Ở đây biến ECX cũng lại là biến chính, nhưng ban đầu được gán giá trị là

Ah = 10

00401593 | B9 0A000000 MOV ECX,0A

Quá trình ma hoá chuỗi ở đây hoàn toàn giống quá trình mã hoá chuỗi đầu tiên Sau mỗi vòng lặp, giá trị của ECX lại tăng thêm một, quá trình xảy ra đến hết chuỗi S Va gí trị chuỗi S mã hoá thay thế chuỗi S nhập tại cùng địa chỉ lưu

Quá trình so sánh hai chuỗi mã hoá

004015AA | 8B45 E4 MOV EAX,DWORD PTR SS:[EBP-1C]

004015AD | 8B55 F0 MOV EDX,DWORD PTR SS:[EBP-10]

004015B0 |> 33C9 /XOR ECX,ECX

004015B2 | 8A18 |MOV BL,BYTE PTR DS:[EAX]

004015B4 | 8A0A |MOV CL,BYTE PTR DS:[EDX]

004015B6 | 3AD9 |CMP BL,CL

Trang 7

004015B8 | 75 09 |JNZ SHORT crackme3.004015C3

004015BA | 40 |INC EAX

004015BB | 42 |INC EDX

004015BC | 8038 00 |CMP BYTE PTR DS:[EAX],0

004015BF |.^ 75 EF \JNZ SHORT crackme3.004015B0

Đưa chuỗi U mã hoá vào EAX

004015AA | 8B45 E4 MOV EAX,DWORD PTR SS:[EBP-1C]

Đưa chuỗi S mã hoá vào EDX

004015AD | 8B55 F0 MOV EDX,DWORD PTR SS:[EBP-10]

Dọn sạch trước khi đưa từng ký tự vào so sánh

004015B0 |> 33C9 /XOR ECX,ECX

Đưa từng ký tự của U mã hoá vào EBX và S mã hoá vàp ECX

004015B2 | 8A18 |MOV BL,BYTE PTR DS:[EAX]

004015B4 | 8A0A |MOV CL,BYTE PTR DS:[EDX]

So sánh hai ký tự với nhau, nếu không bằng là nhảy thông báo sai ngay, không cần xét tiếp

004015B6 | 3AD9 |CMP BL,CL

004015B8 | 75 09 |JNZ SHORT crackme3.004015C3

Nếu bằng thì chuyển sáng ký tự kế tiếp, và tiến hành cho đến hết chuỗi 004015BA | 40 |INC EAX

004015BB | 42 |INC EDX

004015BC | 8038 00 |CMP BYTE PTR DS:[EAX],0

004015BF |.^ 75 EF \JNZ SHORT crackme3.004015B0

Vậy để tính được giá trị đúng của S tương ứng vơi U nhập vào thì ta làm như sau :

1- Mã hoá chuỗi U theo quá trình mã hoá chuỗi U nhập vào

2- Lấy chuỗi U mã hoá, mã hoá theo quá trình mã hoá chuỗi S nhập vào

>>>> Vậy

User : Moonbaby Serial : Ff`gihu`

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

TỪ KHÓA LIÊN QUAN