滴水逆向笔记(八)

一.JMP指令:修改EIP的值

JMP EAX=MOV EIP,EAX(虽然这条指令无法执行)

例子

[点击并拖拽以移动]

此时我们执行JMP,EAX

在这里插入图片描述

二.CALL指令

CALL EAX=PUSH 地址B && MOV EIP,EAX

例子

圈起来的那部分是我们下的断点,点击编号然后按F2就会有这种效果,接着我们执行CALL 0x4012C5
在这里插入图片描述此时可以看到ESP和EIP都改变了

三.RET指令

本质:POP EIP
​例子:
在这里插入图片描述之后我们执行RET
在这里插入图片描述可以看到此时它跳回了0x401285,而且EIP的值变为了0x401285,ESP的值复原

四.CMP指令

该指令是比较两个操作数,相当于SUB指令,但是相减的结果并不保存到第一个操作数中
只是根据相减的结果来改变ZF标志位,当两个操作数相等时,ZF标志位值为1
当然,如果前一操作数小于后一操作数,SF标志位值变为1
主要是影响标志寄存器的值
例子:
在这里插入图片描述然后执行CMP ESI,EDI
在这里插入图片描述此时我们看到ESI,EDI的值没有变,ZF变成了Z1

五.TEST指令

该指令在一定程度上和CMP指令类似的,两个数值进行“与”操作,结果不保存,但是会改变相应标志位
常见用法:用这个指令可以确定某寄存器值是否为0
在这里插入图片描述然后我们执行TEST ECX,ECX
在这里插入图片描述此时可以看到ZF标志位值为1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值