记一次讯飞办公本X2的破解过程
前情提要
这些天靠着破解科大讯飞的电子书R1赚了不少的钱,但是新问题随之而出:出现了一些客户,他们手持科大讯飞的办公本,也希望能够得到破解。苦于没有机器,没有测试的机会,虽然官网可以下载到OTA包提取软件,但是还是做罢。
最后在淘宝遇到一个手持办公本的兄弟,表示有兴趣参与到研究当中,即使冒着80块钱打水漂的风险也奋不顾身,在他的感召和帮助下,顺利完成了此次破解。本文撰写的目的首先是感谢这位兄弟,其次就是补上上次就R1破解探索中缺乏的记录。
工具
dex tools也就是dex2jar 一定要下载新版,旧版没法解包较新API的程序
思路
因为R1破解过一次,思路还有目标就比较清晰了。不像R1破解的时候,那么明显的东西摆在眼前了,都还是没整成。
R1的破解主要依赖DNS劫持,把查询管理密码是否正确的请求劫持到我自己的服务器上,由我的服务器返回假的密码正确应答给电子书,从而达到破解的结果
我的推测就是:他们都是讯飞的产品,估计打开ADB的逻辑是差不多的。关键就在于,办公本进入管理密码输入Dialog的入口不是R1的那个
所以反编译我们需要完成两件事:
1.确定是否包含打开ADB的功能,逻辑是否相同?
2.Dialog的入口在哪?
开始破解
解包镜像
官网下载刷机包,然后提取其中system.transfer.list
system.dat.br
文件,brotli解压,sdat2img还原成img
用Linux(我是WSL),挂载,然后进去就可以看到里面的文件,然后找到app/priv-app文件夹中带有settings
名字的APP,提取
如果有几个都提取出来,我刚开始提取的时候只提取一个,结果搞了很久才发现是原生的那个设置(X2)
开始审查
Step1:确定Dialog存在
使用dex2jar得到jar包,然后使用JD-GUI查看代码,利用JD-GUI的搜索,锁定含有关键字的文件。
因为有了R1破解的经验,所以一切显得是那么水到渠成,得益于新笔记本的加成,破解效率都比以前快很多呢。
单刀直入,首先查找所有能查找的类型中还有admin
字眼的文件,这是讯飞官方维护的时候打开ADB的渠道
符合预期,找到了,确实打开ADB的逻辑存在且相同
Step2:找出入口
这个就简单得多了,还是在对整个jar搜索admin
的过程中,发现MainActivity.classes
当中也存在这个关键字
从文件名判断,入口锁定在了主页,可是主页这么多对象,在主页的什么对象里面呢
我们的目光锁定到了相关的代码行上
果然,做了点干扰,使用了人类读不懂的数字名字做干扰
但是没关系,很快发现他是个switch case结构
从case分支,我们很快发现了些东西
联系前后代码
我们发现,
2处的代码表明进入的条件是多次点击
3处就是跳转Dialog的代码
兄弟一番尝试之后,发现是设置界面的"设置"二字
成功,接下来就是R1的破解流程,劫持,安装E-ink launcher
后记
终究功力不够,无法从1处及附近代码推断出入口的准确位置。
讯飞X2采用MT6735,比起R1来说,他阉割的没有那么严重,保留了原生设置,另一方面他自身自带悬浮按钮,不需要像R1还有自己搞虚拟按键,从这个维度上来说,X2的破解其实比R1简单的多。本来想提取这个原生设置给R1的,但可惜的是X2是安卓9.0,R1是8.0而且R1是Allwinner B400,差异太多,作罢。悬浮按钮倒是挺有趣,有机会提取出来玩玩。后来按同样的方法看了看X1,也是相同的入口相同的逻辑。我的客户范围因此得以拓展,钞能力+1
本文也是博客第一篇像模像样的文章(第一次学习使用MarkDown语法,真的简单好用)