首页
社区
课程
招聘
[原创]某连连看外挂源码(版本齐全)
发表于: 2011-6-28 19:30 38010

[原创]某连连看外挂源码(版本齐全)

2011-6-28 19:30
38010
收藏
免费 7
支持
分享
最新回复 (50)
雪    币: 750
活跃值: (228)
能力值: ( LV9,RANK:780 )
在线值:
发帖
回帖
粉丝
26
东西不错,学习了,刚才测试了下,秒杀没有了
2011-9-17 03:35
0
雪    币: 277
活跃值: (45)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
27
就是没棋子找0,有棋子找非0,很简单,多找几次,这个棋子数不超过256个,应该是字节表示的,你按字节搜索就行了
2011-9-27 15:15
0
雪    币: 277
活跃值: (45)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
28
可能是游戏更新了,或者太老了,基址可能不一样了,要用的话可以自己找下基址,在前面宏那地方把棋盘基址换了应该就能用了,最近忙考研,很久没上看雪了,等考研结束了再回来~
2011-9-27 15:16
0
雪    币: 100
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
29
源码是个好东西!!
2011-9-27 17:33
0
雪    币: 768
活跃值: (530)
能力值: ( LV13,RANK:460 )
在线值:
发帖
回帖
粉丝
30
mark,媳妇常玩这游戏,留用:)
2011-9-27 18:27
0
雪    币: 223
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
31
如果程序运行不了,重新定位下基址就好了,楼主这个郁金香教程进化来的吧
2011-12-25 17:35
0
雪    币: 32
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
32
好东西 得好好学习下 谢谢楼主
2011-12-25 17:53
0
雪    币: 186
活跃值: (33)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
33
学C++ 下来看看
2012-3-8 14:58
0
雪    币: 277
活跃值: (45)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
34
这个警告要关你的游戏的时候你可以不要点确定,这时候游戏还可以继续玩,继续搜索内存,最近有时间我又重新找了下XP下的地址,可以把前面宏改成下面这样就能用了

#define XP_TABLE_BASE                        0x0012A480
#define XP_REMAIN_BASE                        0x00115CDC        //0x001163B0
#define XP_TIME_BASE                        0x00117744        //0x00117E18
2012-4-3 21:10
0
雪    币: 163
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
35
都是牛啊。我晕死
2012-4-4 03:45
0
雪    币: 615
活跃值: (172)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
36
感谢分享..............
2012-4-4 05:40
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
37
thank you very much !  下载下来学习学习 !
2012-4-4 06:53
0
雪    币: 20897
活跃值: (4095)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
38
It's great !
Thank you very much !
2012-4-4 12:19
0
雪    币: 100
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
tjk
39
thanks a lot
2012-4-4 12:31
0
雪    币: 23
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
40
sendmessage以最快的速度模拟点击
2012-4-4 12:47
0
雪    币: 244
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
41
不错的呀 还从来都没有弄过连连看的 灰常有兴趣 试试看
2012-4-4 12:55
0
雪    币: 5
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
42
我是有兴趣的菜鸟
2012-4-6 03:59
0
雪    币: 13089
活跃值: (4087)
能力值: ( LV15,RANK:1673 )
在线值:
发帖
回帖
粉丝
43
有朋友在玩这个.下个来学习学习
2012-4-6 12:58
0
雪    币: 275
活跃值: (51)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
44
qq游戏连连看是比较简单的游戏,我们猜测程序员定义了19*11大小的数组来存放连连看棋盘上面的棋子数据

鉴于这个数组比较大,而棋子没有很多所以认为8位二进制就足够表示棋子的类型了,假定程序员使用的是BYTE类型数组

使用CE工具查找游戏进程,我们猜测没有棋子的位置值为0,然后不断练来让棋盘数据不同来构造条件让我们猜到数组的地址

我们来关注第一个位置的棋子让它的值初始为空我们扫描内存,然后刷新下棋盘,根据刷新结果来修改ce的条件

