逆向学习(一):常用汇编指令收藏

一、常用指令

指令名称 语法 说明
test test dest,src 该指令和and一样,即对两个操作数进行按位的‘与’运算,唯一不同之处是不将‘与’的结果保存到dest。即本指令对两个操作数的内容不进行修改,仅是在逻辑与操作后,对标志位重新置位。
push push ×× 将××推入栈中
pop pop ×× 将××推出栈中。先入后出原则。
call call ×× 等于push eip,然后jmp ××。eip指下一条指令存放的位置。
call 404000h 直接跳到函数或过程的地址
call eax 函数或过程地址存放在eax
call dword ptr [eax] eax存放一个地址,方括号指取这个地址的值,而这个值里是一个4字节的地址值
call dword ptr [<&API>] 执行一个系统API
call eax 函数或过程地址存放在eax
mov mov dest,src 指将src的内容拷贝到dest,标志寄存器状态不变
cmp cmp dest,src 比较dest和src两个操作数,并通过比较结果设置c/o/z标志位
cmp eax,ebx 如果相等,Z标志位置为1,否则为0
cmp eax,[404000] 将eax和404000地址处的dword型数据相比较并同上置位
cmp [404000],eax 将404000地址处的dword型数据和eax相比较并同上置位

二、常用跳转指令

指令 条件 指令 条件
ja cf=0 and zf=0 jnc cf=0
jab cf=0 jne zf=0
jb cf=1 jng zf=1 or sf!=of
jbe cf=1 or zf=1 jnge sf!=of
jc cf=1 jnl sf=of
jcxz cx=0 jnle zf=0 and sf=of
je zf=1 jno of=0
jecxz ecx=0 jnp pf=0
jg zf=0 and sf=of jns sf=0
jge sf=of jnz zf=0
jl sf!=of jo of=1
jle zf=1 and sf!=of jp pf=1
jmp 无条件跳转 jpe pf=1
jna cf=1 or zf=1 jpo pf=0
jnae cf=1 js sf=1
jnb cf=0 jz zf=1
jnbe cf=0 and zf=0

评论

Your email address will not be published. Required fields are marked *

Scroll Up