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

Cracker Handbook 1.0 part 122 pdf

10 189 2
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 10
Dung lượng 102,61 KB

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

Nội dung

ban đầu chương trình đổi từng ký tự chuỗi name nhập vào thành ký tự hoa , lấy mã hex của từng ký tự chuỗi name đã được đổi thành chữ hoa tính toán ra một con số .... con số được tính toá

Trang 1

Posted by: dqtln Jan 1 2004, 09:47 AM

Victim : Syllogism CrackMe #2

Tools : OllyDbg v1.09d

Crack file : Syllogism-crackme2.exe

Cracked by : dqtln

site biw.rult.at

dùng OllyDbg tìm đến thông báo lỗi , ta thấy như sau

CODE

004013F7 | E8 BA760000 CALL <JMP.&USER32.GetDlgItemTextA>;

\GetDlgItemTextA =>đặt breakpoint

004013FC | 6A 32 PUSH 32; /Count = 32 (50.)

004013FE | 68 D1B54000 PUSH Syllogis.0040B5D1; |Buffer =

Syllogis.0040B5D1

00401403 | 6A 69 PUSH 69; |ControlID = 69 (105.)

00401405 | FF75 08 PUSH DWORD PTR SS:[EBP+8]; |hWnd

00401408 | E8 A9760000 CALL <JMP.&USER32.GetDlgItemTextA>;

\GetDlgItemTextA

0040140D | E8 D6FEFFFF CALL Syllogis.004012E8 =>trace into

00401412 | 85C0 TEST EAX,EAX

00401414 | 75 18 JNZ SHORT Syllogis.0040142E

00401416 | 6A 00 PUSH 0; /Style = MB_OK|MB_APPLMODAL

00401418 | 68 ED914000 PUSH Syllogis.004091ED; |Title = "ERROR" 0040141D | 68 C6914000 PUSH Syllogis.004091C6; |Text = "Please Deposit 25 cents and try again."

Trang 2

bi giờ ta đến 004012e8 xem hàm kiểm tra serial

CODE

004012E8 /$ 55 PUSH EBP

ở đây có một số dòng

004012FF | 50 PUSH EAX; |Arg1

00401300 | E8 EB110000 CALL Syllogis.004024F0; \Syllogis.004024F0

=>trace into nếu thích

00401305 | 83C4 0C ADD ESP,0C

00401308 | 33F6 XOR ESI,ESI =>esi=0

0040130A | EB 1E JMP SHORT Syllogis.0040132A

0040130C |> 8A0437 /MOV AL,BYTE PTR DS:[EDI+ESI] =>đưa từng

ký tự chuỗi name vào al

0040130F | 50 |PUSH EAX; /Arg1 =>đẩy từng ký tự lên stack

00401310 | E8 83FFFFFF |CALL Syllogis.00401298; \Syllogis.00401298

=>trace into để xem mã hóa chuỗi name thành serial

00401315 | 59 |POP ECX

ở đây có một số dòng

00401349 | E8 A2110000 CALL Syllogis.004024F0; \Syllogis.004024F0 0040134E | 83C4 0C ADD ESP,0C =>nếu trace down đến đây ta sẽ thấy serial tương ứng với name bên cửa sổ Registers (FPU) , d ecx = serial đúng

00401351 | 68 D1B54000 PUSH Syllogis.0040B5D1

ở đây có một số dòng

00401380 \ C3 RETN

ta đến 00401298 xem sao

Trang 3

CODE

00401298 /$ 55 PUSH EBP

00401299 | 8BEC MOV EBP,ESP

0040129B | 83C4 C8 ADD ESP,-38

0040129E | 53 PUSH EBX

0040129F | 56 PUSH ESI

004012A0 | 57 PUSH EDI

004012A1 | 8B5D 08 MOV EBX,DWORD PTR SS:[EBP+8] =>đưa từng ký

tự chuỗi name vào ebx

004012A4 | 0FBEF3 MOVSX ESI,BL =>đưa từng ký tự chuỗi name vào esi 004012A7 | 56 PUSH ESI; /Arg1

004012A8 | E8 FB2B0000 CALL Syllogis.00403EA8; \Syllogis.00403EA8

=>trace into , đơn giản đổi từng ký tự chuỗi name thành chữ hoa

004012AD | 59 POP ECX

004012AE | 8BD8 MOV EBX,EAX =>đưa ký tự đã đổi thành chữ hoa vào ebx

004012B0 | BE 3D914000 MOV ESI,Syllogis.0040913D; ASCII

"4B7YS8K39D1NM1K9R8Q9A9A5A1A2N1P0A5V5X3B2W2J3L5U6Y3E3"

=>đưa chuỗi mặc định

"4B7YS8K39D1NM1K9R8Q9A9A5A1A2N1P0A5V5X3B2W2J3L5U6Y3E3" vào esi

004012B5 | 8D7D C8 LEA EDI,DWORD PTR SS:[EBP-38]

004012B8 | B9 0D000000 MOV ECX,0D

004012BD | F3:A5 REP MOVS DWORD PTR ES:[EDI],DWORD PTR

DS:[ESI]

004012BF | A4 MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI]

004012C0 | 0FBEC3 MOVSX EAX,BL =>đưa từng ký tự của name đã đổi thành chữ hoa vào eax

004012C3 | 8A9445 46FFFFF>MOV DL,BYTE PTR SS:[EBP+EAX*2-BA]

=>[ebp-38+eax*2-ba+38] vào dl vd ký tự ta nhập là l thì đổi sang chữa hoa

là L có mã 4c 4c*2+38-ba=16h=22 , tức lấy ký tự thứ 22 của chuỗi mặc định đưa vào dl chuỗi mặc định có 52 ký tự , ký tự đầu tiên là ký tự thứ 0 cho đến

ký tự cuối là 51

Trang 4

004012CA | 8815 28914000 MOV BYTE PTR DS:[409128],DL =>lưu ký tự mới tính tại [409128]

004012D0 | 0FBECB MOVSX ECX,BL =>đưa từng ký tự của name đã đổi thành chữ hoa vào ecx

004012D3 | 8A844D 47FFFFF>MOV AL,BYTE PTR SS:[EBP+ECX*2-B9]

=>[ebp-38+ecx*2-ba+38] vào al

004012DA | A2 29914000 MOV BYTE PTR DS:[409129],AL =>lưu ký tự mới tính tại [409129]

004012DF | 5F POP EDI

004012E0 | 5E POP ESI

004012E1 | 5B POP EBX

004012E2 | 8BE5 MOV ESP,EBP

004012E4 | 5D POP EBP =>khôi phục các thanh ghi

004012E5 \ C3 RETN

tớ xem đoạn mã hóa không kỹ lắm với lại biết sơ sơ asm nên hình như có vấn đề trong cái đoạn mã hóa từ địa chỉ 00401298 bác nào thử qua có sai xót thì bảo nhá

ban đầu chương trình đổi từng ký tự chuỗi name nhập vào thành ký tự hoa , lấy

mã hex của từng ký tự chuỗi name đã được đổi thành chữ hoa tính toán ra một con số trong chuỗi mặc định có 52 ký tự , ký tự đầu tiên là 0 cho đến ký tự cuối là 51 con số được tính toán ra là số thứ tự trong chuỗi mặc định đó name : dqtln

serial : K3A5B2A5A

name : langdangngayqua

serial : A54BA2M1K34BA2M1A2M14BY3A5W24

Posted by: moonbaby Jan 3 2004, 02:40 PM

Trang 5

QUOTE

Homepage : http://crackme.de

CrackMe : CrackMe3.zip (CrackMe3.exe )

Coder : BadSector ( MASM32 / TASM32 )

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 điểm sau :

QUOTE

