欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

[原创]iOS平台几个福利app的破解(Artibee/AcgArt、Acg Stay、Cosplay)

[原创]iOS平台几个福利app的破解(Artibee/AcgArt、Acg Stay、Cosplay)

0x00 写在最前

早在13年就购买了Acgart的正版授权,后来作者将acgart下架,重上了一款换皮应用Artibee,内购需要重新购买。

因为作者没有完善的老用户补偿方案,遂不再付费。前段时间分手之后,时间突然多出来许多,管不住双手的我总是要找点事情做。

于是乎,本着学习为主的精神,对几款福利软件动手做了破解。

0x01 Artibee(原Acgart)

按照惯例,将可执行文件拖进ida,应用停更的比较老,没有上最新的混淆手段,比较好分析。

Artibee只发布过free版本,需要内购升级成完全版才能保存图片和看高分辨率图片,因此第一步需要破解成完全版。

根据应用使用逻辑,在点击保存按钮时,会弹出需要内购完全版页面。在字符串中查找到showPurchaseController。


查看交叉引用的方法SlideshowViewController clickSaveButton


f5一下,很清晰的看到逻辑。点击保存按钮后,依次校验/Documents/db/目录下的两个sqlite文件。

sqlite文件的文件名是gtxpqmrldu和ygshvqrrgb输出的结果,长度为40位。

逻辑仅校验文件是否存在,而不校验文件内容,因此可以看做是伪装成sqlite的授权文件。


                         gtxpqmrldu


                          ygshvqrrgb

观察gtxpqmrldu和ygshvqrrgb的逻辑可知,输出均为openudid的变形,

首先将40位的udid在13位/20位的位置切割,前后部分调转顺序之后拼接;

然后做字符替换操作:一个是将a替换成7,4替换成m;另一个是将9替换成f。

替换操作使用了componentsSeparatedByString和componentsJoinedByString方法,前者为按参数分割并删除分隔符,

后者为连接字符串并设置参数为连接符,实际操作为替换字符串。

自行根据openudid生成相应的授权文件,既可破解Artibee的fullversion和使徒模式。

老版本的r18内容需要修改plist文件中的ispro值为true,新版经目测在init的时候检查了ispro的值,

建议顺手改一下这里。plist的位置为应用对应沙盒的\Library\Preferences\work.xukeliapp.artibee.plist。

顺便一提,不知道自己设备openudid的话,可以直接在上面提到的plist中找到。


破解效果见上图,内页图过于黄暴,不予展示。

0x02 ACG Stay & CosPlay

ACG Stay 和 CosPlay是iOS上另外两款非常实用的福利软件。目前均已下架,但是可以在pp助手上下载。

惯例拖进ida。因为这两款应用是同一作者,破解思路也完全一样,因此合并在一起。

找入手点,先将设备语言更改为英文。随意收藏几张图片后,提示需要vip才可以收藏14张以上的图片。


在function中搜索vip


猜想第二个函数是右图中弹窗的构造函数


点进去验证了我的猜测,确实如此。那第一个函数就是判断是否有vip授权的函数了么?


分析收藏按钮的具体实现代码,确实是通过检测isVipUser的值来确定是否可以收藏超过14张图片。继续分析isVipUser函数。


isVipUser函数的返回值实际上是isNoAdBought的返回值,继续跟进去


isNoAdBought是检测是否内购的具体功能函数,这里通过hook把isNoAdBought的返回值改为true解决问题。

有的同学可能会提问,为什么不直接修改isVipUser的返回值,而去修改isNoAdBought的返回值?

当然是因为isNoAdBought比isVipUser更底层,改了底层的返回,上层自然会随之更改,

而后从两者的交叉引用上也可以看得出还有更多的函数需要调用isNoAdBought的返回值。



这里改完,已经可以随意收藏图片了,不受免费用户的14张限制。但是依然不能解锁18x模式。

根据使用经验,一般福利软件是通过收藏,下载超过一定量的图片数量解锁福利功能,

当然也有的是检测安装天数,启动次数等,再此不一一列举。

巧合的是,之前观察isVipUser的交叉引用,其中有一个函数calcuPoints引起了我的注意。


函数逻辑十分清晰,如果购买授权,点数=点击广告次数*8+启动次数*7+收藏图片数量*4,

如果没有购买授权,则为收藏图片数*3+点击广告次数*2+启动次数*2。

当启动次数大于12次,且点数大于307时,开启福利。

为验证思路,往上跟两层,发现shouldShowHButton,很直白,也不用多说了,就是他。




将calcuPoints返回值改为true,测试ok。



HButton为调试模式开关。

0x03 独乐乐不如众乐乐

AcgStay&Cosplay解锁插件打包成了deb,越狱设备可以直接安装使用。


Artibee如果是越狱设备直接自行创建两个sqlite文件即可。

非越狱设备可以通过尝试恢复我提供的应用数据实现破解。


点击小三角,选择恢复应用数据


(支持iOS任意版本,包括iOS12.1.x)

iMazing为免费应用,恢复备份无需购买授权。百度搜到的第一个结果不是官网,官网https://imazing.com

deb插件和应用备份文件可从本文附件中下载。

0x04 写在最后

本文中所有应用均可从pp助手下载,如下架之前在App Store下载过的话也可以在App Store的已购应用中找到。

ps:手冲一时爽,一直手冲一直爽。

希望2019可以成功脱单,过上没有手冲的生活。


祝各位新的一年猪事顺利,性福美满。

上传的附件 patchAcgstayAndCosplay.deb
Artibee.imazingapp

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功