利用映像劫持轻松替换系统程序
Image File Execution Options (其实应该称为“Image Hijack”)就是映像劫持技术,通过此种方式替换记事本,非常地绿色环保。
Image File Execution Options 是 CreateProcess 函数中的一个功能,即在可执行程序运行时,Windows会先检测对应IFEO中的Debugger值,如果 存在这个参数的话,就运行这个参数中指定的程序,好像是程序调试之用,具体可以见这里。
原理:以替换记事本为例,通过修改 Image File Execution Options 键值后,在有 notepad.exe 运行请求的时候,欺骗系统运行指定的程序 notepad2.exe,为了更好地理解这个过程,我画了一幅图:
根据上图我们可以得出两种更改文件打开方式的方法:
-
- 使注册表定位到其它程序
- 用其它程序替换原程序
这里两种方法各有优劣,第二种方法无疑更彻底,但问题也不少,下面我介绍的是第一种方法。
替换 notepad.exe
手工方法(所有方法的原理):
- 创建如下注册表项:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe,如果无法修改,需要先右键取得权限;
- 在notepad.exe 注册表项中,创建名为 Debugger 的字符串值(REG_SZ);
- 修改字符串值 Debugger 的数据为Notepad2.exe 的完整路径,最后以 /z参数结尾。
- 如:"D:\Program Files\Notepad2\Notepad2.exe" /z
注册表方法:
1 Windows Registry Editor Version 5.00 2 3 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe] 4 "Debugger"="\"D:\\Program Files\\Notepad2\\Notepad2.exe\" /z"
批处理方法:
1 @echo off 2 cd /d "%~dp0" 3 echo. 4 echo. 5 pause 6 cd /d "%~dp0" 7 reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe" /v "Debugger" /d "\"%~dp0Notepad2.exe\" /z" /f 8 cls 9 echo. 10 echo. 11 pause
批处理升级版:
此版本在原版的基础上加入了管理员权限测试、劫持检测、反劫持。
1 @echo off 2 set regkey=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe 3 reg add "%regkey%" /v "test" /f 1>nul 2>nul && (reg delete "%regkey%" /v "test" /f) || (echo.&echo.&echo 缺少权限,请右键点击此脚本,选择“以管理员身份运行”。&pause>nul&exit) 4 5 :begin 6 cls 7 for /L %%i in (1,1,5) do echo. 8 set num=0 9 reg query "%regkey%" /v "Debugger" 1>nul 2>nul && goto undo || goto done 10 11 :done 12 set /P num=记事本[未劫持],是否开启劫持?( 1--是,其他--否 ) : 13 echo %num% 14 if %num% equ 1 reg add "%regkey%" /v "Debugger" /d "\"%~dp0Notepad2.exe\" /z" /f 15 goto begin 16 17 :undo 18 set /P num=记事本[已劫持],是否取消劫持?( 1--是,其他--否 ) : 19 echo %num% 20 if %num% equ 1 reg delete "%regkey%" /f 21 goto begin
inf 方法:
安装版:
1 [Version] 2 3 Signature="$WINDOWS NT$" 4 5 [DefaultInstall] 6 AddReg=an 7 [an] 8 HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe","Debugger",0,"""%01%\Notepad2.exe"" /z" 9 HKCR,"*\shell\NotePad2",,,"用 &NotePad2 编辑" 10 HKCR,"*\shell\NotePad2\command",,,"%01%\Notepad2.exe ""%1"""
反安装版:
1 [Version] 2 3 Signature="$WINDOWS NT$" 4 5 [DefaultInstall] 6 delReg=hf 7 [hf] 8 HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe" 9 HKCR,"*\shell\NotePad2
替换 explorer.exe
手工方法:(以 TC 为例)
- 打开注册表,HKEY_CLASSES_ROOT\Folder\shell
- 点开 open,opennewprocess,opennewwindow,修改里面的 command 键值
- 将 command 键值 "%SystemRoot%\Explorer.exe" 修改为TC目录 "E:\totalcmd\TOTALCMD64.EXE""%1",删掉后面的 DelegateExecute {11dbb47c-a525-400b-9e80-a54615a090c0}.
注意:该方法会导致无法打开 控制面板、个性化 等控制窗口!
还原(另存为*.reg):
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Folder\shell] [HKEY_CLASSES_ROOT\Folder\shell\explore] "MultiSelectModel"="Document" "ProgrammaticAccessOnly"="" "LaunchExplorerFlags"=dword:00000018 [HKEY_CLASSES_ROOT\Folder\shell\explore\command] "DelegateExecute"="{11dbb47c-a525-400b-9e80-a54615a090c0}" [HKEY_CLASSES_ROOT\Folder\shell\open] "MultiSelectModel"="Document" [HKEY_CLASSES_ROOT\Folder\shell\open\command] "DelegateExecute"="{11dbb47c-a525-400b-9e80-a54615a090c0}" @=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\ 00,5c,00,45,00,78,00,70,00,6c,00,6f,00,72,00,65,00,72,00,2e,00,65,00,78,00,\ 65,00,00,00 [HKEY_CLASSES_ROOT\Folder\shell\opennewprocess] "MUIVerb"="@shell32.dll,-8518" "MultiSelectModel"="Document" "Extended"="" "LaunchExplorerFlags"=dword:00000003 "ExplorerHost"="{ceff45ee-c862-41de-aee2-a022c81eda92}" [HKEY_CLASSES_ROOT\Folder\shell\opennewprocess\command] "DelegateExecute"="{11dbb47c-a525-400b-9e80-a54615a090c0}" [HKEY_CLASSES_ROOT\Folder\shell\opennewwindow] "MUIVerb"="@shell32.dll,-8517" "MultiSelectModel"="Document" "OnlyInBrowserWindow"="" "LaunchExplorerFlags"=dword:00000001 [HKEY_CLASSES_ROOT\Folder\shell\opennewwindow\command] "DelegateExecute"="{11dbb47c-a525-400b-9e80-a54615a090c0}"
作者:rhinoc
来源:http://rhinoc.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者允许必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任权利。