首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Windows 文件刪除 API Hook 目標:NtSetFileInformation

     編輯:程式設計疑難解答

嘗試 Hook DeleteFile 發現不生效,因為 Windows 內部刪除文件最終調用的是**未公開的內核 API**。

核心 API

NTSTATUS NtSetFileInformation(
    HANDLE FileHandle,
    FILE_INFORMATION_CLASS FileInformationClass, // FileDispositionInformation
    PVOID FileInformation,
    ULONG FileInformationLength
);
  • FileInformationClass = FileDispositionInformation (0x0D)。
  • FileInformation 指向 FILE_DISPOSITION_INFORMATION 結構,DeleteFile = TRUE 表示刪除。
  • 所有用戶態刪除操作(DeleteFile、SHFileOperation、CMD del、資源管理器刪除)最終都會調用此函數。

Hook 建議

  1. 在用戶態 Hook ntdll.dll!NtSetFileInformation(需處理 x86/x64、Wow64)。
  2. 或編寫**內核態微濾波器驅動**(File System Minifilter),在 IRP_MJ_SET_INFORMATION / FileDispositionInformation 回調中攔截,更穩定、權限更高。
  3. 參考開源項目:phnt 獲取結構定義。

注意:Hook 系統 API 屬高風險操作,需簽名驅動、測試充分,否則導致系統不穩定。

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