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

Cracker Handbook 1.0 part 29 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 (91.15 KB, 6 trang )

Code:
LONG RegQueryValueEx(
HKEY hKey, // handle of key to query
LPTSTR lpszValueName, // address of name of value to query
LPDWORD lpdwReserved, // reserved
LPDWORD lpdwType, // address of buffer for value type
LPBYTE lpbData, // address of data buffer
LPDWORD lpcbData // address of data buffer size
);
Returns
Nếu function hoàn thành , giá trị trả về là ERROR_SUCCESS
Nếu function không hoàn thành , giá trị trả về là 1 giá trị lỗi.

The_lighthouse(REA)
PHẦN 4 : Kiến thức về lệnh nhảy (jump)

JCC - Lệnh nhảy có điều kiện
Code:
77 cb JA rel8 Jump short if above (CF=0 and ZF=0)
73 cb JAE rel8 Jump short if above or equal (CF=0)
72 cb JB rel8 Jump short if below (CF=1)
76 cb JBE rel8 Jump short if below or equal (CF=1 or
ZF=1)
72 cb JC rel8 Jump short if carry (CF=1)
E3 cb JCXZ rel8 Jump short if CX register is 0
E3 cb JECXZ rel8 Jump short if ECX register 0
74 cb JE rel8 Jump short if equal (ZF=1)
7F cb JG rel8 Jump short if greater (ZF=0 and SF=OF)
7D cb JGE rel8 Jump short if greater or equal (SF=0F)
7C cb JL rel8 Jump short if less (SF<>OF)
7E cb JLE rel8 Jump short if less or equal (ZF=1 or


SF<>OF)
76 cb JNA rel8 Jump short if not above (CF=1 or ZF=1)
72 cb JNAE rel8 Jump short if not above or equal (CF=1)
73 cb JNC rel8 Jump short if not carry (CF=0)
75 cb JNE rel8 Jump short if not equal (ZF=0)
7E cb JNG rel8 Jump short if not greater (ZF=1 or
SF<>OF)
7C cb JNGE rel8 Jump short if not greater or equal
(SF<>OF)
7D cb JNL rel8 Jump short if not less (SF=OF)
7F cb JNLE rel8 Jump short if not less or equal (ZF=0 and
SF=OF)
71 cb JNO rel8 Jump short if not overflow (OF=1)
7B cb JNP rel8 Jump short if not parity (PF=1)
79 cb JNS rel8 Jump short if not sign (SF=0)
75 cb JNZ rel8 Jump short if not zero (ZF=0)
70 cb JO rel8 Jump short if overflow (OF=1)
7A cb JP rel8 Jump short if parity (PF=1)
7A cb JPE rel8 Jump short if parity even (PF=1)
7B cb JPO rel8 Jump short if parity odd (PF=0)
78 cb JS rel8 Jump short if sign (SF=1)
74 cb JZ rel8 Jump short if zero (ZF=0)
Code:

0F 87 cw/cd JA rel16/32 Jump near if above (CF=0 and ZF=0)
0F 83 cw/cd JAE rel16/32 Jump near if above or equal (CF=0)
0F 82 cw/cd JB rel16/32 Jump near if below (CF=1)
0F 86 cw/cd JBE rel16/32 Jump near if below or equal (CF=1 or ZF=1)
0F 82 cw/cd JC rel16/32 Jump near if carry (CF=1)
0F 84 cw/cd JE rel16/32 Jump near if equal (ZF=1)

0F 84 cw/cd JZ rel16/32 Jump near if 0 (ZF=1)
0F 8F cw/cd JG rel16/32 Jump near if greater (ZF=0 and SF=OF)
0F 8D cw/cd JGE rel16/32 Jump near if greater or equal (SF=OF)
0F 8C cw/cd JL rel16/32 Jump near if less (SF<>OF)
0F 8E cw/cd JLE rel16/32 Jump near if less or equal (ZF=1 or SF<>OF)
0F 86 cw/cd JNA rel16/32 Jump near if not above (CF=1 or ZF=1)
0F 82 cw/cd JNAE rel16/32 Jump near if not above or equal (CF=1)
0F 83 cw/cd JNB rel16/32 Jump near if not below (CF=0)
0F 87 cw/cd JNBE rel16/32 Jump near if not below or equal (CF=0 and ZF=0)
0F 83 cw/cd JNC rel16/32 Jump near if not carry (CF=0)
0F 85 cw/cd JNE rel16/32 Jump near if not equal (ZF=0)
0F 8E cw/cd JNG rel16/32 Jump near if not greater (ZF=1 or SF<>OF)
0F 8C cw/cd JNGE rel16/32 Jump near if not greater or equal (SF<>OF)
0F 8D cw/cd JNL rel16/32 Jump near if not less (SF=OF)
0F 8F cw/cd JNLE rel16/32 Jump near if not less or equal (ZF=0 and SF=OF)
0F 81 cw/cd JNO rel16/32 Jump near if not overflow (OF=0)
0F 8B cw/cd JNP rel16/32 Jump near if not parity (PF=0)
0F 89 cw/cd JNS rel16/32 Jump near if not sign (SF=0)
0F 85 cw/cd JNZ rel16/32 Jump near if not zero (ZF=0)
0F 80 cw/cd JO rel16/32 Jump near if overflow (OF=1)
0F 8A cw/cd JP rel16/32 Jump near if parity (PF=1)
0F 8A cw/cd JPE rel16/32 Jump near if parity even (PF=1)
0F 8B cw/cd JPO rel16/32 Jump near if parity odd (PF=0)
0F 88 cw/cd JS rel16/32 Jump near if sign (SF=1)
0F 84 cw/cd JZ rel16/32 Jump near if 0 (ZF=1)
JMP - Lệnh nhảy không điều kiện
Code:
EB cb JMP rel8 Jump short, relative, displacement rel to next instruct
E9 cw JMP rel16 Jump near, relative, displacement rel to next instruct
FF /4 JMP r/m16 Jump near, absolute indirect, address given in r/m16

