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

Cracker Handbook 1.0 part 171 docx

6 272 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 6
Dung lượng 131,51 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ấn OK, Olly lập tức dùng chương trình lại.. 51 PUSH ECX **** Nhìn lên trên chút ta thấy có lệnh nhảy qua đoạn CODE này.. Như vậy đây chính là đoạn CODE ta cần trong quá trình xem xét q

Trang 1

**** Double-Click vào dòng :

Quote:

0012DE08 73DD9CCB ?

USER32.MessageBoxA MFC42.73DD9CC5

**** Ta trở về chương trình trong Olly Đặt BreakPoint ở lệnh ngay bên dưới địa

chỉ này Nhấn F8 để chạy chương trình Xuất hiện thông báo "Incorrect Serial Number" Nhấn OK, Olly lập tức dùng chương trình lại

**** Dùng F8 trace cho đến khi ta trở lại chương trình chính :

Quote:

0045DC33 E8 407E0700 CALL <JMP.&MFC42.#858>

0045DC38 51 PUSH ECX

**** Nhìn lên trên chút ta thấy có lệnh nhảy qua đoạn CODE này Như vậy đây chính là đoạn CODE ta cần trong quá trình xem xét quá trình mã hoá của chương trình

Quote:

0045DC1A E8 01400500 CALL GBManage.004B1C20 ;

\GBManage.004B1C20

0045DC1F 85C0 TEST EAX,EAX

0045DC21 74 45 JE SHORT GBManage.0045DC68 ; <=== JMP out of NAG

if Serrial is Correct

- Đến đây CRACKING diễn ra bình thường

II.3 - Dạng không có thông báo trong hàm MessageBoxA :

Homepage : http://www.imtoo.com

Soft : ImTOO CD Ripper 1.0.4

Cracked File : cdripper.exe (Microsoft Visual C++ 6.0 [Debug])

- Dùng PeiD kiểm tra biết chương trình được viết bằng Microsoft Visual C++ 6.0 [Debug]

- Chạy thử chương trình với User (U) và Fake Serial (FR) ta nhận được thông báo

"Invalid registration info!" Ta không thể tìm được chuỗi này trong Olly cũng

như trong kWdsm 10, nên ta dử dụng phương pháp dùng STACK :

**** Load và chạy chương trình với U và FR Chương trình xuất hiện thông báo

"Invalid registration info!" Giữ nguyên chương trình Quay trở lại Olly

**** Sau khi quay trở lại Olly, nhấn F12, Olly sẽ dừng chương trình lại Nhấn tiếp Alt-K để hiện Call stack of main thread :

Quote:

Trang 2

Address Stack Procedure / arguments Called from Frame 0012EB70 77D43C6B Includes

7FFE0304 USER32.77D43C69 0012EBA4

0012EB74 77D4B406 USER32.WaitMessage USER32.77D4B401 0012 EBA4

0012EBA8 77D4D9AA USER32.77D4B279 USER32.77D4D9A5 001 2EBA4

0012EBD0 77D662F4 USER32.77D4D8F6 USER32.77D662EF 0012E BCC

0012EE88 77D65D77 ? USER32.SoftModalMessageBox USER32.77D65D72 0012EE10

0012EF5C 77F6379E ntdll.77F78C4E ntdll.77F63799 0012 EF58

**** Ở đây ta chú ý đến dòng :

Quote:

0012EE88 77D65D77 ? USER32.SoftModalMessageBox USER32.77D65D72 0012EE10

**** Double-Click vào dòng này ta đến địa chỉ 77D65D72 :

Quote:

77D65D72 E8 19000000 CALL USER32.SoftModalMessageBox

77D65D77 66:837E 2C 00 CMP WORD PTR DS:[ESI+2C],0 ; <== Set

BreakPoint here

**** Sau khi đặt BP ở đây, Olly sẽ dừng chương trình lại, nhấn F8 để xuất hiện lại

thông báo "Invalid registration info!" Nhấn OK để chấp nhận thông báo này,

chương trình sẽ dừng lại ngay tại điểm BP này Xoá điểm đặt BP này đi Và dùng F8 trace tiếp

**** Sau khi trace qua một số lần (ở chương trình này là 7 lần ) RETN ta nhìn lên trên chút và thấy

Quote:

004615F4 68 9C4E5300 PUSH cdripper.00534E9C ; |Arg1 =

00534E9C ASCII "Invalid registration info!"

004615F9 E8 1E240700 CALL cdripper.004D3A1C ;

\cdripper.004D3A1C

- Đến đây CRACKING diễn ra bình thường

II.4 - Dạng không sử dụng hàm MessageBoxA :

Trang 3

- Dùng PeiD kiểm tra biết chương trình được PACK bằng ASPack 2.11c -> Alexey Solodovnikov UnPACK và kiểm tra lại biết chương trình được viết bằng Borland Delphi 4.0 - 5.0

- Chạy thử chương trình với User (U) và Fake Serial (FR) ta nhận được thông báo

