1、代码位置:
01127F30 >/$  6A FF         PUSH -1
01127F32  |.  68 51752201   PUSH CEGUIBas.01227551
01127F37  |.  64:A1 0000000>MOV EAX,DWORD PTR FS:[0]
01127F3D  |.  50            PUSH EAX
01127F3E  |.  81EC B0000000 SUB ESP,0B0                              ;  ZC:大块的局部变量区域(ESPfrom0012EBA0to0012EAF0)
01127F44  |.  A1 00892E01   MOV EAX,DWORD PTR DS:[12E8900]
01127F49  |.  33C4          XOR EAX,ESP
01127F4B  |.  898424 AC0000>MOV DWORD PTR SS:[ESP+AC],EAX
01127F52  |.  55            PUSH EBP
01127F53  |.  56            PUSH ESI
01127F54  |.  57            PUSH EDI
 
ZC: 上面的“大块局部变量区域” ESP从0012EBA0跳到了0012EAF0,其中有大量的遗留信息,OD同样会对它们作注释 可能会提示如下内容:
(1)、CALL的返回地址 (提示信息类似于“返回到 ????????”)
(2)、指向偏移 (提示信息类似于“OFFSET ????????”)
(3)、全局变量 (提示信息类似于“??模块名.????????”)
(4)、等等
它们不是是无效的信息,但是如果没有注意到局部变量的申请的话,就会以为 堆栈里面有函数返回等等的信息,依据这样的假的信息来 分析/跳转 的话 就可能被带到歪路上去,∴ “堆栈窗口 --> 右键 --> 反汇编窗口中跟随” 要慎用 需要确保确实是真正的函数返回 而非局部变量里面的过时信息。
2、
3、
原文:http://www.cnblogs.com/debugskill/p/5541766.html