读书人

线程 第二次 WriteProcessMemory 是异

发布时间: 2012-05-20 16:03:12 作者: rapoo

线程 第二次 WriteProcessMemory 是错误 LastError提示仅完成部分的 ReadProcessMemoty 或 WriteProces
bool CAsmOperator::InjectCode( LPVOID lpFunc, LPVOID lpParam, DWORD dwParamSize ) const
{
//读取内存
LPVOIDnFuncAddr= VirtualAllocEx( m_hProc, NULL, ALLOC_MEM_SIZE, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE );
LPVOIDnParmAddr= VirtualAllocEx( m_hProc, NULL, ALLOC_MEM_SIZE, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE );
if ( NULL == nFuncAddr )
{
MessageBox( NULL, _T("VirtualAllocEx Error"), NULL, MB_OK );
return false;
}


//写入内存
BOOL bResultWriteParam= WriteProcessMemory( m_hProc, nParmAddr, lpParam, ALLOC_MEM_SIZE, NULL );
BOOL bResultWriteFunc= WriteProcessMemory( m_hProc, nFuncAddr, lpFunc, ALLOC_MEM_SIZE, NULL);
int nError = GetLastError();//仅完成部分的 ReadProcessMemoty 或 WriteProcessMemory 请求

上面的代码,我是存在一个对象里面的,其中,我开了一个线程调用它,在 WriteProcessMemory第二次的时候,失败,调换了两个的顺序,还是第二个失败了。如果不用线程,直接调用,又没问题,请问是哪里错了呢?

[解决办法]
LPVOID nParmAddr = VirtualAllocEx... 分配的 Size 不对

读书人网 >C++

热点推荐