FF /4 JMP r/m32 Jump near, absolute indirect, address given in r/m32
EA cb JMP ptr16:16 Jump far, absolute, address given in operand
EA cb JMP ptr16:32 Jump far, absolute, address given in operand
FF /5 JMP m16:16 Jump far, absolute indirect, address given in m16:16
FF /5 JMP m16:32 Jump far, absolute indirect, address given in m16:32

The_lighthouse(REA)
PHẦN 5 : Kiến thức về SET

SETcc - Lệnh SET có điều kiện
Code:
0F 97 SETA r/m8 Set Byte if above (CF=0 and ZF=0)
0F 93 SETAE r/m8 Set Byte if above or equal (CF=0)
0F 92 SETB r/m8 Set Byte if below (CF=1)
0F 96 SETBE r/m8 Set Byte if below or equal (CF=1 or ZF=1)
0F 92 SETC r/m8 Set Byte if carry (CF=1)
0F 94 SETE r/m8 Set Byte if equal (ZF=1)
0F 9F SETG r/m8 Set Byte if greater (ZF=0 and SF=OF)
0F 9D SETGE r/m8 Set Byte if greater or equal (SF=0F)
0F 9C SETL r/m8 Set Byte if less (SF<>OF)
0F 9E SETLE r/m8 Set Byte if less or equal (ZF=1 or SF<>OF)
0F 96 SETNA r/m8 Set Byte if not above (CF=1 or ZF=1)
0F 92 SETNAE r/m8 Set Byte if not above or equal (CF=1)
0F 93 SETNB r/m8 Set Byte if not below (CF=0)
0F 97 SETNBE r/m8 Set Byte if not below or equal (CF=0 and ZF=0)
0F 93 SETNC r/m8 Set Byte if not carry (CF=0)
0F 95 SETNE r/m8 Set Byte if not equal (ZF=0)
0F 9E SETNG r/m8 Set Byte if not greater (ZF=1 or SF<>OF)
0F 9C SETNGE r/m8 Set Byte if not greater or equal (SF<>OF)
0F 9D SETNL r/m8 Set Byte if not less (SF=OF)

0F 9F SETNLE r/m8 Set Byte if not less or equal (ZF=0 and SF=OF)
0F 91 SETNO r/m8 Set Byte if not overflow (OF=1)
0F 9B SETNP r/m8 Set Byte if not parity (PF=1)
0F 99 SETNS r/m8 Set Byte if not sign (SF=0)
0F 95 SETNZ r/m8 Set Byte if not zero (ZF=0)
0F 90 SETO r/m8 Set Byte if overflow (OF=1)
0F 9A SETP r/m8 Set Byte if parity (PF=1)
0F 9A SETPE r/m8 Set Byte if parity even (PF=1)
0F 9B SETPO r/m8 Set Byte if parity odd (PF=0)
0F 98 SETS r/m8 Set Byte if sign (SF=1)
0F 94 SETZ r/m8 Set Byte if zero (ZF=0)
Lệnh SETcc lưu 1 trong destination nếu gặp điều kiện hoặc lưu 0 nếu như không
gặp điều kiện. Destination (r/m8) là 1 effective address (địa chỉ) hoặc 1 register
(thanh ghi).

The_lighthouse(REA)
PHẦN 6 : Tips & Tricks for Cracking
06.1 Crippled Programs
==============
Cách tốt nhất để crippled chương trình là dùng hàm MessageBox[A] hoặc
DialogBox[A] vì nó thường được dùng để gọi thông báo như “Function not
avaiblein demo” hay “Can’t save in Shareware/Demo”… mà các bác thấy mỗi khi
các bác “vô tình” dùng những chức năng bị disable (có thể là do các bác dùng bản
shareware > bị giới hạn chức năng).

