当前位置:首页
开发技术指南» 文章正文
    引言:

    摘要: 谢谢大家了~~ 我急用!! ......
    摘要: cococut8@163.com! 谢谢! ......


如何根据指令代码如0x77fe1212来判断是程序中的哪个模块,再具体到某段代码

 
  因为:  
  弹出应用程序:   agcps.exe   -   应用程序错误:   "0x77f40cae"   指令引用的   "0x45003c28"   内存。该内存不能为   "read"。  
   
  我想确定是什么地方有问题.

NO.1   作者: linestyle

你可以用调试器attach上,然后0x77f40cae找到对应的模块,然后自己看汇编:)

NO.2   作者: lixiaosan

http://www.7880.com/Info/Article-5d3bcc40.html

NO.3   作者: gg137zeus

up

NO.4   作者: xiaonian_3654

有个模块窗口,看看eip属于哪个模块  
  还可以通过stack窗口察看调用关系,用以判断那个函数出错,

NO.5   作者: vcleaner

http://www.vckbase.com/document/viewdoc/?id=1473

NO.6   作者: dirdirdir3

用ollydbg试试。

NO.7   作者: DentistryDoctor

0x77f40cae,还需要结合看一下进程的所有模块函数的实际加载地址。  
   
  这个一般来说应该是GDI32.DLL,因为你的EXE和DLL的话,如果没有修改过基地址的话,是不会加载到这个地址的  
   
  应该是GDI有关的代码造成的问题  
   
  反正如果地址比较大的话,一般来说不会是你的代码,具体的需要结合StackWalk看一下调用堆栈。  
   
  GDI32.DLL的加载地址是77F100000  
  SHLWAIP.DLL的加载地址是77f60000

NO.8   作者: DentistryDoctor

这个地址你通过.map,.pdb都无法查看到的。

NO.9   作者: wallace2005

高手,高手,高高手。  
  楼主这回真是遇到救星了。

NO.10   作者: idAnts

这个地址肯定是系统dll的地址,不根据堆栈是没办法找到你代码的哪个地方出错的。

NO.11   作者: yzkzero

首先,同上,这个肯定是系统DLL的  
   
  兄弟可以先用模块查看器来确定是哪个DLL的函数,不同系统的地址是不一样的,所以还是要自己查一下。  
   
  其次,因为不知道楼主的程序怎么写的,这种问题可能是你调用的函数所传递的指针类型的参数错误,要么就是你的程序中有对自己进程中的代码修改导致的。  
   
   
   
 

NO.12   作者: yzkzero

也有可能是你的程序有两个线程,其中线程A将线程B还在使用的某块内存释放了,也会导致这种问题

NO.13   作者: jobine

很简单啊,在vc   IDE的output窗口中看Context右边的显示,就是你当前断点所在的调用堆栈,最顶上的就是产生中断的函数或模块。

NO.14   作者: masterz

建议你用这个exception   class来捕获你的程序错误  
  http://www.codeproject.com/cpp/exception.asp  
  不过需要用VC6.0

NO.15   作者: jiajun2001

这个需要观察stack   frame才能做到。方法如楼上所提供的


 ·求防御sql注入的函数    »显示摘要«
    摘要: 求防御sql注入的函数,网址也可以,谢谢 ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE