快哭啦~ CreateRemoteThread x64位的远程线程老是把目标进程给干掉啦
jota 2015-03-21 10:21:44 我想用远程线程注入的方式目标进程中注入CloseHandle()函数,win32正常执行,x64位目标进程的exe会异常退出,怎么办?
DWORD CloseRemoteHandle( LPCTSTR lpProcessName, DWORD processID, HANDLE handle )
{
DWORD dwThreadSize = 0x1000;
RemoteParam remoteData;
ZeroMemory(&remoteData, sizeof(RemoteParam));
HINSTANCE kernel32 = LoadLibrary(L"Kernel32.dll");
remoteData.pCloseHandle = (DWORD)GetProcAddress(kernel32, "CloseHandle");
remoteData.handle = handle;
HANDLE hProcess = OpenProcess( PROCESS_ALL_ACCESS, FALSE, processID );
void* pRemoteThread = VirtualAllocEx(hProcess, 0, dwThreadSize, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
WriteProcessMemory(hProcess, pRemoteThread, &threadProc, dwThreadSize, 0);
RemoteParam* pRemoteParam = (RemoteParam*)VirtualAllocEx( hProcess , 0, sizeof(RemoteParam), MEM_COMMIT, PAGE_READWRITE);
WriteProcessMemory(hProcess, pRemoteParam, &remoteData, sizeof(remoteData), 0);
HANDLE hRemoteThread = CreateRemoteThread(
hProcess,
NULL,
0,
(DWORD (__stdcall *)(void *))pRemoteThread,
pRemoteParam,
0,
0);
::WaitForSingleObject(hRemoteThread, INFINITE);
CloseHandle(hRemoteThread);
return TRUE;
}