欢迎来到 嗅灵易学

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

[原创]APICloud解密本地资源到逆向APP算法到通用资源解密

[原创]APICloud解密本地资源到逆向APP算法到通用资源解密

前言:

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

 

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



下面开始分析:

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


是一个WebView控件,

顺手就打开远程调试:


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

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


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

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

可能为:

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

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

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

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


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

下图:


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

a.d -> z.a -> 



获取URL的文件后缀.

a.e -> z.d ->


 

判断是不是需要管理的URL

This.b

this.a

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

 

到了这里 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出数据看一下.


运行APP,查看Logcat


成功….

原来:


DUMP:


3.      解密APP通讯数据

抓包看下:


双向加密:

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


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

解请求:


解返回:


成功:

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

4.      制作通用工具

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


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

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


加壳&多DEX注意处理attach



草樣年華

2019/02/16


上传的附件 APICloud 从解密本地资源到逆向APP算法到通用资源解密.pdf
1.apk
xptool3_uzmapDump_debug-1.0-20190303.apk

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

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

0 0 0 举报
复制成功