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 ***** 多谢楼主!!!! 楼主,能讲讲 exe部分,怎么与DLL部分通信吗? 回复 3# topzhp
应该可以用消息实现,EXE端发送消息,DLL端接收消息。 是实现了注入嘛? 支持。。。。。学习{:3_59:} 还不是很明白。再看下 学习注入...............
页:
[1]