比如从没有变成了有棋子,我们就修改为增加的数值,然后如果两次都有棋子但是棋子不同就使用过滤条件改变的值

最后找到满足我们所有设置的条件的一个或者几个值,然后od载入 查看 从这个地址开始19*11之后的数值是不是跟棋盘一样

(为了容易区分是不是,可以构造很多的空白没有棋子的棋盘)找到后就能确定棋盘数组的基址,然后就能读出后续的内存值

读到一个数组里面,为了自己找能消去的一对用,然后就是想办法去点击能消去的某些棋子,这里使用发送虚拟鼠标消息进行欺骗

为了发送虚拟按键消息,我们必须找到某个棋子在电脑上面的地址,因为窗口在桌面上的位置不固定(你也可以固定,那你就蛋疼了)

于是我们使用相对坐标,使用spy++记录我们自己点击第一个棋子的坐标,然后根据每个棋子的大小来计算每个棋子的坐标

棋子的大小可以截屏,算像素分别除以 19 跟11  结果是 35  31

然后就是怎么找能消去的一对了这个不是技术问题了 是算法的东西了  因为我们大话数据结构还没看多少 暂时不讨论了

注意读取内存使用的是根据窗口标题找句柄找pid 找进程句柄 然后使用 ReadProcessMemory 读取其内存

注意 不同系统的基址不同 (win 7 0x0012A444  而 xp后面是 0x0012A480)不同版本的游戏基址貌似也不同
2012-4-6 13:10
0
雪    币: 275
活跃值: (51)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
45
//TODO: Add your control notification handler code here

                   //获取窗口句柄

         HWNDgameh=::FindWindow(NULL,gameCaption);

         //获取窗口进程ID

         DWORDprocessid;

         ::GetWindowThreadProcessId(gameh,&processid);

         //打开指定进程

         HANDLEprocessH=::OpenProcess(PROCESS_ALL_ACCESS,false,processid);

         //读指定进程 内存数据

   DWORD byread;

         LPCVOIDpbase=(LPCVOID)0x0012A444; //棋盘数据基址

         LPVOID  nbuffer=(LPVOID)&chessdata;    //存放棋盘数据

         ::ReadProcessMemory(processH,pbase,nbuffer,11*19,&byread);

         ///显示棋盘数据

         charbuf[11];

         m_chessdata="";//清空编辑

          for (int y=0;y<=10;y++)

          {

                    for (int x=0;x<=18;x++) //读一行

                    {

                     itoa(chessdata[y][x],buf,16); //转换成字串

                     m_chessdata+=buf;

                     m_chessdata+=" ";

                    }

      //换行

   m_chessdata+="\r\n";

          }

         UpdateData(false);

         HWNDhwnd=::FindWindow(NULL,gameCaption);

         intlparam;

         lparam=(y<<16)+x+31*2;//表示指定格

         ::SendMessage(hwnd,WM_LBUTTONDOWN,0,lparam);//

         ::SendMessage(hwnd,WM_LBUTTONUP,0,lparam);  //
2012-4-6 13:10
0
雪    币: 275
活跃值: (51)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
46
这个玩意我也弄过,不过找能消去的一对的那个代码我没写直接拿人家现成的
2012-4-6 13:12
0
雪    币: 275
活跃值: (51)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
47
这个是郁金香视频简单版本的代码
我只是修改了下棋盘的基址
不同系统 不同版本的游戏基址是有可能变化的

找能消去的比较麻烦就没自己去实现
上传的附件:
2012-4-6 13:17
0
雪    币: 275
活跃值: (51)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
48
去年的帖子了 啥时候被顶上来的
精华哦 不错嘛 楼主 支持下
2012-4-6 13:18
0
雪    币: 376
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
49
好東西呀,必須看看
2012-4-6 14:59
0
雪    币: 3
活跃值: (198)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
50
如果是仿造郁金香的 那就没什么意思了。如果是逆向改 判断代码还有点意思
2012-4-7 07:42
0
游客
登录 | 注册 方可回帖
返回
//