APICloud 从解密本地资源到逆向算法到通用解密

APICloud 从解密本地资源到逆向算法到通用解密

前言:昨天下午有群友问这个用 HTML 写的 APP 怎么逆向

1.png

当时就认出来了这是 APICloud(https://www.apicloud.com) 家的产品,网页转 APP,网页资源文件加密储存在本地 看下图:

2.png


3.png


下面开始分析:


1. 既然是网页实现就少不用 WEBVIEW X5 之类的框架来加载呈现 先看看界面的结构

5.png


是一个 WebView 控件,顺手就打开远程调试:


6.png

很遗憾,在 WebView Debug = true 的情况下没有接入端口,只能从源代码分析了.


2. APP 并没有壳,直接 JEB 打开

7.png

结构也很简单,厂家的 SDK 占了大部分内容(因为是网页开发 APP,要逻辑都在 JS)

先思考 APP 对资源的加载流程

可能为:

1)WEBVIEW - > 加载页面 -> 拦截/查找本地文件 有 -> 解密/写回数据

2)WEBVIEW - > 加载页面 -> 拦截/查找本地文件 无 -> 请求网络文件


这里有个共同的点都是需要 拦截,而 WebView 只有一个实现这个功能的接口:WebViewClient.shouldInterceptRequest


下面是摘抄博客对 API 的介绍:

8.png

2.1 在 JEB 里面搜索这个方法:

下图:

9.png


只有这个地方有实现.继续往下看逻辑

a.d -> z.a ->

10.png

获取 URL 的文件后缀.

a.e -> z.d -> 

11.png

12.png


判断是不是需要管理的 URL

This.b

this.a

分别处理俩种情况的文件:

13.png


14.png


到了这里 SDK 接管资源的痕迹就很明显了,再往下我相信可以找到怎么加载&解密文件但是我的目的只是 dump 出原来的明文资源就好,到这里就可以停止了


2.2 关注 new i(v1, new c(v2, v0)); 这行点进去看下:

是 WebResourceResponse(String mimeType, String encoding,InputStream data) 的实现

再往下就是 WebView 内部了,SDK 也没法做什么改变了,相信 InputStream 就是标准的数据了,从 new c(v2, v0) 入手用 Xposed Hook 出数据看一下.

16.png

运行 APP,查看 Logcat

17.png

成功….

原来:

18.png

DUMP:

19.png


3. 解密 APP 

通讯数据抓包看下:

20.png

双向加密:

我们从 DUMP 出来的资源中搜索 “/api.php”

21.png

顺路发现了可能用来加解密的可疑算法.. 

来试试解请求:

22.png

解返回:

23.png

成功:

不得不说通讯用的加密算法就好像是路边捡回来的.


4. 制作通用工具

从前面的分析可以看出,SDK 是混淆过的

25.png

上面的 HOOK 只能针对某一个 APP,换个 APP 又得重新分析,如果 APP 加了壳那还得脱壳才能分析


下面给出通用的 DUMP 且无视加壳的代码(我这只是其中一种,还有很多种写法)加壳&多 DEX 注意处理 attach

附件下载

回复列表



回复操作

正在加载验证码......

请先拖动验证码到相应位置

发布时间:2019-02-21 16:36:36

修改时间:2019-02-21 16:36:36

查看次数:3625

评论次数:9