【小记】某鸡模拟器 IOS 逆向分析破解思路

最近受流感病毒侵袭,已感染肺炎链球菌(症状为说话会喘气,想咳嗽)。

新春佳节在即,而我久病未愈(一个月了吧),百般吃药未见起效后无奈选择了打点滴。

点滴一滴一滴如同沙漏般倒计时着,在漫长等待时间下。我开始在记忆中搜寻打发时间的利器,突然间一个集成了各种街机平台游戏模拟器的app在脑海中一闪而过。

没错,就是今天的主角:小鸡模拟器

刚好这段时间更新了ipad pro,将18年的64GB 换成了22年的256GB存储空间。

存储空间的增长,缓解了我一直以来精挑细选的删删减习惯。可以做一些在64GB不敢做的事情,比如下载一些稍微大点的东西。

兴致冲冲地打开了app的官网下载了 ipa 安装包文件,由于这类软件不能上架apple store,所以只能在官方提供的软件安装包下载链接进行安装。

安装 & 修复


这里我选择使用 AltStore 进行签名并且安装,app官网也有安装教程:

https://www.xiaoji001.com/altstore/index.mac.html

【小记】某鸡模拟器 IOS 逆向分析破解思路

AltStore 安装教程在上面的链接中,也是小鸡模拟器的官方安装教程,这个没什么好说的。

但是在安装的时候可能会出现一个解析失败的弹窗提示“name contains invalid characters”occured when install apps”,意思就是app的名字有不能识别的字符

解决方法我在github上找到了:

【小记】某鸡模拟器 IOS 逆向分析破解思路

但是想到了每次都这样干比较累,干脆写一个python脚本来减轻工作量:

【小记】某鸡模拟器 IOS 逆向分析破解思路

修改 plist 中的内容主要是调用了 biplist 这个库,如果你以前没装过那么需要使用pip安装一下:

pip install biplist

脚本比较简单,就做上面截图的解决方法四件事情。代码比较少,贴出截图:

【小记】某鸡模拟器 IOS 逆向分析破解思路


这个截图由 https://carbon.now.sh/ 制作的,效果至少比我手动截图的强。

运行一下,然后将下载好的 ipa 安装包直接拖入到终端(mac自带的终端会把你拖入文件时候转成文件路径)

【小记】某鸡模拟器 IOS 逆向分析破解思路

最后,就是把这个修改过的安装包传送到我的ipad上。

这里不得不吐槽下,我原本以为连上数据线就可以很轻松把普通文件传到设备上,但苹果生态下令一些简单的事情变得有点麻烦。。

无奈之下,又打开了apple store 又下载了一个带局域网wifi的文件管理器。通过不懈努力终于把修复后的安装包弄到了设备上,再次使用AltStore 就能解析并且签名安装了。。

震惊!!这玩意居然收费了


本着不想努力的心态,尝试在谷歌搜了搜相关破解资源。但是总归有点不太放心,毕竟别人可能会在修改后的软件中加了些料(比如病毒木马,未知的窃取信息手段之类)。

不过也没有搜到相关的资源,不知道是不是因为懒得浪费时间进行深度搜索的原因。。

嘶,在自己动手之前。看到了B呼上有骂声,我就放心了。毕竟如果没有人骂它,可能这之后就有人开始骂我了。。例如,就是我这种人让开发者丧失更新的动力之类的声音。

【小记】某鸡模拟器 IOS 逆向分析破解思路

一些细节过程以及技巧


这玩意之前版本是不收费的,肯定是从某个版本后加的收费功能。但又不能一票否决老用户的使用权(这样做100%会引起众怒),用幻兽帕鲁的一句经典名言来形容就是 “你不干,有的是帕鲁干。怕鲁大陆最不缺的就是怕鲁”。

所以说,这就给我们提供了一个思路。

没错,如果你也有相关经验的话应该想到了

如果没有经验就听我娓娓道来,不过这里我选择了长话短说进行总结,毕竟浓缩就是精华~:

对比请求参数对比返回的响应尝试修改或复用某个请求参数尝试固定特定请求响应数据包

嗯,基于这个思路来做是最简单的。

准备工作


据说这玩意的安卓版本不收费,凭什么?!

刚好我手里有个安卓机,之前刚买回来时候装的是 1.8.4 版本。最新版本的我没试过,最新版本貌似是 1.8.8 也没差多少小版本。

不过这不重要,重要的是我在安卓机子上装的 1.8.本是没有收费功能的,这就够了。

之后再准备一个抓包工具,这里我习惯性的使用了 mitmproxy 进行抓包。mitmproxy 有一个很棒的功能就是可以通过编写脚本来修改请求&响应数据之类的。

