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

Cracker Handbook 1.0 part 35 ppt

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

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 20
Dung lượng 237,3 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ững kiến thức cơ bản về sử dụng SoftICE : a.Bật cửa sổ SoftICE _Bạn có thể bật hiển thị cửa sổ SoftICE bất kì lúc nào sau khi đã cài SoftICE bằng cách nhấn Ctrl-D, mặc định là vậy,

Trang 1

TURTORIAL BY hacnho

FROM HVA-www.hvaonline.net

CONTACT ME : hacnho@hotmail.com

How To Become A Cracker

Learn 2 crack, very easy

Lời Phi Lộ:

_Chào các bạn chúng ta lại gặp nhau ở phần II này, qua bài viết ở phần I hẳn các bạn đã chuẩn bị đầy đủ “súng ống đạn dược” để chiến đấu với các soft rồi phải không? Ok ở phần II này tôi xin hướng dẫn các bạn sử dụng công cụ SoftIce, đây là công cụ debug mạnh cực kỳ, nó được ví như khẩu M-16 của các chiến sỹ marine trên chiến trường Muốn “giết chết” được phần mềm các bạn phải hiểu rõ các sử dụng nó, nếu không cẩn thận thì bạn sẽ bị chính nó kill đấy…

_Chú ý: trong bài này tôi có tham khảo bài viết của DTK,

NVH©—thanx a lot for support

hacnho

PHẦN II:

1.SoffICE là gì và tại sao phải dùng nó?

_Chúng ta đều biết SoftIce là công cụ của hãng Numega viết ra dùng cho các programmer dùng để debug chương trình…Tuy nhiên nó được các cracker thế giới dùng để crack các phần mềm…Do vậy nguyên gốc của nó không phải là dùng để phục vụ cho mục đích crack…Có nhiều bạn hỏi tui tại sao Softice là một công cụ dùng để crack mà lại đòi số serial, sao ta không dùng chính nó để crack nó Trời ạ, có bạn lại dùng chính SoftIce để crack chính nó, có bạn crack không được rồi

Trang 2

la lên rằng “ Trời ạ, SoftIce lại detect SoftIce…”!!! He he bây giờ các bạn đã hiều về lai lịch của SofIce rồi chứ, nó không phải phần mềm viết riêng cho các cracker chúng ta đâu mà chính do chúng ta tìm được

nó và sử dụng nó vào mục đích đen tối đấy chứ Không sao bản thân cracker là những người rất nghèo, nghèo tiền, nghèo tình, nhưng chỉ

có giàu duy nhất ở một lòng đam mê, luôn luôn tìm tòi khám

phá…Thử hỏi nếu không có các cracker thì thế giới IT đâu phát

triển…(vì có phá để rồi mới có sửa …rồi bị phá tiếp ke ke)

_Các nhà lập trình chắc chắn rất căm thù cracker, nhưng họ không nghĩ đến chúng ta những người nghèo tiền nhưng giàu lòng đam mê Đơn cử như hãng SoftTex họ viết ra EV Tran Tech 2.0 nhưng lại bán với giá cắt cổ, 4000000VND, trời ạ tui mỗi tháng má tui gửi cho 1 triệu , trừ các khoản chi phí tui chỉ còn lại vỏn vẹn có 50000, nếu muốn xài Ev Tran tui phải để dành dài cổ luôn…Do đó cách duy nhất

là crack nó bằng M-16 thôi…Oh các bác thử tưởng tượng tui chỉ dùng

có vỏn vẹn có một lệnh (?Edx)và set hai break point(bpx

getwindowtexta, bpx 4xxxBC) : offset xxx các bác tìm nhé:: là tui đã được số returncode ;) Không phải tui ham crack mà tại họ ép tui đấy chứ

2 Những kiến thức cơ bản về sử dụng SoftICE :

a.Bật cửa sổ SoftICE

_Bạn có thể bật (hiển thị) cửa sổ SoftICE bất kì lúc nào sau khi đã cài SoftICE bằng cách nhấn Ctrl-D, mặc định là vậy, bạn cũng có thể thay đổi bằng lệnh:

ALTKEY [Alt letter | Ctrl letter]

_Thí dụ nếu bạn muốn dùng Alt-E để bật/tắt SoftICE thay cho Ctrl-D, trong Command Window (khung dưới cùng của SoftICE) nhập:

