## 准备工作 - 建议使用支持`New XSharedPreferences`特性的`Xposed`框架,如`LSPosed`、`EdXposed`等,否则模块不一定可以正常工作 > 对于虚拟框架如`太极`、`LSPatch`等,因本模块的核心功能基于用户存储的规则配置,各虚拟框架由于无系统层级权限,无法给与目标app读取模块配置文件的权限,所以核心功能在考虑与实体框架兼容性的情况下无法正常实现。 - 建议使用`LSPosed`以确保本模块的稳定性,本模块只在`LSPosed`框架环境下进行了功能性测试,本教程亦采用`LSPosed`进行说明,其他框架的使用者请自行转换相关操作为对应框架的操作 - 建议在**良好的网络环境**下进行:检查更新、使用云端规则、下载资源,*中国大陆*、*北朝鲜*等无法保证 GitHub 连接稳定性的地区可能会导致这些功能失效 ## 开始 Hook 目标 App 1. 在`LSPosed`中开启本模块,并勾选目标 App > 不需要勾选`Android System WebView`,这是没有效果的 2. 打开本模块,并确保主界面状态显示为绿色的`已启用` 3. 在`Hook 资源管理`中下载必要的资源,否则后续基于这些资源的功能将无法生效 4. 在`Hook 规则管理`中找到目标 App,并配置其 Hook 规则 1. 如果目标 App 的目标版本的 Hook 规则已被收录在云端规则库,可点击`添加规则`按钮,在`规则编辑器`界面的右上角使用`云端规则`功能导入对应规则并保存 > 如有多条规则请重复此步骤 2. 如果目标 App 的其他版本的 Hook 规则已被收录在云端规则库,可尝试使用其他版本的 Hook 规则进行 Hook > 但不保证可用性 3. 如果目标 App 使用 WebView 引擎时未进行名称混淆、逻辑重写等操作,可尝试使用右上角的`预置规则`功能导入目标 WebView 引擎的 Hook 规则 > 如不生效请确认目标 WebView 引擎是否正确、是否有名称混淆、逻辑重写等操作 4. 如果上述方法都无法成功 Hook,请选择以下其中一种方式: 1. 前往`捐赠`并留言目标 App 的名称和版本,金额随意,作者将抽空适配并将其特殊规则收录进云端规则库 > 如需及时了解收录情况,可凭捐赠截图发送邮件至`wkr@wkr.moe`,作者将在收录后第一时间回复邮件告知 2. 前往**本项目仓库**或**规则仓库**提交`issue`,作者将抽空适配并将其特殊规则收录进云端规则库,并第一时间回复`issue`告知 3. 自行寻找目标 App 的相关 Hook 点,并点击`添加规则`按钮,选择合适的 Hook 方法并填入 Hook 点,保存即可 > 如需多条规则请重复此步骤 > 您可以将您的规则提交到**规则仓库**以供他人使用,具体提交方式请看**规则仓库**首页 5. 完全结束目标 App 的进程并重新打开使用了 WebView 的页面,验证规则生效情况 6. 如需反馈 bug,请前往**本项目仓库**提交`issue`,务必描述清楚 bug 的触发条件 如果有报错,请附带上使用`dev`版本复现一遍后产生的`Xposed`日志 ## 一些使用条件 1. 如需开启远程调试,请确保以下条件满足其中之一: 1. 对于 **WebView** 、 **TBS X5** ,至少有一个`hookWebView`规则生效。 2. 对于 **UC U4** ,至少有一个`replaceNebulaUCSDK`规则生效,已开启`UC 调试内核`注入,且选择版本与目标页面所用的内核版本一致。 3. 对于 **CrossWalk** ,至少有一个`hookCrossWalk`规则生效。 2. 如需注入`vConsole`,请确保以下条件满足所有: 1. 至少有一个`hookWebViewClient`规则生效。 2. 如果目标页面未开启`javascript 执行`功能,请确保 **#1 条件(远程调试)** 满足。 3. 已开启`vConsole`注入,且选择版本支持目标页面所用的内核版本。 4. 目标页面使用了`WebViewClient`接口。 ## Q&A - Q: 为什么对`微信`的 Hook 没有生效 A: 因为微信有名称混淆且每个版本几乎都有 WebView 相关代码的修改,所以 Hook 点可能失效,解决方法请看上方`开始 Hook 目标 App`段落