Android抓包指南②: DevTools+WebViewDebugHook调试第三方应用的WebView

DevTools

《Android抓包指南①: 使用Fiddler抓HTTP/HTTPS包》

上一章,我们使用Fiddler对应用抓HTTP/HTTPS包,并且解决了Android7.0及以上的抓不到包的问题。
本章,我们借助DevTools,同样可以实现对第三方应用内嵌的WebView与服务端的HTTP/HTTPS通信进行抓包分析,还可以调试页面Javascript,多种手段多管齐下,助力对第三方应用的逆向分析。

DevTools 原本的用途,是Google提供给Android开发者的一个调试工具,用于调试自己开发的APP内嵌的WebView中的内容,具体用法可以参考Google官方文档:
https://developers.google.com/web/tools/chrome-devtools/remote-debugging/
https://developers.google.com/web/tools/chrome-devtools/remote-debugging/webviews

将手机与电脑通过USB线连接,打开手机的USB调试功能,然后在电脑上打开Chrome浏览器,在地址栏输入

chrome://inspect

就可以看到连接的Android手机和打开的WebView页面,点击 [inspect] 就可以打开调试大门。
在这里插入图片描述在这里插入图片描述
和Chrome调试普通WEB页面没有什么太大区别,点击[刷新]就可以看到所有HTTP/HTTPS请求内容。除了可以实现抓包效果,还可以进一步分析它的AJAX请求是怎么构造的请求参数,从而自行编码模拟发送请求,从而实现一些 Interesting 的自动化效果,嘿嘿嘿。。。

WebViewDebugHook

但是这个调试方法有一个前提,就是APP自身必须调用WebView.setWebContentsDebuggingEnabled(true); 才会允许被DevTools调试,毕竟这是一个给开发者在开发阶段调试自身应用的功能,而不是提供给你窥探别人APP内容的工具,出于安全考虑,当然不可能随便调试别人的应用。但是,还记得我们之前在《Windows抓包指南①:Proxifier+Fiddler对第三方程序强制抓包》中说的吗?

有条件要上,没有条件创造条件也要上!

Root手机,安装Xposed框架,使用WebViewDebugHook模块干它

WebViewDebugHook项目源代码:https://github.com/feix760/WebViewDebugHook

其实也可以自行编写Xposed模块,这里毕竟很简单,只需要在目标APP进程中调用静态方法 WebView.setWebContentsDebuggingEnabled(true); 就打开了调试大门。当然,使用WebViewDebugHook的理由是懒惰,拿来就用。同时WebViewDebugHook针对腾讯的部分加壳做了处理,可用性更高。

Root和Xposed的重要性

最后,不得不说,Root和Xposed框架对Android应用逆向分析人员来说是非常重要的,强烈推荐Google亲儿子手机Nexus/Pixel等,方便Root,方便安装Xposed,甚至还可以自行编译Android AOSP烧写,想怎么改就怎么改,操作系统都在你的掌控之中,何况是跑在上面的应用呢。只要修改了系统API,想给程序返回什么结果,就返回什么结果,就算你APP检测Xposed都没用,你检测不到的,因为我根本没有安装Xposed,仅仅是修改了操作系统源代码而已。玩弄APP于股掌之间。

Let’s Go

最后晒一下我购入的Google亲儿子,老一代的Pixel,几百元而已,爱不释手:
在这里插入图片描述


本文由encoderlee发表于CSDN博客: https://blog.csdn.net/CharlesSimonyi/article/details/90518367 转载请注明出处

### 如何在PC端应用程序中使用WebView进行前端开发 #### 选择合适的WebView库 对于PC端的应用程序来说,开发者可以选择多种不同的WebView库来嵌入Web内容。例如,在Windows平台上,有Microsoft Edge WebView2[^1];而在跨平台应用方面,则可以考虑Electron框架或是Chromium Embedded Framework (CEF)[^2]。 #### 创建项目结构 为了更好地管理和维护代码,建议创建清晰合理的文件夹和文件布局。通常情况下,HTML/CSS/JavaScript等静态资源会被放置在一个特定目录下以便于通过WebView加载显示出来。 #### 加载本地或远程URL 一旦选择了适合的WebView组件之后,就可以设置其属性以指向想要展示的内容源地址。这既可以是一个位于服务器上的网站链接也可以是指向本机存储路径下的html文档。 ```javascript // 使用 Electron 框架作为例子 const { app, BrowserWindow } = require('electron') function createWindow () { const win = new BrowserWindow({ width: 800, height: 600, webPreferences: { nodeIntegration: true } }) // 加载本地 HTML 文件 win.loadFile('index.html') } app.whenReady().then(createWindow) ``` #### 实现双向通信机制 为了让前后端之间能够互相传递数据以及触发事件响应操作,还需要建立一套有效的消息传输协议。大多数现代WebView解决方案都提供了相应的API接口用于处理这类需求。 #### 调试与优化性能表现 如同移动设备上一样,在桌面级环境中同样需要注意对WebView内核版本的选择及其配置参数调整工作,从而确保良好的用户体验效果。此外,利用诸如Chrome DevTools这样的工具来进行抓包分析也是非常必要的举措之一。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值