【逆向】第八章 JCC


一、指令

EIP:是指CPU下一条准备读取的指令的地址
一般不可以写mov eip

1.JMP指令

JMP + 地址
直接可以跳转到该地址指令,此时EIP的值变化,可以理解为MOV EIP,地址

2.call指令

call + 地址
同JMP一样,可以直接跳到地址
注意执行前按下F2下断点
它同JMP的区别是在堆栈图中会栈顶的内容会变成该call指令下一条指令前的地址,算法是call指令地址加上对应call指令前的字节数,这里是5所以是5A+5=5F在这里插入图片描述

3.RETN指令

此处与call指令相对,跳转到call的下一行,call所push的值也会删除,EIP的值也会改变

4.CMP指令

减法,和cmp一样结构相同,但是它不会把相减的结果保留到被减数中,只是影响标志寄存器的值
cmp是用来比较两个值的大小是不是相等,看Z位
cmp也可以进行比较,此时看SF,符号位,S为1说明第一个数比第二个数小
也可以进行内存和寄存器比较,但是要数据宽度一样

5.test指令

结果不保存,进行与操作,与自己与操作,结果会全是0,此时Z为0

二、JCC

1.JE,JZ

JE:两个数相等就jmp
JZ:ZF相等就跳转
不相同的话就执行下一条
也就是说JE和JZ本质上差不多,反汇编可能只会显示一样,但是可能会显示其中一种

2.JNE,JNZ

不相等,或者ZF=0跳转

3.JS

SF=1
结果为负,跳转

4.JNS

SF= 0
结果为非负跳转

5.JP

PF=1跳转,结果1的个数为偶数跳转

6.JNP

PF=1,结果为1的个数的奇数跳转

7.JO

结果溢出跳转 OF=1

8.JNO

结果没有溢出跳转 OF=0

9.JB JANE

below above not equal
小于(无符号)跳转CF =1

10.JNB

不小于则跳转
CF=0(无符号)CF=0

11.JBE

小于等于跳转(无符号) CF =1 或ZF = 1

12.JA

大于则跳转(无符号) CF =0 且ZF = 0

13.JL

小于跳转(有符号)SF不等于OF

14.JNE

大于等于跳转(有符号)SF = OF

15.JLE

小于等于跳转(有符号)ZF = 1 or SF!=OF

JNLE

大于则跳转(有符号)ZF = 0 or SF=OF

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值