今天公司的一台计算机无法正常工作送来维修,经简单判断是感染了很多病毒,即使在安全模式下也无法清除;于是将硬盘摘下挂到另外一台机器上,用卡巴斯基对病毒进行了查杀,再次启动计算机后发现很多系统维护程序以及杀毒软件等都无法执行,虽然程序都存在,但一执行系统就显示错误信息说找不到文件,而如果将程序改名再执行就没有问题,百思不得其解。经过对注册表进行查找分析,发现一项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options,其下包括一些无法执行的程序名字,而且这些程序下面都建立了一个键值debugger,值为“c:\Windows\system32\drivers\adamrf.exe”,而这个adamrf.exe显然是非正常程序,那么这个键值代表什么含义呢? 注册表的这个项主要是用来调试程序用的,对一般用户意义不大。默认是只有管理员和local system有权读写,一般user只读。Windows NT系统在执行一个从命令行调用的可执行文件运行请求时,首先会检查这是否是一个可执行文件,如果是,又是什么格式的,然后就会检查是否存在: [HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\ImageName] 如果存在,首先会试图读取这个键值: [HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\ImageName] "Debugger"="debug_prog" 如果存在,就执行“debug_prog ImageName”。
在我们这台机器中,提示系统找不到文件,这里所谓找不到的其实是那个“adamrf.exe”,那是因为那个adamrf.exe已被杀毒软件删除的缘故。将包含这个键值的所有项目删除,系统恢复正常。
转载自:http://blog.sina.com.cn/s/blog_496568a4010006ku.html