当前通讯!kernelutildll.dll_kernelutil dll
1、我的是opera浏览器出的问题 用下面的方法也可以解决 你不妨试一下 从网上找的;收集自网络:无法定位程序输入点_except_handler4_common于动态链接库msvcrt.dll上解决方式如下:这是由于sp3加载的驱动造成的;只需要将C:WINDOWSsystem32dwmapi.dll重新命名一下即可以解决。
(资料图)
2、原因:浅谈Windows环境软件故障调试与分析大家好,我是Eric,今天,我将与大家一起分享一个软件故障的调试与分析案例,希望给大家提供一个解决Windows下软件错误的基本分析思路和供参考的一类解决方法。
3、看完本例,您将会初步了解到Dll Entry Point错误的一些基本知识,也将接触到像Winbdg、Dependency Walker一类的专业调试、分析工具软件的基本使用,在这里我也和大家一起分享并探讨。
4、 本例中出现错误的软件是中国移动飞信2008版客户端,具体现象是每次双击图标启动该程序时总会收到一个错误信息对话框——标题为“FetionFX.exe - Entry Point Not Found”,内容为“The procedure entry point _except_handler4_common could not be located in the dynamic link library msvcrt.dll.”。
5、如下图所示:以前在台式机中文版Microsoft Windows XP Professional with Service Pace 2上使用这个客户端时并没有出现该问题,但是今年9月份我将笔记本计算机的操作系统安装为Microsoft Windows XP Professional with Service Pace 3的英文版,然后于10月初安装飞信客户端之后就一直存有这个问题,直到今天我才有一块集中的空余时间来分析解决。
6、之前我搜索过百度,但是答案均是“系统缺少msvcrt.dll,下载一个就好了”或者是“msvcrt.dll版本不正确,下载一个替换即可”,为了图简便,我也试过,但是根本不奏效。
7、可是我发现没有解决也可以正常使用飞信,只是每次要弹出这个错误消息,所以也没急着管。
8、哈哈~幸好今天解决掉了,心得是解决软件故障不能浮于表面,欲发掘内在问题和根本原因,还得自己架设环境手动分析,因为软件太多了,错误的种类也太多了,一切还是得具体情况具体分析阿~~下面我们一起来看看整个过程吧:(全部的分析调试过程不止下面的这些,但是经过解决这个问题,以下整理出来的思路应该是最简短并且能够找到问题原因的)首先,我们让该问题重现,即双击飞信客户端的桌面图标,让其弹出该错误对话框。
9、错误提示出现了,我们先不急着点击“OK(确定)”按钮,而是启动一个调试程序。
10、(本例中使用著名的Microsoft Windbg工具进行调试分析)然后在“File(文件)”菜单中选择“Attach to a Process...(附加到一个进程)”,选择当前的飞信客户端的进程“FetionFX.exe”。
11、这里之所以要选择Attach to a Process就是因为我们要将调试器跟踪到当前这个产生错误的进程,然后从内存中实时察看相关的线程堆栈甚至API函数的调用。
12、Windbg中还支持其他的几种类型的调试,须根据具体情形按需选择。
13、附加到该进程之后的结果如下图所示:然后,我们可以在图中清晰地看到,当系统加载到“c:Program FilesChina MobileFetiondwmapi.dll”时挂起,就是图中的"Warning: Break-in time out, suspending.",在Windows中的表现也就是弹出了上述的错误对话框,并且我们还没有点击“确定”按钮,于是程序暂时挂起。
14、因此,我们可以判断,FeionFX.exe启动时加载的位于“c:Program FilesChina MobileFetion”目录下的dwmapi.dll在执行某个函数过程的时候遇到了错误。
15、那么究竟是什么样的函数呢?根据错误对话框的信息,我们可以初步猜测是MSVCRT.dll中的_except_handler4_common。
16、于是,我们需要查找一下当前进程中有关该过程的现状,所以执行"x msvcrt!_except_handler*"命令,返回的结果也在上图中的底部。
17、在Windbg中,x是查找符号的命令,可以用来查找全局变量的地址或过程的地址。
18、比如x kernel32!*显示Kernel32.dll中的所有可见变量,数据结构和过程。
19、*号是通配符,代替任意的字符串,为了查找全部的,我们需要使用该通配符。
20、(其实如果你执行“x msvcrt!_except_handler4_common”你会发现没有任何结果,也就是找不到,其实这也就是出现该错误的原因,我们后文分析。
21、因此退一步不输入"4_common",查找所有_except_handler过程) 结果告诉我们,进程中msvcrt.dll存有的过程有_except_handler2以及_except_handler3,而恰恰没有_except_handler4。
22、鉴于以上返回结果,我们可以初步断定,错误的起因是因为程序不能执行MSVCRT.DLL中的_except_handler4_common过程,而且原因是当前缺少这个。
23、此时,我们需要借助Microsoft Dependency Walker进行辅助分析并且确认。
24、 我们启动Microsoft Dependency Walker,打开该dwmapi.dll,可以发现,该DLL文件的运行将会首先调用MSVCRT.DLL,而且下图中也标示出来了,在当前调用的MSVCRT.DLL中,缺少一个函数"_except_handler4_common",这起好与我们看到的错误现象相以及Windbg分析的结果吻合。
25、如下图所示:此时,我们可以进一步断定,要么是DLL版本不对,要么就是dwmapi.dll有问题。
26、而这个程序调用的是XP系统的%systemroot%system32下面的MSVCRT.DLL,从移动飞信官方得知,该程序就是针对XP/Vista开发的,且朋友中文版XP SP3中运行得很正常,于是我确认了一下本机该文件的版本,结果是“7.0.2600.5512 (xpsp.080413-2111)”,看来没有什么问题,是版本7.0.2600。
27、于是我们得查一查另外一个文件了——dwmapi.dll,为什么它要载入MSVCRT.Dll并且调用其中并不存在的一个过程呢? 接下来,我们查看位于飞信文件夹下的dwmapi.dll。
28、察看版本信息,得到“6.0.6000.16386 (vista_rtm.061101-2205)”,问题就在这里!看到了吗?这个位于飞信安装目录下的文件怎么会来自Vista正式发布版??怎么会用到XP的程序执行之中???要知道,这个文件之所以能够使用全部功能是因为在Vista环境之下,很多新的DLL文件中带有新的函数,正好可以被它调用。
29、那么我们猜想,是不是Vista版本下的MSVCRT.DLL就存在一个新版本——即第4版的_exception_handler4呢?我们从Microsoft Windows Vista RTM中提取出位于%systemroot%system32下面的MSVCRT.DLL,其版本为“7.0.6001.18000 (longhorn_rtm.080118-1840)”,然后再次使用Dependency Walker打开,发现其中果然存在该新的函数!即“_except_handler4_common”。
30、如下图所示:到这里,问题就已经清楚了。
31、正是由于本机的飞信客户端在启动时调用了用于Vista的DLL组件dwmapi.dll,而该DLL又要尝试调用一个Vista下msvcrt.dll才有的过程,才出现了该错误提示。
32、因为我们发现,该错误提示并不影响之后程序的正常使用,而且我们所使用的环境是Windows XP而非Vista,所以推断该调用dwmapi.dll的过程是非必要的,于是将其重命名或是删除到回收站,再次启动飞信客户端,错误提示消失了,迎来的是程序正常的使用…… 之后我查阅了大量的KB资料以及Visual Studio的MSDN资料,发现_except_handler是VC++编译器自带的一个内部异常处理。
33、而版本4的_except_handler4_common handler又仅存在于Vista以及之后的系统之中。
34、而且值得注意的是,很多这样子的错误都是由于系统中存在有来自更高级版本系统的文件造成的,而文件的来源于一般有几种,一般是修改系统时自己放进去的或者别的安装程序带入的,也有情况是盗版改版的操作系统中存有的,再有就是本例中的情形——安装程序可同时用于Windows XP以及Windows Vista。
35、可能是由于XP英文版与中文版的环境的不同,飞信客户端的启动选择了加载调用为Vista准备的dwmapi.dll从而产生了此错误。
36、 注:本例中并没有介绍使用Dependency Walker的“Profile(剖析)”功能,因为该飞信客户端的启动不是靠单文件的,因此比较复杂,而且本例中因为该错误不能成功剖析整个启动过程。
37、借助其他工具,可以得到,其实飞信客户端的启动过程是先通过Fetion.exe加载FetionFX.exe然后再加载“VMDotNetv2.0.50727”下的FetionVM.exe进行的,于是我们可以只对FetionVM.exe进行剖析,而且当前环境也只能这样了。
38、剖析过后同样能够发现问题,如下图所示:到这里,问题就已经清楚了。
39、正是由于本机的飞信客户端在启动时调用了用于Vista的DLL组件dwmapi.dll,而该DLL又要尝试调用一个Vista下msvcrt.dll才有的过程,才出现了该错误提示。
40、因为我们发现,该错误提示并不影响之后程序的正常使用,而且我们所使用的环境是Windows XP而非Vista,所以推断该调用dwmapi.dll的过程是非必要的,于是将其重命名或是删除到回收站,再次启动飞信客户端,错误提示消失了,迎来的是程序正常的使用……朋友,这是你的电脑“丢失”或“误删”了“系统文件”,或“系统文件”被病毒和“顽固”木马“破坏”,我给你8种方法:(答案原创,严禁盗用)1.下载个:“360系统急救箱”!(安全模式下,联网使用,效果更好!)(1)先“查杀”病毒,再删除后,“立即重启”!(2)重启开机后,再点开“隔离|恢复”,点:“彻底删除”,病毒文件和“可疑自启动项”!(3)再点开“修复”,“全选”,再“立即修复”文件!(4)再点开:“恢复丢失的dll文件”,扫描一下,如果没有就行了!2。
41、用“360安全卫士”里“系统修复”,点击“使用360安全网址导航”,再“全选”,“一键修复”,“返回”!3。
42、用“360安全卫士”的“扫描插件”,然后再“清理插件”,把它删除!4。
43、再用“360杀毒双引擎版”,勾选“自动处理扫描出的病毒威胁”,用“全盘扫描”和“自定义扫描”,扫出病毒木马,再点删除!重启电脑后,来到“隔离区”,点“彻底删除”!5。
44、使用360安全卫士的“木马云查杀”,全盘扫描,完毕再“自定义扫描”!扫出木马或恶意病毒程序,就点删除!重启电脑后,来到“隔离区”,点“彻底删除”!6。
45、如果还是不行,试试:“金山急救箱”的扩展扫描和“金山网盾”,一键修复!7。
46、再不行,重启电脑,开机后,按F8,回车,回车,进到“安全模式”里,“高级启动选项”里,“最后一次正确配置”,按下去试试,看看效果!8。
47、实在不行,做“一键还原”系统。
本文到此分享完毕,希望对大家有所帮助。
关键词:
广告
X 关闭
X 关闭
-
京张高铁每日开行17对冬奥列车
京张高铁每日开行17对冬奥列车 预计冬奥服务保障期运送运动员、技术官员、持票观众等20万人次 2月6日,2022北京新闻中心举行“北
-
北京冬奥会开幕式上 小学生朱德恩深情演绎《我和我的祖国》
北京冬奥会开幕式上 小学生朱德恩深情演绎《我和我的祖国》 9岁小号手苦练悬臂吹响颂歌 2月4日晚,在北京冬奥会开幕式上,9岁的
-
2022北京冬奥会开幕式这19首乐曲串烧不简单
多名指挥家列曲目单 再由作曲家重新编曲 本报专访冬奥开幕式音乐总监赵麟 开幕式这19首乐曲串烧不简单 “二十四节气”倒计时、
-
“一墩难求” 冰墩墩引爆购买潮
设计师:没想到冰墩墩成“爆款” “一墩难求”冰墩墩引爆购买潮 北京冬奥组委:会源源不断供货 北京冬奥会吉祥物“冰墩墩”近日
