以下のコードでは、CreateRemoteThread によって作成された LoadLibrayA からの結果を読みたいと思います。
無理そうなので助かりますが、
多分結果は読むのに間に合うように無料です、どんな提案も喜んで受け取ります
procedure InjectDLL(hProcess : Cardinal; ADllPath : String);
var
lSize : Cardinal;
hThread : Cardinal;
szLibPath : array [0..MAX_PATH] of char;
pLibRemote : Pointer;
hLibModule : DWORD ;
hKernel32 : HMODULE;
begin
hKernel32 := GetModuleHandle('Kernel32.dll');
FillMemory(@szLibPath, sizeOf(szLibPath), 0);
CopyMemory(@szLibPath, Pointer(ADllPath), length(ADllPath));
pLibRemote :=
VirtualAllocEx(
hProcess,
nil,
sizeOf(szLibPath),
MEM_COMMIT,
PAGE_READWRITE
);
try
WriteProcessMemory(
hProcess,
pLibRemote,
@szLibPath,
sizeOf(szLibPath),
lSize
);
hThread :=
CreateRemoteThread(
hProcess,
nil,
0,
GetProcAddress(hKernel32, 'LoadLibraryA'),
pLibRemote,
0,
lSize
);
try
WaitForSingleObject(hThread, INFINITE);
//------------> HERE I WANT TO READ LoadLibraryA RESULT
GetExitCodeThread(hThread, hLibModule);
finally
// Clean up
CloseHandle(hThread);
end;
finally
VirtualFreeEx(hProcess, pLibRemote, sizeof(szLibPath), MEM_RELEASE);
end;