apoer 发表于 2009-10-29 14:36:17

delphi用hook实现dll注入详解

caller.exeprocedure TestHook;
var pwnd,hChild, hwndInject :hwnd;
    msg:tmsg;
begin
   //通过窗口标题用FindWindow找到要注入的程序的主窗口句柄pwnd
   pwnd := findwindow(''Progman'',nil);
   //用FindwindowEx(hMain,0,nil,nil)找到要处理的子窗口句柄hChild
   hChild := findWindowEx(pwnd,0,nil,nil);
   //用getwindowThreadProcessid(hChild,nil)找到要注入的线程
   dwThreadID := getwindowThreadProcessid(hChild,nil);
   //调用 inject.dll的SetInjectHook方法
   SetInjectHook(dwThreadID);
   //等待消息返回
   getmessage(msg,0,0,0);
   //找到注入的窗口
   hwndInject:= findwindow(nil,''InjectForm'');
   //发送控制消息,将目标窗体的句柄作为wparam,控制参数以lparam传入
   sendMessage( hwndInject, wm_app,hChild,integer(true));
   //关闭注入的窗口
   sendMessage( hwndInject,wm_close,0,0);
   //等待窗口关闭
   sleep(500);
   //检查是否成功关闭
   assert(not iswindow( hwndInject));
   //去掉挂钩
   setDipsHook(0);
end; //下面说明 Inject.dll的SetInjectHook的具体操作
在全局定义以下变量**** Hidden Message *****

topzhp 发表于 2010-4-17 18:00:51

多谢楼主!!!!

topzhp 发表于 2010-4-17 18:01:42

楼主,能讲讲 exe部分,怎么与DLL部分通信吗?

admin 发表于 2010-4-26 14:45:36

回复 3# topzhp
应该可以用消息实现,EXE端发送消息,DLL端接收消息。

ayzl 发表于 2010-5-9 18:17:45

是实现了注入嘛?

mqcoo 发表于 2010-8-11 17:04:04

支持。。。。。学习{:3_59:}

hzjzq2000 发表于 2010-8-12 10:48:05

还不是很明白。再看下

hqlovegame 发表于 2011-8-9 18:00:05

学习注入...............
页: [1]
查看完整版本: delphi用hook实现dll注入详解