004011F6 /$ 33DB XOR EBX,EBX

Sau khi load thì Olly dừng tại đây Giai đoạn mã hoá được tiến hành hai lần :

Giai đoạn mã hoá thứ nhất :

QUOTE

Trang 6

Đưa từng ký tự của chuỗi U nhập vào trừ đi giá trị của CL ( ECX hiện thời là chiều dài chuỗi U nhập), kết quả được lưu ngay tại vị trí này hay nói cách khác ký tự mới tạo thành thay thế ký tự ban đầu của U nhập

004011FB |> 288B FF204000 /SUB BYTE PTR

DS:[EBX+4020FF],CL

Kiểm tra chuỗi nhập có khoảng trắng hay không, nếu có sẽ xử lý theo cách khác

00401201 | 80BB FF204000>|CMP BYTE PTR

DS:[EBX+4020FF],20

00401208 | 74 06 |JE SHORT crackme3.00401210

0040120A | 43 |INC EBX < === Tăng EBX lên 1

0040120B | 49 |DEC ECX < === Giảm ECX đi 1

0040120C |.^ 75 ED |JNZ SHORT crackme3.004011FB < === Lặp đến hết chuỗi

0040120E | EB 0A |JMP SHORT crackme3.0040121A < === Nếu hết chuỗi thì nhảy ra ngoài

Nếu chuỗi nhập có khoảng trắng thì sẽ gán bằng giá trị hiện thời của

CL ( ECX )

00401210 |> 008B FF204000 |ADD BYTE PTR

DS:[EBX+4020FF],CL

00401216 | 43 |INC EBX < === Tăng EBX lên 1

00401217 | 49 |DEC ECX < === Giảm ECX đi 1

00401218 |.^ 75 E1 \JNZ SHORT crackme3.004011FB < === Lặp đến hết chuỗi

Chuỗi được mã hoá ở giai đoạn này sẽ thay thế chuỗi U nhập ban đầu

ở cùng một vị trí trong bộ nhớ

Giai đoạn mã hoá thứ hai

Trang 7

QUOTE

Giá trị ban đầu là chiều dài chuỗi U nhập ( giá trị sau khi thoát khỏi vòng lặp đầu tiên )

0040121A |> 4B DEC EBX < === EBX = EBX – 1

0040121B | 33C9 XOR ECX,ECX < === ECX = 00h

Đưa từng ký tự của chuỗi được mã hoá ở giai đoạn trên vào EAX, nhưng do ở đây EBX ban đầu chính là chiều dài chuỗi nhập và sau mỗi vòng lặp lại giảm đi 1 nên chuỗi sẽ được đưa vào là chuỗi ngược 0040121D |> 0FB683 FF2040>/MOVZX EAX,BYTE PTR

DS:[EBX+4020FF]

00401224 | 83F8 41 |CMP EAX,41 < === So sánh với 041h

00401227 | 73 03 |JNB SHORT crackme3.0040122C < === Nhảy nếu không nhỏ hơn

00401229 | 83C0 20 |ADD EAX,20 < === EAX = EAX + 020h 0040122C |> 83F8 5A |CMP EAX,5A < === So sánh với 05Ah 0040122F | 76 03 |JBE SHORT crackme3.00401234 < === Nhảy nếy nhỏ hơn hoặc bằng

00401231 | 83E8 20 |SUB EAX,20 < === EAX = EAX – 020h Đưa giá trị mới này lưu ở địa chỉ 0040214F ( vì ban đầu ECX = 00h )

00401234 |> 8881 4F214000 |MOV BYTE PTR

DS:[ECX+40214F],AL

0040123A | 4B |DEC EBX < === EBX = EBX - 1

0040123B | 41 |INC ECX < === ECX = ECX + 1

0040123C | 83F9 04 |CMP ECX,4 < === Chuỗi mã hoá lần đầu

là 4 ký tự

0040123F | 74 07 |JE SHORT crackme3.00401248 < === 4 ký

