S
sy0116
Unregistered / Unconfirmed
GUEST, unregistred user!
我想用三级跳来隐藏进程,写了一个EXE来调用Jump.dll再用jump.dll来调用Project1.dll,EXE得到Explorer.exe的PID并且将其传到Jump.dll的Load过程,load是这样写的:<br>=======================================================================================<br>procedure Load(ExpID:THandle);stdcall;export;<br>begin<br> ExpHook:=SetWindowsHookEx(WH_GETMESSAGE,@LoadP,HInstance,ExpID);<br> if GetCurrentThreadId=ExpID then<br> MessageBox(0,'dd',pChar(IntToStr(ExpID)),0);<br>end;<br>=======================================================================================<br><br>LoadP是这样写的:<br>=======================================================================================<br>type<br> Hook=function:Boolean;stdcall;<br><br>function LoadP(ncode,wparam,lparam:Integer):Integer;stdcall;<br>var<br> Phd:THandle;<br> Shook:Hook;<br> PidWORD;<br>begin<br> Phd:=LoadLibrary('Project1.dll');<br> Shook:=GetProcAddress(Phd,'SetHook');<br> CreateThread(nil, 0, @SHook, nil, 0,Pid);<br> Result:= CallNextHookEx(ExpHook,ncode,wparam,lparam);<br>end;<br>=====================================================================================<br>程序运行后通过第一次跳出的对话框得知PID是正确的,但是,随后就不断地跳出系统错误提示:Explorer.exe错误之类的东西,直到EXE退出。<br>请问这是为什么?应该如何解决?