逆向工具ollydbg的关键字总结—沙窝李的王

# 常用跳转

1.最常见:

【JMP】 无条件跳转;

【JE=JZ】相等跳转|有符号&无符号;
【JL】小于跳转|有符号专用 ;

【J LE】小于等于时辅有符号专用;

【JGE】大于等于跳转|有符号数专用;
【JB】低于跳转|无符号专用|理解为小于;
【JBE】低于等于跳转|无符号专用

【JA】高于跳转|无符号专用|理解为大于

【JAE】高于等于跳转|无符号专用

其次:

【JO】溢出跳转    【JP】奇偶跳转    【JS】负号跳转    【JC】进位跳转

【JCXZ】CX为0跳转    【JECXZ】ECX为0跳转

注:这是一部分跳转指令,但几乎涵盖所有常见跳转指令,见到指令有N就可去掉N后在上面寻找,再反着理解他的意思就对了。

# mov及其相关指令:

## mov指令

【mov】数据传送指令,不再举例

## MOVZX指令、MOVSX指令

【movzx】扩展指令,无符号扩展

例:  movzx eax,ax 即把eax高16位补零后再给eax低16位赋值ax

【movsx】扩展指令,带符号扩展

例:  movzx eax,ax 即把eax高16位补ax的最高位,即符号位,正数补0,负数补1,然后再给eax的低16位赋值ax

## movzx、movsw、movsd指令

【MOVSB】移动ESI中地址数据到EDI中,同时ESI、EDI都增加1

【MOVSW】移动ESI中地址数据到EDI中,同时ESI、EDI都增加2

【MOVSD】移动ESI中地址数据到EDI中,同时ESI、EDI都增加4

【Rep】循环执行ECX次某串指令

注:常见组合 rep movsd 用来填充一片空白内存区域,初始化赋值等

#  REP相关

## REP指令

循环作用:重复执行一个指令

终止条件:只要求ecx=0

循环过程:每执行一次ecx减1

固定搭配:rep movs|rep stos

搭配作用:对一片连续内存赋值

##  REPE指令等效于REPZ指令

循环作用:重复执行一个指令

终止条件:要求ecx=0或者Z标志位=0

循环过程:每执行一次ecx减1

固定搭配:repe cmps

补充:cmps指令

cmps byte ptr ds:[esi],byte ptr es:[edi]

简写为cmpsb,执行后esi和edi自增1

cmps word ptr ds:[esi],word ptr es:[edi]

简写为cmpsw,执行后esi和edi自增2

cmps dword ptr ds:[esi],dword ptr es:[edi]

简写为cmpsd,执行后esi和edi自增4

cmps如果比较结果是相同,Z标志位置1,否则为0

## REPNE指令相当于REPNZ指令

循环作用:重复执行一个命令

终止条件:要求ecx=0或者Z标志位=1

循环过程:每执行一次ecx减1

固定搭配:repne scas

作用:字符串中查找固定字符串,直到ecx变成0之前,一直执行scas扫描,直到遇到相同字符串,scas将Z标志位置1,触发REPNE的终止循环条件,根据ecx的值,可以判定目标字符串是第几位。

 

欢迎评论。
lingkb » 逆向工具ollydbg的关键字总结—沙窝李的王

发表评论