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

Cracker Handbook 1.0 part 123 ppsx

8 265 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 8
Dung lượng 88,28 KB

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

Nội dung

Nói một cách dễ hiểu là sẽ lấy ký tự cuối cùng của U nhập chuyển thành chữ hoa nếu là chữ thường.. 0FBE4431 FF MOVSX EAX,BYTE PTR DS:[ECX+ESI-1] >>>> Đoạn mã trong lệnh CALL này có ý ngh

Trang 1

Posted by: moonbaby Jan 3 2004, 05:33 PM

QUOTE

Homepage : http://crackme.de

CrackMe : vcrkme01.zip (vcrkme01.exe )

Coder : [v0!d] ( Microsoft Visual C++ 6.0 )

Type : Name / Serial

Packed : N / A

Crack Tool : OllyDbg 1.09d

Unpack Tool : N / A

Request : Correct Serial

Rule : N/A

Note : N/A

>>>>>>>> Đặt BreakPoint tại hai điểm sau :

QUOTE

00401233 FFD6 CALL ESI ;

\GetDlgItemTextA

0040124B FFD6 CALL ESI ;

\GetDlgItemTextA

>>>>>>>> Trace tiếp ta đến đây

Trang 2

QUOTE

0040124D 68 306A4000 PUSH

vcrkme01.00406A30 ; ASCII "M1235678"

00401252 68 30694000 PUSH

vcrkme01.00406930 ; ASCII "Moonbaby"

00401257 E8 A4FDFFFF CALL vcrkme01.00401000

>>>>>>>> Trace thẳng vào trong lệnh CALL này ta đến qúa trình mã hoá chuỗi nhập

QUOTE

Ta đến đây : 00401000 /$ 53 PUSH EBX

>>>> Trace tiếp ta đến :

0040100B | 8A0B MOV CL,BYTE PTR DS:[EBX] < === Ký

tự đầu tiên của S nhập

0040100D | 33ED XOR EBP,EBP

0040100F | 57 PUSH EDI

00401010 | 8A06 MOV AL,BYTE PTR DS:[ESI] < === Ký

tự đầu tiên của U nhập

00401012 | 3AC1 CMP AL,CL < === Hai ký tự này phải

giống nhau

00401014 | 0F85 69010000 JNZ vcrkme01.00401183 < === Nếu không nhảy đến thông báo sai

>>>> Trace tiếp một đoạn ta đến đây :

Trang 3

00401026 | 83F9 05 CMP ECX,5 < === So sánh chiều dài chuỗi với 05h = 5

00401029 | 0F82 54010000 JB vcrkme01.00401183 < === U nhập

< 5 ký tự nhảy đến thông báo sai

>>>> Trace tiếp ta đến đây :

>>>> So sánh ký tự thứ hai với 02Dh có mã ASCII = “-“

0040102F | 807B 01 2D CMP BYTE PTR DS:[EBX+1],2D <

=== ASCII = “-“

00401033 0F85 4A010000 JNZ vcrkme01.00401183 < === Nhảy nếu không đúng thế

>>>>>>>> Trace tiếp thêm đoạn ta đến đoạn mã hoá đầu tiên :

QUOTE

00401047 | /74 17 JE SHORT vcrkme01.00401060 < == Nhảy thoát nếu không nhập gì

00401049 |> |0FBE0C32 /MOVSX ECX,BYTE PTR

DS:[EDX+ESI] < = Đưa từng ký tự vào ECX

0040104D | |03E9 |ADD EBP,ECX < === EBP = EBP + ECX ( EBP ban đầu bằng 00h )

>>>> Đoạn mã này thực chất là gán ECX bằng chiều dài chuỗi U nhập

0040104F | |8BFE |MOV EDI,ESI

00401051 | |83C9 FF |OR ECX,FFFFFFFF

00401054 | |33C0 |XOR EAX,EAX

00401056 | |42 |INC EDX < === EDX = EDX + 1 < === là biến đếm vòng lặp

00401057 | |F2:AE |REPNE SCAS BYTE PTR ES:[EDI]

Trang 4

00401059 | |F7D1 |NOT ECX < === ECX = chiều dài U nhập 0040105B | |49 |DEC ECX < === ECX = ECX - 1

0040105C | |3BD1 |CMP EDX,ECX < === Nếu đã hết chuỗi thì nhảy thoát

0040105E |.^|72 E9 \JB SHORT vcrkme01.00401049 < === Nếu chưa thì tiếp tục vòng lặp

>>>> Thực chất của quá trình này là cộng giá trị của tất cả các ký tự của chuỗi U nhập và lưu ở EBP

>>>> Trace tiếp ta đến :

00401060 |> \81C5 64600000 ADD EBP,6064 < === EBP = EBP + 06064h

00401066 | 55 PUSH EBP < === Cất giữ giá trị của EBP

>>>> In chuỗi đầu tiên

QUOTE

>>>> %1u là quá trình chuyển đổi số hệ hex sang số hệ thập phân

00401067 | 68 34604000 PUSH

vcrkme01.00406034 ; ASCII "%lu"

0040106C | 68 306B4000 PUSH vcrkme01.00406B30

00401071 | E8 B6030000 CALL vcrkme01.0040142C < === In ra chuỗi

>>>> Trace tiếp ta đến đây :

Trang 5

QUOTE

>>>> Lưu ký tự đầu tiên của chuỗi U nhập vào DS:[406B44]

0040107F | 8815 446B4000 MOV BYTE PTR DS:[406B44],DL

>>>> Ngay kế đó thêm ký tự “-“

00401085 | C605 456B4000>MOV BYTE PTR DS:[406B45],2D

>>>>>>>> Trace tiếp ta đến :

>>>> Đưa ký tự tại địa chỉ này vào EAX ( ECX = chiều dài chuỗi, ESI = địa chỉ chứa chuỗi U nhập ) Nói một cách dễ hiểu là sẽ lấy ký

tự cuối cùng của U nhập chuyển thành chữ hoa nếu là chữ thường Còn không thì giữ nguyên

00401091 | 0FBE4431 FF MOVSX EAX,BYTE PTR

DS:[ECX+ESI-1]

>>>> Đoạn mã trong lệnh CALL này có ý nghĩa nếu ký tự này của chuỗi S nhập là chữ thường sẽ chuyển thành chữ hoa

00401097 | E8 C4020000 CALL vcrkme01.00401360

>>>> Và gán nó vào làm ký tự thứ ba của chuỗi S mã hoá

0040109C | A2 466B4000 MOV BYTE PTR DS:[406B46],AL

>>>> Đoạn mã lệnh kế tiếp sẽ gắn chuỗi số dạng thập phân ở trên vào vị trí thứ tư

Chuỗi có dạng X-Xxxxx

>>>>>>>> Trace tiếp ta đến đây :

>>>> Giá trị ở địa chỉ DS:[ESI] là 2Dh, có mã ASCII = “-“ được gán vào địa chỉ ES:[EDI] Mà địa chỉ này là địa chỉ của chuỗi X-Xxxxx Vậy chuỗi sẽ có dạng mới là X-Xxxxx-

00401108 | F3:A4 REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI]

>>>> Trace tiếp ta đến lệnh này

0040110A | E8 1D030000 CALL vcrkme01.0040142C

>>>> Thực chất của lệnh này là cộng giá trị đã được tính ở trên với 06064h Chuỗi mới này cũng được chuyển sang hệ thập phân

>>>> Sau khi ra khỏi lệnh CALL, giá chuỗi số mới sẽ được lưu vào EDI

Trang 6

0040110F | BF 306B4000 MOV

EDI,vcrkme01.00406B30 ; ASCII "50582"

>>>> Sau đó sẽ được gán vào chuỗi ở trên tạo thành chuỗi S thực Chuỗi có dạng X-Xxxxx-xxxx

>>>>>>>> Quá trình kiểm tra chuỗi :

QUOTE

00401146 |> /8A10 /MOV DL,BYTE PTR DS:[EAX] < === Từng ký tự của S nhập

00401148 | |8A1E |MOV BL,BYTE PTR DS:[ESI] < === Từng ký tự của S thực

0040114A | |8ACA |MOV CL,DL < === CL = DL

0040114C | |3AD3 |CMP DL,BL < === So sánh hai ký tự với nhau

0040114E | |75 25 |JNZ SHORT vcrkme01.00401175 < === Thông báo sai nếu không đúng

00401150 | |84C9 |TEST CL,CL < === Nếu kiểm tra hết chuỗi rồi

00401152 | |74 16 |JE SHORT vcrkme01.0040116A < === thì nhảy thoát vòng lặp kiểm tra

00401154 | |8A50 01 |MOV DL,BYTE PTR DS:[EAX+1] < === chuyển ký tự kế của S nhập

00401157 | |8A5E 01 |MOV BL,BYTE PTR DS:[ESI+1] < === chuyển ký tự kế của S thực

0040115A | |8ACA |MOV CL,DL CL = DL

0040115C | |3AD3 |CMP DL,BL < === So sánh hai ký tự với

Trang 7

nhau

0040115E | |75 15 |JNZ SHORT vcrkme01.00401175 < === Thông báo sai nếu không đúng

00401160 | |83C0 02 |ADD EAX,2 < === do đã kiểm tra 2 hai

ký tự

00401163 | |83C6 02 |ADD ESI,2 < === nên vị trí ký tự kế được cộng thêm 2

00401166 | |84C9 |TEST CL,CL < === Nếu chưa hết chuỗi

00401168 |.^\75 DC \JNZ SHORT vcrkme01.00401146 < ==== thì tiên hành kiểm tra tiếp

00401141 | BE 446B4000 MOV

ESI,vcrkme01.00406B44 ; ASCII "P-A25970-5064"

>>>>>>>>>>>> Kết luận :

QUOTE

1- Chuỗi U nhập phải có chiều dài từ 5 ký tự trở lên

2- Ký tự đầu tiên của S là ký tự đầu tiên của U

3- Ký tự thứ hai phải là “-“

4- Ký tự thứ ba là ký tự cuối của U được chuyển thành chữ hoa 5- Chuỗi số thứ nhất là tổng giá trị của các ký tự U nhập ở dạng thập phân

6- Chuỗi số thứ hai là chuỗi số thứ nhất cộng thêm 06064h và chuyển sang hệ thập phân

>>>>>>>>>>>> Vậy :

Trang 8

QUOTE

User : Moonbaby Serial : M-Y25499-50175

User : HVA-CrAcKeRtEaM Serial : H-M25906-50582

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

TỪ KHÓA LIÊN QUAN