ALTKEY Alt E

b.Giao diện SoftICE

_Cửa sổ SoftICE được chia làm nhiều khung, nếu bạn cấu hình như file Winice.dat của tui thì chỉ thấy được 4 khung quan trọng nhất:

 Khung trên cùng là Register Window, hiển thị các giá trị hiện

Trang 3

hành của các thanh ghi, sau mỗi câu lệnh thi hành, thanh ghi hay cờ nào bị thay đổi do câu lệnh đó thì màu hiển thị sẽ thay đổi, có màu xanh lá (bình thường là trắng)

Bạn có thể bật/tắt khung này bằng lệnh WR Trong Command Window (khung dưới cùng) nhập:

WR (enter)

lần thứ nhất sẽ tắt (hay bật) Register Window, gọi lần thứ 2 để bật (hay tắt) nó

Để thay đổi giá trị của 1 thanh ghi bất kì bạn có thể dùng chuột kích vào giá trị của thanh ghi cần thay đổi trong Register

Window sau đó nhập giá trị cần thay đổi hoặc trong Command Window bạn dùng lệnh:

Thí dụ để thay đổi giá trị của thanh ghi EAX đến 400000h, nhập:

R EAX 400000

Để bật tắt cờ dùng cú pháp sau:

R FL Tên_cờ

Thí dụ cờ nhớ hiện tại đang tắt, để set nó lên, nhập:

R FL C

Tương tự để tắt nó dùng lệnh:

R FL C

 Khung thứ hai là Data Windows dùng hiển thị dữ liệu, nếu bạn

đã từng sử dụng qua 1 trình biên tập Hex sẽ thấy rất quen thuộc với khung này Được chia thành 3 cột, cột thứ nhất cho biết địa chỉ trong vùng nhớ của dữ liệu đang hiển thị, cột thứ 2 là giá trị từng Byte dữ liệu (mặc định là vậy, bạn cũng có thể thay đổi để hiển thị kiểu dữ liệu khác) và cột cuối cùng là dữ liệu hiển thị dưới dạng các kí tự ASCII, đối với cột này SoftICE chỉ hiển thị các kí tự in được và không phải là các kí tự đồ họa

Bạn có thể dùng chuột để kéo lên 1 hàng hay 1 trang dữ liệu

Trang 4

trong cửa sổ này nhờ vào thanh Scrollbar ở cạnh phải của

khung Bạn cũng có thể dùng bàn phím:

Alt-Up : lên 1 hàng

Alt-Page Up : lên 1 trang

Để bật/tắt Data Window dùng lệnh WD

Để thay đổi kích thước (chiều cao) của Data Window dùng lệnh:

Thí dụ bạn muốn đặt kích thước của Data Window là 20 hàng, trong Command Window nhập:

WD 20

Bạn có thể biên tập trực tiếp các giá trị trong Data Window bằng cách kích chuột vào khung Data Windows (hoặc nhấn

Alt-D) để chuyển con trỏ vào khung này, sau đó nhập giá trị cần sửa đổi

Để thay đổi kiểu hiển thị dữ liệu trong Data Window thí dụ Byte, Word, DWord, Short Real, Long Real hay 10 Byte Real bạn có thể dùng chuột kích vào text hiển thị kiểu dữ liệu hiện dùng nằm phía trên của khung Data Window

 Khung thứ 3 là Code Window, hiển thị các lệnh hợp ngữ, được chia thành 3 cột, cột bên trái hiển thị địa chỉ trong bộ nhớ của câu lệnh, cột thứ hai là mã Byte của câu lệnh và cột thứ 3 hiển thị lệnh được disassembly

Bạn có thể dùng chuột để kéo lên 1 hàng hay 1 trang dữ liệu trong cửa sổ này nhờ vào thanh Scrollbar ở cạnh phải của

khung Bạn cũng có thể dùng bàn phím:

Ctrl-Up : lên 1 hàng

Ctrl-Page Up : lên 1 trang

Trang 5

Để bật/tắt Code Window dùng lệnh WC

Để thay đổi kích thước (chiều cao) của Code Window dùng lệnh:

Thí dụ bạn muốn đặt kích thước của Code Window là 10 hàng, trong Command Window nhập:

WC 10

