奏大师乐谱破解.docx_第1页
奏大师乐谱破解.docx_第2页
奏大师乐谱破解.docx_第3页
奏大师乐谱破解.docx_第4页
奏大师乐谱破解.docx_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

精明的程序员节奏大师乐谱破解这几天迷上了节奏大师,玩了不到50关,就觉得越往后越吃力,自己的大脑手指有些跟不上了。我想,要不做个机械臂加摄像头的程序,让摄像头捕捉游戏画面,cpu图像处理,控制机械臂去触摸屏幕。简单想,如果做出来倒是蛮酷的,不过现在时间比较紧,做这个需要花大功夫。仔细琢磨之后觉得从软件实现的角度考虑,有两点可以优化。第一:机械臂可以省去,用操作系统提供的inject touch event的API代替,这样一来可以省去不必要的控制机械臂的时间,二来实时性也会好很多;第二,摄像头可以省去,用操作系统提供的capture screen的API代替,这样拿到的图像较为清晰,对处理和分析都有很好的帮助。不过这两个外设去掉之后,做出来的程序显然不那么酷炫了,就好像一个简单的游戏外挂在后台运行而已。说到游戏外挂,大都是改内存数值,或修改程序来做到,用到图像处理的还比较少。主要因为通过图像识别游戏状态比较难做,按键精灵有这个功能,不过用它做出来的外挂都是一些比较简单的。既然图像识别比较难做,我可否也绕开此步骤。分析游戏,我发现节奏大师每首音乐都有规律的谱面,这肯定是分析乐谱文件生成的。如果我也能分析出乐谱文件的格式,而生成一些touch event,岂不是更加简单,连capture screen和图像分析都不用考虑了。于是乎,下载android版本的节奏大师apk文件,解压,搜索*.mp3,找到xinshoujiaoxue.mp3,再搜索xinshoujiaoxue*,除了mp3文件外又找到一个xinshoujiaoxue_4k_ez.imd文件。我猜这个文件就是我想要的乐谱了,4k=4 key,ez=easy?打开文件一览全貌,乱码,看来不是text格式,看来有的分析了,再用16进制格式打开,得到下图:乍一看还蛮有规律,很多0,再一看发现5E 40也常常出现:在分析之前,我决定先玩一下新手教学,看看里面的动作都有些什么,这样分析起来也好有个参照。玩过之后发现很简单,我简单记下了这些动作:我不知道节奏大师开发者把4key计数从0开始还是1开始,作为程序员,我先按0开始编号。新手教学很简单,8个点击,8个移动,两个直线,一个折线。好了,下面开始分析啦。先把那些16进制数重新排一下行,使得看起来比较舒服,按什么规律换行?5E 40。前面很多行都有5E 40,不妨把它直接删掉看剩下数字的规律:横着不是很容易看,按列看就会有所发现,第一列基本逐一递减,第二列基本间隔4增加,第三列比较有规律,即数字周期性增长,第四列基本间隔2增加。好像是个等差数列啊,转成10进制,用excel画图看看:在这张图里,我试玩时的那些动作完全体现不出来,只能看到程周期性递减,猜想可能是和时间相关的东西,类似时间轴吧。继续看后面的数据,后面的数据不是以5E 40开头,所以刚刚没有替换成换行,看似也没什么规律:只有手动换行了,通过一些规律找到周期数,即可知道每行列数,然后试着重新断行,得到如下结果:看着还是比较有规律的。开始仔细研究,就是一直盯着它看,脑子里想想着刚刚玩过的新手试玩的规律,瞬间可以对上了!激动!差不多对照上之后就开始分析每个byte或bit的语义了。有了对照,语义不难找出,最终我得出了如下结论:红色区域表示执行的动作,0=touch,1=move,2=hold;白色区域的数值有点奇怪,不过我猜应该是表示时间戳的,搜了几个发现在之前5E40开头的那堆数字里果然可以找到;蓝色区域表示从哪个key开始,即游戏中的哪一列开始touch、move或hold;如果动作是hold,那么最后的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表示向右。等一下。全FF的补码应该是-1,那01 00 00 00应该表示+1?哦,或许是大小端的缘故,应该反着看就是+1的int格式了。怪不得文件开头那堆5E 40开头的行画出来的图是周期递减的,大小端转换一下,应该就变成了递增了吧。不急,我再当转换一下画一次。还没有画图,转成10进制的数字就吓了我一跳:这就不用画图了,太规律了。时间间隔为500,最大值28000,应该单位是毫秒,即28秒。由此判断5E 40开头的为时间戳不错。以上写的这些,像个流水账,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论