请问各位高手,已经知道进程的所有模块,想将其中某个模块从进程中移除出去,应该怎样做? 知道的请给出点提示和方法。谢过!

解决方案 »

  1.   


    function FreeRemoteLibrary(PID:Thandle;hRemoteLibrary:HMODULE):integer;
    var
        dwRemoteThreadId:DWORD ;
        hRemoteThread:Thandle;
        nRet:Cardinal;
        hNewHandle:Thandle;
        pfnStartAddr: TFNThreadStartRoutine;
    begin
        hNewHandle := OpenProcess(PROCESS_ALL_ACCESS, False, PID);
        pfnStartAddr := GetProcAddress(GetModuleHandle('kernel32.dll'), 'FreeLibrary');
        hRemoteThread:=CreateRemoteThread(hNewHandle,nil,0,pfnStartAddr,Pointer(hRemoteLibrary),0,hRemoteThread);
        WaitForSingleObject(hRemoteThread,INFINITE);
        GetExitCodeThread(hRemoteThread,nRet);
        result:=(nRet);
     end;