摘要:
1.了解EBP寄存器在寄存器里面有很多寄存器虽然他们的功能和使用没有任何的区别,但是在长期的编程和使用 中,在程序员习惯中已经默认的给每个寄存器赋上了特殊的含义,比如:EAX一般用来做返回值,ECX用于记数等等。在win32的环境下EBP寄存器用与 存放在进入call以后的ESP的值,便于退出的时候... 阅读全文
摘要:
程序的OEP,一开始以 push ebp 和mov ebp esp这两句开始。原因:c程序的开始是以一个主函数main()为开始的,而函数在访问的过程中最重要的事情就是要确保堆栈的平衡,而在win32的环境下保持平衡的办法是这样的:1.让EBP保存ESP的值。2.在程序运行完毕的时候调用mov es... 阅读全文
摘要:
push ebpmov esp,ebp esp是堆栈指针 ebp是基址指针 这两条指令的意思是将栈顶指向ebp的地址 --------------------------------------------------------------- 例如:push ebp ... 阅读全文
摘要:
最近在分析一个进程崩溃的严重问题,其中有些过程分析需要对ebp, esp 有清晰的理解,对于ebp 和esp 相信大家都很熟悉了,但是为了使本文自成体系,我还是解释一下。ebp--栈底指针esp--栈顶指针如图所示,简化后的代码调用过程如下:void Layer02(){ int b = 2;}vo... 阅读全文
摘要:
《Unix环境系统高级编程》中的C语言内存分布示意图1.C内存分布 BSS段: 用来存放程序中未初始化的全局变量。BSS是英文Block Started by Symbol的简称。BSS段属于静态内存分配。 数据段:用来存放程序中已初始化的全局变量。数据段属于静态内存分配。 代码段:用来存放程序执行... 阅读全文