浏览器太低级了

守口如瓶,笑脸相迎。叩首问路,码梦为生。 --Vace

记一次ipad绘本应用破解过程

2021/11/17    其他


缘由

儿子去年两岁多,开始喜欢读绘本,也看了很多实体书,当时有一个闲置的16Gipad,于是下载了一个绘本app,试读几本还不错,于是花了我168大洋买了一年的服务(PS:当时以为是永久阅读包,还送了一些实体书籍

开始时使用频繁,但书本更新频率较低,现在为保护视力,大概也就一周看一两本,前段时间发现vip已经过期了,但是孩子还是想看,本想着已经下载到本地的应该能继续看,也就够了,没想到只剩下一点点免费书籍可以看了,看了几周就厌倦了,告诉我想看别的书,我寻思着去咸鱼找找有没有优惠或者永久阅读包,毕竟100多,只看十几次挺浪费的,找了几天没有找到,今天晚上得空,打算看看这个绘本是怎么制作的。

开始抓包

  1. 使用Charles开始抓包,YYDS。

20211117004640-2021-11-17

ipad中安装根证书出现一些小问题,一直显示“写出失败”,后来将根证书导出为cer格式,上传到服务器,ipad使用safair成功导入。

  1. 设置ipad代理

找到对应Wifi网络,设置网络代理(服务器、端口)到我的笔记本电脑中,设置好后,Charles连接成功。

20211117005243-2021-11-17

  1. 打开ipad应用开始抓包

20211117005557-2021-11-17

从接口中抓取到vip_status,信息,猜测vip_type表示vip类型,expire_time表示过期时间,看了下日期,是可以对应上的。

着手破解

从抓包信息中看,我只需要修改接口中的vip_statusexpire_time就行了,于是尝试劫持请求到自定义服务接口,并篡改结果。

20211117005821-2021-11-17

20211117010125-2021-11-17

20211117014934-2021-11-17

破解失败

转发修改了多个接口,修改了对应的用户状态,但在pad端均未做到破解效果,我猜测是这方面的数据有一份加密对比。

20211117010312-2021-11-17

如图,返回的结果中有一组_s的json数据,看似是base64加密的,尝试了多种解密方法均以失败告终。

实施方案2

方案1已确定行不通,遂放弃,在pad端中发现很多免费绘本,准备实施方案2,劫持绘本接口,将绘本改为免费绘本,就可以免费阅读啦,过程同上。

20211117010602-2021-11-17

虽然界面UI修改为免费了,但是在看书的过程中,还是会动态对比用户状态,看几页就不能看了。

实施方案3

在方案2中,发现绘本均是zip的包体,如果我下载这些包体,重新打包,或者说写个程序运行这些包体,相当于做个简易绘本读取软件不就不用破解了!

20211117010949-2021-11-17

看结构是cocos的项目文件,里面有场景画面和音频素材,但是、但是有密钥加密,无法直接预览,要把这个运行起来十天半个月都不一定能搞定,放弃了。

实施方案4

观察到一个接口,是从服务器获取当前时间的,突发奇想,以前玩手机游戏,会把系统时间改掉,在游戏里面提前领取奖励,不知道在这里是否行得通

20211117011337-2021-11-17

如上,直接把现在的时间,改为我到期日期的前段时间,这次竟然成功了!!!!!!!

完美方案

没想到最终的解决方案如此简单,这里还有个体验问题,不可能让孩子每次看绘本,我都得抓包、转发这样处理,太麻烦了。这个绘本是支持离线阅读的,最终我的方案是,在家庭网络的hosts里面转发授时接口,这个接口会返回一个虚假的时间,同时把ipad的系统时间改为我的会员日期之前,最终的效果是大概每年我调整一下ipad的时间就可以了,并且小家伙只要在家庭网络下,都可以看以前下载过的绘本。

终极效果:

20211117012043-2021-11-17

留住了美好的虚拟时间,可现实的时间永远在向前,希望你永远开心快乐,我的崽。

评论加载中...