逆向之函数栈帧结构分析
逆向之函数栈帧结构分析
函数的简介
- 函数的定义
计算机的函数,是一个固定的一个程序段,或称其为一个子程序,它在可以实现固定运算功能的同时,还带有一个入口和一个出口。
- 函数的入口:
函数的入口,就是函数所带的各个参数,我们可以通过这个入口,把函数的参数值代入子程序供计算机处理。
- 函数的出口:
函数的出口,就是指函数的函数值,在计算机求得之后,由此口带回给调用它的程序
- 函数调用过程中的重要寄存器:
(1)EIP-程序计数器/pc指针,存储的永远是当前cpu正在执行指令的下一条指令
(2)EBP-帧指针,在函数的调用过程中存放了维护这个栈的栈底指针
(3)ESP-栈指针,在函数的调用过程中存放了维护这个栈的栈顶指针
函数栈帧
栈的生长:栈是由高地址向地地址的方向生长
栈的帧栈定义:栈有其栈顶和栈底,在x86系统的CPU中,寄存器ebp保存的是栈底地址称为帧指针,寄存器esp保存的是栈顶地址,称为栈指针
帧栈的变化: ebp一般由系统改变它的值,esp会随着数据的入栈和出栈而移动,但esp始终指向栈顶
栈帧变化实例
栈帧变化过程
代码
愿路途漫长,以后莫失莫忘。 愿你不骄不躁,安稳顺心。
作者:菜鸟-传奇
本文版权归作者和博客园共有,重在学习交流,不以任何盈利为目的,欢迎转载。
敲敲小黑板:《刑法》第二百八十五条 【非法侵入计算机信息系统罪;非法获取计算机信息系统数据、非法控制计算机信息系统罪】违反国家规定,侵入国家事务、国防建设、尖端科学技术领域的计算机信息系统的,处三年以下有期徒刑或者拘役。违反国家规定,侵入前款规定以外的计算机信息系统或者采用其他技术手段,获取该计算机信息系统中存储、处理或者传输的数据,或者对该计算机信息系统实施非法控制,情节严重的,处三年以下有期徒刑或者拘役,并处或者单处罚金;情节特别严重的,处三年以上七年以下有期徒刑,并处罚金。