当前位置: 首页 > 图文教程 > 操作系统 > Windows > 揪出系统中胡作非为的DLL黑手

Windows
Vista SP2更新和安装常见问题解答
在Vista、Windows7下玩英雄无敌3绿色版
在Vista、Win7下联网玩QQ对战平台、浩方、帝国时代2
当商用计算机遇到必须重新启动才能生效的更新
windows 7 运行命令
Vista/Win 7安装程序冲突问题的解决方法
Vista 修改注册表全面禁用控制面板
桌面 开始菜单丢失的解决方法
WinXP 安全设置 操作系统的技巧
Win7 虚拟内存 正确设置方法
注册表文件的默认打开方式修改方法
Windows7 再提速 winsxs文件夹优化
在Windows7上配置管理IIS日志记录
格式化与快速格式化有什么区别分析(快速格式化好)
教你全方面消除Win2003的安全隐患
细说Win2000的系统安全防范对策
Windows Server 2008 企业版 激活方法
Win2008系统和XP系统共同使用相同的缓存
Vista SP2搜索效率2则提升技巧
System Idle Process 认识与分析

Windows 中的 揪出系统中胡作非为的DLL黑手


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-01   浏览: 43 ::
收藏到网摘: n/a

 

  在Windows中,几乎所有应用程序都会用到DLL(动态链接库)文件,它的正常与否关系到软件能否正常运行。很多软件故障也和它有直接关系。但应用程序往往会调用几十个DLL程序,怎么判断谁是“罪魁祸首”呢?

  案例回放:在一次非法操作后,Windows XP“搜索助理”变成一张“白板”,不仅如此,“控制面板”中“用户账户”项也显得“面无表情”。点击“开始→帮助和支持”,鼠标一阵闪烁却始终不见“帮助和支持”程序界面的踪影。

  案例分析:凭感觉,笔者认为系统中的某个DLL文件已经注销、丢失或损坏。但Windows中几乎每个程序都要调用成十上百个DLL文件,如果按常规方法一个个寻找分析,无异于大海捞针。考虑到三个程序同时“毁容”,应该是受同一个(或几个)DLL文件的影响。为此必须找到上述这三个程序共同使用的DLL文件,然后,从中找出“幕后真凶”。

  查找与比对

  第一步:先从“搜索助理”入手,先弄清其“身世来历”。在另外一台装有Windows XP的机子中打开“搜索助理”,同时按Ctrl+Alt+Del键调出“任务管理器”,在“应用程序”选项卡中,选中“搜索助理”并右击,选择“转到进程”,呵呵,原来它是Explorer.exe(资源管理器)的一部分。

  第二步:用类似方法可得知“帮助和支持”属于进程Helpctr.exe,但在“用户账户”中只能用观察比较的方法查出其归属进程mshta.exe。

  小提示

  可通过打开、关闭“用户账户” 的方法比较“任务管理器”中的变化来确定其所属的进程;也可以在打开“搜索助理”时,在“命令提示符”中输入“tasklist /fo table>C:\acc1.txt”,在关闭该程序后,在“命令提示符”中输入“tasklist /fo table>C:\acc2.txt”,然后用fc命令进行比较“fc C:\acc1.txt C:\acc2.txt>C:\acc.txt”,比较得出的多余项即为该程序所属的进程。

  第三步:重启电脑,下面要请软件LISTDLLS出场了。到这里下载该软件,然后将listdlls.exe移动到C:\Windows,按Ctrl+R打开“运行”框,输入“cmd”,在“命令提示符”中输入:

  listdlls -r explorer.exe>C:\explorer1.txt。  

  接着打开“搜索助理”,再次在“命令提示符”中输入:listdlls -r explorer.exe>C:\explorer2.txt

  最后用fc命令进行比较:

  fc C:\explorer1.txt C:\explorer2.txt>C:\explorer.txt。

  这样打开C:\explorer.txt文件,对比后多出的文件即是“搜索助理”调用的DLL文件。  

  小提示

  ListDlls的用法为:listdlls [-r] [processname pid]或listdlls [-r] [-d dllname]

  第四步:重启电脑,用命令“listdlls -r helpctr.exe>C:\helpctr.txt”得到“帮助和支持”所使用的DLL文件。此处重启是为了使已经没有使用的DLL文件从内存中卸载。

  第五步:再次重启,用命令“listdlls -r mshta.exe>C:\mshta.txt”得到“用户账户”使用的DLL文件。

  筛选最后“真凶”

  分析explorer.txt中的DLL文件,其中文件目录中含有“srchasst”的,均为“搜索助理”单独调用的文件。剩余的文件分别为C:\Windows\system32目录下的sxs.dll、vbscript.dll、jscript.dll文件。用“搜索”的方法可以发现文件helpctr.txt和mshta.txt中均存在上述文件,看来“罪魁祸首”非这三者莫属。

  回到原来的电脑,发现三个文件均存在,也并未损坏。用命令regsvr32命令分别进行注册。果然,在对其中的jscript.dll文件的进行注册后(使用命令 regsvr32 jscript.dll),“白板”程序终于恢复其美丽的“容颜”。

  小编有话说:

  系统很多软件故障都是由DLL文件引起的。以前我们往往更关注DLL文件是否丢失,其实还有很多原因是没有注册成功造成的。看了本文介绍的方法,我们就可以很容易地筛选出造成故障的DLL文件,最终解决故障。