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

在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


    推荐阅读