24
2012-06

QQ记牌器开发记录

学了点关于内存读写的知识,本着学以致用的目的,写了个QQ记牌器.原理是读内存变化,判断出牌情况,方法网上有很多,一搜一篇.

这阵子和朋友玩升级,便先从QQ升级下手,既然是为自己写的记牌器,当然要尽可能的好使,互相看牌的功能就是必不可少的.我的办法是拿到牌后和对方交换一次数据,后来发现扣牌会导致交换的数据有误差,便改成交换两次,拿到牌交换一次,扣完牌再交换一次.通过两次拿到的牌不同判断扣掉的底牌.效果如下:

 

升级完成后,又添加了斗地主,双扣等功能.过程几经曲折,在此记录.

进行斗地主记牌的时候,最开始想的是和升级一样,利用出牌张数内存地址,然后根据出牌张数读取出牌.但是出牌张数变化很快,计时器设置时间为1秒,有时候网速变化时会出现读牌错误的情况.如果计时器间隔调太短,无疑影响程序性能.

后来不再读取出牌张数,直接根据手中牌数量的变化来计算出牌张数,计时器间隔1秒的情况下运行良好,目前还没发现问题.

在添加够级游戏时,遇到了难题,手中牌数量这个地址的值很怪,开局后都是0,只有出了牌才会变化为实际张数,而且最后一手牌出完后也不变为0.我估计我搜到的地址是界面显示的张数地址,想搜符合实际值的内存搜不到,网上搜也得不到结果,只好将就着用了.用的时候加判断,开局后把张数置为36,某个玩家出完后将张数置为0.

顺便发一下够级的基址:

 

玩家数量: 0x430F4;

玩家名称:从自己开始,顺时针为0x28B8E, 0x28C02, 0x28C76, 0x28CEA, 0X28D5E,...;偏移地址是16进制74,依次加便可.

我的座位号: 0x430CC;

准备情况: 0x26560, 0x26564, 0x26568, 0x2656c, 0x26570, 0x26574;没点准备按钮内存是0,点了后是1,开始游戏变为2.

自己的牌:  0x2628D;偏移是12.

剩余牌数: 0x26510, 0x26534, 0x26538, ...;偏移是4,依次加即可.

内存模块是GouJiLogic.dll

 

实际效果如图:

 

 

 

独乐乐不如众乐乐,已经发到网上,有兴趣的朋友可以使用.  够级记牌器

« 上一篇下一篇 »

相关文章:

留言列表:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。