首页 > 编程知识 正文

readvirtualmemory,can not read memory

时间:2023-05-03 14:50:53 阅读:207430 作者:1338

我用ReadProcessMemory函数想读出QQ对对碰游戏的棋盘数组的数据可是输出的却是一个地址,但是用同样的方法读取座位号的基址就可以正确输出作为号,所以想请教一下大家这是什么原因,以下是代码:出问题的那一部分我变成绿色了。


#include "windows.h"

#include <iostream.h>

class jubing
{
public:

HWND ctjubing; //定义一个HWND(也是一种句柄)类型的变量用来存放窗体句柄,这里千万别搞错了
DWORD pid; //存放进程id
HANDLE jcjubing; //定义一个HANDLE(句柄)类型的变量用来存放进程句柄,这里千万别搞错了
int zwh;  //定义一个用来保存座位号的变量


int chuangtijubing(); //在类里面声明一个成员函数获得窗体句柄(函数的定义部分在下面)
int jinchengid();     //在类里面声明一个成员函数获得进程ID  (函数的定义部分在下面)
int jinchengjubing(); //在类里面声明一个成员函数获得进程句柄(函数的定义部分在下面)
int zuoweihao();      //在类里面声明一个成员函数获得座位号  (函数的定义部分在下面)

};
///
///
//类成员函数的定义部分

jubing::chuangtijubing() //上面声明的函数这里写定义部分(返回窗体句柄)
{

ctjubing = FindWindow(NULL,"对对碰角色版"); //获取窗体句柄


return 1;
}

jubing::jinchengid() //上面声明的函数这里写定义部分(返回进程ID)
{
GetWindowThreadProcessId(ctjubing,&pid); //获取进程ID

return 1;

}

jubing::jinchengjubing() //上面声明的函数这里写定义部分(返回进程句柄)
{
jcjubing = OpenProcess(PROCESS_ALL_ACCESS,FALSE,pid); //返回进程句柄

return 1;
}

jubing::zuoweihao() //上面声明的函数这里写定义部分(返回座位号)
{
ReadProcessMemory(jcjubing,(int *)0x47c9d4,&zwh,4,NULL); //该函数用来返回座位号
return 1;
}



///
///




bool qipanshuzu()   //自定义函数实现输出棋盘数组


{
jubing a;  //实例化一个类对象
a.chuangtijubing(); //取得窗体句柄
a.jinchengid();//取得进程id
a.jinchengjubing();//取得进程句柄
a.zuoweihao(); //取得座位号
cout<<a.zwh<<endl; //输出座位号

//int shiji;

int qipanshuzu[8][8];

if ((a.zwh == 0) && (a.ctjubing != NULL)) //如果座位号返回值为0并且窗体句柄不为空的话
{
ReadProcessMemory(a.jcjubing,(int *)0x479418/*0x479418是棋盘数组的基址*/,&qipanshuzu,200,0); //读取棋盘数组


cout<<qipanshuzu<<endl; //输出座位号

}

return 0;

}
int main()
{

    
qipanshuzu();   //调用棋盘数组(自定义函数)

return 0;
}

///
///

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。