-
-
[原创]解密SuperWebview的一种另类方法
-
发表于:
2017-6-21 18:23
8213
-
[原创]解密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
上个图,一目了然:
“全包加密
* 网页全包加密:对网页中全包的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期)