首页
社区
课程
招聘
[求助]关于扫雷程序的内存地址读取问题
发表于: 2010-12-3 20:33 9195

[求助]关于扫雷程序的内存地址读取问题

2010-12-3 20:33
9195

有两段代码:

BOOL b;
  b=ReadProcessMemory(
    ph,   // 目标进程句柄
    (void*)0x01005360,//要读取的内存地址
    lpBuffer1,  // 存放数据的缓存区地址
    1024,      // 要读取的字节数
    NULL  // 把读了多少个字节存到一个地址,如果为NULL则忽略此参数。
    );

b=ReadProcessMemory(//获取扫雷区域行列数
    ph,   // 目标进程句柄
    (void*)0x01005334,//要读取的内存地址
    lpBuffer2,  // 存放数据的缓存区地址
    8,      // 要读取的字节数
    NULL
    );
根据之前的资料说:1005334  里面是横向方格数
                                    1005338  里面是纵向方格数

那第一个ReadProcessMemory的作用是什么?为什么要读取1024个字节?

那第二个ReadProcessMemory的作用说是获取扫雷区域行列数,起始地址也是01005334但是为什么要

读取8个字节?那不是要读01005334-01005342的数据?这又是为什么?

下面是源码:

CWnd* wn;
  void* ph;
  DWORD pid;
  wn = FindWindow(NULL,"扫雷");
  
  if(!wn)
  {
    MessageBox("大哥,请你先打开windows自带的扫雷游戏!");
    return;
  }
  
  GetWindowThreadProcessId((HWND__ *)(*wn),&pid);
  ph=OpenProcess(PROCESS_ALL_ACCESS,false,pid);
  
  void *lpBuffer1=new byte[1024];
  BOOL b;
  b=ReadProcessMemory(
    ph,   // 目标进程句柄
    (void*)0x01005360,//要读取的内存地址
    lpBuffer1,  // 存放数据的缓存区地址
    1024,      // 要读取的字节数
    NULL  // 把读了多少个字节存到一个地址,如果为NULL则忽略此参数。
    );
  if(!b)
  {
    MessageBox("读取内存错误,有可能与你的杀毒软件相冲突!");
    return;
  }
  void *lpBuffer2=new byte[8];
  b=ReadProcessMemory(//获取扫雷区域行列数
    ph,   // 目标进程句柄
    (void*)0x01005334,//要读取的内存地址
    lpBuffer2,  // 存放数据的缓存区地址
    8,      // 要读取的字节数
    NULL
    );
  if(!b)
  {
    MessageBox("读取内存错误,有可能与你的杀毒软件相冲突!");
    return;
  }
  int *aa=(int *)lpBuffer2;
  byte *bb=(byte *)lpBuffer1;
  
  
  for(int y=0;y<aa[1];y++)
  {
    for(int x=1;x<=aa[0];x++)
    {
      if(bb[x+(y*32)]==0x8f)
      {//右键
        ::SendMessage((HWND__ *)(*wn),WM_RBUTTONDOWN,0,(0x00400000+(y*0x00100000))|(0x0010*x));
        ::SendMessage((HWND__ *)(*wn),WM_RBUTTONUP,0,(0x00400000+(y*0x00100000))|(0x0010*x));
      }
      else
      {//左键
        ::SendMessage((HWND__ *)(*wn),WM_LBUTTONDOWN,0,(0x00400000+(y*0x00100000))|(0x0010*x));
        ::SendMessage((HWND__ *)(*wn),WM_LBUTTONUP,0,(0x00400000+(y*0x00100000))|(0x0010*x));
      }
      
    }
  }


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 7
支持
分享
最新回复 (12)
雪    币: 44
活跃值: (24)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
刚好以前有写过一个
上传的附件:
2010-12-4 01:20
0
雪    币: 44
活跃值: (24)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
顺便上个bin
上传的附件:
2010-12-4 01:28
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
LS的程序貌似有问题
2010-12-6 01:21
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
你上的那个BIN不是程序的编译结果吧
2010-12-6 01:22
0
雪    币: 40
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
不是 这个是个源代码 用MFC添加一个按钮控件后,单击的代码才是这个。程序不会有问题的,我已经试过了,秒杀挂
2010-12-7 00:22
0
雪    币: 132
活跃值: (30)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
我就纳闷啦...怎么有这么多同学和扫雷较劲呢? 蜘蛛纸牌也玩嘛?
2010-12-8 12:44
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
回楼上的话,我们不是和扫雷较劲,而是一群菜鸟相互学习罢了
2010-12-8 15:02
0
雪    币: 72
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
http://bbs.pediy.com/showthread.php?t=121854

呵呵 代码注释应该有
2010-12-14 10:07
0
雪    币: 348
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
  new 有了 delete呢?
2010-12-14 10:41
0
雪    币: 13
活跃值: (59)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
扫雷本来就有个后门,不用自己写程序那么麻烦
2010-12-14 22:33
0
雪    币: 1163
活跃值: (137)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
12
求解。。。。
2010-12-15 16:20
0
雪    币: 442
活跃值: (43)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
他说的应该是屏幕左上角显示一个小黑点那个

百度
2010-12-15 17:48
0
游客
登录 | 注册 方可回帖
返回
//