有程序A和程序B以及DLL文件C程序A Hook注入到程序B
hwd:=strtoint(程序B的hwnd);
dwThreadId:=GetWindowThreadProcessId(hwd,@PID );
HookOn(dwthreadid); //此处执行完毕后,程序A以及程序B内都有DLL文件C了procedure HookOn(dwThreadId:Dword) stdcall;
begin
Assert(MessageHook=0);
MessageHook:=SetWindowsHookEx(WH_GetMessage, GetMsgProc, HInstance,dwThreadId );
hook[0] := THookClass.Create(True ,@ReadProcessMemory,@NewReadProcessMemory); //Hook此api
end;在THookClass.Create中使用以下命令获得目标程序B的修改权限 //但是GetCurrentProcessId一直都是获得程序A的进程,没有程序B的
hProcess := OpenProcess(PROCESS_ALL_ACCESS,FALSE,GetCurrentProcessId);全部执行完毕后,没有拦截到程序B的任何信息,程序A的倒是给拦下来了
HookOn给的是程序B的进程,但是怎么就全跑去拦截程序A了。。我弄了一天了还没搞清楚只好向高手求救了
hwd:=strtoint(程序B的hwnd);
dwThreadId:=GetWindowThreadProcessId(hwd,@PID );
HookOn(dwthreadid); //此处执行完毕后,程序A以及程序B内都有DLL文件C了procedure HookOn(dwThreadId:Dword) stdcall;
begin
Assert(MessageHook=0);
MessageHook:=SetWindowsHookEx(WH_GetMessage, GetMsgProc, HInstance,dwThreadId );
hook[0] := THookClass.Create(True ,@ReadProcessMemory,@NewReadProcessMemory); //Hook此api
end;在THookClass.Create中使用以下命令获得目标程序B的修改权限 //但是GetCurrentProcessId一直都是获得程序A的进程,没有程序B的
hProcess := OpenProcess(PROCESS_ALL_ACCESS,FALSE,GetCurrentProcessId);全部执行完毕后,没有拦截到程序B的任何信息,程序A的倒是给拦下来了
HookOn给的是程序B的进程,但是怎么就全跑去拦截程序A了。。我弄了一天了还没搞清楚只好向高手求救了
要放到GetMsgProc中,才能在其他进程空间执行
你想想就知道,程序B凭什么调用HookOn?B不调用HookOn,凭什么得到B的ProcessId