指令

2017-11-13  本文已影响26人  FX喂你袋盐

1、32位通用寄存器

EAX EXC EDX EBX ESP EBP ESI EDI

2、16位通用寄存器

AX XC DX BX SP BP SI DI

3、8位通用寄存器

AH  AL

XH XL

DH DL

BH BL

4、寄存器的结构

EAX-AX-AH-AL

5、内存单元:字节---每个字节都有编号,称为内存地址。

操作指定的内存:8位内存、16、32位内存

内存中的存放方式是倒叙的。与堆栈中的数据反序。

命令:db 0x88ff1c 查看  反序

dd  0x88ff1c 查看 正序

6、基础汇编指令

1)移动 mov

mov eax,0x1234

mov eax,ecx

2)减 sub

mov eax,0x3

sub eax,0x2

3)加 add

mov eax,0x2

add eax,0x3

4)内存存储、读取

存储:mov dword ptr ds:[0x0015FF1C],0x1234

读取:mov eax,dword ptr ds:[0x0015FF1C]

5)ADC带进位的加法

adc al,cl

6)sbb带进位的减法

sbb al,cl

7)XCHG 交换数据

SCHG al,cl

8) movs 移动数据 内存--内存、

movs dword ptr es:[0x1245ff2d],dword ptr ds:[0x1245ff2e]

movsd 加上D 的意思是,调用esi edi寄存器中存放的值

9)STOS将al\ah\ax\eax通用寄存器里的值存储到EDI指定的内存单元中

stos dword ptr es:[edi]

10)REP 按计数寄存器(ecx)中指定的次数重复执行字符串指令

mov ecx,10

rep movsd

rep stosd

--------------------------------------------

修改EIP的一些指令

11)JMP

jmp 0x418356F1

堆栈、寄存器 无影响

12)CALL

为了CALL能成功,跳之前下断点

call 0x418356F1

RETN

执行完,会出堆栈,push 一个跳转之前额度下一跳地址,俗称 返回地址

13)RET

----------------------------------------------------

JCC

14)CMP 比较两个值

与sub的不同,cmp 只是比较,修改标志位,不会修改通用寄存器

cmp  eax,ecx

15)TEST  进行与运算操作。

主要是判断是否为空。为空Z位为1,否则为0

-------------------------------------------------------

上一篇下一篇

猜你喜欢

热点阅读