奏大师乐谱破解.docx

上传人:汽*** 文档编号:562314933 上传时间:2023-02-12 格式:DOCX 页数:10 大小:603.54KB
返回 下载 相关 举报
奏大师乐谱破解.docx_第1页
第1页 / 共10页
奏大师乐谱破解.docx_第2页
第2页 / 共10页
奏大师乐谱破解.docx_第3页
第3页 / 共10页
奏大师乐谱破解.docx_第4页
第4页 / 共10页
奏大师乐谱破解.docx_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《奏大师乐谱破解.docx》由会员分享,可在线阅读,更多相关《奏大师乐谱破解.docx(10页珍藏版)》请在金锄头文库上搜索。

1、精明的程序员节奏大师乐谱破解这几天迷上了节奏大师,玩了不到50关,就觉得越往后越吃力,自己的大脑手指有些跟不上了。我想,要不做个机械臂加摄像头的程序,让摄像头捕捉游戏画面,cpu图像处理,控制机械臂去触摸屏幕。简单想,如果做出来倒是蛮酷的,不过现在时间比较紧,做这个需要花大功夫。仔细琢磨之后觉得从软件实现的角度考虑,有两点可以优化。第一:机械臂可以省去,用操作系统提供的inject touch event的API代替,这样一来可以省去不必要的控制机械臂的时间,二来实时性也会好很多;第二,摄像头可以省去,用操作系统提供的capture screen的API代替,这样拿到的图像较为清晰,对处理和分

2、析都有很好的帮助。不过这两个外设去掉之后,做出来的程序显然不那么酷炫了,就好像一个简单的游戏外挂在后台运行而已。说到游戏外挂,大都是改内存数值,或修改程序来做到,用到图像处理的还比较少。主要因为通过图像识别游戏状态比较难做,按键精灵有这个功能,不过用它做出来的外挂都是一些比较简单的。既然图像识别比较难做,我可否也绕开此步骤。分析游戏,我发现节奏大师每首音乐都有规律的谱面,这肯定是分析乐谱文件生成的。如果我也能分析出乐谱文件的格式,而生成一些touch event,岂不是更加简单,连capture screen和图像分析都不用考虑了。于是乎,下载android版本的节奏大师apk文件,解压,搜索

3、*.mp3,找到xinshoujiaoxue.mp3,再搜索xinshoujiaoxue*,除了mp3文件外又找到一个xinshoujiaoxue_4k_ez.imd文件。我猜这个文件就是我想要的乐谱了,4k=4 key,ez=easy?打开文件一览全貌,乱码,看来不是text格式,看来有的分析了,再用16进制格式打开,得到下图:乍一看还蛮有规律,很多0,再一看发现5E 40也常常出现:在分析之前,我决定先玩一下新手教学,看看里面的动作都有些什么,这样分析起来也好有个参照。玩过之后发现很简单,我简单记下了这些动作:我不知道节奏大师开发者把4key计数从0开始还是1开始,作为程序员,我先按0开始

4、编号。新手教学很简单,8个点击,8个移动,两个直线,一个折线。好了,下面开始分析啦。先把那些16进制数重新排一下行,使得看起来比较舒服,按什么规律换行?5E 40。前面很多行都有5E 40,不妨把它直接删掉看剩下数字的规律:横着不是很容易看,按列看就会有所发现,第一列基本逐一递减,第二列基本间隔4增加,第三列比较有规律,即数字周期性增长,第四列基本间隔2增加。好像是个等差数列啊,转成10进制,用excel画图看看:在这张图里,我试玩时的那些动作完全体现不出来,只能看到程周期性递减,猜想可能是和时间相关的东西,类似时间轴吧。继续看后面的数据,后面的数据不是以5E 40开头,所以刚刚没有替换成换行

5、,看似也没什么规律:只有手动换行了,通过一些规律找到周期数,即可知道每行列数,然后试着重新断行,得到如下结果:看着还是比较有规律的。开始仔细研究,就是一直盯着它看,脑子里想想着刚刚玩过的新手试玩的规律,瞬间可以对上了!激动!差不多对照上之后就开始分析每个byte或bit的语义了。有了对照,语义不难找出,最终我得出了如下结论:红色区域表示执行的动作,0=touch,1=move,2=hold;白色区域的数值有点奇怪,不过我猜应该是表示时间戳的,搜了几个发现在之前5E40开头的那堆数字里果然可以找到;蓝色区域表示从哪个key开始,即游戏中的哪一列开始touch、move或hold;如果动作是hol

6、d,那么最后的4 bytes,即黄色区域猜想应该是表示hold的时间吧,可以看到表示次折线动作的最后4行可以解读为:“当时间为10 A4时,从列2向右move一列,当时间同样为10 A4时,hold列3,hold时间为D0 07,当时间为E0 AB时,从列3向左move一列,当时间同样为E0 AB时,hold列2,hold时间为D0 07”,这样算一下E0 AB = 10 A4 + D0 07,是一条连续的折线,这验证了黄白区域表示时间的结论;如果动作是move,那么最后的4 bytes,即紫色区域应该表示move方向,对照游戏FF FF FF FF表示向左,01 00 00 00表示向右。等

7、一下。全FF的补码应该是-1,那01 00 00 00应该表示+1?哦,或许是大小端的缘故,应该反着看就是+1的int格式了。怪不得文件开头那堆5E 40开头的行画出来的图是周期递减的,大小端转换一下,应该就变成了递增了吧。不急,我再当转换一下画一次。还没有画图,转成10进制的数字就吓了我一跳:这就不用画图了,太规律了。时间间隔为500,最大值28000,应该单位是毫秒,即28秒。由此判断5E 40开头的为时间戳不错。以上写的这些,像个流水账,不过的确是我按着自己的思维过程一步步记下来的。我也不知道分析这个有什么用,就是单纯地觉得很有意思。还有4个数,即最后4行的行首的6 2 2 A还不知道是什么意思。如果大家有兴趣可以帮忙分析一下,我们可以一起讨论。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号