关于 mitmproxy 这里就不过多介绍了,有兴趣自己搜索与 mitmproxy 相关的资料进行学习。

开始动手



【小记】某鸡模拟器 IOS 逆向分析破解思路

首先,咱们主要过掉这个窗口。

先给设备上抓包环境代理,然后开始抓包。

【小记】某鸡模拟器 IOS 逆向分析破解思路

这里我随便输入个激活码 kkk,毋庸置疑服务器肯定返回激活失败之类的响应。

【小记】某鸡模拟器 IOS 逆向分析破解思路

这里的响应很有意思,主要是看 code 有开发经验的人都可以隐隐猜到既然错误失败是 1,那么成功时候是不是可以尝试下 0 呢?对吧

撸起袖子,编写了个 mitm 脚本:

【小记】某鸡模拟器 IOS 逆向分析破解思路

之后使用mitmweb -s 来加载写好的脚本,比如我的脚本文件名叫做 xiaoji.py:

【小记】某鸡模拟器 IOS 逆向分析破解思路

这样子,自定义的脚本就加载完成了。

由于我们要修改的是响应,所以定义了一个 response 函数,mitmproxy 在加载自定义脚本的时候会获取对应名称函数来执行hook操作。

现在我们在随便输入个激活码:

【小记】某鸡模拟器 IOS 逆向分析破解思路

【小记】某鸡模拟器 IOS 逆向分析破解思路

可以看到,激活请求的响应已经替换成我们定义的值了。

【小记】某鸡模拟器 IOS 逆向分析破解思路

激活弹窗已经不见了。哈哈

【小记】某鸡模拟器 IOS 逆向分析破解思路

点到游戏分类来选择一个喜欢的游戏平台,这里我就选择GBA,小时候钻在被窝玩的口袋妖怪还历历在目呢

【小记】某鸡模拟器 IOS 逆向分析破解思路

点击搜索资源之后发现了一个异常,那就是白屏了:

【小记】某鸡模拟器 IOS 逆向分析破解思路

应该是数据包返回的不对吧,来看看mitm抓到的包:

【小记】某鸡模拟器 IOS 逆向分析破解思路

【小记】某鸡模拟器 IOS 逆向分析破解思路

提示这个玩意,皱了三秒钟眉头。立马掏出安卓手机打开app进行抓包:

【小记】某鸡模拟器 IOS 逆向分析破解思路

【小记】某鸡模拟器 IOS 逆向分析破解思路

这是安卓上的响应。

【小记】某鸡模拟器 IOS 逆向分析破解思路

这是安卓上的资源弹窗,可以清晰的看到正常的下载流程。点击下载后就开始下载了,没有额外的动作。很棒

【小记】某鸡模拟器 IOS 逆向分析破解思路

经过排查鉴定,发现了ticket、clientparams(可以固定)必须要携带,gameid是游戏id。也就是说只需要在触发action=downfile 时候,我们把必须携带的参数加上,那么服务器就可以返回正确的响应给我们。那么继续编写一个hook函数,由于是在请求时候,那么hook函数名为 request :

【小记】某鸡模拟器 IOS 逆向分析破解思路

编写好后,我们保存下脚本。由于mitm的脚本加载机制是热更新的。所以一般情况下不需要终止掉重新执行脚本。

最后,我们再来看下成果:

【小记】某鸡模拟器 IOS 逆向分析破解思路

【小记】某鸡模拟器 IOS 逆向分析破解思路

【小记】某鸡模拟器 IOS 逆向分析破解思路

让我们点击启动按钮:

【小记】某鸡模拟器 IOS 逆向分析破解思路

完结&撒花 🎉


整个过程没有什么大风大浪出现,但是真正乐趣有意义的地方在于摸索和发现,以及取得成果时的满足感。

这些替换请求以及响应的操作步骤,其实有兴趣的可以自己制作成一个代理节点,以代理的形式存在。之后每次玩之前打开一下全局代理(避免漏掉包)。这样做就不用每次开电脑了跑mitm脚本了!这部分不是重点,我就不在这说了。

还是那句话:有需要完整脚本的,可以公众号内私信我~

如果本小记有帮助到你,不妨赏一杯咖啡钱,写了这么多字手也挺酸的呢

下期再见~

原文始发于微信公众号(随心记事):【小记】某鸡模拟器 IOS 逆向分析破解思路

版权声明:admin 发表于 2024年1月29日 上午4:03。
转载请注明:【小记】某鸡模拟器 IOS 逆向分析破解思路 | CTF导航

相关文章