Nếu thấy cột chứa mã Byte của các câu lệnh (cột thứ 2) không cần thiết, bạn có thể tắt nó bằng cách nhập lệnh Code Off trong Command Window, và bật lại bằng lệnh Code On

Để di chuyển con trỏ vào trong Code Window bạn nhấn Alt-C

Câu lệnh nằm trên thanh ngang màu đỏ trong Code Window là câu lệnh đang được thực thi tại thời điểm SoftICE bật lên, và được SoftICE làm "đóng băng" tạm thời

 Khung thứ 4 là Command Window dùng để nhập lệnh và hiển thị các thông báo của SoftICE

Để xoá các lệnh đã nhập hoặc các thông báo tạo bởi SoftICE trước đó dùng lệnh Cls

_Để bật/tắt các khung khác trong cửa sổ SoftICE bạn có thể dùng các lệnh sau:

 WF : bật/tắt Floating Point Stack Window

 WL : bật/tắt Locals Window

 WW : bật/tắt Watch Window

_Thanh nằm dưới cùng của cửa sổ SoftICE để hiển thị các trợ giúp tức thời (bên trái) và tên của Process (tiến trình) đang được theo dõi bởi SoftICE (bên phải)

Trang 6

c.Thoát khỏi cửa sổ SoftICE

_Để thoát tạm thời khỏi cửa sổ SoftICE dùng lệnh X

Bạn cũng có thể tạm thoát SoftICE bằng cách nhấn F5 hoặc Ctrl-D

d.Thay đổi kích thước của cửa sổ SoftICE

_Để thay đổi kích thước của cửa sổ SoftICE dùng lệnh:

Lines kích_thước_mới

_Thí dụ để thay đổi cửa sổ SoftICE thành 60 dòng, nhập:

Lines 60

e.Lấy trợ giúp từ SoftICE

_Để hiển thị các trợ giúp của SoftICE bạn có thể dùng lệnh H hoặc

Help

_Để nhận được trợ giúp riêng biệt về 1 lệnh nào đó dùng cú pháp sau:

H [command]

hay

Help [command]

_Thí dụ lệnh:

H AltKey

sẽ hiển thị các trợ giúp của SoftICE cho lệnh AltKey như sau:

Set key sequence to invoke window

ALTKEY [ALT letter | CTRL letter]

Ex : ALTKEY ALT D

f.Khó khăn với SoftICE

Trang 7

_SoftICE là 1 chương trình rất khó chịu, bất kì khi nào bạn thi hành 1 ứng dụng bị lỗi hoặc xung đột với SoftICE, cửa sổ SoftICE sẽ bật lên ngay, gặp trường hợp đó, bạn nhấn phím C để tiếp tục thi hành ứng dụng này hay nhấn phím R để trở về SoftICE (con trỏ sẽ xuất hiện lại trong Command Window của SoftICE để cho phép nhập lệnh), bạn nhập lệnh EXIT để nhờ SoftICE ép Process gặp lỗi này thoát cưỡng bức Nếu sau khi làm như vậy, bạn gặp lỗi màn-hình-xanh, cứ bình tĩnh nhấn Enter hoặc Esc, hệ thống sẽ trở lại bình thường còn nếu hệ

thống bị "đóng băng" thật sự, hay chấp nhận điều đó Nhân vô thập toàn sự vô thập mỹ mà!!!

_Bạn có thể tìm hiểu thêm các lệnh căn bản khác của SoftICE bằng

cách tham khảo trợ giúp

3.Dùng Breakpoint (điểm ngắt) trong SoftICE

a.Breakpoint là gì và tại sao phải dùng nó?

_Có thể hiểu 1 cách gần đúng Breakpoint tương tự như 1 sự gài bẫy

hệ thống Khi bạn tạo 1 Breakpoint bằng SoftICE (hay các chương trình Debug tương tự khác), bất kì khi nào hệ thống xuất hiện tình trạng mà nó thoả mãn các điều kiện trong Breakpoint của bạn,

SoftICE sẽ đóng băng tiến trình xảy ra Breakpoint, và bạn có thể theo dõi tình trạng hiện hành của hệ thống (mã, dữ liệu, các thanh ghi ) nhờ vào cửa sổ của SoftICE

