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

Cracking part 14 pot

6 215 0
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 114,05 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Lệnh này Assemble sẽ lấy toán hạng left trừ toán hạng right, kết quả được lưu trong các cờ mà không thay đổi nội dung của 2 toán hạng trên.. Một vài chương trình sử dụng nó kiểm tra, như

Trang 1

CMP

Cú pháp : CMP <left>,<right>

Left: là thanh ghi hay bộ nhớ

Right : là thanh ghi hay bộ nhớ hay trực hằng

Tác dụng : dùng để so sánh giữa toán hạng left và toán hạng right Lệnh này Assemble sẽ lấy toán hạng left trừ toán hạng right, kết quả được lưu trong các cờ mà không thay đổi nội dung của 2 toán hạng trên

Kết quả của phép so sánh :

+ Đối với số không dấu :

Left > Right=>ZF=0, CF=0

Left = Right=>ZF=1, CF=0

Left < Right=>ZF=0, CF=1

+Đối với số có dấu :

Left > Right=>ZF=0/1, OF=0, SF=0/1

Left = Right=>ZF=1, OF=0, SF=0

Left < Right=>ZF=0, OF=0/1, SF=1/0

Ví dụ : MOV AX, 6000h

CMP AX, -7000h

<=>6000h – (-7000h)

Đây là 1 lệnh quan trọng mà chúng ta cần quan tâm Một vài chương trình sử dụng nó kiểm tra, như là so sánh real serial với số serial ta nhập vào khi đăng kí, hay kiểm tra chương trình đã được đăng kí hay chưa…

Và ta thấy lệnh này thường được đặt trước lệnh jump

Quote:

Flags

Về cơ bản , Flags giống registers ngoại trừ việc Flags chỉ có thể tồn tại true (đúng) hoặc false (sai) Nó được set bởi những lệnh như CMP, và được dùng để kiểm tra kết quả lệnh call Ví dụ :

CMP AX, BX So sánh AX và BX, nếu bằng thì cờ Zero được set là 0

JZ 00124531 _Nếu cờ zero đã được set thì nhảy đến địa chỉ 00124531

Quote:

INT (interupt - ngắt)

Cú pháp : INT <số ngắt>

Định nghĩa và tác dụng : ngắt là 1 tín hiệu được gửi đến bộ vi xử lý để tạm ngưng công việc đang làm và xử lý 1 nhiệm vụ khác Sau khi xử lý xong thì chương trình bị ngăt sẽ tiếp tục lại

Ví dụ : INT 21h ( gọi ngắt 21 của DOS )

Ở đây chúng ta có 2 loại ngắt là :

+ Ngắt cứng : được phát sinh bởi 1 mạch máy tính để đáp lại 1 sự kiện nào đó Nó được dùng để điều khiển các thiết bị quan trọng như bàn phím, ổ đĩa, máy in

+ Ngắt mềm : được nhiều người lập trình sử dụng để yêu cầu các phục vụ hệ thống ngắt

Trang 2

mềm xảy ra khi chương trình gọi phục vụ ngắt bằng lệnh INT <interupt>

Bạn sẽ không thấy lệnh này khi debug chương trình window, nhưng nó “gây náo loạn” khắp mọi nơi trong DOS Thường các thông số vượt qua default registers( như AX, BX, CX…)

Quote:

JMP

Cú pháp : JMP address

Tác dụng : tương đương với GO TO, nghĩa là nó sẽ nhảy đến address

Ví dụ : JMP 00402011

JMP là lệnh nhảy không điều kiện nhảy đến section của code

Có rất nhiều sự khác nhau trong lệnh này, và quan trọng nhất là :

JZ nhảy nếu cờ zero được set ( giống như JE )

JNZ _nhảy nếu cờ zero không được set ( giống như JNE )

Và nó thường được đi theo sau lệnh CMP :

CMP RealSerial,FakeSerial _so sánh real serial với fake serial do ta nhập vào

