美文网首页
esp ebp 与 pop push与函数调用

esp ebp 与 pop push与函数调用

作者: blank_white | 来源:发表于2020-06-21 15:39 被阅读0次
c++代码.png
add函数开始
跳转到add内部
image.png image.png

栈初始 栈底=栈顶 ,栈顶是低地址
所以 push 栈顶值会减小

  1. 根据函数调用约定 参数入栈 push
push 0x5
push 0x3

调用 call 会 push 当前 EIP

push ebp 将原来的栈底的值先 push 保存
mov ebp,esp  将当前栈顶 视为 函数内的栈底
sub esp,0x1C  将栈顶抬高,为函数内局部变量留出存储空间

...
...
...
函数结束

mov esp,ebp  将栈顶还原(由于函数内的栈底 是原来的栈顶值)
pop ebp  将栈底值还原

retn 会 pop eip

因为push了两个参数为了保持堆栈平衡,call结束回来后

add esp,0x8

相关文章

  • esp ebp 与 pop push与函数调用

    c++代码.png add函数开始 跳转到add内部 栈初始 栈底=栈顶 ,栈顶是低地址所以 push 栈顶值...

  • 函数调用栈

    函数调用过程 esp指向堆栈顶端,ebp指向old ebp,返回地址为ebp-4,参数为ebp-8,ebp-12。...

  • Linux内核原理初窥

    函数堆栈 esp栈顶指针 ebp栈基址指针call:将ebp压栈,并让ebp=espret:将esp=ebp,并将...

  • 缓冲区溢出攻击

    调用函数(caller)和被调函数(callee)在栈中的内存变化。 寄存器esp,eip,ebp的基本作用。 什...

  • 理解函数的调用过程

    一、函数的范围 ebp寄存器指向函数的栈底,esp寄存器指向函数的栈顶,共同划分了函数的活动范围。减小esp的值相...

  • 宏、普通函数、内联函数之间的区别

    普通函数 调用时向栈中push函数帧,调用结束后pop函数帧。编译器会在函数调用语句的前后,插入入栈和出栈的辅助代...

  • push,pop,shift,unshift 比较

    push() 与 pop() ECMAScript 为数组专门提供了 push() 和 pop() 方法,以便实...

  • Vscode汇编调试出栈入栈—Apple的学习笔记

    调试方法:主要看esp(当前栈指针)和ebp(栈基地址),没进入一个函数ebp会变动为当前函数的基地址。 我是在w...

  • LeetCode 面试题 03.02. 栈的最小值

    请设计一个栈,除了常规栈支持的pop与push函数以外,还支持min函数,该函数返回栈元素中的最小值。执行push...

  • 关于数组

    数组方法里push、pop、shift、unshift、join、split作用整理。 push与pop可以当成一...

网友评论

      本文标题:esp ebp 与 pop push与函数调用

      本文链接:https://www.haomeiwen.com/subject/cjbfkctx.html