SuperWebview解密

APICloud – 解密SuperWebview

先了解一下什么是SuperWebview,然后进入主题。简介较多,可以往下滑直接进入解密主题

SuperWebview简介

​ SuperWebview 是APICloud 官方推出的另一项重量级API生态产品,以SDK方式提供,致力于提升和改善移动设备Webview体验差的整套解决方案,APP通过嵌入SuperWebview替代系统Webview,即可在Html5中使用APICloud平台现有的所有端API,以及包括增量更新、版本管理、数据云、推送云、统计分析、积木式模块化开发、所有已经聚合的开方平台服务等在内的云服务能力,增强用户体验,解决移动设备Webview使用过程中出现的兼容能力弱、加载速度慢、功能缺陷等任何问题,帮助开发者解决使用Webview过程中的所有痛点。

​ SuperWebview继承APICloud终端引擎的包括跨平台能力,模块扩展机制,生命周期管理,窗口系统,事件模型,APP级别的用户体验等在内的所有优秀能力,并且全面打通Html5与Android和iOS之间的交互,同步提供APICloud平台最新的API技术能力和服务,APICloud团队将保持对SuperWebview的持续更新和优化,兼容Html5的新特性,持续推出优质服务。

总结来说有三点:

  • 安卓原生Webview的扩展

  • 结合native app 和 web app

  • APICloud实现安卓框架,自己开发web

在这里插入图片描述

SuperWebview的安全措施-- 全包加密

  • 网页全包加密:对网页中全包的html,css,javascript代码进行加密,加密后的代码都是不可读的,并且不能通过常用的格式化工具恢复。代码在运行前都是加密的,在运行时进行动态解密。

  • 一键加密、运行时解密 在开发过程中无需对代码做任何特殊处理,在云编译时选择代码加密即可。

  • 零修改、零影响 加密后不改变代码的大小,不影响运行效率。

  • 安全盒子 定义了一个安全盒子,在盒子内的代码按照加密和解密进行处理,其他代码不受影响。

  • 重新定义资源标准 对保护的代码进行统一资源管理,加速资源加载,加速代码运行。

以上内容摘自看雪论坛https://bbs.pediy.com/thread-218656.htm

解密

在我们抓包分析时,很多参数都需要通过分析app代码获取,比如 token 、sign,还有很多接口,在抓包时是获取不到的,又不能将全部功能点一个一个点一遍就需要反编译apk ,直接获取。

这次的样本使用SuperWebview对安卓app进行加密,核心代码也有可能会存放在本地web文件中

当然,在直接上手之前 还是要分析一下整个apk的结构和流程

我在刚开始拿到apk的时候还不了解SuperWebview ,先当作普通的加固app分析的,见招拆招

在真机上安装apk 打开闪退,那可能是有代理或vpn检测、xposed检测、root检测。

这里推荐mumu模拟器,很多模拟器检测遇到mumu就没有用武之地,照样正常打开使用。

我们看一下apk的文件结构,这种将web资源保存在本地,很明显是webService架构

在这里插入图片描述

使用jadx反编译classes.dex,在com下的app关键代码只有资源文件的调用吗,关键代码不在dex里,那就是app做了加固了,我刚开始误区以为是厂商自己做的加固

在这里插入图片描述

用pkid 查壳后也没有任何发现

在这里插入图片描述

通过解压软件打开apk ,查看一下资源文件里的html和lib下的so文件

在这里插入图片描述

在assets文件下,存在js、css、html资源, 这种将网页的资源文件存储在本地的方式,可以确定这是个WebService的框架,网页转app

Web Service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的交互操作的应用程序。

在这里插入图片描述

随便打开一个文件查看,发现都是加密状态,这个和之前遇到的lua 比较像, 资源文件都是加密的

在这里插入图片描述

之后查看了其他的一些文件,都是加密的

分析so文件,apk 只有一个so libsec.so

在这里插入图片描述

使用ida 打开后libsec.so文件, 查看一下流程和段结构

在这里插入图片描述在这里插入图片描述

so文件段结构正常,流程简单清晰明了,可以发现没有做任何安全防护,那so层就很容易分析了。

快捷键shift+F12 搜索字符串

科普一下:我们知道 JNI 分为 动态调试和动态调试,静态注册,每次调用native方法,都要去寻找,方法都是以Java+包名+类名+方法名这种结构,根据函数名建立起java方法与JNI函数的对应关系,这种方式简单明了,但是必须遵守注册规则,效率低,基本很少在app中遇到,而动态注册,是通过Registernatives方法手动完成native方法和so方法的绑定,通过函数映射表查找函数,因此运行效率要比静态注册高。方法一般可以通过分析Jni_onload 得到

先搜索 java_ 没有返回,那就没有使用JNI静态注册

在这里插入图片描述

然后在查看 jni_onload

在这里插入图片描述

跟进去,发现字符串也没加密,arm汇编也很清晰

在这里插入图片描述

先修改一下参数类型,ida 自己识别不出来,需要我们手工改一下,修改为正确的类型,JNI_onload 参数是JavaVM*

在这里插入图片描述

重新识别一下,得到了GetEnv

在这里插入图片描述

在修改一下GetEnv 的第一个参数,为JNIEnv * ,改完后就可以得到清晰的逻辑了

在这里插入图片描述

识别一下

在这里插入图片描述

识别后的结果和跳转地址都有了,根据刚才的介绍,我们知道函数的映射关系都在RegisterNatives, 通过off_8804 跳转

在这里插入图片描述

找到注册函数后,可以看到 JNI 的所有方法都在这块,分为三部分: 参数类型,方法地址和函数名

在这里插入图片描述

方法很清晰

在这里插入图片描述

接下来 就很容易了,找到so加载的地方,查看调用native的函数,frida hook 即可

参考: APICloud解密本地资源到逆向APP算法到通用资源解密

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

可能为:

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

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

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

在这里插入图片描述

参考: APICloud解密本地资源到逆向APP算法到通用资源解密

搜索 关键词 shouldinterceptResquest

在这里插入图片描述

跟进第一个,分析函数逻辑

在这里插入图片描述

在跟b.d(url) 进去查看

在这里插入图片描述

调用另一个方法,继续跟进去

在这里插入图片描述

然后根据函数名称可以猜出他是从url获取文件扩展名

返回shouldInterceptRequest 继续往下跟

在这里插入图片描述

对得到的后缀扩展名进行判断

在这里插入图片描述

这里的a 记录的是扩展名列表

在这里插入图片描述

继续往下跟

在这里插入图片描述

跟进去

在这里插入图片描述

获取文件路径,

在这里插入图片描述

到这里 发现已经开始做解密工作了

在这里插入图片描述

继续往下

在这里插入图片描述

基本到这里就分析出来了,下面就被SDK接管

在这里插入图片描述

从上一步 分析 下图位置,拿到结果 就可以dump出source了

在这里插入图片描述

这里用的构造函数,在frida hook 时 要用$init

在这里插入图片描述

编写hook 脚本

在这里插入图片描述

查看dump结果

在这里插入图片描述

通过adb pull 到本地

在这里插入图片描述

在和之前的对比

在这里插入图片描述

解密就结束了,下来就是愉快的抓包 找api 捡漏洞了 。


参考:

https://bbs.pediy.com/thread-218656.htm

https://docs.apicloud.com/Dev-Guide/SuperWebview-guide-for-android

https://bbs.pediy.com/thread-249457.htm


持续更新Android安全、web安全等原创文章,需要学习资料,技术交流可以关注我一起学习
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值