tự sau được mã hoá cách khác

So sánh ECX ( chiều dài chuỗi được xử lý ) với giá trị được lưu ở địa chỉ SS:[EBP-4] Giá trị này là chiều dài chuỗi + 1 vì ta thêm ký tự ASCII “-“ vào sau ký tự thứ 4 Nếu chưa hết thì lại tiếp tục vòng lặp Nếu đã hết chuỗi thì thoát ra ngoài

00401241 | 3B4D FC |CMP ECX,DWORD PTR SS:[EBP-4]

00401244 |.^ 75 D7 |JNZ SHORT crackme3.0040121D < ===

Trang 8

lặp tiếp nếu chưa hết

00401246 | EB 0A |JMP SHORT crackme3.00401252 < === Thoát ra khỏi vòng lặp

00401248 |> C681 4F214000>|MOV BYTE PTR

DS:[ECX+40214F],2D < === ASCII = “-“

0040124F | 41 |INC ECX < === ECX = ECX + 1

00401250 |.^ EB CB \JMP SHORT crackme3.0040121D < === Tiếp tục quá trình lặp

Sau khi kết thúc giai đoạn mã hoá thứ hai, ta đến ngay lệnh này

QUOTE

00401252 |> \E8 6BFFFFFF CALL crackme3.004011C2

Trace thẳng vào trong ta đến :

004011C2 $ 33C9 XOR ECX,ECX < === ECX = 00h : là biến đếm của vòng lặp

Đưa từng ký tự của S nhập vào EAX

004011C4 > 0FBE81 272140>MOVSX EAX,BYTE PTR

DS:[ECX+402127]

Đưa từng ký tự của chuỗi mã hoá vào EBX

004011CB 0FBE99 4F2140>MOVSX EBX,BYTE PTR

DS:[ECX+40214F]

Ở đây ta thấy có một điều đặc biệt là tại sao lại so sánh với 1 ?? Thực

sư đây là một giai đoạn mã hoá chuỗi được tạo thành ở trên lần cuối Nhưng không mã hoá toàn bộ mà chỉ mã hoá ký tự thứ hai mà thôi Theo câu lệnh ta sẽ thấy là giá trị của ký tự thứ hai sẽ được cộng thêm

1

004011D2 83F9 01 CMP ECX,1 < === So sánh ECX với 1 <

Trang 9

=== Rất quan trọng.!!!!

004011D5 74 16 JE SHORT crackme3.004011ED < === Nhảy đến giai đoạn mã hoá thứ ba

004011D7 3BC3 CMP EAX,EBX < === so sánh từng ký tự của S nhập và S thực với nhau

004011D9 74 03 JE SHORT crackme3.004011DE < === Nhảy đến thông báo sai ngay

004011DB EB 7B JMP SHORT crackme3.00401258

004011DD C3 RETN

004011DE > 83F8 00 CMP EAX,0 < === Kiểm tra xem đã kết thúc chuỗi chưa

004011E1 75 06 JNZ SHORT crackme3.004011E9 < == Nếu kết thúc thì đến thông báo đúng

004011E3 E9 85000000 JMP crackme3.0040126D

004011E8 C3 RETN

004011E9 > 41 INC ECX < === ECX = ECX + 1

004011EA ^ EB D8 JMP SHORT crackme3.004011C4 < === Tiếp tục vòng lặp

Kết luận :

QUOTE

1- Quá trình mã hoá chuỗi thực chất là ba gia đoạn chú không phải là hai

2- Gian đoạn thứ hai bao hàm trong quá trình kiểm tra chuỗi và chỉ diễn ra đối với ký tự thứ hai mà thôi

3- Và sau ký tự thứ tư sẽ được thêm vào “-“

Trang 10

Vậy :

QUOTE

User : Moonbaby Serial : XA>>-IIHE

User : HVA-CrAcKeRtEaM Serial : L@BP-M?D;XHXATHY

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

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN