Tải bản đầy đủ (.pdf) (6 trang)

Cracker Handbook 1.0 part 33 ppt

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (136.91 KB, 6 trang )

dll như phương pháp 1 và 2 ).

Các breakpoint dùng để crack
1) Chuyển đổi dữ liệu
- String sang Byte hoặc Integer: __vbai2str
- String sang Long: __vbai4str
- String sang Single: __vbar4str
- String sang Double: __vbar8str
- String sang Currency: VarCyFromStr
- Integer sang String: VarBstrFromI2

2) Di chuyển dữ liệu
- String to memory: __vbaStrCopy
- Variant to memory: __vbaVarCopy or __vbaVarMove

3) Các phép toán
- Phép cộng : __vbavaradd
- Phép trừ : __vbavarsub
- Phép nhân : __vbavarmul
- Phép chia: __vbavaridiv
- XOR: __vbavarxor

4) Các phép khác
- __vbavarfornext
- __vbafreestr
- __vbafreeobj
- __vbastrvarval
- multibytetowidechar
- rtcMsgBox
- __vbavarcat
- __vbafreevar


- __vbaobjset

Lời khuyên chung khi crack chương trình code bằng Visual Basic
Các bác nên dùng SmartCheck để crack các chương trình Visual Basic. Nó là 1
chương trình rất hữu ích và các bác nên học cách sử dụng nó, hoặc ít ra là hiểu
được công việc của nó. Chúng ta thường dùng SoftICE và W32DASM và đặc biệt
là OllyDBG để crack các soft code bằng các ngôn ngữ khác. W32DASM thì crack
chương trình Visual Basic dễ hơn 2 cái kia, nhưng mà “cao cơ” hơn cả W32DASM
còn có SmartCheck – cùng họ Numega với SoftICE. Do vậy em sẽ cố gắng giải
thích cho các bác cách để crack 1 soft Visual Basic với SmartCheck và SoftICE
cùng 1 lúc.
1. Như thông thường, chúng ta chạy thử chương trình. Chờ xem chương trình làm
gì, và hãy nhớ những điều đó.
2. Sử dụng SmartCheck để chạy chương trình. Sau khi chạy chương trình và đăng
kí “lụi”, chúng ta hãy đóng chương trình lại. Khi chúng ta click vào “Show All
Events”, 1 “cây” thông tin sẽ hiện ra. Và việc tìm thứ mà chúng ta cần tìm trong
“mớ hỗn độn” đó không phải là dễ (thứ chúng ta cần tìm không nói chắc các bác
cũng biết hén :)). Vậy hãy click vào dòng mà chúng ta muốn trước khi chọn “Show
All Events”. Thông thường xxxxxx_Click.xxxxxx là tên button của chương trình.
3. Hãy tìm __vbastrcomp, __vbastrcmp hoặc __vbavartsteq trước. Nếu các bác
may mắn , các bác sẽ thấy được đoạn code dùng để so sánh serial.
4. Nếu các bác tìm không thấy chúng > có thể chương trình sử dụng phương pháp
kiểm tra serial khác. Bây giờ hãy tìm message Bugger-off. Ở trên nó 1 vài dòng
thường sẽ có 1 vài lệnh __vba. Hãy bắt đầu với những lệnh gần message Bugger-
off nhất > đặt breakpoint nó. Xong hãy tính số “sự kiện” của breakpoint mà các
bác đã đặt và sử dụng F5 trong SoftICE để trở về chương trình và break lại lần nữa.
Ví dụ : nếu các bác đặt breakpoint tại __vbafreestr thì có thể sẽ có rất nhiều cái như
vậy được dùng sau khi các bác click nút đăng kí. Và nếu breakpoint các bác muốn
được ghi là 10th_vbafreestr trong SmartCheck, các bác phải nhấn F5 9 lần để đến
10th_vbafreestr.

Và 1 điều các bác nên nhớ là các bác đang crack Visual Basic , do đó hãy thêm
dòng msvbvm60! vào phía trước.
5. Chạy chương trình, nhập vào bất cứ cái gì và click nút register > SoftICE sẽ
break (còn nếu nó không break thì các bác đã đặt breakpoint sai rồi đó).
6. Bắt đầu trace vào mỗi lệnh CALL và chú ý bất kì sự thay đổi nào của register.
Càng gần message Bugger-off bao nhiêu thì thời gian trace sẽ giảm lại bấy nhiêu.
Khi các bác nghi ngờ về cái gì đó, hãy trở lại SmartCheck và tìm breakpoint tiếp
theo. Breakpoint nằm trước có thể ở phía sau đoạn code so sánh.

The_lighthouse(REA)
PHẦN 7 : Window Messages For Crackers
WM_ACTIVATE
WM_ACTIVATE message sẽ xuất hiện khi window được activate hoặc bị
deactivate. Message này sẽ được gởi tới window procedure của window đang bị
deactivate trước, sau đó sẽ gởi tới window procedure của window đang được
activate.
Code:
fActive = LOWORD(wParam); // activation flag
fMinimized = (BOOL) HIWORD(wParam); // minimized flag
hwnd = (HWND) lParam; // window handle
Returns
Nếu chương trình chấp nhận message này, giá trị trả về là 0.

WM_CLEAR
Chương trình sẽ gởi WM_CLEAR message đến 1 edit control hoặc combo box để
xóa thứ được chọn
Code:
wParam = 0; // not used; must be zero
lParam = 0; // not used; must be zero
Returns

Message này không có giá trị trả về.

WM_CLOSE
WM_CLOSE message sẽ xuất hiện như 1 dấu hiệu window hoặc 1 chương trình
nào đó cần đóng lại
Retuns
Nếu chương trình chấp nhận message này, giá trị trả về là 0.

WM_COMMAND
WM_COMMAND message sẽ xuất hiện khi người dùng chọn 1 command item từ
menu, hay khi control gởi 1 bẳng thông báo đến parent window, hay khi phím tăng
tốc được hiểu
Code:
wNotifyCode = HIWORD(wParam); // notification code
wID = LOWORD(wParam); // item, control, or accelerator identifier
hwndCtl = (HWND) lParam; // handle of control
Returns
Nếu chương trình chấp nhận message này, giá trị trả về là 0.

WM_CREATE
WM_CREATE message sẽ xuất hiện mỗi khi chương trình yêu cầu window được
tạo bằng hàm CreateWindowEx hoặc CreateWindow. Window procedure của new
window nhận message này sau khi window được tạo , nhưng trước khi window trở
nên visible. Hàm này được gởi trước khi hàm CreateWindowEx hoặc
CreateWindow return.
Code:
lpcs = (LPCREATESTRUCT) lParam; // structure with creation data
Returns
Nếu chương trình chấp nhận message này, giá trị trả về là 0 để tiếp tục tạo window.
Nếu chương trình trả về -1, window sẽ bị hủy và hàm CreateWindowEx hoặc

CreateWindow trả về NULL handle.

WM_DESTROY
WM_DESTROY message sẽ xuất hiện khi window bị hủy. Nó được gởi đến
window procedure của window sau khi window bị remove khỏi màn hình.
Returns
Nếu chương trình chấp nhận message này, giá trị trả về là 0.

WM_GETTEXT
Chương trình sẽ gởi WM_GETTEXT message để copy text phù hợp với window
vào buffer dự phòng
Code:
wParam = (WPARAM) cchTextMax; // number of characters to copy
lParam = (LPARAM) lpszText; // address of buffer for text
Returns
Giá trị trả về là số kí tự được copy

WM_GETTEXTLENGTH
Chương trình gởi WM_GETTEXTLENGTH message để xác định chiều dài của
text kết hợp với window.
Code:
wParam = 0; // not used; must be zero
lParam = 0; // not used; must be zero
Returns
Giá trị trả về là chiều dài của text

WM_INITDIALOG
WM_INITDIALOG message được gởi đến dialog box trước khi dialog box được
display. Dialog box đặc trưng sử dụng message này khởi chạy control và carry out
những task khởi tạo ảnh hưởng đến sự xuất hiện của dialog box.

Code:
hwndFocus = (HWND) wParam; // handle of control to receive focus
lInitParam = lParam; // initialization parameter
Returns
Dialog box trả về TRUE để chỉ đạo Windows đặt keyboard focus vào control được
đưa ra bởi hwndFocus. Ngược lại, nó sẽ trả về FALSE để ngăn chặn Windows từ
setting keyboard focus mặc định.

WM_LBUTTONDBLCLK
WM_LBUTTONDBLCLK message sẽ xuất hiện khi người dùng double click
chuột trái khi con trỏ đang nằm trong khu vực client của window. Nếu “con chuột”
không được capture , message sẽ xuất hiện ở phía dưới con trỏ. Ngược lại message
sẽ xuất hiện ở window đã capture “con chuột”
Code:
fwKeys = wParam; // key flags
xPos = LOWORD(lParam); // horizontal position of cursor
yPos = HIWORD(lParam); // vertical position of cursor
Returns
Nếu chương trình chấp nhận message này, giá trị trả về là 0.

WM_LBUTTONDOWN
WM_LBUTTONDOWN message sẽ xuất hiện khi người dùng nhấn chuột trái khi
con trỏ đang nằm trong khu vực client của window. Nếu “con chuột” không được
capture , message sẽ xuất hiện ở phía dưới con trỏ. Ngược lại message sẽ xuất hiện
ở window đã capture “con chuột”
Code:
fwKeys = wParam; // key flags
xPos = LOWORD(lParam); // horizontal position of cursor
yPos = HIWORD(lParam); // vertical position of cursor
Returns

Nếu chương trình chấp nhận message này, giá trị trả về là 0.

WM_LBUTTONUP
WM_LBUTTONUP message sẽ xuất hiện khi người dùng “nhả” chuột trái khi con
trỏ đang nằm trong khu vực client của window. Nếu “con chuột” không được
capture , message sẽ xuất hiện ở phía dưới con trỏ. Ngược lại message sẽ xuất hiện
ở window đã capture “con chuột”
Code:
fwKeys = wParam; // key flags
xPos = LOWORD(lParam); // horizontal position of cursor
yPos = HIWORD(lParam); // vertical position of cursor
Returns
Nếu chương trình chấp nhận message này, giá trị trả về là 0.

WM_QUIT
WM_QUIT message cho biết yêu cầu để kết thúc 1 ứng dụng và được sinh ra khi
chương trình gọi hàm PostQuitMessage. Nó làm cho hàm GetMessage trả về 0.
Code:

×