void CZhensanDlg::OnButton1()
{
// TODO: Add your control notification handler code here
HANDLE processH=::OpenProcess(PROCESS_ALL_ACCESS,false,2772);
//读指定进程 内存数据
DWORD byread;
LPCVOID pbase=(LPCVOID)0x0E6C02FC;
LPVOID nbuffer=(LPVOID)&m_hp;
::ReadProcessMemory(processH,pbase,nbuffer,4,&byread);
UpdateData(false); //更新变量的值到编辑框}我建了一个基于对话框的MFC的EXE工程,上面添加了一个编辑框和按钮,给编辑框关联了一个变量UINT类型的m_hp,按钮的事件如上面所示。其中2772是我的魔兽进程ID,我 从任务管理器中看到的是2772,而0E6C02FC是我用CE察看到的魔兽真三国无双中存放诸葛亮血的地址(纯属个人学习娱乐,绝对没做任何坏事,其实我也没做坏事的能力,不要鄙视我,谢谢!)
在VC 6.0下成功编译,但是运行的时候编辑框里面什么都没有啊,请问问题出现在哪里,先说谢谢了!
{
// TODO: Add your control notification handler code here
HANDLE processH=::OpenProcess(PROCESS_ALL_ACCESS,false,2772);
//读指定进程 内存数据
DWORD byread;
LPCVOID pbase=(LPCVOID)0x0E6C02FC;
LPVOID nbuffer=(LPVOID)&m_hp;
::ReadProcessMemory(processH,pbase,nbuffer,4,&byread);
UpdateData(false); //更新变量的值到编辑框}我建了一个基于对话框的MFC的EXE工程,上面添加了一个编辑框和按钮,给编辑框关联了一个变量UINT类型的m_hp,按钮的事件如上面所示。其中2772是我的魔兽进程ID,我 从任务管理器中看到的是2772,而0E6C02FC是我用CE察看到的魔兽真三国无双中存放诸葛亮血的地址(纯属个人学习娱乐,绝对没做任何坏事,其实我也没做坏事的能力,不要鄙视我,谢谢!)
在VC 6.0下成功编译,但是运行的时候编辑框里面什么都没有啊,请问问题出现在哪里,先说谢谢了!
调试一下 m_hp里面有没有值.
void CZhensanDlg::OnButton1()
{
// TODO: Add your control notification handler code here
//WriteProcessMemory(
HANDLE processH=::OpenProcess(PROCESS_ALL_ACCESS,false,0x2772);
//读指定进程 内存数据
DWORD byread;
LPCVOID pbase=(LPCVOID)0x0E6C02FC;
LPVOID nbuffer=(LPVOID)&m_hp;
::ReadProcessMemory(processH,pbase,nbuffer,4,&byread);
UpdateData(false); //更新变量的值到编辑框}
OX这个我加了也还是读取不出来内容啊?看来估计不是这个问题吧,这个只是一个进程ID。
pe32.dwSize=sizeof(pe32);
HANDLE hProcessSnap=::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if(hProcessSnap==INVALID_HANDLE_VALUE)
{
cout<<"CreateToolhelp32Snapshot调用失败!"<<endl;
return -1;
}
//遍历进程快照,轮流显示每个进程的信息
BOOL bmore=::Process32First(hProcessSnap,&pe32);
while(bmore)
{
cout<<"进程的名称:"<<pe32.szExeFile<<endl;
cout<<"进程的IDK号:"<<pe32.th32ProcessID<<endl;
bmore=::Process32Next(hProcessSnap,&pe32);
}
//释放
::CloseHandle(hProcessSnap);这是对进程进行拍照,得到的是十进制的进程ID号
用FindWindow()和FindWindowEx()来查具体的句柄,边查边对照运行结果。
{
// TODO: Add your control notification handler code here HANDLE processH=::OpenProcess(PROCESS_ALL_ACCESS,false,3588);
if(processH==NULL)
AfxMessageBox("打开失败!");
//读指定进程 内存数据
DWORD byread;
LPCVOID pbase=(LPCVOID)0x006C02FC;
LPVOID nbuffer=(LPVOID)&m_value;
::ReadProcessMemory(processH,pbase,nbuffer,4,&byread);
if(byread==0)
AfxMessageBox("读取失败!");
UpdateData(false); //更新变量的值到编辑框
}我试了一下 程序没有问题,有可能的问题是:
1.进程打开失败(主要看进程ID号是否对)
2.读取内存失败(内存地址是否对)上面的程序已测试,编辑框中可以显示数值(非0),只是我无法测试显示数值是否正确!