首页
社区
课程
招聘
[原创]解密SuperWebview的一种另类方法
发表于: 2017-6-21 18:23 8213

[原创]解密SuperWebview的一种另类方法

2017-6-21 18:23
8213


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


上个图,一目了然:


全包加密

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

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

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

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

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


使用SuperWebview,安卓app基本上就是框架,一般的核心代码都放在web中。最近遇到一个灰色的软件,需要利用其中的一些东西。经过大半个星期的逆向,最终确定核心代码在web里。


如图:云端加密,本地运行时解密


如图:对于一个web app来说,这就是核心代码


* 目标安卓app(最好没有加固,有加固的需要脱壳。vmp的搞不定。)

* 一台root的手机

* 安装xposed框架

* 安卓开发环境(Android Studio)


由于SuperWebview要兼容原生的Webview(或者说由其派生而来),所以这决定了web的代码必须要符合规范,即:必须是能让浏览器引擎识别的有效代码。很明白,在引擎中执行的都是明文。所以一下就找到一个核心点:怎么样从Webview中dump出代码。不论百度还是google都能找到方法。可以先看看这篇博客

简单来说有4步:

1. 开启SuperWebview/Webview的JavaScript功能

2. 自定义本地JavaScript的接口

3. 向网页中添加自定义接口

4. 调用js,实现dump网页


* 开启JavaScript支持功能

一般来说,使用SuperWebview的app有99%的都开启了这个功能的。可以使用jadx打开app,全包搜索setJavaScriptEnabled函数,如果不放心,可以在找到的地方通过xposed再调用一次。


* 自定义JavaScript接口

注意添加@JavascriptInterface声明


* 向网页中添加自定义接口

这一步很关键,需要额外说明一下。先看看addJavascriptInterface函数的注释,其中有这样一句:

Note that injected objects will not appear in JavaScript until the page is next (re)loaded.


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 1
支持
分享
最新回复 (2)
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
可以把你邮箱私信给我吗?
2017-12-1 12:10
0
雪    币: 102
活跃值: (2050)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
mark,当时搞一个WebView填表就是用的这个套路,先通过js拿到html代码,然后再在回调函数里操作。
2017-12-2 17:54
0
游客
登录 | 注册 方可回帖
返回
//