记牌器内存扫描法原理(转) 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的可能性更大。 于是,我们开始另一个扫描,在对方出牌的时候,扫描其中的第一张牌(最大的那张,别问为什么,基本