花指令记录

这篇博客深入探讨了汇编语言中的call指令和jmp指令,通过一个具体的示例解释了callsub2如何将eip值压栈并跳转到sub2函数,其中涉及栈操作和返回地址的修改。文章还分析了jumplabel2指令在执行后的流程,阐述了程序执行路径的变化。内容对于理解底层系统调用和汇编编程具有指导意义。
摘要由CSDN通过智能技术生成
_asm
{
	call sub2
	_emit 0xEB #emit就是在当前位置直接插入数据, 0xEB 对应的汇编指令是 jmp 指令
	jmp label2
	sub2:
		add dword ptr[esp],1
		retn
label2:
}

大概逻辑:call sub2函数 eip指向 0xeb, 后会将 eip 的值 push 入系统栈然后跳转到 sub2:[esp]也就是栈顶,栈顶的数值+1.所以reten之后直接执行jump labe12。

例子:

call指令和相应的函数以及call指令结束的下一字节都nop掉,变成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值