zoukankan      html  css  js  c++  java
  • 逆向之函数栈帧结构分析

    逆向之函数栈帧结构分析

    函数的简介

    • 函数的定义

      计算机的函数,是一个固定的一个程序段,或称其为一个子程序,它在可以实现固定运算功能的同时,还带有一个入口和一个出口。

    • 函数的入口:

      函数的入口,就是函数所带的各个参数,我们可以通过这个入口,把函数的参数值代入子程序供计算机处理。

    • 函数的出口:

      函数的出口,就是指函数的函数值,在计算机求得之后,由此口带回给调用它的程序

    • 函数调用过程中的重要寄存器:

      (1)EIP-程序计数器/pc指针,存储的永远是当前cpu正在执行指令的下一条指令

      (2)EBP-帧指针,在函数的调用过程中存放了维护这个栈的栈底指针

      (3)ESP-栈指针,在函数的调用过程中存放了维护这个栈的栈顶指针

    函数栈帧

    栈的生长:栈是由高地址向地地址的方向生长
    栈的帧栈定义:栈有其栈顶和栈底,在x86系统的CPU中,寄存器ebp保存的是栈底地址称为帧指针,寄存器esp保存的是栈顶地址,称为栈指针
    帧栈的变化: ebp一般由系统改变它的值,esp会随着数据的入栈和出栈而移动,但esp始终指向栈顶

     栈帧变化实例

     栈帧变化过程

    代码

    愿路途漫长,以后莫失莫忘。 愿你不骄不躁,安稳顺心。

    作者:菜鸟-传奇
    本文版权归作者和博客园共有,不以任何盈利为目的,欢迎转载。但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律声明责任的权利。
  • 相关阅读:
    20190425-快速排序
    ExtJS合同管理信息系统源码
    2013年12月12日16Aspx源码发布详细
    大型商业手机进销存管理系统源码
    大管家固定资产管理系统源码
    地平线开源网站源码Deepsoon v1.2.3
    发票管理系统(Extjs)源码
    国讯通用OA协同办公系统源码
    物流管理系统源码
    2013年10月16Aspx源码发布详情
  • 原文地址:https://www.cnblogs.com/cainiao-chuanqi/p/14703758.html
Copyright © 2011-2022 走看看