2025年Linux 内核调用栈解析

Linux 内核调用栈解析1 pushl 和 popl pushl 和 popl 指令来说操作的是栈 栈的基地址由 ebp 来指定 栈顶元素由 esp 来指定 esp 指向的就是栈顶元素 将一个双字压入栈中 首先要将 esp 减 4 然后将双字写入 esp 指向的栈顶位置 弹出一个双字 首先要将 esp 加 4

大家好,我是讯享网,很高兴认识大家。

 

1.pushl和popl

pushl和popl指令来说操作的是栈,栈的基地址由%ebp来指定,栈顶元素由%esp来指定,%esp指向的就是栈顶元素。将一个双字压入栈中,首先要将%esp减4,然后将双字写入%esp指向的栈顶位置;弹出一个双字,首先要将%esp加4,然后将%esp指向的栈顶元素取出

2.call和ret指令

call lable //函数调用,会把call指令下一条指令push到栈


讯享网

leave  //函数调用返回前的准备,也就是movl  %ebp, %esp; popl %ebp

ret//从栈中pop出地址,并跳转到这个地址继续执行

从以上可以看出每个函数栈顶保存上一级函数的栈顶值,

从进程栈中解析backtrace,也可以根据ebp解析出局部变量

小讯
上一篇 2025-03-30 19:52
下一篇 2025-03-27 14:51

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/53148.html