亚洲日本免费-啊轻点灬太粗太长了三男一女-麻豆av电影在线观看-日韩一级片毛片|www.grbbt.com

實現簡單的ring3進程保護、hook OpenProcess函數、簡單分析

  簡單的HOOK OpenProcess函數、達到不讓任務管理器使用OpenProcess來獲取我們要保護的進程的句柄、

  從而達到使任務管理器使用TerminateProcess無法結束該進程的目的、、、

  當我們HOOK到OpenProcess的時候、我們要在自己的MyOpenProcess中、判斷一下、所打開的進程是否為我們要保護的進程、如果是簡單的返回錯誤碼0、如果不是就在我們的MyOpenProcess中調用真正的OpenProcess、

  判斷的時候是這樣的、、

  先通過我們進程窗口的名字得到窗口的句柄 涉及API  FindWindow

  再通過我們窗口的句柄得到創建窗口的進程ID、涉及API  GetWindowThreadProcessId

  這里獲得的ID是我們要保護進程的真實ID而任務管理器獲得ID即是第三個參數、

  所以有下邊的代碼、、、

  //獲取 要保護進程的標題 的窗口句柄系統API函數前使用::為了和類擴展函數區別

  //為了代碼的健壯性使用TEXT宏、 HWND窗口句柄、

  HANDLE WINAPI MyOpenProcess(DWORD dwDesiredAccess,BOOL bInheritHandle,DWORD dwProcessId)

  {

  HWND HProtect = ::FindWindow(NULL,TEXT("Windows當前所有進程"));

  if(!HProtect)

  {

  return ( pRealOpenProcess(dwDesiredAccess,bInheritHandle,dwProcessId) );

  }    //若不存在則調用返回

  //獲取創建此窗口的進程的ID、保存在 &ProtectId 地址中、

  DWORD  ProtectId; //下邊找出某個窗口的創建者(線程或進程)

  GetWindowThreadProcessId(HProtect,&ProtectId);

  if(ProtectId == dwProcessId)//dwProcessId是任務管理器要結束的進程ID

  {

  return 0;//如果結束的是我們的進程則返回錯誤碼0、

  }

  return ( pRealOpenProcess(dwDesiredAccess,bInheritHandle,dwProcessId) );

  }

  這樣就可以了

  其中HOOK技術使用的是IAT HOOK 前邊已經寫過這樣的代碼了、

  DLL注入也是用的之前寫過的一個簡單的遠程線程注入技術、

  演示、

  打開任務管理器、使用DLL注入工具向其注入這個有著簡單保護進程功能的DLL、

  然后再用任務管理器結束我們在DLL里邊保護的進程、此時沒有反映、進程沒有被結束、、

  為什么不彈個框呢、、

  因為任務管理器好像在會一直調用OpenProcess、如果使用MessageBox函數的話、會一直彈、效果當然很不好了、、

  如果想要彈框可以去HOOK一下TerminateProcess函數、在TerminateProcess里邊實現、、

 

上一篇:安卓防火墻 PS DroidWall

下一篇:inline HOOK 一例程 -- inline LoadLibrary