Chrome远程调试WebView

本文介绍了如何通过Chrome远程调试WebView来分析加密参数。当遇到一个使用WebView并有加密数据的安卓APP时,通过检查User-Agent和使用uiautomatorviewer确认其为H5APP。在满足Chrome版本和WebView调试条件后,通过远程调试抓取到appOnlyEncrypt参数,利用开发者工具进行JS调试,找到加密值的来源,最终揭示加密过程。
摘要由CSDN通过智能技术生成

今天,学员给了我一个app案例,那就写一篇文章来研究一下吧。至于是哪个app这里就不说了。
以下是他用 fiddler 抓到的包。
在这里插入图片描述
这里提交的有一个 appOnlyEncrypt 参数是加密的。
然后他开始一顿操作猛如虎:
先跑一遍我课程里讲的xposed自吐算法插件,毫无所获。
那咋办呢?手动逆向吧。又是脱壳,又是反编译,各种搜索,又无所获。

其实这个app确实有壳,脱壳这里就不说了,这里也不需要脱壳。
我们现在的安卓app有很多种类型。比如:

  1. 用Java开发的
  2. 内嵌webview组件,界面和业务逻辑代码都是JS
  3. Unity3D、cocox2d开发的游戏app
  4. flutter开发的
  5. React
  6. 。。。。。。

而要确定一个app是不是H5的app,也很容易。比如这个app

  1. 提交的数据包中,有一个User-Agent协议头,提交的这个值,明显是一个类似浏览器的协议头
    学员小声哔哔:这也没多明显呀。。。
    好吧,那上第二种方法
  2. 安卓SDK中,SDK\tools\bin 这个文件夹下面有一个 uiautomatorviewer.bat ,用它可以来检测一个app界面里面用了什么组件
    在这里插入图片描述
    看到webView组件了,那么很明显这个是一个H5APP了。也就是人家的业务逻辑都是JS写的。那么jadx或者jeb反编译的dex代码里面,当然搜不到你想要的东西。

那怎么办呢?接下去就是我们这篇文章的正题了。
webview远程调试需要满足以下条件:

  1. 电脑端有一个Chrome浏览器,版本32以上
  2. 手机 / 模拟器端使用的是原生的WebView,并且版本比电脑端的低
  3. app中的WebView要设置支持调试
    一般情况下, app会把 WebView设置成不可调试,这个时候需要找到相应的限制点,去hook掉
    WebView这个类,有个setWebContentsDebuggingEnabled方法,这个方法传 true 进去的时候,就是可调试的。而在hook的时候,还要考虑加固,因为加固的app在hook的时候,需要对ClassLoader处理一下。这里不展开讲这个,因为这个app没有限制调试。

首先,我们拿模拟器中的浏览器来测试一下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值