设为首页 加入收藏

TOP

vc6做对对碰外挂原理(一)
2014-03-10 12:50:22 来源: 作者: 【 】 浏览:203
Tags:vc6 外挂 原理

  前段时间跟以前的同事玩QQ游戏对对碰,结果输的好惨,后来在网上看到了有对对碰的外挂,但还需要注册,就考虑既然别人可以写出来,我为什么就不能写出来呢?于是花了一个下午的时间仔细研究了一下,把外挂写了出来。

  其实原理很简单,只要将棋盘上面的数据保存起来,然后经过分析就可以知道移动哪里的动物,然后再通过模拟鼠标消息来点击两个位置就可以了。

  1)获取棋盘数据

  要得到棋盘的数据进行分析,思路是这样:首先得获得对对碰的窗口,然后对窗口上面的象素进行分析,从而获取每个格子中的数据。对于每个格子里面的动物,一定可以有几个有特征的点使得可以区分开每个格子中的动物,可以用用2到3个点的数据保存一个动物,这样把每个格子中动物的数据都获得后,棋盘的数据也就出来了。

  首先,要得到对对碰的窗口,这个比较简单,可以用::FindWindow来实现,具体代码如下:

  CQQGameToolDlg * dlg = (CQQGameToolDlg *)parm;//这里因为这个函数是作为一个线程来做的,所以得传递一个参数过来

  dlg->hWnd = ::FindWindow(NULL,"QQ对对碰");//查询

  if(dlg->hWnd == NULL)

  dlg->hWnd = ::FindWindow(NULL,"对对碰");//好像窗口标题有时还不同,不知道是不是我自己搞错了

  if(dlg->hWnd == NULL)

  {

  AfxMessageBox("未找到对对碰窗口,请首先启动对对碰!");

  dlg->SetDlgItemText(IDC_BUTTON1,"启动");

  dlg->m_bStart = false;

  return 0;

  }

  到这里就得到了QQ对对碰的窗口句柄,但是要分析窗口中的象素,还需要得到一个窗口的HDC

  dlg->hDc = ::GetDC(dlg->hWnd);

  下面就是得到棋盘的数据了,首先得测试出棋盘左上角的坐标和每个格子的边长,具体测试方法就不给出了,是比较简单的,经过测试得出的数据,棋盘左上角坐标为(176,102),每个格子的边长是48.

  接下来就是保存棋盘数据了

  下边的函数是为了获取每一个方格的数据的

  参数x,y是棋盘坐标,比如(0,0)代表左上角第一个方格等等。

  我们在这里取每个格子中间那条线的象素作为数据进行存储

  COLORREF * CQQGameToolDlg::GetRectData(int x, int y)

  {

  COLORREF * color;

  color = new COLORREF[48];

  int count = 0;

  for(int i=(x-1)*48 + m_posX;i<(x-1)*48 + m_posX + 48;i++)

  {

  color[count++] = GetPixel(hDc,i,(y-1)*48 + m_posY + 20);

  //如果是棋盘的底色,则忽略

  if(color[count-1] == 0x00efaa5a || color[count-1] == 0x00f7c384)

  color[count-1] = 0x000000;

  }

  return color;

  }

  下边的函数获取每个格子的特征点的数据:

  在这里我们只取六个特征点进行存储,把六个特征点的十六进制保存起来。

  void CQQGameToolDlg::GetCode()

  {

  for(int i=1;i<=8;i++)

  for(int j=1;j<=8;j++)

  {

  CString str;

  COLORREF * c;

  c = GetRectData(i,j);

  str.Format("%x%x%x%x%x%c",c[25],c[26],c[27],c[28],c[29],c[30]);

  data[i][j] = str;

  }

  }

  经过上面的函数,则data数组保存的就是棋盘的数据了,到这里,对棋盘数据的获取就结束了。

   

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇vs2010 调试快捷键 下一篇策略模式-----C++实现

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Libevent C++ 高并发 (2025-12-26 00:49:30)
·C++ dll 设计接口时 (2025-12-26 00:49:28)
·透彻理解 C 语言指针 (2025-12-26 00:22:52)
·C语言指针详解 (经典 (2025-12-26 00:22:49)
·C 指针 | 菜鸟教程 (2025-12-26 00:22:46)