1.关于寄存器Windows 在内部频繁使用 ESI,EDI,EBP,EBX 寄存器,而且并不去检测这些寄存器的值是否被更改,所以如果要使用这些寄存器时必须先保存它们的值,待用完后再恢复它们eax 是WIN32 API 默认的返回值存放处。ecx 是LOOP指令自动减一的寄存器,也就是一半用来计数,...
1.了解EBP寄存器在寄存器里面有很多寄存器虽然他们的功能和使用没有任何的区别,但是在长期的编程和使用 中,在程序员习惯中已经默认的给每个寄存器赋上了特殊的含义,比如:EAX一般用来做返回值,ECX用于记数等等。在win32的环境下EBP寄存器用与 存放在进入call以后的ESP的值,便于退出的时候...
分类:
其他好文 时间:
2014-08-10 18:09:10
阅读次数:
168
push ebpmov esp,ebp esp是堆栈指针 ebp是基址指针 这两条指令的意思是将栈顶指向ebp的地址 --------------------------------------------------------------- 例如:push ebp ...
分类:
其他好文 时间:
2014-08-10 18:05:10
阅读次数:
188
最近在分析一个进程崩溃的严重问题,其中有些过程分析需要对ebp, esp 有清晰的理解,对于ebp 和esp 相信大家都很熟悉了,但是为了使本文自成体系,我还是解释一下。ebp--栈底指针esp--栈顶指针如图所示,简化后的代码调用过程如下:void Layer02(){ int b = 2;}vo...
分类:
编程语言 时间:
2014-08-10 17:59:20
阅读次数:
183
程序的OEP,一开始以 push ebp 和mov ebp esp这两句开始。原因:c程序的开始是以一个主函数main()为开始的,而函数在访问的过程中最重要的事情就是要确保堆栈的平衡,而在win32的环境下保持平衡的办法是这样的:1.让EBP保存ESP的值。2.在程序运行完毕的时候调用mov es...
分类:
其他好文 时间:
2014-08-10 17:59:00
阅读次数:
269
有天重建一段代码时,遇到了循环右移指令,不知道用C语言怎么实现,后来得到小伟指点,感谢。。me 15:56:38004BD2C9 8B55 F8 MOV EDX,DWORD PTR SS:[EBP-8]004BD2CC D1CA ROR EDX,1004BD2CE ...
分类:
编程语言 时间:
2014-08-08 15:53:06
阅读次数:
239
32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和EDX)2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP)6个段寄存器(ES、CS、SS、DS、FS和GS)1个指令指针寄存器(EIP) 1个标志寄存器(EFlags)其中 EBX,ESI,EDI,EBP 四...
分类:
其他好文 时间:
2014-08-06 18:40:21
阅读次数:
199
EIP,EBP,ESP都是系统的寄存器,里面存的都是些地址。为什么要说这三个指针,是因为我们系统中栈的实现上离不开他们三个。我们DC上讲过栈的数据结构,主要有以下特点:后进先处。(这个强调过多)其实它还有以下两个作用:1.栈是用来存储临时变量,函数传递的中间结果。2.操作系统维护的,对于程序员是透明...
分类:
其他好文 时间:
2014-07-31 20:29:47
阅读次数:
234
Borland Delphi 6.0 - 7.000509CB0 > $ 55 PUSH EBP00509CB1 . 8BEC MOV EBP,ESP00509CB3 . 83C4 EC ADD ESP,-1400509CB6 . 53 PUSH EBX00509CB7 . 56 PUSH ESI0...
分类:
其他好文 时间:
2014-07-29 20:59:02
阅读次数:
321
4个数据寄存器(EAX、EBX、ECX和EDX)2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP)6个段寄存器(ES、CS、SS、DS、FS和GS)1个指令指针寄存器(EIP) 1个标志寄存器(EFlags)1、数据寄存器数据寄存器主要用来保存操作数和运算结果等信息,从而节省读...
分类:
其他好文 时间:
2014-07-22 22:46:12
阅读次数:
286