call $+5是什么操作??

首先需要知道$在汇编语言中代表的含义:
$是intel汇编格式中的一个预定义符号,表示当前指令所在的地址偏移

所以可知"call $+5"操作的含义就是:
假设call $+5指令的地址为A,那此指令可以翻译为call A+5

而call指令一般为5个字节,所以此指令完成的操作即为:
将下一条指令的地址push到栈中,然后跳转到下一条指令。

在分析壳的时候,发现了一个组合操作,即:

call $+5
pop ebp

1、call将"pop ebp"指令地址push到栈中
2、跳转到"pop ebp"执行
3、"pop ebp"将之前call push进栈的值弹出到ebp中
4、ebp中的值为"pop ebp"指令的地址

猜你喜欢

转载自blog.csdn.net/qq_41957544/article/details/105784915