首先我们先看一下安装HOOK 的函数: HHOOK SetWindowsHookEx( int idHook,//要安装的HOOK 的类型 HOOKPROC lpfn, //HOOK 的回调函数 HINSTANCE hMod,//进程 DWORD dwThreadId //程序的线程,如果为0 则是全局HOOK ); 熟悉了SetWindowsHookEx 函数,我们就能开始我们的工作,挂钩进程
首先打开Delphi,创建一个 DLL 工程(DLL Wizard)
然后创建一个新的单元(Unit1)
首先在单元的 interface 下面声明要用到的函数
var OldHook:HHOOK; Histance:HISTANCE; OldProc:FARPROC; 我们的第一个函数是安装HOOK,让我们看一下代码: Function SetHook:Boolean;stdcall; begin OldHook:=SetWindowsHookEx(WH_KEYBOARD,@HookProc,Histance,0); if (OldHook=0) then exit else Result:=True; end; 这样的话就安装一个全局的键盘 HOOK,HOOK 的方法还有很多,在此就不一一列举了
下面介绍一下回调函数: Function HookProc(nCode,wParam,lParam:Integer);Integer;stdcall; begin Result:=CallNextHookEx(OldHook,nCode,wParam,lParam); end; 这样的话就完成了对进程的挂钩
可是挂上钩我们的工作并没结束,相反,我们的工 作才刚刚开始
钩子的作用是帮我们把 DLL 注入到别人的进程空间
现在我们的DLL 已 经在别人的进程空间内
所以,我们就可以