博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
拍案而起:揪出胡作非为的DLL黑手(转)
阅读量:2452 次
发布时间:2019-05-10

本文共 2051 字,大约阅读时间需要 6 分钟。

拍案而起:揪出胡作非为的DLL黑手(转)[@more@]

  在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文件。

  
2005.3.18.16.58.50.1.png

  
小提示

  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:Windowssystem32目录下的sxs.dll、vbscript.dll、jscript.dll文件。用“搜索”的方法可以发现文件helpctr.txt和mshta.txt中均存在上述文件,看来“罪魁祸首”非这三者莫属。

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

  

  小编有话说:

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

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8403220/viewspace-938172/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/8403220/viewspace-938172/

你可能感兴趣的文章
开源素材网_34个用于广告素材的开源工具
查看>>
ajax请求成功和失败方法_创新需要反馈和失败的新方法
查看>>
linux 内核开发_25年Linux内核开发中的9课
查看>>
java 情侣最佳升高_2016年最佳情侣:显示经理和窗口经理
查看>>
opensource项目_最佳Opensource.com:法律
查看>>
1989年个人简历_像1989年一样进行计算
查看>>
比特币怎么比特币钱包_5分钟内获得比特币
查看>>
vr设备应用程序_在15分钟内构建一个VR Web应用程序
查看>>
美团脱颖而出的经验_2016年脱颖而出的7个很棒的小开源项目
查看>>
嵌入式顶级程序员_3D打印的顶级开放式创新
查看>>
openstack 功能_2016年OpenStack的新功能:看一下Newton版本
查看>>
2017年大白菜系统操作说_为什么操作系统在2017年更重要
查看>>
sysadmin默认密码_用于sysadmin工具箱的10个开源工具
查看>>
开源飞控爱好者_开源爱好者的10种节日礼物创意
查看>>
groovy语言 累加_使用Groovy管理数据:查找和累加器
查看>>
android开源2016_Google 2016年开源版本浏览
查看>>
LinuxQuestions.org庆祝16岁生日
查看>>
fameview搅拌机控件_搅拌机爱好者齐聚第十五届年会
查看>>
开源硬件 可穿戴_11个出色的可穿戴开源项目
查看>>
java 难题_您可以避免的6种组织成长难题
查看>>