无法定位程序输入点于msvcrtdll相关问题解决方法

上传人:大米 文档编号:456936019 上传时间:2023-05-04 格式:DOCX 页数:8 大小:502.50KB
返回 下载 相关 举报
无法定位程序输入点于msvcrtdll相关问题解决方法_第1页
第1页 / 共8页
无法定位程序输入点于msvcrtdll相关问题解决方法_第2页
第2页 / 共8页
无法定位程序输入点于msvcrtdll相关问题解决方法_第3页
第3页 / 共8页
无法定位程序输入点于msvcrtdll相关问题解决方法_第4页
第4页 / 共8页
无法定位程序输入点于msvcrtdll相关问题解决方法_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《无法定位程序输入点于msvcrtdll相关问题解决方法》由会员分享,可在线阅读,更多相关《无法定位程序输入点于msvcrtdll相关问题解决方法(8页珍藏版)》请在金锄头文库上搜索。

1、无法定位程序输入点于msvcrt.dll相关问题解决方法(图)安全中国更新时间:2009-10-21 00:32:44责任编辑:池天热点:我发现这个问题是在每次打开八戒桌面小工具时会提示“DeskwidgetFeskWidget.exe -无法找到入口无法定位程序输入点 _except_handler4_common于动态链接库msvcrt.dll上”,遂上网查了资料。发现这是个系统性的问题。以前八戒软件能正 常使用,不知道这段时间是卸载了什么软件还是装了什么东西,导致八戒不能用了。网上的方法如下,可以解决每次弹出“无法定位”对话框的问题:这是由于sp3加载的驱动造成的;只需要将C:WINDO

2、WSsystem32dwmapi.dll重新命名一下即可以解决;在system32中找到 dwmapi.dll,他的标签居然表明来自Vista RTM,试着把“dwmapi.dll”重命名一下(注:改成任意文件名,如dwmap.dll)。 问题解决。不过,我从没有修改飞信安装文件夹下的dwmapi.dll却能正常使用飞信,没有出现网上所说的每次弹出“无法定位”对话框 的问题,真的很奇怪。究竟是什么原因导致这个问题的呢?为什么windowssystem32下的dwmapi.dll动态链接库可以随便修 改,这不会导致系统问题吗?也许下面的文章能解答一些疑问:原文地址 http:/ 误的基本分析思路

3、和供参考的一类解决方法。看完本例,您将会初步了解到Dll Entry Point错误的一些基本知识,也将接触 到像Winbdg、Dependency Walker 一类的专业调试、分析工具软件的基本使用,在这里我也和大家一起分享并探讨。本例中出现错误的软件是中国移动飞信2008版客户端,具体现象是每次双击图标启动该程序时总会收到一个错误信息对话框 标题为 “FetionFX.exe - Entry Point Not Found”,内容为 “The procedure entry point _except_handler4_common could not be located in the

4、 dynamic link library msvcrt.dll.”。如下图所示:FetionFX.exe - Entry Point Not FoundTlie procedure entry point _exoept_handler4_common could not be located in the dynamic link library msvcrt.dll.全中国VIP会员 V匮业叔威域档坳蜜回以前在台式机中文版Microsoft Windows XP Professional with Service Pace 2上使用这个客户端时并没有出现该问题,但 是今年9月份我将笔记本

5、计算机的操作系统安装为Microsoft Windows XP Professional with Service Pace 3的英文版,然 后于10月初安装飞信客户端之后就一直存有这个问题,直到今天我才有一块集中的空余时间来分析解决。之前我搜索过百度, 但是答案均是“系统缺少msvcrt.dll,下载一个就好了”或者是“ msvcrt.dll版本不正确,下载一个替换即可”,为了图简 便,我也试过,但是根本不奏效。可是我发现没有解决也可以正常使用飞信,只是每次要弹出这个错误消息,所以也没急着管。 哈哈幸好今天解决掉了,心得是解决软件故障不能浮于表面,欲发掘内在问题和根本原因,还得自己架设环境手

6、动分析,因 为软件太多了,错误的种类也太多了,一切还是得具体情况具体分析阿下面我们一起来看看整个过程吧:(全部的分析调试 过程不止下面的这些,但是经过解决这个问题,以下整理出来的思路应该是最简短并且能够找到问题原因的)首先,我们让该问题重现,即双击飞信客户端的桌面图标,让其弹出该错误对话框。错误提示出现了,我们先不急着点击“OK(确 定)”按钮,而是启动一个调试程序。(本例中使用著名的Microsoft Windbg工具进行调试分析)然后在“File(文件)”菜单 中选择“Attach to a Process.(附加到一个进程)”,选择当前的飞信客户端的进程“FetionFX.exe”。这里

