逆向_08函数调用堆栈图

  1. 原因
  2. 简单的函数调用
  3. 开始画堆栈图
  4. 总纲图
  5. 最近沉寂了很久

原因

  • 学习逆向以及二进制分析时,千万不要求快,静下心来慢慢反复画堆栈图至关重要

简单的函数调用

  • 源代码

    #include<stdio.h>
    #include<stdlib.h>
    #include<windows.h>
    int plus1(int a,int b){
        return a+b;
    }
    int main(){
        plus1(4,5);
        system("pause");
        return 0;
    }
  • 编译程序,载入OD进行堆栈图的一步一步的跟踪,之后的我已经用excel画好了,直接上图

开始画堆栈图

  • 函数调用前

调用前状态

  • 参数入栈

    参数入栈

  • 调用函数

    调用函数

  • 为函数分配新的栈空间

    分配空间

  • 保存之前函数寄存器的值

    保存寄存器的值

  • 为抬升的空间填入0xCCCCCCCC,主要目的是防止出现函数执行的过程中溢出

    填充空间

  • 进行加法运算,4+5

    函数主要功能

  • 还原原函数寄存器的值

    还原寄存器的值

  • 还原esp的值

    还原esp抬升前的值

  • 返回原函数(调用函数)

    返回函数

  • 外平栈/堆栈平衡

    平衡堆栈

总纲图

函数调用全过程

最近沉寂了很久

  • 最近一直没有发公众号,是发现自己的水平还不够给大家提供有效的学习资源,所以我选择了闭关修炼
  • 在修炼的过程中,我发现画堆栈图让我有了很大的提升,因此给大家提供一份详细的堆栈图调用还原的过程
  • 最后希望师傅们的技术越来越强

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 787772394@qq.com

文章标题:逆向_08函数调用堆栈图

本文作者:二豆子·pwnd0u

发布时间:2020-09-28, 18:48:17

最后更新:2023-05-18, 09:49:04

原始链接:http://blog.codefat.cn/2020/09/28/%E9%80%86%E5%90%91-08%E5%87%BD%E6%95%B0%E8%B0%83%E7%94%A8%E5%A0%86%E6%A0%88%E5%9B%BE/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏

/*爱心代码*/ /*雪花效果*/ /*百度代码自动提交*/