为什么WriteProcessMemory函数无法写内存
Gue 2007-05-15 07:49:13 char m_strMutexID[255];
strcpy(m_strMutexID, "asdfghjklkhj");
void CLoaderDlg::OnOK()
{
CWnd* button1 = GetDlgItem(IDOK);
CString strFileName;
strFileName = ".\\1.exe";
LPVOID lpBaseAddress= (LPVOID)/*4218972;*/0x40605C;
button1->EnableWindow(false);
m_strMutexID[9]++;
CString test = m_strMutexID;
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );
::GetStartupInfo(&si);
if (!::CreateProcess(strFileName, NULL, NULL, NULL, false, CREATE_SUSPENDED, NULL, NULL, &si, &pi))
MessageBox(ErrorExit("CreateProcess"));
else
{
int nIDSize = test.GetLength();
if (!::WriteProcessMemory(pi.hProcess, lpBaseAddress, test.GetBuffer(nIDSize), (DWORD)nIDSize, NULL))
MessageBox(ErrorExit("WriteProcessMemory"));
TRACE(ErrorExit("WriteProcessMemory"));
::ResumeThread(pi.hThread);
::CloseHandle(pi.hProcess);
}
button1->EnableWindow(true);
}
WriteProcessMemory函数总是返回:WriteProcessMemory failed with error 0: 操作成功完成。