一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

防范Windows消息鉤子的侵入

 夢中家園 2013-07-19

Windows消息鉤子一般都很熟悉了。它的用處很多,耳熟能詳?shù)木陀小?A class=keyword_link target=_blank>鍵盤鉤子獲取目標(biāo)進程的鍵盤輸入,從而獲得各類密碼以達到不可告人的目的。朋友想讓他的軟件不被別人的全局鉤子監(jiān)視,有沒有辦法實現(xiàn)呢?答案是肯定的,不過缺陷也是有的。

  首先簡單看看全局鉤子如何注入別的進程。

  消息鉤子是由Win32子系統(tǒng)提供,其核心部分通過NtUserSetWindowsHookEx為用戶提供了設(shè)置消息鉤子的系統(tǒng)服務(wù),用戶通過它注冊全局鉤子。當(dāng)系統(tǒng)獲取某些事件,比如用戶按鍵,鍵盤driver將掃描碼等傳入win32k的KeyEvent處理函數(shù),處理函數(shù)判斷有無相應(yīng)hook,有則callhook。此時,系統(tǒng)取得Hook對象信息,若目標(biāo)進程沒有裝載對應(yīng)的Dll,則裝載之(利用KeUserModeCallback“調(diào)用”用戶例程,它與Apc調(diào)用不同,它是仿制中斷返回環(huán)境,其調(diào)用是“立即”性質(zhì)的)。

  進入用戶態(tài)的KiUserCallbackDispatcher后,KiUserCallbackDispatcher根據(jù)傳遞的數(shù)據(jù)獲取所需調(diào)用的函數(shù)、參數(shù)等,隨后調(diào)用。針對上面的例子,為裝載hook dll,得到調(diào)用的是LoadLibraryExW,隨后進入LdrLoadDll,裝載完畢后返回,后面的步驟就不敘述了。

  從上面的討論我們可以得出一個最簡單的防侵入方案:在加載hook dll之前hook相應(yīng)api使得加載失敗,不過有一個缺陷:系統(tǒng)并不會因為一次的失敗而放棄,每次有消息產(chǎn)生欲call hook時系統(tǒng)都會試圖在你的進程加載dll,這對于性能有些微影響,不過應(yīng)該感覺不到。剩下一個問題就是不是所有的LoadLibraryExW都應(yīng)攔截,這個容易解決,比如判斷返回地址。下面給出一個例子片斷,可以添加一些判斷使得某些允許加載的hook dll被加載。

  這里hook api使用了微軟的detours庫,可自行修改。   

  以下內(nèi)容為程序代碼:   

  typedef HMODULE (__stdcall *LOADLIB)(

  LPCWSTR lpwLibFileName,

  HANDLE hFile,

  DWORD dwFlags);
  

  extern "C" {

  DETOUR_TRAMPOLINE(HMODULE __stdcall Real_LoadLibraryExW(

  LPCWSTR lpwLibFileName,

  HANDLE hFile,

  DWORD dwFlags),

  LoadLibraryExW);

  }
  

  ULONG user32 = 0;
  

  HMODULE __stdcall Mine_LoadLibraryExW(

  LPCWSTR lpwLibFileName,

  HANDLE hFile,

  DWORD dwFlags)

  {

  ULONG addr;
  

  _asm mov eax, [ebp+4]

  _asm mov addr, eax

  

  if ((user32 & 0xFFFF0000) == (addr & 0xFFFF0000))

  {

  return 0;

  }
  

  HMODULE res = (LOADLIB(Real_LoadLibraryExW)) (

  lpwLibFileName,

  hFile,

  dwFlags);
  

  return res;

  }
  

  BOOL ProcessAttach()

  {

  DetourFunctionWithTrampoline((PBYTE)Real_LoadLibraryExW,

  (PBYTE)Mine_LoadLibraryExW);

  return TRUE;

  }

  
  BOOL ProcessDetach()

  {

  DetourRemove((PBYTE)Real_LoadLibraryExW,

  (PBYTE)Mine_LoadLibraryExW);

  return TRUE;

  }
  

  CAnti_HookApp::CAnti_HookApp() file://在使用用戶界面服務(wù)前調(diào)用ProcessAttach

  {

  user32 = (ULONG)GetModuleHandle("User32.dll");

  ProcessAttach();

  }

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    欧美日韩国内一区二区| 亚洲天堂精品一区二区| 欧美国产日产综合精品| 欧美小黄片在线一级观看 | 日韩欧美一区二区亚洲| 国产又粗又猛又黄又爽视频免费 | 午夜小视频成人免费看| 亚洲国产av国产av| 日韩一区中文免费视频| 少妇一区二区三区精品| 国产精品久久久久久久久久久痴汉| 午夜福利黄片免费观看| 午夜视频在线观看日韩| 亚洲黄片在线免费小视频| 一区二区福利在线视频| 亚洲av秘片一区二区三区| 久久re6热在线视频| 国产视频福利一区二区| 国产一区二区三区av在线| 日韩特级黄片免费在线观看| 欧美午夜一区二区福利视频| 日韩一区二区三区高清在| 亚洲欧洲一区二区中文字幕| 美国女大兵激情豪放视频播放| 欧美成人久久久免费播放| 人妻熟女欲求不满一区二区| 九九视频通过这里有精品| 91在线播放在线播放观看| 亚洲一区二区精品国产av| 91亚洲精品国产一区| 麻豆91成人国产在线观看| 91人妻人人精品人人爽| 日韩人妻一区二区欧美| 婷婷色香五月综合激激情| 日本东京热视频一区二区三区| 精品综合欧美一区二区三区| 沐浴偷拍一区二区视频| 欧美多人疯狂性战派对| 日韩精品中文字幕在线视频| 麻豆果冻传媒一二三区| 熟女体下毛荫荫黑森林自拍|