void CSdfDlg::OnButton2()
{
// TODO: Add your control notification handler code here
HWND hwnd;
hwnd=::FindWindow(NULL,WndName);
DWORD pid;
::GetWindowThreadProcessId(hwnd,&pid);
HANDLE Process;
Process=::OpenProcess(PROCESS_ALL_ACCESS,false,pid);
int sum;
TCHAR buf[10];
::ReadProcessMemory(Process,(LPCVOID)(0x006a9ec0),&sum,4,0);
::ReadProcessMemory(Process,(LPCVOID)(sum+0x82c),&sum,4,0);
::ReadProcessMemory(Process,(LPCVOID)(sum+0x28),&sum,4,0);
_itoa(sum,buf,10);
::SetWindowText(m_edit2_hwnd,buf);
}
上面的ReadProcessMemory能读出来,但是WriteProcessMemory错误????
还有为什么我这样写入不行,连接的程序直接退出了?
void CSdfDlg::OnButton3()
{
// TODO: Add your control notification handler code here
HWND hwnd;
hwnd=::FindWindow(NULL,WndName);
DWORD pid;
::GetWindowThreadProcessId(hwnd,&pid);
HANDLE Process;
Process=::OpenProcess(PROCESS_ALL_ACCESS,false,pid);
int sum=3000;
::WriteProcessMemory(Process,(LPVOID)(0x006a9ec0),&sum,4,0);
::WriteProcessMemory(Process,(LPVOID)(sum+0x82c),&sum,4,0);
::WriteProcessMemory(Process,(LPVOID)(sum+0x28),&sum,4,0);
}
{
// TODO: Add your control notification handler code here
HWND hwnd;
hwnd=::FindWindow(NULL,WndName);
DWORD pid;
::GetWindowThreadProcessId(hwnd,&pid);
HANDLE Process;
Process=::OpenProcess(PROCESS_ALL_ACCESS,false,pid);
int sum;
TCHAR buf[10];
::ReadProcessMemory(Process,(LPCVOID)(0x006a9ec0),&sum,4,0);
::ReadProcessMemory(Process,(LPCVOID)(sum+0x82c),&sum,4,0);
::ReadProcessMemory(Process,(LPCVOID)(sum+0x28),&sum,4,0);
_itoa(sum,buf,10);
::SetWindowText(m_edit2_hwnd,buf);
}
上面的ReadProcessMemory能读出来,但是WriteProcessMemory错误????
还有为什么我这样写入不行,连接的程序直接退出了?
void CSdfDlg::OnButton3()
{
// TODO: Add your control notification handler code here
HWND hwnd;
hwnd=::FindWindow(NULL,WndName);
DWORD pid;
::GetWindowThreadProcessId(hwnd,&pid);
HANDLE Process;
Process=::OpenProcess(PROCESS_ALL_ACCESS,false,pid);
int sum=3000;
::WriteProcessMemory(Process,(LPVOID)(0x006a9ec0),&sum,4,0);
::WriteProcessMemory(Process,(LPVOID)(sum+0x82c),&sum,4,0);
::WriteProcessMemory(Process,(LPVOID)(sum+0x28),&sum,4,0);
}
关键是你写入的地址,这个很重要,有些地址是不能写的,会出错,完了你在拿GetLastError查查错误。
Process=::OpenProcess(PROCESS_ALL_ACCESS,false,pid);
int sum;
TCHAR buf[10];
::ReadProcessMemory(Process,(LPCVOID)(0x006a9ec0),&sum,4,0);
::ReadProcessMemory(Process,(LPCVOID)(sum+0x82c),&sum,4,0);
::ReadProcessMemory(Process,(LPCVOID)(sum+0x28),&sum,4,0);
_itoa(sum,buf,10);
::SetWindowText(m_edit2_hwnd,buf);
是能读出来的,但是写入就是不行,网上查的那些都是答非所问
你这句就有问题啊,我晕,sum+0x82c啥意思,sum你只声明了就没定义,sum是一个随机数再加上0x82c你说等于啥,对不,你再看看。
::ReadProcessMemory(Process,(LPCVOID)(sum+0x28),&sum,4,0);
而且sum是int类型
int sum;
TCHAR buf[10];
::ReadProcessMemory(Process,(LPCVOID)(0x006a9ec0),&sum,4,0);
::ReadProcessMemory(Process,(LPCVOID)(sum+0x82c),&sum,4,0);
::ReadProcessMemory(Process,(LPCVOID)(sum+0x28),&sum,4,0);
_itoa(sum,buf,10);
::SetWindowText(m_edit2_hwnd,buf);
这个是对的,能读出阳光的数值.........
这句是把sum的值加上0x82c
你在写的时候是不是地址顺序不对,应该是这样
::WriteProcessMemory(Process,(LPVOID)(sum+0x28),&sum,4,0);
::WriteProcessMemory(Process,(LPVOID)(sum+0x82c),&sum,4,0);
::WriteProcessMemory(Process,(LPVOID)(0x006a9ec0),&sum,4,0);
你读和写的顺序应该是相反的