记牌器内存扫描法原理(转)

来源:互联网 发布:飞行棋在线软件 编辑:程序博客网 时间:2024/05/22 01:39
记牌器内存扫描法原理(转)
2010-05-09 16:12
内存扫描软件名称:GameMaster
最新版本:可能是 8.0
使用方法:(我只讲分析数据的大概过程,如果谁不会用GM,去搜索软件使用说明,网络上一大把)
  一般来说,在不涉及版本升级的情况下,所有软件的变量在内存中都有一个较为固定的存放地址(相对于这个程序的起始地址而言),如果要扫描到这个地址,你需要有一些基本的分析能力,这个变量可能是以什么形式存在的?
  基本分析:直观的变化数据
  拿斗地主来说,最基本的分析就是出牌数量了,要分析出牌的张数,自然应该想如下操作:先用当前出牌张数扫描一次这个游戏进程的全部数据,然后,等出牌张数变化,再次扫描,一般来说,第一次扫描到符合条件的N多,第二次扫描会缩减很多,第三次、、、最终,会找到你想要的地址,大多数游戏最后都会只剩下一个,但也有反跟踪的游戏,会出现两个以上的地址;甚至还有普通方法无法找到的,那是别人反扫描做得好,就需要你动脑筋了(别问我,我不想回答,这不是编程的技巧)。
  还好,QQ斗地主的数据只有一个地址。
  第二类分析:有规律的特征对象
  比如,出牌的牌面,这一类数据没有直观的数字表现,但我们可以推断,作为编程人员,他对这54张牌一定有一个编码,很自然的我们想到二位数组,单色牌应该是采用1~13或者0~14的编号,至于花色,应该是0~3或者1~4,虽然大多数计算机语言的数组下标起始都是0,但在表达已经有数字规律的对象时,1~13更为直观,所以,采用1~13的可能性更大。
  于是,我们开始另一个扫描,在对方出牌的时候,扫描其中的第一张牌(最大的那张,别问为什么,基本逻辑思维),比如红桃3,搜索3,然后等待他下一次出牌,再次扫描、、、、
  到最后得到你所需要的地址的时候,且慢,仔细看看这个数据的附近,是否有表达其花色的红桃的标记(刚才我们说过了花色可能的编码)。
  第三类分析:有规律,但没有任何表征的对象
  比如座签地址,这东西只是会随着你更换座位变化,但没有具体的特征,这时候你应该采用扫描软件的模糊搜索,第一次全面记录内存,在发生变化后,再次扫描,再变化、再扫描、、、这种扫描方式可能需要若干次才能找到结果。

  扫描软件中还有字符串扫描等等功能,这里不涉及,就不说了。

  至于站长提到的140的偏移,那是站长偷懒,他看到了几个相关数据间的固定间隔,呵呵,不过,如果下一个版本中,数据结构定义变动,可能导致这个偏移被改动。所以,还是每一个数据都扫描一下为好。

  如果看了这个分析和网络上的软件使用说明,你还是说不懂怎么搜索、分析,或者你对编程不熟悉,只是为了应用来玩,抱歉,这个代码不适合你。
原创粉丝点击