很多网友在使用电脑的过程中碰到这样的奇怪现象:程序不管放在什么位置,打开该程序的时候,都会出现该程序无法运行或者指向另一个程序的情况,但是如果给该程序改名后便发现可以正常运行了,研究之后发现这是因为系统遭到镜像劫持了,系统被镜像劫持后会导致注册表冗余文件过多而导致系统卡顿,对此我们该如何解决呢?
一、什么是映像胁持(IFEO)?
“映像劫持”,也被称为“IFEO”(Image File Execution Options),在WindowsNT架构的系统里,IFEO的本意是为一些在默认系统环境中运行时可能引发错误的程序执行体提供特殊的环境设定。当一个可执行程序位于IFEO的控制中时,它的内存分配则根据该程序的参数来设定,而WindowsN T架构的系统能通过这个注册表项使用与可执行程序文件名匹配的项目作为程序载入时的控制依据,最终得以设定一个程序的堆管理机制和一些辅助机制等。出于简化原因,IFEO使用忽略路径的方式来匹配它所要控制的程序文件名,所以程序无论放在哪个路径,只要名字没有变化,它就运行出问题。
“HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsNTCurrentVersionImage File ExecutionOptions”内,使用与可执行程序文件名匹配的项目作为程序载入时的控制依据,最终得以设定一个程序的堆管理机制和一些辅助机制等,大概微软考虑到加入路径控制会造成判断麻烦与操作不灵活的后果,也容易导致注册表冗余,于是IFEO使用忽略路径的方式来匹配它所要控制的程序文件名。
Image File Execution Options位于注册表:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Options
由于这个项主要是用来调试程序用的,对一般用户意义不大。默认是只有管理员和local system有权读写修改
先看看常规病毒等怎么修改注册表吧。。
那些病毒、蠕虫和,木马等仍然使用众所皆知并且过度使用的注册表键值,如下:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun
HKLMSOFTWAREMicrosoftWindows NTCurrentVersionWindowsAppInit_DLLs
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinlogonNotify
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunOnce
HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunServicesOnce
等等。。。
二、具体使用资料:
@echo off
rem 关闭命令回显
echo 此批处理只作技巧介绍,请勿用于非法活动!
rem 显示echo后的文字
pause
rem 停止
echo Windows Registry Editor Version 5.00》》ssm.reg
echo [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Optionssyssafe.EXE] 》》ssm.reg
echo “Debugger”=“syssafe.EXE” 》》ssm.reg
rem 把echo后的文字导出到SSM.reg中
regedit /s ssm.reg &del /q ssm.reg
rem 导入ssm.reg并删除
使SSM失效HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Optionssvchost.exe项下的“Debugger”=“abc.exe” 意思是不执行svchost.exe而执行abc.exe
可能说了上面那么多,大家还弄不懂是什么意思,没关系,我们大家一起来看网络上另一个朋友做得试验:
1、开始-运行-regedit,展开到:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Options
2、然后选上Image File Execution Options,新建个项,然后,把这个项(默认在最后面)然后改成123.exe
3、选上123.exe这个项,然后默认右边是空白的,我们点右键,新建个“字串符”,然后改名为“Debugger“
4、这一步要做好,然后回车,就可以。。。再双击该键,修改数据数值(其实就是路径)。。
5、把它改为 C:windowssystem32CMD.exe
注:C:是系统盘,如果你系统安装在D则改为D:如果是NT或2K的系统的话,把Windows改成Winnt,下面如有再提起,类推。
好了,实验下。
6、然后找个扩展名为EXE的,(我这里拿IcesWord.exe做实验),改名为123.exe。
7、然后运行。出现了DOS操作框,不知情的看着一闪闪的光标,肯定觉得特诡异。
8、一次简单的恶作剧就成咧。
同理,病毒等也可以利用这样的方法,把杀软、安全工具等名字再进行重定向,指向病毒路径。所以,如果你把病毒清理掉后,重定向项没有清理的话,由于IFEO的作用,没被损坏的程序一样运行不了!
让病毒迷失自我:
1、同上面的道理一样,如果我们把病毒程序给重定向了,是不是病毒就不能运行了,答案是肯定的。
WindowsRegistryEditorVersion5.00
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsNTCurrentVersionImageFileExecutionOptionssppoolsv.exe]
Debugger=123.exe
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsNTCurrentVersionImageFileExecutionOptionslogo_1.exe]
Debugger=123.exe
2、将上面的代码保存为后缀.reg的文件,双击它,是以金猪病毒和威金病毒为例,这样即使这些病毒在系统启动项里面,即使随系统运行了,但是由于映象劫持的
3、重定向作用,还是会被系统提示无法找到病毒文件(这里是logo_1.exe和sppoolsv.exe)。
三、映像胁持的基本原理:
NT系统在试图执行一个从命令行调用的可执行文件运行请求时,先会检查运行程序是不是可执行文件,如果是的话,再检查格式的,然后就会检查是否存在。。如果不存在的话,它会提示系统找不到文件或者是“指定的路径不正确等等。。
当然,把这些键删除后,程序就可以运行!
四、映像胁持的具体案例:
蔚为壮观的IFEO,稍微有些名气的都挂了:
HKLMSOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Optionsavp.exe
HKLMSOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution OptionsAgentSvr.exe
HKLMSOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution OptionsCCenter.exe
HKLMSOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution OptionsRav.exe
从这个案例,我们可以看到这个技术的强大之处!很多的杀软进程和一些辅助杀软或工具,全部被胁持,导致你遇到的所有杀软都无法运行!试想如果更多病毒,利用于此,将是多么可怕的事情!
五、如何解决并预防IFEO?
方法一: 限制法
它要修改Image File Execution Options,所先要有权限,才可读,于是,一条思路就成了。
打开注册表编辑器,定位到[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsNTCurrentVersionImageFileExecutionOptions,选中该项,右键→权限→高级,取消administrator和system用户的写权限即可。
方法二、快刀斩乱麻法
打开注册表编辑器,定位到[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsNTCurrentVersion,把“ImageFileExecutionOptions”项删除即可。
到此,本文给大家介绍了什么是镜像劫持,同时还给大家介绍了如何修复镜像劫持以及防护的方法,如果用户的电脑在不经意间被镜像劫持了,就用上面的方法来解决。