別のプロセスにスレッドを挿入しようとしています。これにより、プロセスは外部 dll をロードできます。
これが私がインターネットで見つけたコードで、動作します。
HANDLE hThread = CreateRemoteThread (hProcess, NULL, 0,
(LPTHREAD_START_ROUTINE) GetProcAddress(
GetModuleHandle(L"kernel32"), "LoadLibraryA"),
lpMemory, 0, NULL);
if (hThread == INVALID_HANDLE_VALUE)
{
return false;
}
しかし、私の理解では、によって返されるアドレスはGetProcAddress
、対象のプロセスではなく、現在のプロセスのメモリ空間に存在します。
では、なぜ機能するのでしょうか。
Windows 7 でテスト済み