Cracker Handbook 1.0 part 29 ppt

6 266 2
Cracker Handbook 1.0 part 29 ppt

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

Thông tin tài liệu

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 ftp://ftp.hasp.com) . 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 . (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. 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. 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

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