所谓镜像劫持,简单地说是程序执行重定向的过程。
假设你机子上有两个可执行文件a.exe和b.exe,如果你双击a.exe却执行了b.exe,那么a.exe就很可能被镜像劫持了。其实镜像劫持没什么技术含量,就是操作注册表"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options"的过程。
一般一些恶意工具会利用镜像劫持来达到禁用某程序运行,当然这也有缺陷,只要你将要运行的程序改名,劫持便无效。
一般杀软或主动防御都会对该注册表键进行保护,防止被恶意修改。以下是就是在下写的移除镜像劫持的函数。
BOOL RemoveImageExec(LPCSTR szName)
{
HKEY hKey;
LPCTSTR lpSubKey = "Software\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options";
LONG ulRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE,lpSubKey,0,KEY_ALL_ACCESS,&hKey);
if (ulRet == ERROR_SUCCESS)
{
if (ERROR_SUCCESS == RegDeleteKey(hKey,szName))
{
RegCloseKey(hKey);
return TRUE;
}
RegCloseKey(hKey);
}
return FALSE;
}