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

Word 文檔防拖放外洩插件:API Hook 與 COM 介面雙重防護實戰

     編輯:關於VC++

針對利用 Office 自動化介面竊取 Word 內容的惡意代碼,作者開發一款 Word 加載項:Hook DoDragDrop 並進一步 Hook IDropSource::QueryContinueDrag,在拖放操作離開文檔視窗瞬間取消操作,不影響文檔內部拖放體驗。

核心思路

  1. ATL 實現 _IDTExtensibility2 加載項框架
  2. OnConnection 中 Hook DoDragDrop (用戶模式 API Hook)
  3. DoDragDrop 觸發時:記錄當前文檔視窗句柄,Hook 第二參數 pDropSource 的虛函數 QueryContinueDrag
  4. QueryContinueDrag 回調中:GetCursorPos+WindowFromPoint 獲取滑鼠下視窗,非文檔視窗則返回 DRAGDROP_S_CANCEL 取消拖放並彈警告
  5. 否則調用原 QueryContinueDrag 讓正常流程繼續

關鍵技術點

  • DoDragDrop 參數 pDropSource 的 QueryContinueDrag 是服務端取消拖放的回調,全程跟蹤滑鼠狀態
  • Hook 虛函數需修改虛函數表指針,注意恢復原函數指針避免崩潰
  • GetCursorPos/WindowFromPoint 輕量級獲取滑鼠下視窗
  • 註冊加載項需寫入註冊表 HKEY_CURRENT_USER\Software\Microsoft\Office\Word\Addins

工程化考量

「好的保護軟體應在客戶無感知情況下提供保護」——不阻斷內部拖放,僅攔截跨視窗拖放。完整源碼含 Hook 佈防/撤防、虛表修改、註冊表自註冊邏輯,可作為 Office 安全加載項開發參考。

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