7、之所以要选择 Attach to a Process就是因为我们要将调试器跟踪到当前这个产生错误的进程,然后从内存中实时察看相关的线程堆栈甚至 API函数的调用。Windbg中还支持其他的几种类型的调试,须根据具体情形按需选择。附加到该进程之后的结果如下图所示:KodLoad: ModLoad: ModLoad: ModLoad: ModLoad: ModLoad: liodLoad : ModLoad: HodLoad: dLoad: ModLoad: i3reak-in774e0000 5adc0000 74720000 10000000 77c00000 76bf0000 OlldOOO

8、O 74c80000 76000000 77120000 51070000 sent.7761J000 5adf7000 7476c000 10015000 77c08000 76bfb000 011e7000 74cac000 760e5000 771ab000 51S7c000 30waitinqCCCCCCCCCCxUINDOUSXsystem32-Xole32.dllMJ IMDOUS$y t emt heme.dllINDQUSgy51em32.dwmaDi . dllseconds.iJ ARNING: Break-in timed out, suspending.Thi i害 u

9、sually causeH-by another thread holding the loader lock (1030.16f S.J : Uake debugger - code 00000007 Cf irst chance) eaK?00000002 ebs=51877504 ecK = 0018all8 edK=518772fe esi?c0000139 edi=?77c5a420 eip:i:7c9064f 4 esp=0013e410 ebp = 0013e464 ioplOnv up ei ng nz na pe ncc5=001b ss = 00?3 ds=0023 es

10、= 003- fs=003b gs=0000, ef l = 00000-?S6nt日11!KiFagtSygtemCallRet: 7c9Cie4f 4 c.3ret0 : 0 0 0 . k mSVcrt !_eKcept_handler*全中国VIP会员V77g35c94 vert !_eKcept_hand 1 er3 t 77c35bdc ms.ycrt !_eKcept_hand 1 er2 J : 000然后,我们可以在图中清晰地看到,当系统加载到“c:Program FilesChina MobileFetiondwmapi.dll”时挂起,就是图 中的 Warning: Br

11、eak-in time out, suspending.,在Windows中的表现也就是弹出了上述的错误对话框,并且我们还没有 点击“确定”按钮,于是程序暂时挂起。因此,我们可以判断,FeionFX.exe启动时加载的位于“c:Program FilesChina MobileFetion”目录下的dwmapi.dll在执行某个函数过程的时候遇到了错误。那么究竟是什么样的函数呢?根据错误对话 框的信息,我们可以初步猜测是MSVCRT.dll中的_except_handler4_common。于是,我们需要查找一下当前进程中有关该过程 的现状,所以执行x msvcrt!_except_handl

12、er*命令,返回的结果也在上图中的底部。在Windbg中,x是查找符号的命令, 可以用来查找全局变量的地址或过程的地址。比如x kernel32!*显示Kernel32.dll中的所有可见变量,数据结构和过程。* 号是通配符,代替任意的字符串,为了查找全部的,我们需要使用该通配符。(其实如果你执行“x msvcrt!_except_handler4_common”你会发现没有任何结果,也就是找不到,其实这也就是出现该错误的原因,我们后文分析。 因此退一步不输入4_common”,查找所有_except_handler过程)结果告诉我们,进程中msvcrt.dll存有的过程有_except_ha

13、ndler2以及_except_handler3,而恰恰没有_except_handler4。 鉴于以上返回结果,我们可以初步断定,错误的起因是因为程序不能执行MSVCRT.DLL中的_except_handler4_common过程,而 且原因是当前缺少这个。此时,我们需要借助Microsoft Dependency Walker进行辅助分析并且确认。我们启动Microsoft Dependency Walker,打开该dwmapi.dll,可以发现,该DLL文件的运行将会首先调用MSVCRT.DLL,而且 卜图中也标示出来了,在当前调用的MSVCRT.DLL中,缺少一个函数except_h

14、andler4_common,这起好与我们看到的错误现 象相以及Windbg分析的结果吻合。如下图所示:也而姗楠料酬耐也 Fie Edit View Options Profile Window Heip茬扃q昭叫区葬曾鸟富# 墨邑田旧SB Imsvcrt.dll IPIOrdinal 人HintFunction+KERNEL32.DLL rJEOrdinal 人HintFunctionE n235 OxOOEB)236 IM Ci EC)234 (0x0 0E A)_eof errnoJEE237 (0x00ED)236(0x00EC)l 23701(0 0E Di_exoept_hancHer2except Iiandler3V,w rnynni=F-rrMiriFF、pypH

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号