“The license key XXXX is not scorrect” Ta không thể tìm được chuỗi này trong

Olly cũng như trong kWdsm 10, nên ta sử dụng phương pháp dùng STACK :

**** Load và chạy chương trình với U và FR Chương trình xuất hiện thông báo

“The license key XXXX is not scorrect” Giữ nguyên chương trình Quay trở lại

Olly

**** Sau khi quay trở lại Olly, nhấn F12, Olly sẽ dừng chương trình lại Nhấn tiếp Alt-K để hiện Call stack of main thread :

Quote:

0012F8B8 77D43C6B Includes

7FFE0304 user32.77D43C69 0012F8E8

0012F8BC 004561D4 <JMP.&user32.WaitMessage>

up-gdb_.004561CF 0012F8E8

0012F8EC 004559A0 ? gdb_.00456100

up-gdb_.0045599B 0012F8E8

0012F910 00452C70 gdb_.00455984

up-gdb_.00452C6B 0012F960

**** Ở đây ta chú ý đến dòng :

Quote:

0012F910 00452C70 gdb_.00455984

up-gdb_.00452C6B 0012F960

**** Double-Click vào dòng này ta đến địa chỉ 0012F960 :

Quote:

00452C69 > /8B03 MOV EAX,DWORD PTR DS:[EBX]

00452C6B |E8 142D0000 CALL up-gdb_.00455984

00452C70 |8B03 MOV EAX,DWORD PTR DS:[EBX] ; <== Set

BreakPoint here

00452C72 |80B8 8C000000>CMP BYTE PTR DS:[EAX+8C],0

00452C79 |74 0F JE SHORT up-gdb_.00452C8A

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

00452C7E |C780 34020000>MOV DWORD PTR DS:[EAX+234],2

00452C88 |EB 14 JMP SHORT up-gdb_.00452C9E

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

00452C8D |83B8 34020000>CMP DWORD PTR DS:[EAX+234],0

Trang 4

00452C94 |74 08 JE SHORT up-gdb_.00452C9E

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

00452C99 |E8 26FDFFFF CALL up-gdb_.004529C4

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

00452CA1 |8B80 34020000 MOV EAX,DWORD PTR DS:[EAX+234]

00452CA7 |85C0 TEST EAX,EAX

00452CA9 ^\74 BE JE SHORT up-gdb_.00452C69

**** Sau khi đặt BP ở đây, chương dừng lại tại BP Xoá BP Nhấn tiếp F8 ta nhận thấy đoạn CODE trên là một vòng lặp Để thoát khỏi vòng lặp này ta đặt BP bên ngoài vòng lặp này :

Quote:

00452CAB 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX ; <== Set

BreakPoint here

00452CAE 6A 00 PUSH 0

**** Nhấn F9 để đến BP này Chương trình xuất hiện thông báo “The license key XXXX is not scorrect” Nhấn CANCEL để đóng thông báo này, lập tức ta trở lại

chương trình trong Olly Xoá điểm đặt BP này Nhấn tiếp F8

**** Sau khi trace qua một số lần (ở chương trình này là 7 lần ) RETN ta nhìn lên trên chút và thấy

Quote:

0050F58A | E8 29FCFFFF CALL up-gdb_.0050F1B8

0050F58F | 84C0 TEST AL,AL

0050F591 | 74 5B JE SHORT up-gdb_.0050F5EE <=== JMP out of NAG if Serrial is Correct

- Đến đây CRACKING diễn ra bình thường

Moonbaby(reaonline.net)

Làm một cái script cho pp stack:

Các bạn chạy cái script sau cho các chương trình sử dụng hàm Messagboxa :

-Đầu tiên run chương trình

-Đến hộp thọai đang ký Đánh FU, FS

-Đừng nhấn nút reg, trở lại Olly

Trang 5

-Nhấn F12 tạm ngưng chương trính

-Chạy script sau:

Quote:

//===========================

// Set bp MessageBoxA use method Stack

// Author: Benina

// Date post: 7/10/2004

//Ver: 0.1

// For Newbie

//===========================

var x

var _api

var _dll

mov _api,"MessageBoxA"

mov _dll,"user32.dll"

gpa _api,_dll

cmp $RESULT,0

je label_exit

MSG "Exist one Breakpoint"

bp $RESULT

MSG "Program will run continuos, Press button Reg " eob follow_in_desASM

run

follow_in_desASM:

bc eip

eob to_user_code

mov x,[esp]

bphws x,"x"

MSG "Program will run continuos, Press button OK " run

to_user_code:

Trang 6

bpmc

rtu

label_exit:

ret//exits script

-

Sau khi chạy xong script này sẽ đến những gì moon nói trong tut trên

Các bạn thử xem

Benina(reaonline.net)

ĐẶT BREAKPOINT TRONG W32DASM ÁP DỤNG CHO PHƯƠNG PHÁP STACK

Các bạn tìm đọc bài của anh Moonbaby : "Dùng phương pháp stack" rồi hả đọc bài này nhe

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

TỪ KHÓA LIÊN QUAN