06.2 Dongles
=======
Lần đầu tiên mà các bác bước vào “con đường tội lỗi nhưng cũng hết sức thú vị ”
cracking, khả năng của các bác sẽ được kiểm tra và đo được thông qua việc crack
dongles. Dongle programs đã được giới cracker thế giới thừa nhận là 1 trong

những chương trình khó crack nhất. Và nó được chọn là “kẻ canh giữ” cho những
“đại gia” như Cubase, SoftImage và 3D Studio Max cũng như nhìu plugins khác.
Dzậy Dongle là gì mà lại “có giá” như thế ? Thưa, nó là sự liên kết giữa hardware
và software protection. Cấu tạo của hardware là 1 plug nhỏ và plug này thường nối
đến parallel port (cổng song song) của máy tính . Em thường thấy nhất là Sentinel
và HASP, ngoài ra còn có DesKEY Đặt giả thiết nếu các bác không có dongle
chương trình không chạy , thường chương trình sẽ kiểm tra xem có dongle hay
không trong suốt quá trình hoạt động .
Hiện nay việc crack dongle không khó khi các bác có actual dongle itself , những
tác giả của các tutorial hầu như đều có dongle trong place đầu tiên, không dùng
dongle các bác sẽ phải zen rất nhiều và có thể pray (cầu nguyện) – hài thật :), ở đây
chắc tác giả muốn nhấn mạnh tầm quan trọng của dongle.
Với dongle em không thể nhấn mạnh tầm quan trọng của việc phải có thông tin về
“kẻ canh giữ” mà các bác sẽ gặp , một nửa sự thách thức là xác minh flavour của
dongle mà các bác gặp (ở đây em xin đưa ra 1 hướng dẫn: đối với HASP thì các
bác hãy xem tại ) . Các bác hãy sử dụng các bộ máy tìm kiếm
trên mạng cho những vendor khác, thậm chí các bác hãy theo dõi những file chẳng
hạn sentinel.vxd trong suốt quá trình install. Các bác nên làm thử và hiểu chính
xác dongle mà các bác dự định sẽ crack.
Sau đây là những “mánh khóe” mà các bác nên đọc qua để có thể crack tốt hơn các
dongle :
1. Hãy nhớ rằng phần dễ crack nhất trong dongle là khi software drive hardware,
đó là lúc hầu hết các phần của software muốn nhận được trả lời từ hardware, và các
bác không nên crack vào dongle wrapper trừ khi các bác có đủ thời gian ngồi chờ
cho 1 session khá lâu.
2. Hầu hết những dongle bổ sung đều kém, do đó người lập trình thường sẽ viết
những function dùng để kiểm tra phản hồi từ dongle sử dụng tên những function
“ngớ ngẩn” mà sẽ hiện ra hoàn toàn khi bị disassembly. Còn nếu họ dùng dongle
API của người sản xuất thì sự bảo vệ có thể sẽ bền vững hơn.
3. Hầu hết dongle có hơn 1 beggar off/ beggar on khi kiểm tra, đôi khi cờ được set

riêng rẽ để đánh lừa các bác, theo dấu đi xuống khá là dễ một khi các bác chắc
chắn rằng mình đang nhìn vào “sơ đồ” bảo vệ.
4. Một vài dongle routine sẽ cố gắng làm “mờ mắt” các bác bằng những phép toán
phức tạp mà trên thực tế khi thi hành thì nó lại rất đơn giản. Trong assembler, ngay
cả những phép toán đơn giản cũng có thể biến thành rắc rối, nhưng đó cũng không
phải là vấn đề lớn trong SoftICE bởi vì nó thường có 1 beggar off kiểm tra ở điểm
cuối.
5. Đối với hầu hết các phần, các bác đừng nên tính những đoạn code dongle hoặc
routine trừ khi các bác muốn biết nó như thế nào ở trạng thái bình thường, điều đó
đôi lúc tốt hơn việc chúng ta cứ ngồi bố trí cho “đẹp mắt” các đoạn NOP nhỏ và
các kĩ thuật bắt buộc “tàn bạo” (ghê quá)
6. Không nản lòng khi không vượt qua được dongle, một vài chương trình không
thể crack mà không có dongle present, một số dongle tìm chương trình mà nó bảo
vệ đến 1 khoảng rộng mà việc patch chỗ này là không thực tế.
Điều cuối cùng mà các bác nên nhớ là hãy dùng bất cứ thông tin nào mà các bác có
được. Chúc các bác may mắn ;)

Các Breakpoint hữu ích dùng để crack dongle :
BPIO –h 278 R
BPIO –h 378 R


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×