PTHREAD_START_ROUTINE pfn = (PTHREAD_START_ROUTINE)GetProcAddress
(GetModuleHandle(TEXT("Kernel32")), "LoadLibraryA");
strcpy(buf, "..\\DLLTest\\Debug\\DLLTest.dll");
void* p = VirtualAllocEx(hProcess, NULL, 256,
MEM_COMMIT, PAGE_READWRITE); if (p == NULL)
{
return;
} if(!WriteProcessMemory(hProcess, buf, p, strlen(buf) + 1, NULL))
{
cout<<GetLastError();
return;
}
HANDLE hThread = CreateRemoteThread(hProcess, NULL, 0, pfn, p, 0, NULL); WaitForSingleObject(hThread, INFINITE); cout<<"insert success"<<endl;
为什么写入的时候总是返回错误 是不是进程权限问题,我获取句柄是用的
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID);
__in HANDLE hProcess,
__in LPVOID lpBaseAddress,
__in LPCVOID lpBuffer,
__in SIZE_T nSize,
__out SIZE_T *lpNumberOfBytesWritten
);
你参数位置不对WriteProcessMemory(hProcess, p,buf, strlen(buf) + 1, NULL)
你的参数反了,第二个应该是地址,后面是缓冲数据,后面是长度