欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
防范Windows消息鉤子的侵入

Windows消息鉤子一般都很熟悉了。它的用處很多,耳熟能詳的就有——利用鍵盤(pán)鉤子獲取目標進(jìn)程的鍵盤(pán)輸入,從而獲得各類(lèi)密碼以達到不可告人的目的。朋友想讓他的軟件不被別人的全局鉤子監視,有沒(méi)有辦法實(shí)現呢?答案是肯定的,不過(guò)缺陷也是有的。

  首先簡(jiǎn)單看看全局鉤子如何注入別的進(jìn)程。

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

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

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

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

  以下內容為程序代碼:   

  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://在使用用戶(hù)界面服務(wù)前調用ProcessAttach

  {

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

  ProcessAttach();

  }

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
網(wǎng)絡(luò )游戲外掛編程原理(熱鍵,dll替換)
如何用鉤子函數截獲TextOut
API Hook 原理
Win2K下的Api函數的攔截
DLL注入之全局鉤子注入
在Excel Vba中使用API函數playSound播放聲音
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久