如题,调用的是这篇文章的代码:
http://blog.csdn.net/hyy829903/article/details/12272717
void InjectCode(DWORD dwProcId, LPVOID mFunc, LPVOID Param, DWORD ParamSize)
{
HANDLE hProcess;//远程句柄
LPVOID mFuncAddr;//申请函数内存地址
LPVOID ParamAddr;//申请参数内存地址
HANDLE hThread; //线程句柄
DWORD NumberOfByte; //辅助返回值
CString str;
//打开被注入的进程句柄
hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcId);
//申请内存
mFuncAddr = VirtualAllocEx(hProcess, NULL, 128, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
ParamAddr = VirtualAllocEx(hProcess, NULL, ParamSize, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
//写内存
WriteProcessMemory(hProcess, mFuncAddr, mFunc, 128, &NumberOfByte);
WriteProcessMemory(hProcess, ParamAddr, Param, ParamSize, &NumberOfByte);
//创建远程线程
hThread = CreateRemoteThread(hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)mFuncAddr,ParamAddr, 0, &NumberOfByte);
WaitForSingleObject(hThread, INFINITE); //等待线程结束
//释放申请有内存
VirtualFreeEx(hProcess, mFuncAddr, 128, MEM_RELEASE);
VirtualFreeEx(hProcess, ParamAddr, ParamSize, MEM_RELEASE);
//释放远程句柄
CloseHandle(hThread);
CloseHandle(hProcess);
}
但是,为什么还是会这样??
难道远程线程函数 有问题??求大神解答!!!!