函数调用时候:1.栈针寄存器espebpesp增大的时候栈空间减小,减小的时候栈空间增大,ebp指向栈基址不变。2.调用函数的时候参数由右至左压栈,栈空间方向是从高地址(栈底)到低地址(栈顶),然后压入返回地址,函数地址入栈后,EBP入栈,然后把当前ESP的值给EBP,对应的汇编指..
分类:
其他好文 时间:
2016-08-26 15:35:49
阅读次数:
148
概率 esp :栈顶指针,必须的 ebp: 存放堆栈指针,不是必须的 上面这个函数 调用后 堆栈数据分析 ...
分类:
其他好文 时间:
2016-08-21 06:27:54
阅读次数:
396
00121453 0F010D 40441200 sidt fword ptr ds:[gliu]0012145A 0F014D B0 sidt fword ptr ss:[ebp-0x50]0012145E 0F014D 50 sidt fword ptr ss:[ebp+0x50]0012146 ...
分类:
其他好文 时间:
2016-07-12 18:52:09
阅读次数:
187
帧栈结构是一种机器实现切换上下文的机制。具体介绍看 http://blog.csdn.net/yxysdcl/article/details/5569351 IA32体系涉及寄存器保存问题,%eax,%ecx,%edx由调用者保存,%ebx,%esi,%edi由被调用者保存,%esp,%ebp分别是 ...
分类:
其他好文 时间:
2016-06-28 21:56:16
阅读次数:
181
栈帧(stack frame),机器用栈来传递过程参数,存储返回信息,保存寄存器用于以后恢复,以及本地存储。为单个过程(函数调用)分配的那部分栈称为栈帧。栈帧其实是两个指针寄存器, 寄存器%ebp为帧指针,而寄存器%esp为栈指针,当程序运行时,栈指针可以移动(大多数的信息的访问都是通过帧指针的)。 ...
分类:
系统相关 时间:
2016-06-28 07:04:13
阅读次数:
530
debug版本 esp 栈顶指针 ebp 存放堆栈指针 空程序:int main(){00411360 push ebp ;压入ebp00411361 mov ebp,esp ;ebp = esp,保留esp,待函数调用完再恢复,因为函数调用中肯定会用到esp.00411363 sub esp,0C ...
分类:
其他好文 时间:
2016-06-25 06:13:03
阅读次数:
231
一、常用指令
二、算术运算指令
三、逻辑运算指令
四、串指令
五、程序跳转指令
------------------------------------------
计算机寄存器分类简介:
32位CPU所含有的寄存器有:
4个数据寄存器(EAX、EBX、ECX和EDX)
2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP)
6个段寄存器(ES、CS...
分类:
其他好文 时间:
2016-06-21 07:06:50
阅读次数:
166
一张图说明我的理解: 画的是新开辟栈帧的过程,退出当前栈帧的过程与之相反。pop edi ,pop esi , pop ebx ,mov esp,ebp ,pop ebp 。之后,edi,esi,ebx恢复原来状态,ebp指向上一个栈帧栈底,esp指向上一个栈帧栈顶。 ...
分类:
其他好文 时间:
2016-06-18 22:18:58
阅读次数:
243
#include<iostream>
usingnamespacestd;
voidfun()
{
inttmp;
*((int*)*(&tmp+1)-1)=12;
/* _asm
{
moveax,dwordptr[ebp]
subeax,0x4
movdwordptr[eax],0xC
}
*/
}
intmain()
{
inta=10;
fun();
cout<<a<<endl;
return0;
}vc6.0可以运行
分类:
其他好文 时间:
2016-06-17 08:33:38
阅读次数:
154
【文章标题】: IPAdr.exe破解【软件名称】: IPAdr.exe【加壳方式】: 无【编写语言】: delphi【使用工具】: OD【作者声明】: 失误之处敬请诸位大侠赐教! 【详细过程】 00405E7F |. 8BE5 mov esp, ebp 00405E81 |. 5D pop ebp ...
分类:
其他好文 时间:
2016-05-31 06:28:08
阅读次数:
174