无法定位程序输入点于msvcrt.dll相关问题解决方法(图)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

无法定位程序输入点于msvcrt.dll相关问题解决方法(图) 安全中国 更新时间:2009-10-21 00:32:44 责任编辑:池天

热点:

我发现这个问题是在每次打开八戒桌面小工具时会提示“Deskwidget:DeskWidget.exe - 无法找到入口无法定_except_handler4_common于动态链接库 msvcrt.dll上”,遂上网查了资料。发现这是个系统性的问题。以前常使用,不知道这段时间是卸载了什么软件还是装了什么东西,导致八戒不能用了。

网上的方法如下,可以解决每次弹出“无法定位”对话框的问题:

这是由于sp3加载的驱动造成的;只需要将C:\WINDOWS\system32\dwmapi.dll重新命名一下即可以解决;在dwmapi.dll,他的标签居然表明来自Vista RTM,试着把“dwmapi.dll”重命名一下(注:改成任意文件名,问题解决。

不过,我从没有修改飞信安装文件夹下的dwmapi.dll却能正常使用飞信,没有出现网上所说的每次弹出“无法的问题,真的很奇怪。究竟是什么原因导致这个问题的呢?为什么windows\system32下的dwmapi.dll动态链改,这不会导致系统问题吗?

也许下面的文章能解答一些疑问:

原文地址/administer/770224_2.html

浅谈Windows环境软件故障调试与分析

大家好,我是Eric,今天,我将与大家一起分享一个软件故障的调试与分析案例,希望给大家提供一个解决W 误的基本分析思路和供参考的一类解决方法。看完本例,您将会初步了解到Dll Entry Point错误的一些基本到像Winbdg、Dependency Walker一类的专业调试、分析工具软件的基本使用,在这里我也和大家一起分享并本例中出现错误的软件是中国移动飞信2008版客户端,具体现象是每次双击图标启动该程序时总会收到一个错——标题为“FetionFX.exe - Entry Point Not Found”,内容为“The procedure entry point _except_handle

not be located in the dynamic link library msvcrt.dll.”。如下图所示:

以前在台式机中文版Microsoft Windows XP Professional with Service Pace 2上使用这个客户端时并没有是今年9月份我将笔记本计算机的操作系统安装为Microsoft Windows XP Professional with Service Pace 后于10月初安装飞信客户端之后就一直存有这个问题,直到今天我才有一块集中的空余时间来分析解决。之前但是答案均是“系统缺少msvcrt.dll,下载一个就好了”或者是“msvcrt.dll版本不正确,下载一个替换即可便,我也试过,但是根本不奏效。可是我发现没有解决也可以正常使用飞信,只是每次要弹出这个错误消息,所哈哈~幸好今天解决掉了,心得是解决软件故障不能浮于表面,欲发掘内在问题和根本原因,还得自己架设环境为软件太多了,错误的种类也太多了,一切还是得具体情况具体分析阿~~下面我们一起来看看整个过程吧:(过程不止下面的这些,但是经过解决这个问题,以下整理出来的思路应该是最简短并且能够找到问题原因的)首先,我们让该问题重现,即双击飞信客户端的桌面图标,让其弹出该错误对话框。错误提示出现了,我们先不急定)”按钮,而是启动一个调试程序。(本例中使用著名的Microsoft Windbg工具进行调试分析)然后在“Fi 中选择“Attach to a Process...(附加到一个进程)”,选择当前的飞信客户端的进程“FetionFX.exe”。这Attach to a Process就是因为我们要将调试器跟踪到当前这个产生错误的进程,然后从内存中实时察看相关API函数的调用。Windbg中还支持其他的几种类型的调试,须根据具体情形按需选择。附加到该进程之后的结

然后,我们可以在图中清晰地看到,当系统加载到“c:\Program Files\China Mobile\Fetion\dwmapi.dll”时中的"Warning: Break-in time out, suspending.",在Windows中的表现也就是弹出了上述的错误对话框,并点击“确定”按钮,于是程序暂时挂起。因此,我们可以判断,FeionFX.exe启动时加载的位于“c:\Program Mobile\Fetion\”目录下的dwmapi.dll在执行某个函数过程的时候遇到了错误。那么究竟是什么样的函数呢?框的信息,我们可以初步猜测是MSVCRT.dll中的_except_handler4_common。于是,我们需要查找一下当前进的现状,所以执行"x msvcrt!_except_handler*"命令,返回的结果也在上图中的底部。在Windbg中,x是查可以用来查找全局变量的地址或过程的地址。比如x kernel32!*显示Kernel32.dll中的所有可见变量,数据号是通配符,代替任意的字符串,为了查找全部的,我们需要使用该通配符。(其实如果你执行“x

msvcrt!_except_handler4_common”你会发现没有任何结果,也就是找不到,其实这也就是出现该错误的原因因此退一步不输入"4_common",查找所有_except_handler过程)

结果告诉我们,进程中msvcrt.dll存有的过程有_except_handler2以及_except_handler3,而恰恰没有_exc 鉴于以上返回结果,我们可以初步断定,错误的起因是因为程序不能执行MSVCRT.DLL中的_except_handler4_且原因是当前缺少这个。此时,我们需要借助Microsoft Dependency Walker进行辅助分析并且确认。

我们启动Microsoft Dependency Walker,打开该dwmapi.dll,可以发现,该DLL文件的运行将会首先调用MS 下图中也标示出来了,在当前调用的MSVCRT.DLL中,缺少一个函数"_except_handler4_common",这起好与我象相以及Windbg分析的结果吻合。如下图所示:

相关文档
最新文档