JNE nhảy nếu không bằng

Quote:

LODSB / LODSW

Cú pháp : LODSB / LODSW

Tác dụng : load 1 byte hoặc 1 word từ DS:SI và đặt nó vào AL (đối với LODSB) hay vào

AX (đối với LODSW)

Ví dụ : LODSW

Hãy chuyển DS:SI points đến word mà đang giữ giá trị Ebh

LODSW

AX bây giờ sẽ chứa giá trị EBh

Lệnh này thương được sử dụng cùng với lệnh REP

Quote:

MOV

Cú pháp : MOV <đích>,<nguồn>

<đích>: chỉ có thể là 1 thanh ghi hay bộ nhớ

<nguồn>: có thể là thanh ghi, bộ nhớ hay hằng

Tác dụng : chuyển nội dung toán hạng nguồn vào toán hạng đích

Ví dụ : MOV AX,DX

Các bác sẽ thấy có rất nhiều lệnh này khi các bác step các đoạn code, về cơ bản (ngôn ngữ BASIC) nó là LET đích=nguồn

Có rất nhiều biến thể khác bao gồm MOVSX, nhưng về cơ bản tất cả chúng đều làm 1 nhiệm vụ Nó có thể giúp để có Intel Programming Specifications từ website của chúng Quote:

MOVSB / MOVSW

Trang 3

Cú pháp : MOVSB / MOVSW

Tác dụng : chuyển byte (đối với MOVSB) hoặc word (đối với MOVSW) từ DS:SI đến ES:DI

Ví dụ : MOVSB

Hãy chuyển DS:SI points đến byte mà giữ giá trị 5h

MOVSB lấy byte của DS:SI points và đặt nó trong ES:DI

Byte của ES:DI bây giờ có giá trị là 5h

Lệnh này thường được dùng với lệnh REP

Quote:

Registers

Registers là nơi mà chứa dữ liệu Một điều duy nhất chúng ta lo lắng là: (E)AX, (E)BX, E(CX), E(DX) (chữ E chỉ có ý nghĩa khi chúng ta debug 32bit-code

Như vậy cặp registers là :

DS:SI có thể được dùng như nguồn của chuỗi hoạt động

ES:DI sử dụng như mục tiêu của chuỗi hoạt động

Việc hiểu registers không phải là quá quan trọng trong việc crack, các bác chỉ cầ bít nó là những biến số để lưu trữ dữ liệu là được

Quote:

REP ( Repeat String Operation)

Cú pháp : REP

Tác dụng : Lập lại dữ liệu trong CX register Lệnh REP đặt trước MOVSB, LODSB hay STOSB sẽ làm cho lệnh này lặp lại chính nó

Ví dụ : MOV AL,Bh _AL bao gồm bh

MOV CX,5h _CX bao gồm 5h

REP STOSB _copy giá trị của AL (ở đây là 5h) vào nơi mà DS:SI point 5 times và increment SI

Quote:

RET

Cú pháp : RET

Tác dụng : trở lại function

Ví dụ : RET

Các bác chắc đã thấy lệnh này ở cuối mỗi function, và nó chỉ đạo bộ xử lý máy tính trở lại địa chỉ của lệnh call gọi function

Quote:

STOSB / STOSW

Cú pháp : STOSB / STOSW

Tác dụng : Lấy giá trị trong AL (STOSB) hoặc trong AL(STOSW) và đặt nó vào DS:SI

Ví dụ : STOSB

Giả sử AX chứa giá trị Ebh

Trang 4

STOSB copy giá trị trong AX và đặt nó vào word của DS:SI Lúc này DS:SI points

to word chứa Ebh

Lệnh này thường được dùng với lệnh REP

Quote:

The STACK & PUSH / POP

Trước khi gọi bất kì function nào, chương trình phải “push” những thông số mà function đang “chờ đợi” trên stack Chúng ta giả sử nó như là 1 chồng bát, cái bát đặt vào đầu tiên

sẽ là cái bát lấy ra cuối cùng - ở đây stack cũng vậy Chúng ta hãy cứ nhớ “vào đầu / ra cuối” khi nhìn vào lệnh call, có nghĩa là thông số đó sẽ đảo ngược

Nếu như các bác không hỉu những giều trên thì hãy nhìn vào ví dụ sau :

Windows API function GetDlgItemText yêu cầu các thông số sau:

(1) Handle of dialog box

(2) Identifier of control

(3) Địa chỉ của text buffer

(4) Chiều dài tối đa của chuỗi

Bởi vậy nên đoạn code có thể như sau :

MOV EDI,[ESP+00000220] _get handle of dialog box trong EDI

PUSH 00000100 PUSH (4)

PUSH 00406130 PUSH (3)

PUSH 00000405 PUSH (2)

PUSH EDI _PUSH (1)

CALL GetWindowText Gọi function

Có dễ không các bác? Đây là 1 trong những ví dụ đơn giản nhất trong lĩnh vực crack đi tìm số serial, nếu các bác biết được địa chỉ buffer của serial, trong trường hợp này là ở địa chỉ 00406130 , các bác hãy set breakpoint nó và thường các bác sẽ kết thúc tại chuỗi tạo real serial ;)

