这文章一直了拖到6月2日啦!
2017年5月追记:
我探索这些的目的,是以一个玩家的身份,让 CGSS 变得更好玩。私下里我类比过普罗米修斯,将天火——谱面的制作和玩的能力从“天上”分一点出来。其实,修改 CGSS 去作弊是很简单的,无论是客户端还是 MITM。但是我不会去作弊,也不希望这系列文章的读者们将文章内容用在歪门邪道上,不希望去作弊、破坏平衡性。玩过 LLSIF、SB69、GF(note)、Arcaea 之后,我仍然认为 CGSS 的综合指标(游戏性、操作体验、曲目等等)是行业内翘楚,Cy这次比较用心。那么作弊还有什么意思嘛!对了,我不氪金,不冲分,只是闲暇时间来两局,玩得舒心。
当然,まゆさまが見ています。
一、声明
The Idolmaster Cinderella Girls Starlight Stage 软件和相关媒体的著作权为 Bandai Namco Entertainment Inc. 所有。本系列文章仅从兴趣出发,研究数据反向过程。在此不会给出完整的反向过程、反向结果和源代码,只给出思路和部分非关键数据。
相信大牛即使是没有看过我写的这些玩意儿也能上的。
二、打包
得到自己的程序集之后,我们要用我们编译的程序集替换原装程序集。
然而,在做了这次替换以后,文件内容就发生了变化。所以 MANIFEST.MF
是一定要修改的。好在这个不难,一段小程序足够:
|
用这个小程序就能计算文件的 SHA-1 散列值,并输出为 Base64 编码的字符串。用输出的值替换 MANIFEST.MF
中的原始值即可:
|
将制作好的 APK 安装到设备中:
|
然而,弹出的是一个安装失败的错误,错误信息为缺少签名。如果要在 Android 中安装一个 APK,这个 APK 必须是经过签名的。它使用了一个密钥散列了所有的文件,记录在了某个地方(这个我没深究),保证文件的完整性,保证它们未被篡改。因此为了发布到真系统(是不是模拟器倒没关系,只要是放到非调试状态的 Android 系统下都需要),我们得要给这个 APK 签名。在测试用的版本(1.5.3)中 CGSS 主程序没有进行签名验证,所以我们才能运行自己的程序集。附带说一句,主程序里判断是否作弊,其中就有一段检测加载的程序集是否是白名单上的几个。我们修改的是 CGSS 自身的程序集,所以不会被检测出来——而且没有进行程序集的文件完整性校验。也就是说,在没启用 APK 签名校验和程序集完整性校验的情况下,整个反向才能完整进行。
根据网上的日志,使用 keytool
(在 JDK 中)生成一个 keystore:
|
嗯,现在我们有了自己的 keystore,就该对修改后的 CGSS 安装包进行签名了:
|
等到签名完成,这个 APK 就能顺利安装了。能顺利安装还没完,还要测试运行,并从 logcat 收集输出信息。这部分其实很好做:
|
分析调试信息就不仔细展开了,这活儿也是很简单的。