QQ新中国象棋棋盘基址--寻找过程

一、分析

分析棋盘结构,猜测棋盘的数据是一个二维数组,棋盘是一个9*10或者是一个10*9的数组,先朝这个方向去尝试分析

 

程序内部可能是定义了一个这样的二位数组char[10][9]或者char[9][10]

也可能是int[10][9]或者int[9][10],还有可能是一个结构体的数组,腾迅开发人员具体用什么类型我们无从得知只能通过不断去尝试,试错来分析。

 

char   chessArray[10][9];

int    chessArray[10][9]

Chess  chessArray[10][9]    

 

继续猜测分析:二维数组的每个元素是描述一个棋子的,是什么颜色什么棋,总共有32个棋子,猜测描述这些的棋子的属性用255种足可以描述完毕。

例如:红车是1,红马是2,红象是3等。

`

 

二、试错

通过CheatEngine工具,可以扫描进程的内存数据,不断调整棋子的位置,找到棋盘的大概位置

加载QQ象棋进程:如下图所示。

 

新扫描类型选择“值介于...两者之间”,数值为0到255之间,数值类型先选择4字节,点击首次扫描。

 

初次扫描,满足条件的内存有500多万条,如下图

修改扫描类型:为变动的数值,我们尝试来回重复移动一个棋子,每次搜索都搜索变动的数值,这样就可以迅速过滤掉大量的数据。

 

本例中是尝试车1进1,搜索一次,

                                                                          

车一退一搜索一次。

 

多次之后最后过滤到少量内存如下图

这三个地址相隔比较近,可以打开一起查看,

选择其中一个绿色地址打开继续分析,如下图:

将界面最大化后,每当我们移动棋子时,我们可以观察到,界面上面有颜色闪动变化,如下图所示,我们可以推断这些变化就是棋子的变化

 

不断地移动棋子,可以推算出每个棋子的值,而且可以算出棋盘的数组范围

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hucailai

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值