压在透明的玻璃上c-国产精品国产一级A片精品免费-国产精品视频网-成人黄网站18秘 免费看|www.tcsft.com

實(shí)現(xiàn)簡(jiǎn)單的ring3進(jìn)程保護(hù)、hook OpenProcess函數(shù)、簡(jiǎn)單分析

  簡(jiǎn)單的HOOK OpenProcess函數(shù)、達(dá)到不讓任務(wù)管理器使用OpenProcess來獲取我們要保護(hù)的進(jìn)程的句柄、

  從而達(dá)到使任務(wù)管理器使用TerminateProcess無法結(jié)束該進(jìn)程的目的、、、

  當(dāng)我們HOOK到OpenProcess的時(shí)候、我們要在自己的MyOpenProcess中、判斷一下、所打開的進(jìn)程是否為我們要保護(hù)的進(jìn)程、如果是簡(jiǎn)單的返回錯(cuò)誤碼0、如果不是就在我們的MyOpenProcess中調(diào)用真正的OpenProcess、

  判斷的時(shí)候是這樣的、、

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

  再通過我們窗口的句柄得到創(chuàng)建窗口的進(jìn)程ID、涉及API  GetWindowThreadProcessId

  這里獲得的ID是我們要保護(hù)進(jìn)程的真實(shí)ID而任務(wù)管理器獲得ID即是第三個(gè)參數(shù)、

  所以有下邊的代碼、、、

  //獲取 要保護(hù)進(jìn)程的標(biāo)題 的窗口句柄系統(tǒng)API函數(shù)前使用::為了和類擴(kuò)展函數(shù)區(qū)別

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

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

  {

  HWND HProtect = ::FindWindow(NULL,TEXT("Windows當(dāng)前所有進(jìn)程"));

  if(!HProtect)

  {

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

  }    //若不存在則調(diào)用返回

  //獲取創(chuàng)建此窗口的進(jìn)程的ID、保存在 &ProtectId 地址中、

  DWORD  ProtectId; //下邊找出某個(gè)窗口的創(chuàng)建者(線程或進(jìn)程)

  GetWindowThreadProcessId(HProtect,&ProtectId);

  if(ProtectId == dwProcessId)//dwProcessId是任務(wù)管理器要結(jié)束的進(jìn)程ID

  {

  return 0;//如果結(jié)束的是我們的進(jìn)程則返回錯(cuò)誤碼0、

  }

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

  }

  這樣就可以了

  其中HOOK技術(shù)使用的是IAT HOOK 前邊已經(jīng)寫過這樣的代碼了、

  DLL注入也是用的之前寫過的一個(gè)簡(jiǎn)單的遠(yuǎn)程線程注入技術(shù)、

  演示、

  打開任務(wù)管理器、使用DLL注入工具向其注入這個(gè)有著簡(jiǎn)單保護(hù)進(jìn)程功能的DLL、

  然后再用任務(wù)管理器結(jié)束我們?cè)贒LL里邊保護(hù)的進(jìn)程、此時(shí)沒有反映、進(jìn)程沒有被結(jié)束、、

  為什么不彈個(gè)框呢、、

  因?yàn)槿蝿?wù)管理器好像在會(huì)一直調(diào)用OpenProcess、如果使用MessageBox函數(shù)的話、會(huì)一直彈、效果當(dāng)然很不好了、、

  如果想要彈框可以去HOOK一下TerminateProcess函數(shù)、在TerminateProcess里邊實(shí)現(xiàn)、、

 

上一篇:安卓防火墻 PS DroidWall

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