首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> VC 教學

檔案關聯型木馬程式設計思路 (修改 exefile/open/command)

     編輯:VC 教學

聲明

本文描述惡意軟體持久化技術,僅供防禦研究、安全分析參考。製作、傳播木馬屬違法犯罪,嚴禁實作濫用。

原理

Windows 透過登錄鍵 HKEY_CLASSES_ROOT\exefile\shell\open\command 定義 .exe 檔案的預設打開動作。預設值為 "%1" %*。若將此值修改為木馬程式路徑 (如 "C:\Trojan.exe" "%1" %*),則使用者雙擊任意 .exe 皆會先啟動木馬。木馬再啟動原程式並恢復登錄,即可隱蔽持久化,甚至在安全模式下生效。

實作流程 (VC++ 對話框專案範例)

  1. 建立互斥體 CreateMutex("MyStart") 防止重複執行。
  2. 取得命令列參數 AfxGetApp()->m_lpCmdLine (即原程式路徑)。
  3. 將登錄值改回預設 "%1" %* (否則 ShellExecute 會再次觸發木馬)。
  4. ShellExecute(NULL, "open", 原程式路徑, ...) 啟動真實程式。
  5. 程式結束前,將登錄值改回木馬路徑 "C:\Trojan.exe" "%1" %*。

關鍵程式碼片段

CString str = AfxGetApp()->m_lpCmdLine; // 取得傳入參數
HANDLE hMutex = CreateMutex(NULL, FALSE, "MyStart");
if (GetLastError() == ERROR_ALREADY_EXISTS) PostQuitMessage(0);

if (!str.IsEmpty()) {
    // 處理路徑中的反斜線
    CString tmp;
    for (int i=0; i

防禦對策

  • 監控 HKCR\exefile\shell\open\command 值變更 (如 Sysinternals Autoruns、Windows Defender)。
  • 啟用 AppLocker / SRP 限制未簽名可執行檔執行。
  • 定期檢查登錄啟動項與檔案關聯異常。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved