首页
社区
课程
招聘
[原创]Wechat H5 DevTools
发表于: 1小时前 77

[原创]Wechat H5 DevTools

1小时前
77

环境:Android Wechat 8.0.69
目标:让 chrome://inspect 能看到并调试微信内打开的 H5 网页 (真实 DOM / Console / Network / 断点), 不包括小程序

微信有两套浏览器内核

微信打开网页不是用一个固定的浏览器,而是在 XWeb 框架下可选多个内核。本文只关心两个:

Pinus 是腾讯基于 Chromium 自研裁剪的浏览器内核(源码路径里叫 weblayer,基于 Chrome 116),
libxwebcore.so(135MB)的形式打包在微信里,类名 com.tencent.xweb.pinus.sdk.WebView,
内核类型枚举值 WV_KIND_PINUS

它的调试不走标准通道:Pinus 不开标准的 webview_devtools_remote 调试端口,而是走微信
自己的私有远程调试(往 xweb.weixin.qq.com 拨 WebSocket 隧道),chrome 连不上

就是 Android 系统自带的 WebView(本机是 libmonochrome_64.so,171MB,Chrome 130),
内核类型 WV_KIND_SYS。它是标准 Chromium,开启调试后会 bind 标准的
webview_devtools_remote_<pid> 端口,chrome://inspect 直接就能连

调用 android.webkit.WebView.setWebContentsDebuggingEnabled(true) 想开调试但因为渲染页面的是 Pinus,开调试端口的却是系统 WebView。所以 chrome://inspect 里能看到"远程浏览器",却没有可点的 page。

强制微信用系统 WebView 渲染 H5 + 开启系统 WebView 调试。 setWebContentsDebuggingEnabled(true) 只对 系统 WebView 那套生效

代码里直接读出三点:

串起来:往 xweb_debugHardCodeWebViewmm = WV_KIND_SYSu0.c("mm") 返回 SYS → H0 采用、返回 SYS → I0/J0 写进 WebView.m → 系统内核渲染、标准调试端口有页面。

核心前提:hookDevTools 只要保证 WebView.H0首次点开 H5 网页之前被 hook 住即可。

注入进程:UI 进程 com.tencent.mm(无后缀)。它是最终渲染 H5、H0 选择内核的进程。

完整流程:

Native 模块:

libxwebcore.so Pinus 私有调试函数(libxwebcore.so.i64):

提取 libxwebcore.so:解 split_delivery.config.arm64_v8a.apk → 取 libxwebfullpack.so
(是个 zip)→ 再解出 libxwebcore.so
提取 libmonochrome_64.so:从 com.google.android.trichromelibrary_*base.apk
lib/arm64-v8a/libmonochrome_64.so

符号 作用
com.tencent.xweb.f1 内核类型枚举 (WV_KIND_*)
com.tencent.xweb.WebView.H0(f1, String) 内核决策入口 (getPreferedWebviewType)
com.tencent.xweb.WebView.m 缓存已决策内核的静态字段
com.tencent.xweb.u0.c(String) 从 xweb_debug SP 读 HardCodeWebView
br5.z3.f() 打开 SharedPreferences “xweb_debug”
com.tencent.xweb.pinus.sdk.WebView Pinus 内核 WebView

[招生]科锐逆向工程师培训(2026年7月3日实地,远程教学同时开班, 第56期)!

收藏
免费 3
打赏
分享
最新回复 (1)
雪    币: 5
活跃值: (4976)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
pc端也可以这么用吗
19分钟前
0
游客
登录 | 注册 方可回帖
返回