_Đặt 1 Breakpoint chính xác, đó là điều kiện đầu tiên để bạn có thể trở thành 1 Cracker

b.Giới thiệu về Breakpoint trong SoftICE

_Bạn có thể dùng SoftICE để thiết lập Breakpoint trong mã chương trình đang thi hành, trong thao tác đọc viết vào 1 vị trí bộ nhớ, ngắt

Trang 8

(interrupts) và đọc viết tới các I/O ports SoftICE sẽ gán 1 chỉ số, từ 0 đến FFh cho mỗi Breakpoint được thiết lập Bạn có thể dùng chỉ số của Breakpoint để nhận diện các Breakpoint khi đặt, xóa, vô hiệu hóa, kích hoạt hay biên tập chúng

_Tất cả các Breakpoint của SoftICE là bền vững, nghĩa là SottICE sẽ theo dõi và duy trì 1 Breakpoint cho tới khi bạn xoá hoặc vô hiệu hóa

nó bằng lệnh BC hay BD Sau khi xoá các Breakpoint, có thể xem lại chúng bằng lệnh BH, điều này sẽ hiển thị 1 danh sách các Breakpoint

đã dùng

_Trong SoftICE, bạn có thể đặt 1 lần tới 256 Breakpoint Tuy nhiên,

số các Breakpoint Memory (BPM) và I/O (BPIO) không được quá 4, điều này là do hạn chế của bộ vi xử lí x86

c.Những dạng Breakpoint được hổ trợ bởi SoftICE

_SoftICE cung cấp 1 loạt các khả năng Breakpoint đầy sức mạnh như sau:

 Execution Breakpoints : SoftICE thay thế chỉ thị máy (lệnh) hiện có bởi INT 3 Bạn có thể dùng lệnh BPX để thiết lập

Execution Breakpoints

 Memory Breakpoints : SoftICE dùng các thanh ghi debug của x86 để ngắt khi 1 hay nhiều Byte/Word/DWord xác định nào đó của bộ nhớ được đọc, viết hoặc thi hành Bạn dùng lệnh BPM

để đặt Memory Breakpoints

 Interrupt Breakpoints : SoftICE chặn ngắt (interrupt) bằng cách sửa đổi IDT (Interrupt Descriptor Table) vectors Bạn dùng lệnh

BPINT để đặt Interrupt Breakpoints

 I/O Breakpoints : SoftICE dùng các thanh ghi debug mở rộng trên các CPU Pentium và Pentium-Pro để theo dõi các chỉ thị IN hay OUT đến 1 cổng (port) xác định nào đó Bạn có thể dùng lệnh BPIO để đặt I/O Breakpoints

 Window Message Breakpoints : SoftICE bẫy 1 hoặc 1 dãy các

Trang 9

thông điệp đi đến 1 cửa sổ xác định Bạn có thể dùng lệnh

BMSG để thiết lập Window Message Breakpoints

d.Các tùy biến cho Breakpoint

_Bạn có thể tùy biến thêm cho các dạng Breakpoint bằng cách dùng 2 tùy chọn sau:

 Biểu thức điều kiện [IF expression] : Muốn Breakpoint xảy ra biểu thức phải có giá trị khác 0 (True)

 Hành vi Breakpoint [DO "command1;command2;"] : 1 dãy các lệnh SoftICE sẽ được tự động thi hành khi xảy ra Breakpoint

e.Execution Breakpoints

_1 Execution Breakpoint sẽ chặn các chỉ thị máy thí dụ như 1 lời gọi hàm hay 1 câu lệnh nào đó Đây là dạng Breakpoint thường dùng nhất Bằng cách thay thế câu lệnh hiện có bằng 1 lệnh INT 3, SoftICE sẽ lấy được điều khiển khi thi hành Breakpoint INT 3 này

_Có 2 cách để đặt Execution Breakpoint trong SoftICE : dùng chuột

và dùng lệnh BPX

*.Dùng chuột để đặt Breakpoint

Bạn có thể dùng chuột để đặt hay xóa Breakpoint dạng point-and-shoot (Breakpoint bền vững) và Breakpoint dạng one-shot (Breakpoint chỉ dùng 1 lần)

Để đặt 1 Breakpoint dạng point-and-shoot, trong Code Window kích đôi vào hàng lệnh mà bạn muốn đặt điểm ngắt SoftICE sẽ điểm sáng hàng này Kích đôi hàng này lần nữa để xóa Breakpoint

Để đặt Breakpoint dạng one-shot, kích chuột vào hàng mà bạn muốn đặt Breakpoint để di chuyển con trỏ đến hàng này sau đó dùng lệnh

HERE (hay nhấn phím F7)

khi thi hành đến hàng lệnh đã được đặt Breakpoint, SoftICE sẽ cho

"đóng băng" Process đang theo dõi và bạn có thể theo dõi tình trạng hiện hành của tiến trình này

*.Dùng lệnh BPX để đặt Breakpoint

Trang 10

Dùng lệnh BPX với các tham số sau để đặt 1 Execution Breakpoint:

BPX [address] [IF expression] [DO "command1;command2;"]

_Tìm hiểu thí dụ sau để hiểu kĩ hơn về lệnh BPX:

Chạy Notepad, gõ 1, 2 từ sau đó chọn File.New Notepad sẽ hiển thị hộp thông báo nhắc nhở có Save lại không Hộp thông báo có title 'Notepad', với chuỗi thông báo 'The text in the Untitled file has

changed.\n\nDo you want to save the changes?'

Ghi chú: '\n' có nghĩa là xuống hàng

Bạn nhấn Cancel

Để hiển thị được hộp thông báo trên, Notepad phải gọi API

MessageBoxA Chúng ta đặt 1 Breakpoint sao cho khi Notepad gọi API trên sẽ bị SoftICE cho "đóng băng"

Vào SoftICE (Ctrl-D), nhập:

BPX MessageBoxA

Rời SoftICE (Ctrl-D lần nữa hay nhập lệnh X hoặc bạn nhấn F5), vào Notepad, chọn File.New Cửa sổ SoftICE sẽ bật lên, chúng ta đang ở điểm vào của API MessageBoxA Mã mà bạn thấy trên Code Window không phải là mã của Notepad mà là mã của Kernel32.dll được ánh xạ qua vùng nhớ của Notepad, đừng quan tâm đến chuyện đó, nhớ rằng Breakpoint của chúng ta đã làm việc tốt

Hãy tìm hiểu kĩ thêm 1 chút, xem mẫu hàm của API MessageBoxA:

int MessageBox(

HWND hWnd, // handle of owner window

LPCTSTR lpText, // address of text in message box

LPCTSTR lpCaption, // address of title of message box

UINT uType // style of message box

);

Nếu Notepad muốn gọi API này nó phải truyền đủ 4 tham số trên qua Stack (nhờ lệnh Push) Để ý kĩ các giá trị trên đỉnh Stack trong lúc này:

Trang 11

ESP (+

0h)

DWord chứa địa chỉ trở về mã Notepad, tức địa chỉ của câu lệnh kế tiếp lệnh gọi API

MessageBoxA trong Notepad ESP +

ESP +

8h lpText

ESP +

Ch lpCaption

ESP +

10h uType

Ghi chú: trong Win32 mỗi lần Push vào stack phải Push 1 DWord (4

Byte), khác với Dos mỗi lần Push chỉ là 1 giá trị 2 Byte

Nếu bạn không hiểu những điều tui vừa nói ở trên thì cũng không sao, bạn cứ tạm chấp nhận Nhưng nếu bạn muốn tìm hiểu kĩ hơn, hẹn gặp lại bạn ở 1 tài liệu khác dạy về lập trình Hợp Ngữ trên Windows, tui sẽ

cố gắng viết nhanh để Upload lên cho các bạn

Khi SoftICE dừng lại ngay trên điểm vào của API MessageBoxA, nhập:

D ESP+4

Theo bảng trên, lệnh này sẽ hiển thị trên Data Window giá trị của tham số hWnd tức Handle của cửa sổ Notepad

Trên Data Window, bạn sẽ thấy 4 byte đầu tiên có dạng 'A0 04 00 00' (máy bạn có thể khác), vậy Handle của cửa sô Notepad là 4A0h

Tiếp tục nhập lệnh:

D ESP + 8

sẽ thấy 4 byte '38 F8 63 00' (tức DWORD 63F838h)

Nhập:

D 63F838

Lệnh này sẽ Dump các Byte tại địa chỉ 63F838h và bạn sẽ thấy dòng

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