我这里有一个实例,,,里面的大部分语句都知道有什么用,,但是有点不懂作者的思路
下面是实例的下载地址
http://ccm2020.vxv.cn/11824.rar我的理解是这样的,,先从进程中找到explorer.exe这个进程,
再用内存映射,写入信息
但是后面的
//挂DLL跳板钩子
GetMsgHookOn;
//线程消息循环(1.线程不立即结束,使得跳板钩子持续有效; 2.等待插入Explorer的新线程发来WM_QUIT)
While GetMessage(ThreadMessage, 0, 0, 0) do;
//脱DLL跳板钩子
GetMsgHookOff;
调用dll钩子不知道是怎么回事,,,
/////////////////////////////////////////
下面是钩子的内容
if (TheNodeP<>nil)and(TheNodeP^.ExplorerID<>0)and
(GetCurrentProcessId=TheNodeP^.ExplorerID)then //是资源管理器进程
begin
LibraryH := LoadLibrary(Pchar(TheNodeP^.MainPath+'Insert.dll')); //装载动态链接库
if (LibraryH <> 0) then
ThreadPt := GetProcAddress(LibraryH, 'ThreadPro'); //定位线程函数
if (ThreadPt <> nil) then
CreateThread(nil, 0, ThreadPt, nil, 0, ThreadID); //创建新线程
end;
Result:= CallNextHookEx(GetMsgHook, nCode, wParam, lParam);
////////////////////////////////////在上面的代码中用createthread函数创建线程是在哪个进程中创建的啊??
上面的代码是在Start.exe中运行的,,createthread应该是在start.exe这个进程中创建线程(我是这样理解的)
但是如果在start.exe中创建线程就不能在explorer.exe中插入线程了啊,,不明白,,应该是在explorer.exe中创建线程,但是不知道是怎么使钩子的内容在explorer.exe中运行的,,就大家帮帮忙啊,,
也许是我不知道这个钩子的作用
下面是实例的下载地址
http://ccm2020.vxv.cn/11824.rar我的理解是这样的,,先从进程中找到explorer.exe这个进程,
再用内存映射,写入信息
但是后面的
//挂DLL跳板钩子
GetMsgHookOn;
//线程消息循环(1.线程不立即结束,使得跳板钩子持续有效; 2.等待插入Explorer的新线程发来WM_QUIT)
While GetMessage(ThreadMessage, 0, 0, 0) do;
//脱DLL跳板钩子
GetMsgHookOff;
调用dll钩子不知道是怎么回事,,,
/////////////////////////////////////////
下面是钩子的内容
if (TheNodeP<>nil)and(TheNodeP^.ExplorerID<>0)and
(GetCurrentProcessId=TheNodeP^.ExplorerID)then //是资源管理器进程
begin
LibraryH := LoadLibrary(Pchar(TheNodeP^.MainPath+'Insert.dll')); //装载动态链接库
if (LibraryH <> 0) then
ThreadPt := GetProcAddress(LibraryH, 'ThreadPro'); //定位线程函数
if (ThreadPt <> nil) then
CreateThread(nil, 0, ThreadPt, nil, 0, ThreadID); //创建新线程
end;
Result:= CallNextHookEx(GetMsgHook, nCode, wParam, lParam);
////////////////////////////////////在上面的代码中用createthread函数创建线程是在哪个进程中创建的啊??
上面的代码是在Start.exe中运行的,,createthread应该是在start.exe这个进程中创建线程(我是这样理解的)
但是如果在start.exe中创建线程就不能在explorer.exe中插入线程了啊,,不明白,,应该是在explorer.exe中创建线程,但是不知道是怎么使钩子的内容在explorer.exe中运行的,,就大家帮帮忙啊,,
也许是我不知道这个钩子的作用
这个可以在其他进程内插入你的线程
explorer处理消息的时候,会触发这个钩子,然后钩子在explorer内新建一个线程,然后发消息给start,关闭start
线程经过2级创建 即使最开始的进程退出
它仍然会在寄主的进程内运行
因为他没按照你设想的情形进行?
看问题客观一点,别自己想当然,乱加评论~~~~~
你自己去其他地方搜搜吧