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

VxD 技術原理與實時防毒核心技術 FileHooking 深度解析

     編輯:VC 教學

背景:從靜態掃毒到實時防護

傳統防毒屬「事後清除」,病毒已造成損害才發現。實時防毒需在 Ring 0(核心層) 攔截檔案 I/O,於病毒寫入磁碟前即攔截清除。Win9x 只有 VxD 能在 Ring 0 執行,故成為實時防毒核心技術。

VxD 技術特點

  • 虛擬裝置驅動程式:介於系統與硬體/軟體「裝置」間。
  • Ring 0 權限:可存取所有系統資源、呼叫底層服務。
  • 四種服務介面:PM API(16位保護模式)、V86 API、Win32 服務、VxD 服務(僅供 VxD 呼叫)。
  • 應用程式溝通管道:DeviceIoControl + 支援 IOCTL 的 VxD,完成 Win32 API 無法做的底層操作。

動態 VxD 生命週期與關鍵控制訊息

訊息代碼觸發時機處理重點
SYS_DYNAMIC_DEVICE_INIT1Bh動態載入初始化、建立資料結構、掛鉤
SYS_DYNAMIC_DEVICE_EXIT1Ch卸載清理資源、卸除鉤子
W32_DEVICEIOCONTROL23h應用程式呼叫 DeviceIoControl從 DIOCParams 取控制碼、雙向資料傳輸

控制程序骨架(組合語言):


BeginProc VXD_Control
    cmp eax, 1Bh
    jz  vxd_dynamic_init_handle
    cmp eax, 1Ch
    jz  vxd_dynamic_exit_handle
    cmp eax, 23h
    jnz exit_control_proc
    mov ecx, [esi+0Ch]  ; 取得控制碼
    ; 處理各控制碼...
EndProc VXD_Control

核心技術:FileHooking 實時攔截檔案 I/O

IFS 架構流程

  1. 應用程式呼叫 Win32 File API(CreateFile, ReadFile 等)。
  2. IFSMgr(可安裝檔案系統管理器)接收請求,完成參數封裝。
  3. 呼叫 FileSystemApiHookFunction(Hooker)轉交 FSD 前。
  4. FSD(檔案系統驅動)呼叫 IOS 完成實際磁碟存取。

掛鉤關鍵 API(由 IFSMgr VxD 提供)

  • IFSMgr_InstallSystemApiHook:安裝自訂 Hooker,回傳前一個 Hooker 位址(形成鏈)。
  • IFSMgr_RemoveSystemApiHook:卸除 Hooker。
  • IFSMgr_Ring0_FileIO:Ring 0 層級檔案/磁區讀寫。

Hooker 函數原型與關鍵參數


FileSystemApiHookFunction(
    pIFSFunc FSDFnAddr,    // 對應 FSD 服務函數位址
    int FunctionNum,       // FSD 功能號(對應具體 API)
    int Drive,             // 磁碟機代號(1=A, 2=B...)
    int ResourceFlags,     // 資源旗標
    int CodePage,          // 代碼頁(0=ANSI, 1=OEM)
    pioreq pir             // IOREQ 結構指標(含檔案路徑、緩衝區等)
);

攔截特定 API 只需在 Hooker 中判斷 FunctionNum,例如 IFS_FUNC_OPEN 對應 CreateFile。

Hooker 鏈機制

  • 多個 VxD 可各自安裝 Hooker,形成呼叫鏈。
  • 最後安裝者最先被呼叫。
  • 每個 Hooker 處理完必須呼叫前一個 Hooker,否則斷鏈導致系統不穩定。
  • 呼叫慣例:INT 20h + 雙字 VxD_ID << 16 | Service_Num(如 00400043h 為 IFSMgr_InstallSystemApiHook)。

病毒利用 VxD 的風險(CIH 案例)

CIH 病毒利用 VxD 技術駐留記憶體、感染 PE 檔、破壞硬碟與 BIOS。防毒軟體同樣使用此技術,屬「雙面刃」,需極度謹慎實作、嚴格簽章驗證。

總結

VxD + FileHooking 是 Win9x 實時防毒的核心基礎。雖現代 Windows 已轉向 WDM/KMDF 驅動模型與微濾波驅動,但其「核心層攔截、API 鉤子鏈」的設計思想仍具參考價值。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved