继续更新个人的学习笔记,
其它笔记传送门
逆向基础笔记一 进制篇
逆向基础笔记二 数据宽度和逻辑运算
逆向基础笔记三 通用寄存器和内存读写
逆向基础笔记四 堆栈篇
逆向基础笔记五 标志寄存器
逆向基础笔记七 堆栈图(重点)
逆向基础笔记八 反汇编分析C语言
逆向基础笔记九 C语言内联汇编和调用协定
逆向基础笔记十 汇编寻找C程序入口
逆向基础笔记十一 汇编C语言基本范例
逆向基础笔记十二 汇编 全局和局部 变量
逆向基础笔记十三 汇编C语言范例转换
逆向基础笔记十四 汇编嵌套if else
逆向基础笔记十五 汇编比力三种循环
逆向基础笔记十六 汇编一维数组
逆向基础笔记十七 汇编二维数组 位移 乘法
逆向基础笔记十八 汇编 结构体和内存对齐
逆向基础笔记十九 汇编switch比力if else
逆向基础笔记二十 汇编 指针(一)
逆向基础笔记二十一 汇编 指针(二)
逆向基础笔记二十二 汇编 指针(三)
逆向基础笔记二十三 汇编 指针(四)
逆向基础笔记二十四 汇编 指针(五) 系列完结
JCC指令
cc 代表 condition code(状态码)
Jcc不是单个指令,它只是描述了跳转之前检查条件代码的跳转助记符
比方JNE,在跳转之前检查条件代码
典型的情况是进行比力(设置CC),然后使用跳转助记符之一
CMP EAX,0JNE XXXXX条件代码也可以用AND、OR、XOR、加法、减法(固然也可以是CMP)等指令来设置
JCC指令用于改变EIP(CPU要读取的指令所在)
JMP指令
JMP指令:修改EIP的值
JMP指令只影响了EIP,不影响堆栈和其它通用寄存器
JMP 寄存器/立即数 相当于 MOV EIP,寄存器/立即数
CALL指令
CALL指令和JMP指令都会修改EIP的值
但CALL指令会将返回所在(CALL指令的下一条指令所在)压入堆栈
因此也会引起esp的变化
RET指令
call调用跳转后执行完相关代码完要返回到call的下一条指令时使用ret指令
ret指令相当于pop eip
比力指令
CMP指令
指令格式:CMP R/M,R/M/IMM
CMP指令只改变标志寄存器的值
该指令是比力两个操纵数,实际上,它相当于SUB指令,但是相减的结果并不保存到第一个操纵数中
只是根据相减的结果来改变ZF零标志位的,当两个操纵数相称的时候,零标志位置1
例:
MOV EAX,100MOV EBX,200CMP EAX,ECXCMP AX,WORD PTR DS:[405000]CMP AL,BYTE PTR DS:[405000]CMP EAX,DWORD PTR DS:[405000]TEST指令
指令格式:TEST R/M,R/M/IMM
该指令在一定程度上和CMP指令时雷同的,两个数值进行与操纵,结果不保存,但是会改变相应标志位
与的操纵表项如下:
运算结果1 and 111 and 000 and 100 and 00可以看到只要有任一操纵数为0时,结果就为0
常见用法:用这个指令,可以确定某寄存器是否等于0
只有当eax=0时 eax and eax才会是0
以是
TEST EAX,EAX观察ZF(零标志位)就可以判断EAX是否为0
JCC指令表
起首要明白一点,所有的判断跳转指令都是根据标志位来进行判断的
JCC指令也只影响EIP
指令英文全称含义判断标志位JE, JZjump equal,jump zero结果为零则跳转(相称时跳转)ZF=1JNE, JNZjump not equal,jump not zero结果不为零则跳转(不相称时跳转)ZF=0JSjump sign结果为负则跳转SF=1JNSjump not sign结果为非负则跳转SF=0JP, JPEjump parity,jump parity even结果中1的个数为偶数则跳转PF=1JNP, JPOjump not parity,jump parity odd结果中1的个数为偶数则跳转PF=0JOjump overflow结果溢出了则跳转OF=1JNOjump not overflow结果没有溢出则跳转OF=0JB, JNAEjump below,jump not above equal小于则跳转 (无符号数)CF=1JNB, JAEjump not below,jump above equal大于等于则跳转 (无符号数)CF=0JBE, JNAjump below equal,jump not above小于等于则跳转 (无符号数)CF=1 or ZF=1JNBE, JAjump not below equal,jump above大于则跳转(无符号数)CF=0 and ZF=0JL, JNGEjump less,jump not greater equal小于则跳转 (有符号数)SF≠ OFJNL, JGEjump not less,jump greater equal大于等于则跳转 (有符号数)SF=OFJLE, JNGjump less equal,jump not greater小于等于则跳转 (有符号数)ZF=1 or SF≠ OFJNLE, JGjump not less equal,jump greater大于则跳转(有符号数)ZF=0 and SF=OF
来源:http://www.12558.net
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |