apicloud加密APP的代码破解过程记录
最近研究大数据营销系统,就是所谓的采集客户资料,方便销售团队进行电话销售的软件,有一款APP支持不少的采集网站,就想看看它的采集功能是直接在APP中实现的,还是在云端采集再下载,解答一些自己的疑问,心想研究APP总比研究WINFORM方便,该APP的界面感觉像是APICLOUD+AUI来做的,解包APK果然发现了widgt目录里的网页文件,但代码还是加密了,之前也研究过APICLOUD的解密,受限于自己的理解、技术能力,没能成功。
这次又更加仔细的阅读了APICloud解密本地资源到逆向APP算法到通用资源解密这篇文章,作者大神先后用到了UI Automator Viewer查看界面结构、远程调试,JEB逆向分析APP代码,Xposed Hook拦截出数据,获取解密后的代码。作者提供了一个通用的解密方法并提供了一个APK,这次终于明白这是一个Xposed的模块,所以要先在手机安装Xposed,但该神器需要手机root权限,所以想到用模拟器来实验下,一系列操作后成功的获取了源码。
本人记忆力特别差,写作是对抗记忆与岁月的有力工具,将过程详细记录,以备后需。
- 安装夜神模拟器
- 开启模拟器,并安装下载的Xposed installer
- APICLOUD解密的xposed模块安装,在Xposed中激活模块,重启模拟器(我是直接用重新安装xposed的方式重启)
- 安装要破解的APP并运行,从手机文件管理器查看/sdcard/uzmap_dump目录,将导出的文件复制到主机电脑(需不需要点击解密模块中的RUN按钮,我也没搞明白)
要破解的APP要先输入邀请码,模拟器中无法输入的问题,安装了一个讯飞输入法可以了
看到解密后的HTML和JS文件,分析之,代码逻辑还是比较难懂,用FIDDER代理模拟器的请求,截获HTTP访问
有从云端下载采集规则代码的程序,接口有验证机制,访问到的BASE64代码解密后还是乱码,是直接append追加到body中的,难道也是用的apicloud的加密方式,从开发者自己服务器返回的数据不太可能用apicloud的加密,应该是自己实现的,从破解的代码里并没有找到这个解密,代码实在太乱只看到有不少读本地存储的代码,于是找APP的本地LocalStorage的存储位置,终于在
/data/data/com.xxx.xxx/shared_prefs\UzLocalStorage.xml 和 /data/data/com.xxx.xxx/databases/appdb中通过搜索相关的请求网址关键字,看到如下代码(需要先html解码并格式化):
再写段js,将之前的加密数据代入这个解密过程,成功获取到了云端的加密规则,看来是如我所想没有API获取数据方式的采集,是通过云端来获取页面的采集规则,直接对页面上的内容进行解析获取数据。