Quote:

POP dùng để remove first item khỏi stack, thường có rất nhìu trước khi function trở lại chương trình

PHẦN 2 : SoftICE (Boot Menu, Setup, Commands)

02.1 Boot Menu

==========

Để chạy, SoftICE cần vài KB trong RAM của mỗi chương trình Do đó, nếu máy bạn bị

“hạn chế” về RAM hoặc bạn không muốn SoftICE tự động load mỗi khi khởi động máy ( chả lẽ cứ vào msconfig tắt nó rồi khi nào cân dùng lại chỉnh lại rồi phải khởi động lại máy nữa >rất phiền) mà phải “hỏi ý kiến” rồi mới dám “vào chơi với em windows” thì bạn cần phải chỉnh sửa đôi chút trong AUTOEXEC.BAT và CONFIG.SYS Các bác hãy coi 2 file đó trong máy em rồi tìm cách sửa theo máy các bác nha :

Trang 5

AUTOEXEC.BAT:

goto %config%

:SICE

E:\CRACK\SOFTIC~1\WINICE.EXE

goto common

:NORM

goto common

:common

CONFIG.SYS :

[menu]

menuitem SICE,Load Soft-Ice

menuitem NORM,khong load SoftICE

menudefault NORM,5(5s là thời gian ngồi chờ các bác “cho phép”, nếu quá 5s mà không thấy các bác trả lời thì windows sẽ típ tục load mà không load SoftICE, các bác có thể thay đổi thời gian chờ đợi 5s này)

[SICE]

[NORM]

[common]

DEVICE=C:\WINDOWS\setver.exe

DOS=HIGH

FILES=40

02.2 Setup

=======

Cái này em đã nói nhìu rùi, bác nào chưa bít thì xem lại trong tut Window Cracking Tutorial (http://www.reaonline.net/forum/showthread.php?t=212)

02.3 Commands

==========

Dưới đây là danh sách các commands (lệnh) trong SoftICE Các bác nên thuộc hết các lệnh này là tốt nhất (mặc dù là nó hơi dài) vì các bác càng bít nhìu về SoftICE bao nhiêu thì các bác càng dễ crack soft với SoftICE bấy nhiêu ;)

Các lệnh cơ bản :

? Evulate Expression

Trang 6

A Assemble code

ADDR Display/Change address contents BC _Clear Breakpoint

BD _Disable Breakpoint

BE _Enable Breakpoint

B List current Breakpoints

BPE Edit Breakpoint

BPT Use Breakpoint as a template

 

Ngày đăng: 01/07/2014, 13:20

TỪ KHÓA LIÊN QUAN