From 2b6177f19d4934c0ba7b68b0cf33001dcef171e0 Mon Sep 17 00:00:00 2001 From: Manus AI Date: Sun, 24 May 2026 09:17:52 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E6=94=B6=E7=BC=96=20hook=20bridge=20?= =?UTF-8?q?=C2=B7=20V5=E7=9F=A9=E9=98=B5=E6=8A=A5=E5=91=8A=E5=85=A5?= =?UTF-8?q?=E5=BA=93=20=C2=B7=20Obsidian=20=E5=9B=BE=E8=B0=B1=E9=85=8D?= =?UTF-8?q?=E8=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit wechat_hook_bridge.js 进 sdk/agent/hook;Graph 视图按目录着色与 CSS snippet 对齐。 Co-authored-by: Cursor --- .obsidian/graph.json | 55 ++ sdk/agent/hook/README.md | 1 + sdk/agent/hook/wechat_hook_bridge.js | 45 ++ ...信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145630.json | 388 ++++++++++++++ .../微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145630.md | 104 ++++ ...信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145731.json | 493 +++++++++++++++++ .../微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145731.md | 209 ++++++++ ...信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145800.json | 506 ++++++++++++++++++ .../微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145800.md | 220 ++++++++ ...信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145843.json | 506 ++++++++++++++++++ .../微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145843.md | 220 ++++++++ 11 files changed, 2747 insertions(+) create mode 100644 .obsidian/graph.json create mode 100644 sdk/agent/hook/wechat_hook_bridge.js create mode 100644 开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145630.json create mode 100644 开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145630.md create mode 100644 开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145731.json create mode 100644 开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145731.md create mode 100644 开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145800.json create mode 100644 开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145800.md create mode 100644 开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145843.json create mode 100644 开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145843.md diff --git a/.obsidian/graph.json b/.obsidian/graph.json new file mode 100644 index 0000000000..f31f0f88c2 --- /dev/null +++ b/.obsidian/graph.json @@ -0,0 +1,55 @@ +{ + "collapse-filter": false, + "search": "", + "showTags": false, + "showAttachments": true, + "hideUnresolved": false, + "showOrphans": false, + "collapse-color-groups": false, + "colorGroups": [ + { + "query": "path:开发文档/00-项目总览", + "color": { "a": 1, "rgb": 14010688 } + }, + { + "query": "path:开发文档/2、架构", + "color": { "a": 1, "rgb": 14010688 } + }, + { + "query": "path:开发文档/6、测试", + "color": { "a": 1, "rgb": 16338757 } + }, + { + "query": "path:开发文档/8、部署", + "color": { "a": 1, "rgb": 5606192 } + }, + { + "query": "path:开发文档/9、手册", + "color": { "a": 1, "rgb": 14010688 } + }, + { + "query": "path:开发文档/10、项目管理", + "color": { "a": 1, "rgb": 12976168 } + }, + { + "query": "path:机擎", + "color": { "a": 1, "rgb": 6954649 } + }, + { + "query": "path:资料", + "color": { "a": 1, "rgb": 11337755 } + } + ], + "collapse-display": true, + "showArrow": true, + "textFadeMultiplier": 0, + "nodeSizeMultiplier": 1, + "lineSizeMultiplier": 1, + "collapse-forces": true, + "centerStrength": 0.5, + "repelStrength": 10, + "linkStrength": 1, + "linkDistance": 200, + "scale": 0.9, + "close": false +} diff --git a/sdk/agent/hook/README.md b/sdk/agent/hook/README.md index 85dae61682..44bed2787a 100644 --- a/sdk/agent/hook/README.md +++ b/sdk/agent/hook/README.md @@ -5,6 +5,7 @@ ## 文件说明 - `wechat_hook_v1.js`:微信 Hook 初版脚本(含 RPC + 消息事件上报骨架) +- `wechat_hook_bridge.js`:安全桥接模板(ping / 连接状态 / 占位 RPC;可替换为完整 `wechat_hook_v*.js`) - `setup_redmi11.sh`:红米11 一键初始化脚本 ## 快速执行 diff --git a/sdk/agent/hook/wechat_hook_bridge.js b/sdk/agent/hook/wechat_hook_bridge.js new file mode 100644 index 0000000000..d69423fa67 --- /dev/null +++ b/sdk/agent/hook/wechat_hook_bridge.js @@ -0,0 +1,45 @@ +// 工作手机 SDK · 微信 Hook 桥接模板 +// 说明:这是安全桥接版,优先提供连通性、截图、UI 导航等通用方法。 +// 如果已有完整 wechat_hook_v3.js,可直接替换本文件;Python SDK 会兼容 camelCase/snake_case 调用。 +'use strict'; + +function ok(data) { return { ok: true, data: data || null, ts: Date.now() }; } +function fail(message) { return { ok: false, error: String(message), ts: Date.now() }; } + +function runJava(fn) { + let result; + Java.perform(function () { + try { result = fn(); } catch (e) { result = fail(e.stack || e.message || e); } + }); + return result; +} + +rpc.exports = { + ping: function () { return 'pong from wechat_hook_bridge'; }, + getConnectionStatus: function () { + return ok({ java_available: Java.available, process: Process.id, arch: Process.arch, platform: Process.platform }); + }, + takeScreenshot: function () { + // 截图建议在手机端通过 uiautomator/screencap 实现;Hook 层返回占位,Agent 可扩展真实文件路径。 + return ok({ mode: 'placeholder', message: '请在 mobile_agent 扩展 screencap -p 后回传文件路径' }); + }, + dumpUiTree: function () { return ok({ mode: 'placeholder', message: '建议通过 uiautomator dump 获取 UI XML' }); }, + goHome: function () { return ok({ action: 'goHome', message: '桥接模板未执行 UI 点击;请替换完整 Hook 后验证' }); }, + openContacts: function () { return ok({ action: 'openContacts', message: 'NOT_IMPLEMENTED_IN_TEMPLATE' }); }, + openChats: function () { return ok({ action: 'openChats', message: 'NOT_IMPLEMENTED_IN_TEMPLATE' }); }, + searchContact: function (keyword) { return ok({ keyword: keyword, message: 'NOT_IMPLEMENTED_IN_TEMPLATE' }); }, + getContacts: function () { return ok({ contacts: [], message: 'NOT_IMPLEMENTED_IN_TEMPLATE' }); }, + getContactProfile: function (wxid) { return ok({ wxid: wxid, message: 'NOT_IMPLEMENTED_IN_TEMPLATE' }); }, + addFriend: function (keyword) { return fail('危险动作未在模板中实现:addFriend ' + keyword); }, + acceptFriend: function (wxid) { return fail('危险动作未在模板中实现:acceptFriend ' + wxid); }, + sendTextMessage: function (to, text) { return fail('危险动作未在模板中实现:sendTextMessage ' + to); }, + sendImageMessage: function (to, path) { return fail('危险动作未在模板中实现:sendImageMessage ' + to); }, + getMessages: function (wxid) { return ok({ wxid: wxid, messages: [], message: 'NOT_IMPLEMENTED_IN_TEMPLATE' }); }, + openChat: function (wxid) { return ok({ wxid: wxid, message: 'NOT_IMPLEMENTED_IN_TEMPLATE' }); }, + createGroup: function (members) { return fail('危险动作未在模板中实现:createGroup'); }, + inviteGroupMember: function (chatroom, members) { return fail('危险动作未在模板中实现:inviteGroupMember'); }, + getGroupMembers: function (chatroom) { return ok({ chatroom: chatroom, members: [], message: 'NOT_IMPLEMENTED_IN_TEMPLATE' }); }, + browseChannels: function () { return ok({ message: 'NOT_IMPLEMENTED_IN_TEMPLATE' }); }, + addFavorite: function () { return fail('危险动作未在模板中实现:addFavorite'); }, + addCustomEmoji: function () { return fail('危险动作未在模板中实现:addCustomEmoji'); } +}; diff --git a/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145630.json b/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145630.json new file mode 100644 index 0000000000..6e8ae59332 --- /dev/null +++ b/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145630.json @@ -0,0 +1,388 @@ +{ + "summary": { + "wechat_hook_v2_real_exports_count": 21, + "ckb_extension_exports_count": 0, + "total_unique_camel": 21, + "v4_flagged_unconfirmed": 32, + "v4_false_negative": 2, + "v4_truly_missing": 30 + }, + "all_real_exports_camel": [ + "batchExecute", + "getContactsFull", + "getCurrentActivity", + "getGroupsFull", + "getHookStatus", + "getMessages", + "getProcessInfo", + "getRecentMessages", + "getScreenshotBase64", + "getVersionCompat", + "getWechatVersion", + "navigateToChat", + "navigateToMain", + "navigateToMoments", + "ping", + "searchMessages", + "sendMessage", + "simulateBack", + "simulateInput", + "simulateTap", + "takeScreenshot" + ], + "ckb_extension_exports": [], + "v4_unconfirmed_truth_check": [ + { + "idx": 1, + "action": "get_messages", + "mapped_rpc": "getMessages", + "category": "消息管理", + "title": "获取消息列表", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "simple_return", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 2, + "action": "send_message", + "mapped_rpc": "sendMessage", + "category": "消息管理", + "title": "批量发送消息(服务端逐条下发,间隔防风控,单条超时可控)", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "simple_return", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 4, + "action": "add_friend", + "mapped_rpc": "addFriend", + "category": "好友/联系人", + "title": "添加好友", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": false, + "implementation_kind": "missing", + "verdict": "V4 准确(确实缺失)" + }, + { + "idx": 5, + "action": "accept_friend", + "mapped_rpc": "acceptFriend", + "category": "好友/联系人", + "title": "通过好友请求", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": false, + "implementation_kind": "missing", + "verdict": "V4 准确(确实缺失)" + }, + { + "idx": 7, + "action": "delete_friend", + "mapped_rpc": "deleteFriend", + "category": "好友/联系人", + "title": "删除好友", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": false, + "implementation_kind": "missing", + "verdict": "V4 准确(确实缺失)" + }, + { + "idx": 9, + "action": "get_contacts", + "mapped_rpc": "getContacts", + "category": "好友/联系人", + "title": "获取联系人列表", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": false, + "implementation_kind": "missing", + "verdict": "V4 准确(确实缺失)" + }, + { + "idx": 10, + "action": "create_group", + "mapped_rpc": "createGroup", + "category": "群聊管理", + "title": "创建群聊", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": false, + "implementation_kind": "missing", + "verdict": "V4 准确(确实缺失)" + }, + { + "idx": 11, + "action": "invite_to_group", + "mapped_rpc": "inviteToGroup", + "category": "群聊管理", + "title": "邀请入群", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": false, + "implementation_kind": "missing", + "verdict": "V4 准确(确实缺失)" + }, + { + "idx": 12, + "action": "remove_from_group", + "mapped_rpc": "removeFromGroup", + "category": "群聊管理", + "title": "移出群聊", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": false, + "implementation_kind": "missing", + "verdict": "V4 准确(确实缺失)" + }, + { + "idx": 14, + "action": "set_group_name", + "mapped_rpc": "setGroupName", + "category": "群聊管理", + "title": "设置群名", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": false, + "implementation_kind": "missing", + "verdict": "V4 准确(确实缺失)" + }, + { + "idx": 15, + "action": "send_group_message", + "mapped_rpc": "sendGroupMessage", + "category": "消息管理", + "title": "发送群消息", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": false, + "implementation_kind": "missing", + "verdict": "V4 准确(确实缺失)" + }, + { + "idx": 17, + "action": "get_groups", + "mapped_rpc": "getGroups", + "category": "群聊管理", + "title": "获取群聊列表", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": false, + "implementation_kind": "missing", + "verdict": "V4 准确(确实缺失)" + }, + { + "idx": 18, + "action": "get_group_members", + "mapped_rpc": "getGroupMembers", + "category": "群聊管理", + "title": "获取群成员列表", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": false, + "implementation_kind": "missing", + "verdict": "V4 准确(确实缺失)" + }, + { + "idx": 25, + "action": "post_moments", + "mapped_rpc": "postMoments", + "category": "朋友圈管理", + "title": "发布朋友圈/瞬间(统一返回 200,业务失败用 success=false 表示,避免 502)", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": false, + "implementation_kind": "missing", + "verdict": "V4 准确(确实缺失)" + }, + { + "idx": 26, + "action": "like_moments", + "mapped_rpc": "likeMoments", + "category": "朋友圈管理", + "title": "点赞朋友圈", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": false, + "implementation_kind": "missing", + "verdict": "V4 准确(确实缺失)" + }, + { + "idx": 27, + "action": "comment_moments", + "mapped_rpc": "commentMoments", + "category": "朋友圈管理", + "title": "评论朋友圈", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": false, + "implementation_kind": "missing", + "verdict": "V4 准确(确实缺失)" + }, + { + "idx": 28, + "action": "get_moments", + "mapped_rpc": "getMoments", + "category": "朋友圈管理", + "title": "获取朋友圈列表", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": false, + "implementation_kind": "missing", + "verdict": "V4 准确(确实缺失)" + }, + { + "idx": 29, + "action": "forward_message", + "mapped_rpc": "forwardMessage", + "category": "消息管理", + "title": "转发消息", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": false, + "implementation_kind": "missing", + "verdict": "V4 准确(确实缺失)" + }, + { + "idx": 32, + "action": "get_profile", + "mapped_rpc": "getProfile", + "category": "资料/账号设置", + "title": "获取当前微信账号资料", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": false, + "implementation_kind": "missing", + "verdict": "V4 准确(确实缺失)" + }, + { + "idx": 38, + "action": "check_account_status", + "mapped_rpc": "checkAccountStatus", + "category": "账号安全/限制", + "title": "检查账号状态", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": false, + "implementation_kind": "missing", + "verdict": "V4 准确(确实缺失)" + }, + { + "idx": 43, + "action": "get_favorites", + "mapped_rpc": "getFavorites", + "category": "收藏/文件/表情", + "title": "获取收藏列表", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": false, + "implementation_kind": "missing", + "verdict": "V4 准确(确实缺失)" + }, + { + "idx": 49, + "action": "quit_group", + "mapped_rpc": "quitGroup", + "category": "群聊管理", + "title": "退出群聊", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": false, + "implementation_kind": "missing", + "verdict": "V4 准确(确实缺失)" + }, + { + "idx": 50, + "action": "delete_moments", + "mapped_rpc": "deleteMoments", + "category": "朋友圈管理", + "title": "删除朋友圈", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": false, + "implementation_kind": "missing", + "verdict": "V4 准确(确实缺失)" + }, + { + "idx": 51, + "action": "send_red_packet", + "mapped_rpc": "sendRedPacket", + "category": "支付/钱包", + "title": "发红包", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": false, + "implementation_kind": "missing", + "verdict": "V4 准确(确实缺失)" + }, + { + "idx": 53, + "action": "open_mini_program", + "mapped_rpc": "openMiniProgram", + "category": "扫码/小程序/公众号", + "title": "打开小程序", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": false, + "implementation_kind": "missing", + "verdict": "V4 准确(确实缺失)" + }, + { + "idx": 54, + "action": "follow_official_account", + "mapped_rpc": "followOfficialAccount", + "category": "扫码/小程序/公众号", + "title": "关注公众号", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": false, + "implementation_kind": "missing", + "verdict": "V4 准确(确实缺失)" + }, + { + "idx": 65, + "action": "scan_qr_code", + "mapped_rpc": "scanQrCode", + "category": "扫码/小程序/公众号", + "title": "扫描二维码", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": false, + "implementation_kind": "missing", + "verdict": "V4 准确(确实缺失)" + }, + { + "idx": 73, + "action": "receive_red_packet", + "mapped_rpc": "receiveRedPacket", + "category": "支付/钱包", + "title": "领取红包", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": false, + "implementation_kind": "missing", + "verdict": "V4 准确(确实缺失)" + }, + { + "idx": 81, + "action": "send_location", + "mapped_rpc": "sendLocation", + "category": "位置/通话", + "title": "发送位置", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": false, + "implementation_kind": "missing", + "verdict": "V4 准确(确实缺失)" + }, + { + "idx": 83, + "action": "send_emoji", + "mapped_rpc": "sendEmoji", + "category": "收藏/文件/表情", + "title": "发送表情", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": false, + "implementation_kind": "missing", + "verdict": "V4 准确(确实缺失)" + }, + { + "idx": 94, + "action": "logout", + "mapped_rpc": "logout", + "category": "设置管理", + "title": "退出登录", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": false, + "implementation_kind": "missing", + "verdict": "V4 准确(确实缺失)" + }, + { + "idx": 95, + "action": "switch_account", + "mapped_rpc": "switchAccount", + "category": "设置管理", + "title": "切换账号", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": false, + "implementation_kind": "missing", + "verdict": "V4 准确(确实缺失)" + } + ] +} \ No newline at end of file diff --git a/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145630.md b/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145630.md new file mode 100644 index 0000000000..397baab89c --- /dev/null +++ b/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145630.md @@ -0,0 +1,104 @@ +# 微信SDK真实控制接口矩阵 V5 — 检测脚本纠偏(追加版) + +生成时间:2026-05-23 14:56:30 + +## 一、结论速览 + +- `wechat_hook_v2.js` 真实 `rpc.exports` 顶层方法数:**21** +- `wechat_hook_ckb_patch.js` 扩展 RPC 数:**0** +- 去重总数(驼峰):**21** +- V4 矩阵标记「未确认导出」总条数:**32** +- 其中 **V4 误判(脚本 bug)**:**2** 条 +- 其中 **V4 准确(确实缺失)**:**30** 条 + +## 二、根因 + +`tools/build_wechat_sdk_true_control_matrix_v3_1858.py` 的 `parse_hook_exports()` 用了: + +```python +m = re.search(r'rpc\.exports\s*=\s*\{(?P.*?)}\s*;', text, flags=re.S) +``` + +`.*?` 是**非贪婪**匹配,遇到第一个内层 `};`(例如某个 export 内部 `return { success: false, ... };`)就停止, +导致只捕获到 `rpc.exports` 头部的极少数方法(如 `ping`、`getProcessInfo`、`getHookStatus`、`getWechatVersion`), +后面 17 个真实导出全部被误标「未确认导出」。 + +## 三、V4 「未确认导出」逐条核对 + +| # | action | RPC | 类目 | V4 声称 | 实际是否导出 | 实现类型 | 结论 | +|---|--------|-----|------|---------|--------------|----------|------| +| 1 | `get_messages` | `getMessages` | 消息管理 | 未确认导出 | ✅ 已导出 | simple_return | V4 误判(脚本 bug) | +| 2 | `send_message` | `sendMessage` | 消息管理 | 未确认导出 | ✅ 已导出 | simple_return | V4 误判(脚本 bug) | +| 4 | `add_friend` | `addFriend` | 好友/联系人 | 未确认导出 | ❌ 未导出 | missing | V4 准确(确实缺失) | +| 5 | `accept_friend` | `acceptFriend` | 好友/联系人 | 未确认导出 | ❌ 未导出 | missing | V4 准确(确实缺失) | +| 7 | `delete_friend` | `deleteFriend` | 好友/联系人 | 未确认导出 | ❌ 未导出 | missing | V4 准确(确实缺失) | +| 9 | `get_contacts` | `getContacts` | 好友/联系人 | 未确认导出 | ❌ 未导出 | missing | V4 准确(确实缺失) | +| 10 | `create_group` | `createGroup` | 群聊管理 | 未确认导出 | ❌ 未导出 | missing | V4 准确(确实缺失) | +| 11 | `invite_to_group` | `inviteToGroup` | 群聊管理 | 未确认导出 | ❌ 未导出 | missing | V4 准确(确实缺失) | +| 12 | `remove_from_group` | `removeFromGroup` | 群聊管理 | 未确认导出 | ❌ 未导出 | missing | V4 准确(确实缺失) | +| 14 | `set_group_name` | `setGroupName` | 群聊管理 | 未确认导出 | ❌ 未导出 | missing | V4 准确(确实缺失) | +| 15 | `send_group_message` | `sendGroupMessage` | 消息管理 | 未确认导出 | ❌ 未导出 | missing | V4 准确(确实缺失) | +| 17 | `get_groups` | `getGroups` | 群聊管理 | 未确认导出 | ❌ 未导出 | missing | V4 准确(确实缺失) | +| 18 | `get_group_members` | `getGroupMembers` | 群聊管理 | 未确认导出 | ❌ 未导出 | missing | V4 准确(确实缺失) | +| 25 | `post_moments` | `postMoments` | 朋友圈管理 | 未确认导出 | ❌ 未导出 | missing | V4 准确(确实缺失) | +| 26 | `like_moments` | `likeMoments` | 朋友圈管理 | 未确认导出 | ❌ 未导出 | missing | V4 准确(确实缺失) | +| 27 | `comment_moments` | `commentMoments` | 朋友圈管理 | 未确认导出 | ❌ 未导出 | missing | V4 准确(确实缺失) | +| 28 | `get_moments` | `getMoments` | 朋友圈管理 | 未确认导出 | ❌ 未导出 | missing | V4 准确(确实缺失) | +| 29 | `forward_message` | `forwardMessage` | 消息管理 | 未确认导出 | ❌ 未导出 | missing | V4 准确(确实缺失) | +| 32 | `get_profile` | `getProfile` | 资料/账号设置 | 未确认导出 | ❌ 未导出 | missing | V4 准确(确实缺失) | +| 38 | `check_account_status` | `checkAccountStatus` | 账号安全/限制 | 未确认导出 | ❌ 未导出 | missing | V4 准确(确实缺失) | +| 43 | `get_favorites` | `getFavorites` | 收藏/文件/表情 | 未确认导出 | ❌ 未导出 | missing | V4 准确(确实缺失) | +| 49 | `quit_group` | `quitGroup` | 群聊管理 | 未确认导出 | ❌ 未导出 | missing | V4 准确(确实缺失) | +| 50 | `delete_moments` | `deleteMoments` | 朋友圈管理 | 未确认导出 | ❌ 未导出 | missing | V4 准确(确实缺失) | +| 51 | `send_red_packet` | `sendRedPacket` | 支付/钱包 | 未确认导出 | ❌ 未导出 | missing | V4 准确(确实缺失) | +| 53 | `open_mini_program` | `openMiniProgram` | 扫码/小程序/公众号 | 未确认导出 | ❌ 未导出 | missing | V4 准确(确实缺失) | +| 54 | `follow_official_account` | `followOfficialAccount` | 扫码/小程序/公众号 | 未确认导出 | ❌ 未导出 | missing | V4 准确(确实缺失) | +| 65 | `scan_qr_code` | `scanQrCode` | 扫码/小程序/公众号 | 未确认导出 | ❌ 未导出 | missing | V4 准确(确实缺失) | +| 73 | `receive_red_packet` | `receiveRedPacket` | 支付/钱包 | 未确认导出 | ❌ 未导出 | missing | V4 准确(确实缺失) | +| 81 | `send_location` | `sendLocation` | 位置/通话 | 未确认导出 | ❌ 未导出 | missing | V4 准确(确实缺失) | +| 83 | `send_emoji` | `sendEmoji` | 收藏/文件/表情 | 未确认导出 | ❌ 未导出 | missing | V4 准确(确实缺失) | +| 94 | `logout` | `logout` | 设置管理 | 未确认导出 | ❌ 未导出 | missing | V4 准确(确实缺失) | +| 95 | `switch_account` | `switchAccount` | 设置管理 | 未确认导出 | ❌ 未导出 | missing | V4 准确(确实缺失) | + +## 四、修正建议 + +1. **修 V3 检测脚本**:用括号配平(栈式)方式提取 `rpc.exports = { ... };` 块, + 不要用非贪婪正则。本 V5 脚本的 `extract_rpc_exports_block` 可直接复用。 +2. **重跑 V4 矩阵**:基于修好的检测脚本重新生成 V4,把「未确认导出」改为真实状态: + `已导出+SQL/Java 实现`(A 类核心)vs `已导出但只做 Intent 占位`(B 类待补)。 +3. **实现类型细分**: + - `sql_or_java`:通过 `_execSQL` 或 `Java.performNow` 读 SQLite/调 Java 实现,可视为 A 类核心; + - `intent_only`:只发 `_intentAction` 广播,仍依赖 Agent 端 IntentReceiver/ADB 兜底,不算 Hook 直达; + - `mixed_sql_intent`:先尝试 SQL,再降级 Intent。 + +## 五、所有真实 RPC 导出(驼峰名,去重后字典序) + +``` +batchExecute +getContactsFull +getCurrentActivity +getGroupsFull +getHookStatus +getMessages +getProcessInfo +getRecentMessages +getScreenshotBase64 +getVersionCompat +getWechatVersion +navigateToChat +navigateToMain +navigateToMoments +ping +searchMessages +sendMessage +simulateBack +simulateInput +simulateTap +takeScreenshot +``` + +## 六、CKB 扩展 RPC + +``` + +``` \ No newline at end of file diff --git a/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145731.json b/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145731.json new file mode 100644 index 0000000000..08bd6e3bd5 --- /dev/null +++ b/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145731.json @@ -0,0 +1,493 @@ +{ + "summary": { + "wechat_hook_v2_real_exports_count": 126, + "ckb_extension_exports_count": 0, + "total_unique_camel": 126, + "v4_flagged_unconfirmed": 32, + "v4_false_negative": 32, + "v4_truly_missing": 0 + }, + "all_real_exports_camel": [ + "acceptFriend", + "addCustomEmoji", + "addFavorite", + "addFriend", + "addFriendByQr", + "addToFloat", + "autoRegister", + "batchExecute", + "bindPhone", + "browseChannels", + "changePassword", + "checkAccountStatus", + "checkLoginState", + "clearChatHistory", + "commentChannelVideo", + "commentMoments", + "createGroup", + "createLabel", + "deleteFavorite", + "deleteFriend", + "deleteLabel", + "deleteMoments", + "enableFingerprint", + "followChannel", + "followOfficialAccount", + "forwardMessage", + "forwardMultiple", + "generateGroupQrCode", + "generateMyQrCode", + "getConnectionStatus", + "getContactInfo", + "getContactStats", + "getContacts", + "getContactsByLabel", + "getContactsFull", + "getCurrentActivity", + "getDeviceInfo", + "getFavorites", + "getFriendRequests", + "getGroupInfo", + "getGroupMembers", + "getGroups", + "getGroupsFull", + "getHookStatus", + "getLabels", + "getLoginDevices", + "getMessages", + "getMoments", + "getNetworkInfo", + "getOfficialAccountArticles", + "getOfficialAccounts", + "getProcessInfo", + "getProfile", + "getRecentMessages", + "getRecentMiniPrograms", + "getScreenshotBase64", + "getSimPhone", + "getStorageInfo", + "getTransactionHistory", + "getVersionCompat", + "getWalletBalance", + "getWechatVersion", + "globalSearch", + "inviteToGroup", + "likeChannelVideo", + "likeMoments", + "loginByPassword", + "loginBySms", + "logout", + "navigateToChat", + "navigateToMain", + "navigateToMoments", + "openMiniProgram", + "pinChat", + "ping", + "postMoments", + "quitGroup", + "rawSql", + "receiveRedPacket", + "receiveTransfer", + "registerAccount", + "removeFromFloat", + "removeFromGroup", + "removeLoginDevice", + "revokeMessage", + "scanQrCode", + "searchContacts", + "searchMessages", + "sendCard", + "sendEmoji", + "sendFile", + "sendGroupMessage", + "sendImage", + "sendLink", + "sendLocation", + "sendMessage", + "sendRedPacket", + "sendTransfer", + "sendVideo", + "sendVoice", + "setAccountProtection", + "setAvatar", + "setChatBackground", + "setContactLabel", + "setDoNotDisturb", + "setFriendRemark", + "setGroupAnnouncement", + "setGroupName", + "setNickname", + "setNotification", + "setPrivacy", + "setRegion", + "setSex", + "setSignature", + "setWhatUp", + "shareChannelVideo", + "shareMiniProgram", + "simulateBack", + "simulateInput", + "simulateTap", + "switchAccount", + "takeScreenshot", + "unbindPhone", + "unblockSelf", + "unfollowChannel", + "unfollowOfficialAccount" + ], + "ckb_extension_exports": [], + "v4_unconfirmed_truth_check": [ + { + "idx": 1, + "action": "get_messages", + "mapped_rpc": "getMessages", + "category": "消息管理", + "title": "获取消息列表", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "simple_return", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 2, + "action": "send_message", + "mapped_rpc": "sendMessage", + "category": "消息管理", + "title": "批量发送消息(服务端逐条下发,间隔防风控,单条超时可控)", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "simple_return", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 4, + "action": "add_friend", + "mapped_rpc": "addFriend", + "category": "好友/联系人", + "title": "添加好友", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "simple_return", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 5, + "action": "accept_friend", + "mapped_rpc": "acceptFriend", + "category": "好友/联系人", + "title": "通过好友请求", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "simple_return", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 7, + "action": "delete_friend", + "mapped_rpc": "deleteFriend", + "category": "好友/联系人", + "title": "删除好友", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "simple_return", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 9, + "action": "get_contacts", + "mapped_rpc": "getContacts", + "category": "好友/联系人", + "title": "获取联系人列表", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "simple_return", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 10, + "action": "create_group", + "mapped_rpc": "createGroup", + "category": "群聊管理", + "title": "创建群聊", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "simple_return", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 11, + "action": "invite_to_group", + "mapped_rpc": "inviteToGroup", + "category": "群聊管理", + "title": "邀请入群", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "simple_return", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 12, + "action": "remove_from_group", + "mapped_rpc": "removeFromGroup", + "category": "群聊管理", + "title": "移出群聊", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "simple_return", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 14, + "action": "set_group_name", + "mapped_rpc": "setGroupName", + "category": "群聊管理", + "title": "设置群名", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "simple_return", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 15, + "action": "send_group_message", + "mapped_rpc": "sendGroupMessage", + "category": "消息管理", + "title": "发送群消息", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "simple_return", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 17, + "action": "get_groups", + "mapped_rpc": "getGroups", + "category": "群聊管理", + "title": "获取群聊列表", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "simple_return", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 18, + "action": "get_group_members", + "mapped_rpc": "getGroupMembers", + "category": "群聊管理", + "title": "获取群成员列表", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "simple_return", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 25, + "action": "post_moments", + "mapped_rpc": "postMoments", + "category": "朋友圈管理", + "title": "发布朋友圈/瞬间(统一返回 200,业务失败用 success=false 表示,避免 502)", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "simple_return", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 26, + "action": "like_moments", + "mapped_rpc": "likeMoments", + "category": "朋友圈管理", + "title": "点赞朋友圈", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "simple_return", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 27, + "action": "comment_moments", + "mapped_rpc": "commentMoments", + "category": "朋友圈管理", + "title": "评论朋友圈", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "simple_return", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 28, + "action": "get_moments", + "mapped_rpc": "getMoments", + "category": "朋友圈管理", + "title": "获取朋友圈列表", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "simple_return", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 29, + "action": "forward_message", + "mapped_rpc": "forwardMessage", + "category": "消息管理", + "title": "转发消息", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "intent_only", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 32, + "action": "get_profile", + "mapped_rpc": "getProfile", + "category": "资料/账号设置", + "title": "获取当前微信账号资料", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "sql_or_java", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 38, + "action": "check_account_status", + "mapped_rpc": "checkAccountStatus", + "category": "账号安全/限制", + "title": "检查账号状态", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "sql_or_java", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 43, + "action": "get_favorites", + "mapped_rpc": "getFavorites", + "category": "收藏/文件/表情", + "title": "获取收藏列表", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "sql_or_java", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 49, + "action": "quit_group", + "mapped_rpc": "quitGroup", + "category": "群聊管理", + "title": "退出群聊", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "simple_return", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 50, + "action": "delete_moments", + "mapped_rpc": "deleteMoments", + "category": "朋友圈管理", + "title": "删除朋友圈", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "intent_only", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 51, + "action": "send_red_packet", + "mapped_rpc": "sendRedPacket", + "category": "支付/钱包", + "title": "发红包", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "intent_only", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 53, + "action": "open_mini_program", + "mapped_rpc": "openMiniProgram", + "category": "扫码/小程序/公众号", + "title": "打开小程序", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "intent_only", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 54, + "action": "follow_official_account", + "mapped_rpc": "followOfficialAccount", + "category": "扫码/小程序/公众号", + "title": "关注公众号", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "intent_only", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 65, + "action": "scan_qr_code", + "mapped_rpc": "scanQrCode", + "category": "扫码/小程序/公众号", + "title": "扫描二维码", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "intent_only", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 73, + "action": "receive_red_packet", + "mapped_rpc": "receiveRedPacket", + "category": "支付/钱包", + "title": "领取红包", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "intent_only", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 81, + "action": "send_location", + "mapped_rpc": "sendLocation", + "category": "位置/通话", + "title": "发送位置", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "intent_only", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 83, + "action": "send_emoji", + "mapped_rpc": "sendEmoji", + "category": "收藏/文件/表情", + "title": "发送表情", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "intent_only", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 94, + "action": "logout", + "mapped_rpc": "logout", + "category": "设置管理", + "title": "退出登录", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "intent_only", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 95, + "action": "switch_account", + "mapped_rpc": "switchAccount", + "category": "设置管理", + "title": "切换账号", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "intent_only", + "verdict": "V4 误判(脚本 bug)" + } + ] +} \ No newline at end of file diff --git a/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145731.md b/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145731.md new file mode 100644 index 0000000000..76d0aa73ca --- /dev/null +++ b/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145731.md @@ -0,0 +1,209 @@ +# 微信SDK真实控制接口矩阵 V5 — 检测脚本纠偏(追加版) + +生成时间:2026-05-23 14:57:31 + +## 一、结论速览 + +- `wechat_hook_v2.js` 真实 `rpc.exports` 顶层方法数:**126** +- `wechat_hook_ckb_patch.js` 扩展 RPC 数:**0** +- 去重总数(驼峰):**126** +- V4 矩阵标记「未确认导出」总条数:**32** +- 其中 **V4 误判(脚本 bug)**:**32** 条 +- 其中 **V4 准确(确实缺失)**:**0** 条 + +## 二、根因 + +`tools/build_wechat_sdk_true_control_matrix_v3_1858.py` 的 `parse_hook_exports()` 用了: + +```python +m = re.search(r'rpc\.exports\s*=\s*\{(?P.*?)}\s*;', text, flags=re.S) +``` + +`.*?` 是**非贪婪**匹配,遇到第一个内层 `};`(例如某个 export 内部 `return { success: false, ... };`)就停止, +导致只捕获到 `rpc.exports` 头部的极少数方法(如 `ping`、`getProcessInfo`、`getHookStatus`、`getWechatVersion`), +后面 122 个真实导出全部被误标「未确认导出」。 + +## 三、V4 「未确认导出」逐条核对 + +| # | action | RPC | 类目 | V4 声称 | 实际是否导出 | 实现类型 | 结论 | +|---|--------|-----|------|---------|--------------|----------|------| +| 1 | `get_messages` | `getMessages` | 消息管理 | 未确认导出 | ✅ 已导出 | simple_return | V4 误判(脚本 bug) | +| 2 | `send_message` | `sendMessage` | 消息管理 | 未确认导出 | ✅ 已导出 | simple_return | V4 误判(脚本 bug) | +| 4 | `add_friend` | `addFriend` | 好友/联系人 | 未确认导出 | ✅ 已导出 | simple_return | V4 误判(脚本 bug) | +| 5 | `accept_friend` | `acceptFriend` | 好友/联系人 | 未确认导出 | ✅ 已导出 | simple_return | V4 误判(脚本 bug) | +| 7 | `delete_friend` | `deleteFriend` | 好友/联系人 | 未确认导出 | ✅ 已导出 | simple_return | V4 误判(脚本 bug) | +| 9 | `get_contacts` | `getContacts` | 好友/联系人 | 未确认导出 | ✅ 已导出 | simple_return | V4 误判(脚本 bug) | +| 10 | `create_group` | `createGroup` | 群聊管理 | 未确认导出 | ✅ 已导出 | simple_return | V4 误判(脚本 bug) | +| 11 | `invite_to_group` | `inviteToGroup` | 群聊管理 | 未确认导出 | ✅ 已导出 | simple_return | V4 误判(脚本 bug) | +| 12 | `remove_from_group` | `removeFromGroup` | 群聊管理 | 未确认导出 | ✅ 已导出 | simple_return | V4 误判(脚本 bug) | +| 14 | `set_group_name` | `setGroupName` | 群聊管理 | 未确认导出 | ✅ 已导出 | simple_return | V4 误判(脚本 bug) | +| 15 | `send_group_message` | `sendGroupMessage` | 消息管理 | 未确认导出 | ✅ 已导出 | simple_return | V4 误判(脚本 bug) | +| 17 | `get_groups` | `getGroups` | 群聊管理 | 未确认导出 | ✅ 已导出 | simple_return | V4 误判(脚本 bug) | +| 18 | `get_group_members` | `getGroupMembers` | 群聊管理 | 未确认导出 | ✅ 已导出 | simple_return | V4 误判(脚本 bug) | +| 25 | `post_moments` | `postMoments` | 朋友圈管理 | 未确认导出 | ✅ 已导出 | simple_return | V4 误判(脚本 bug) | +| 26 | `like_moments` | `likeMoments` | 朋友圈管理 | 未确认导出 | ✅ 已导出 | simple_return | V4 误判(脚本 bug) | +| 27 | `comment_moments` | `commentMoments` | 朋友圈管理 | 未确认导出 | ✅ 已导出 | simple_return | V4 误判(脚本 bug) | +| 28 | `get_moments` | `getMoments` | 朋友圈管理 | 未确认导出 | ✅ 已导出 | simple_return | V4 误判(脚本 bug) | +| 29 | `forward_message` | `forwardMessage` | 消息管理 | 未确认导出 | ✅ 已导出 | intent_only | V4 误判(脚本 bug) | +| 32 | `get_profile` | `getProfile` | 资料/账号设置 | 未确认导出 | ✅ 已导出 | sql_or_java | V4 误判(脚本 bug) | +| 38 | `check_account_status` | `checkAccountStatus` | 账号安全/限制 | 未确认导出 | ✅ 已导出 | sql_or_java | V4 误判(脚本 bug) | +| 43 | `get_favorites` | `getFavorites` | 收藏/文件/表情 | 未确认导出 | ✅ 已导出 | sql_or_java | V4 误判(脚本 bug) | +| 49 | `quit_group` | `quitGroup` | 群聊管理 | 未确认导出 | ✅ 已导出 | simple_return | V4 误判(脚本 bug) | +| 50 | `delete_moments` | `deleteMoments` | 朋友圈管理 | 未确认导出 | ✅ 已导出 | intent_only | V4 误判(脚本 bug) | +| 51 | `send_red_packet` | `sendRedPacket` | 支付/钱包 | 未确认导出 | ✅ 已导出 | intent_only | V4 误判(脚本 bug) | +| 53 | `open_mini_program` | `openMiniProgram` | 扫码/小程序/公众号 | 未确认导出 | ✅ 已导出 | intent_only | V4 误判(脚本 bug) | +| 54 | `follow_official_account` | `followOfficialAccount` | 扫码/小程序/公众号 | 未确认导出 | ✅ 已导出 | intent_only | V4 误判(脚本 bug) | +| 65 | `scan_qr_code` | `scanQrCode` | 扫码/小程序/公众号 | 未确认导出 | ✅ 已导出 | intent_only | V4 误判(脚本 bug) | +| 73 | `receive_red_packet` | `receiveRedPacket` | 支付/钱包 | 未确认导出 | ✅ 已导出 | intent_only | V4 误判(脚本 bug) | +| 81 | `send_location` | `sendLocation` | 位置/通话 | 未确认导出 | ✅ 已导出 | intent_only | V4 误判(脚本 bug) | +| 83 | `send_emoji` | `sendEmoji` | 收藏/文件/表情 | 未确认导出 | ✅ 已导出 | intent_only | V4 误判(脚本 bug) | +| 94 | `logout` | `logout` | 设置管理 | 未确认导出 | ✅ 已导出 | intent_only | V4 误判(脚本 bug) | +| 95 | `switch_account` | `switchAccount` | 设置管理 | 未确认导出 | ✅ 已导出 | intent_only | V4 误判(脚本 bug) | + +## 四、修正建议 + +1. **修 V3 检测脚本**:用括号配平(栈式)方式提取 `rpc.exports = { ... };` 块, + 不要用非贪婪正则。本 V5 脚本的 `extract_rpc_exports_block` 可直接复用。 +2. **重跑 V4 矩阵**:基于修好的检测脚本重新生成 V4,把「未确认导出」改为真实状态: + `已导出+SQL/Java 实现`(A 类核心)vs `已导出但只做 Intent 占位`(B 类待补)。 +3. **实现类型细分**: + - `sql_or_java`:通过 `_execSQL` 或 `Java.performNow` 读 SQLite/调 Java 实现,可视为 A 类核心; + - `intent_only`:只发 `_intentAction` 广播,仍依赖 Agent 端 IntentReceiver/ADB 兜底,不算 Hook 直达; + - `mixed_sql_intent`:先尝试 SQL,再降级 Intent。 + +## 五、所有真实 RPC 导出(驼峰名,去重后字典序) + +``` +acceptFriend +addCustomEmoji +addFavorite +addFriend +addFriendByQr +addToFloat +autoRegister +batchExecute +bindPhone +browseChannels +changePassword +checkAccountStatus +checkLoginState +clearChatHistory +commentChannelVideo +commentMoments +createGroup +createLabel +deleteFavorite +deleteFriend +deleteLabel +deleteMoments +enableFingerprint +followChannel +followOfficialAccount +forwardMessage +forwardMultiple +generateGroupQrCode +generateMyQrCode +getConnectionStatus +getContactInfo +getContactStats +getContacts +getContactsByLabel +getContactsFull +getCurrentActivity +getDeviceInfo +getFavorites +getFriendRequests +getGroupInfo +getGroupMembers +getGroups +getGroupsFull +getHookStatus +getLabels +getLoginDevices +getMessages +getMoments +getNetworkInfo +getOfficialAccountArticles +getOfficialAccounts +getProcessInfo +getProfile +getRecentMessages +getRecentMiniPrograms +getScreenshotBase64 +getSimPhone +getStorageInfo +getTransactionHistory +getVersionCompat +getWalletBalance +getWechatVersion +globalSearch +inviteToGroup +likeChannelVideo +likeMoments +loginByPassword +loginBySms +logout +navigateToChat +navigateToMain +navigateToMoments +openMiniProgram +pinChat +ping +postMoments +quitGroup +rawSql +receiveRedPacket +receiveTransfer +registerAccount +removeFromFloat +removeFromGroup +removeLoginDevice +revokeMessage +scanQrCode +searchContacts +searchMessages +sendCard +sendEmoji +sendFile +sendGroupMessage +sendImage +sendLink +sendLocation +sendMessage +sendRedPacket +sendTransfer +sendVideo +sendVoice +setAccountProtection +setAvatar +setChatBackground +setContactLabel +setDoNotDisturb +setFriendRemark +setGroupAnnouncement +setGroupName +setNickname +setNotification +setPrivacy +setRegion +setSex +setSignature +setWhatUp +shareChannelVideo +shareMiniProgram +simulateBack +simulateInput +simulateTap +switchAccount +takeScreenshot +unbindPhone +unblockSelf +unfollowChannel +unfollowOfficialAccount +``` + +## 六、CKB 扩展 RPC + +``` + +``` \ No newline at end of file diff --git a/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145800.json b/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145800.json new file mode 100644 index 0000000000..81725a7817 --- /dev/null +++ b/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145800.json @@ -0,0 +1,506 @@ +{ + "summary": { + "wechat_hook_v2_real_exports_count": 126, + "ckb_extension_exports_count": 6, + "total_unique_camel": 132, + "v4_flagged_unconfirmed": 32, + "v4_false_negative": 32, + "v4_truly_missing": 0 + }, + "all_real_exports_camel": [ + "acceptFriend", + "addCustomEmoji", + "addFavorite", + "addFriend", + "addFriendByQr", + "addToFloat", + "autoRegister", + "batchExecute", + "batchSyncContacts", + "bindPhone", + "browseChannels", + "changePassword", + "checkAccountStatus", + "checkLoginState", + "clearChatHistory", + "commentChannelVideo", + "commentMoments", + "createGroup", + "createLabel", + "deleteFavorite", + "deleteFriend", + "deleteLabel", + "deleteMoments", + "enableFingerprint", + "followChannel", + "followOfficialAccount", + "forwardMessage", + "forwardMultiple", + "generateGroupQrCode", + "generateMyQrCode", + "getConnectionStatus", + "getContactDetail", + "getContactInfo", + "getContactStats", + "getContacts", + "getContactsByLabel", + "getContactsDetail", + "getContactsFull", + "getCurrentActivity", + "getDeviceInfo", + "getFavorites", + "getFriendRequests", + "getGroupInfo", + "getGroupMembers", + "getGroupMembersDetail", + "getGroups", + "getGroupsFull", + "getHookStatus", + "getLabels", + "getLoginDevices", + "getMessages", + "getMoments", + "getNetworkInfo", + "getOfficialAccountArticles", + "getOfficialAccounts", + "getProcessInfo", + "getProfile", + "getRecentMessages", + "getRecentMiniPrograms", + "getScreenshotBase64", + "getSimPhone", + "getStorageInfo", + "getTransactionHistory", + "getVersionCompat", + "getWalletBalance", + "getWechatVersion", + "globalSearch", + "inviteToGroup", + "likeChannelVideo", + "likeMoments", + "loginByPassword", + "loginBySms", + "logout", + "navigateToChat", + "navigateToMain", + "navigateToMoments", + "openMiniProgram", + "pinChat", + "ping", + "postMoments", + "quitGroup", + "rawSql", + "receiveRedPacket", + "receiveTransfer", + "registerAccount", + "removeFromFloat", + "removeFromGroup", + "removeLoginDevice", + "revokeMessage", + "scanQrCode", + "searchContacts", + "searchMessages", + "sendCard", + "sendEmoji", + "sendFile", + "sendGroupMessage", + "sendImage", + "sendLink", + "sendLocation", + "sendMessage", + "sendRedPacket", + "sendTransfer", + "sendVideo", + "sendVoice", + "setAccountProtection", + "setAvatar", + "setChatBackground", + "setContactLabel", + "setDoNotDisturb", + "setFriendRemark", + "setGroupAnnouncement", + "setGroupName", + "setNickname", + "setNotification", + "setPrivacy", + "setRegion", + "setSex", + "setSignature", + "setWhatUp", + "shareChannelVideo", + "shareMiniProgram", + "simulateBack", + "simulateInput", + "simulateTap", + "startFriendAddListener", + "startGroupMemberListener", + "switchAccount", + "takeScreenshot", + "unbindPhone", + "unblockSelf", + "unfollowChannel", + "unfollowOfficialAccount" + ], + "ckb_extension_exports": [ + "getContactsDetail", + "getContactDetail", + "getGroupMembersDetail", + "startFriendAddListener", + "startGroupMemberListener", + "batchSyncContacts" + ], + "v4_unconfirmed_truth_check": [ + { + "idx": 1, + "action": "get_messages", + "mapped_rpc": "getMessages", + "category": "消息管理", + "title": "获取消息列表", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "simple_return", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 2, + "action": "send_message", + "mapped_rpc": "sendMessage", + "category": "消息管理", + "title": "批量发送消息(服务端逐条下发,间隔防风控,单条超时可控)", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "simple_return", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 4, + "action": "add_friend", + "mapped_rpc": "addFriend", + "category": "好友/联系人", + "title": "添加好友", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "simple_return", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 5, + "action": "accept_friend", + "mapped_rpc": "acceptFriend", + "category": "好友/联系人", + "title": "通过好友请求", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "simple_return", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 7, + "action": "delete_friend", + "mapped_rpc": "deleteFriend", + "category": "好友/联系人", + "title": "删除好友", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "simple_return", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 9, + "action": "get_contacts", + "mapped_rpc": "getContacts", + "category": "好友/联系人", + "title": "获取联系人列表", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "simple_return", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 10, + "action": "create_group", + "mapped_rpc": "createGroup", + "category": "群聊管理", + "title": "创建群聊", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "simple_return", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 11, + "action": "invite_to_group", + "mapped_rpc": "inviteToGroup", + "category": "群聊管理", + "title": "邀请入群", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "simple_return", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 12, + "action": "remove_from_group", + "mapped_rpc": "removeFromGroup", + "category": "群聊管理", + "title": "移出群聊", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "simple_return", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 14, + "action": "set_group_name", + "mapped_rpc": "setGroupName", + "category": "群聊管理", + "title": "设置群名", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "simple_return", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 15, + "action": "send_group_message", + "mapped_rpc": "sendGroupMessage", + "category": "消息管理", + "title": "发送群消息", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "simple_return", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 17, + "action": "get_groups", + "mapped_rpc": "getGroups", + "category": "群聊管理", + "title": "获取群聊列表", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "simple_return", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 18, + "action": "get_group_members", + "mapped_rpc": "getGroupMembers", + "category": "群聊管理", + "title": "获取群成员列表", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "simple_return", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 25, + "action": "post_moments", + "mapped_rpc": "postMoments", + "category": "朋友圈管理", + "title": "发布朋友圈/瞬间(统一返回 200,业务失败用 success=false 表示,避免 502)", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "simple_return", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 26, + "action": "like_moments", + "mapped_rpc": "likeMoments", + "category": "朋友圈管理", + "title": "点赞朋友圈", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "simple_return", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 27, + "action": "comment_moments", + "mapped_rpc": "commentMoments", + "category": "朋友圈管理", + "title": "评论朋友圈", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "simple_return", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 28, + "action": "get_moments", + "mapped_rpc": "getMoments", + "category": "朋友圈管理", + "title": "获取朋友圈列表", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "simple_return", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 29, + "action": "forward_message", + "mapped_rpc": "forwardMessage", + "category": "消息管理", + "title": "转发消息", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "intent_only", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 32, + "action": "get_profile", + "mapped_rpc": "getProfile", + "category": "资料/账号设置", + "title": "获取当前微信账号资料", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "sql_or_java", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 38, + "action": "check_account_status", + "mapped_rpc": "checkAccountStatus", + "category": "账号安全/限制", + "title": "检查账号状态", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "sql_or_java", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 43, + "action": "get_favorites", + "mapped_rpc": "getFavorites", + "category": "收藏/文件/表情", + "title": "获取收藏列表", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "sql_or_java", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 49, + "action": "quit_group", + "mapped_rpc": "quitGroup", + "category": "群聊管理", + "title": "退出群聊", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "simple_return", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 50, + "action": "delete_moments", + "mapped_rpc": "deleteMoments", + "category": "朋友圈管理", + "title": "删除朋友圈", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "intent_only", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 51, + "action": "send_red_packet", + "mapped_rpc": "sendRedPacket", + "category": "支付/钱包", + "title": "发红包", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "intent_only", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 53, + "action": "open_mini_program", + "mapped_rpc": "openMiniProgram", + "category": "扫码/小程序/公众号", + "title": "打开小程序", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "intent_only", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 54, + "action": "follow_official_account", + "mapped_rpc": "followOfficialAccount", + "category": "扫码/小程序/公众号", + "title": "关注公众号", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "intent_only", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 65, + "action": "scan_qr_code", + "mapped_rpc": "scanQrCode", + "category": "扫码/小程序/公众号", + "title": "扫描二维码", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "intent_only", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 73, + "action": "receive_red_packet", + "mapped_rpc": "receiveRedPacket", + "category": "支付/钱包", + "title": "领取红包", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "intent_only", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 81, + "action": "send_location", + "mapped_rpc": "sendLocation", + "category": "位置/通话", + "title": "发送位置", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "intent_only", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 83, + "action": "send_emoji", + "mapped_rpc": "sendEmoji", + "category": "收藏/文件/表情", + "title": "发送表情", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "intent_only", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 94, + "action": "logout", + "mapped_rpc": "logout", + "category": "设置管理", + "title": "退出登录", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "intent_only", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 95, + "action": "switch_account", + "mapped_rpc": "switchAccount", + "category": "设置管理", + "title": "切换账号", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "intent_only", + "verdict": "V4 误判(脚本 bug)" + } + ] +} \ No newline at end of file diff --git a/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145800.md b/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145800.md new file mode 100644 index 0000000000..b30d99fabf --- /dev/null +++ b/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145800.md @@ -0,0 +1,220 @@ +# 微信SDK真实控制接口矩阵 V5 — 检测脚本纠偏(追加版) + +生成时间:2026-05-23 14:58:00 + +## 一、结论速览 + +- `wechat_hook_v2.js` 真实 `rpc.exports` 顶层方法数:**126** +- `wechat_hook_ckb_patch.js` 扩展 RPC 数:**6** +- 去重总数(驼峰):**132** +- V4 矩阵标记「未确认导出」总条数:**32** +- 其中 **V4 误判(脚本 bug)**:**32** 条 +- 其中 **V4 准确(确实缺失)**:**0** 条 + +## 二、根因 + +`tools/build_wechat_sdk_true_control_matrix_v3_1858.py` 的 `parse_hook_exports()` 用了: + +```python +m = re.search(r'rpc\.exports\s*=\s*\{(?P.*?)}\s*;', text, flags=re.S) +``` + +`.*?` 是**非贪婪**匹配,遇到第一个内层 `};`(例如某个 export 内部 `return { success: false, ... };`)就停止, +导致只捕获到 `rpc.exports` 头部的极少数方法(如 `ping`、`getProcessInfo`、`getHookStatus`、`getWechatVersion`), +后面 122 个真实导出全部被误标「未确认导出」。 + +## 三、V4 「未确认导出」逐条核对 + +| # | action | RPC | 类目 | V4 声称 | 实际是否导出 | 实现类型 | 结论 | +|---|--------|-----|------|---------|--------------|----------|------| +| 1 | `get_messages` | `getMessages` | 消息管理 | 未确认导出 | ✅ 已导出 | simple_return | V4 误判(脚本 bug) | +| 2 | `send_message` | `sendMessage` | 消息管理 | 未确认导出 | ✅ 已导出 | simple_return | V4 误判(脚本 bug) | +| 4 | `add_friend` | `addFriend` | 好友/联系人 | 未确认导出 | ✅ 已导出 | simple_return | V4 误判(脚本 bug) | +| 5 | `accept_friend` | `acceptFriend` | 好友/联系人 | 未确认导出 | ✅ 已导出 | simple_return | V4 误判(脚本 bug) | +| 7 | `delete_friend` | `deleteFriend` | 好友/联系人 | 未确认导出 | ✅ 已导出 | simple_return | V4 误判(脚本 bug) | +| 9 | `get_contacts` | `getContacts` | 好友/联系人 | 未确认导出 | ✅ 已导出 | simple_return | V4 误判(脚本 bug) | +| 10 | `create_group` | `createGroup` | 群聊管理 | 未确认导出 | ✅ 已导出 | simple_return | V4 误判(脚本 bug) | +| 11 | `invite_to_group` | `inviteToGroup` | 群聊管理 | 未确认导出 | ✅ 已导出 | simple_return | V4 误判(脚本 bug) | +| 12 | `remove_from_group` | `removeFromGroup` | 群聊管理 | 未确认导出 | ✅ 已导出 | simple_return | V4 误判(脚本 bug) | +| 14 | `set_group_name` | `setGroupName` | 群聊管理 | 未确认导出 | ✅ 已导出 | simple_return | V4 误判(脚本 bug) | +| 15 | `send_group_message` | `sendGroupMessage` | 消息管理 | 未确认导出 | ✅ 已导出 | simple_return | V4 误判(脚本 bug) | +| 17 | `get_groups` | `getGroups` | 群聊管理 | 未确认导出 | ✅ 已导出 | simple_return | V4 误判(脚本 bug) | +| 18 | `get_group_members` | `getGroupMembers` | 群聊管理 | 未确认导出 | ✅ 已导出 | simple_return | V4 误判(脚本 bug) | +| 25 | `post_moments` | `postMoments` | 朋友圈管理 | 未确认导出 | ✅ 已导出 | simple_return | V4 误判(脚本 bug) | +| 26 | `like_moments` | `likeMoments` | 朋友圈管理 | 未确认导出 | ✅ 已导出 | simple_return | V4 误判(脚本 bug) | +| 27 | `comment_moments` | `commentMoments` | 朋友圈管理 | 未确认导出 | ✅ 已导出 | simple_return | V4 误判(脚本 bug) | +| 28 | `get_moments` | `getMoments` | 朋友圈管理 | 未确认导出 | ✅ 已导出 | simple_return | V4 误判(脚本 bug) | +| 29 | `forward_message` | `forwardMessage` | 消息管理 | 未确认导出 | ✅ 已导出 | intent_only | V4 误判(脚本 bug) | +| 32 | `get_profile` | `getProfile` | 资料/账号设置 | 未确认导出 | ✅ 已导出 | sql_or_java | V4 误判(脚本 bug) | +| 38 | `check_account_status` | `checkAccountStatus` | 账号安全/限制 | 未确认导出 | ✅ 已导出 | sql_or_java | V4 误判(脚本 bug) | +| 43 | `get_favorites` | `getFavorites` | 收藏/文件/表情 | 未确认导出 | ✅ 已导出 | sql_or_java | V4 误判(脚本 bug) | +| 49 | `quit_group` | `quitGroup` | 群聊管理 | 未确认导出 | ✅ 已导出 | simple_return | V4 误判(脚本 bug) | +| 50 | `delete_moments` | `deleteMoments` | 朋友圈管理 | 未确认导出 | ✅ 已导出 | intent_only | V4 误判(脚本 bug) | +| 51 | `send_red_packet` | `sendRedPacket` | 支付/钱包 | 未确认导出 | ✅ 已导出 | intent_only | V4 误判(脚本 bug) | +| 53 | `open_mini_program` | `openMiniProgram` | 扫码/小程序/公众号 | 未确认导出 | ✅ 已导出 | intent_only | V4 误判(脚本 bug) | +| 54 | `follow_official_account` | `followOfficialAccount` | 扫码/小程序/公众号 | 未确认导出 | ✅ 已导出 | intent_only | V4 误判(脚本 bug) | +| 65 | `scan_qr_code` | `scanQrCode` | 扫码/小程序/公众号 | 未确认导出 | ✅ 已导出 | intent_only | V4 误判(脚本 bug) | +| 73 | `receive_red_packet` | `receiveRedPacket` | 支付/钱包 | 未确认导出 | ✅ 已导出 | intent_only | V4 误判(脚本 bug) | +| 81 | `send_location` | `sendLocation` | 位置/通话 | 未确认导出 | ✅ 已导出 | intent_only | V4 误判(脚本 bug) | +| 83 | `send_emoji` | `sendEmoji` | 收藏/文件/表情 | 未确认导出 | ✅ 已导出 | intent_only | V4 误判(脚本 bug) | +| 94 | `logout` | `logout` | 设置管理 | 未确认导出 | ✅ 已导出 | intent_only | V4 误判(脚本 bug) | +| 95 | `switch_account` | `switchAccount` | 设置管理 | 未确认导出 | ✅ 已导出 | intent_only | V4 误判(脚本 bug) | + +## 四、修正建议 + +1. **修 V3 检测脚本**:用括号配平(栈式)方式提取 `rpc.exports = { ... };` 块, + 不要用非贪婪正则。本 V5 脚本的 `extract_rpc_exports_block` 可直接复用。 +2. **重跑 V4 矩阵**:基于修好的检测脚本重新生成 V4,把「未确认导出」改为真实状态: + `已导出+SQL/Java 实现`(A 类核心)vs `已导出但只做 Intent 占位`(B 类待补)。 +3. **实现类型细分**: + - `sql_or_java`:通过 `_execSQL` 或 `Java.performNow` 读 SQLite/调 Java 实现,可视为 A 类核心; + - `intent_only`:只发 `_intentAction` 广播,仍依赖 Agent 端 IntentReceiver/ADB 兜底,不算 Hook 直达; + - `mixed_sql_intent`:先尝试 SQL,再降级 Intent。 + +## 五、所有真实 RPC 导出(驼峰名,去重后字典序) + +``` +acceptFriend +addCustomEmoji +addFavorite +addFriend +addFriendByQr +addToFloat +autoRegister +batchExecute +batchSyncContacts +bindPhone +browseChannels +changePassword +checkAccountStatus +checkLoginState +clearChatHistory +commentChannelVideo +commentMoments +createGroup +createLabel +deleteFavorite +deleteFriend +deleteLabel +deleteMoments +enableFingerprint +followChannel +followOfficialAccount +forwardMessage +forwardMultiple +generateGroupQrCode +generateMyQrCode +getConnectionStatus +getContactDetail +getContactInfo +getContactStats +getContacts +getContactsByLabel +getContactsDetail +getContactsFull +getCurrentActivity +getDeviceInfo +getFavorites +getFriendRequests +getGroupInfo +getGroupMembers +getGroupMembersDetail +getGroups +getGroupsFull +getHookStatus +getLabels +getLoginDevices +getMessages +getMoments +getNetworkInfo +getOfficialAccountArticles +getOfficialAccounts +getProcessInfo +getProfile +getRecentMessages +getRecentMiniPrograms +getScreenshotBase64 +getSimPhone +getStorageInfo +getTransactionHistory +getVersionCompat +getWalletBalance +getWechatVersion +globalSearch +inviteToGroup +likeChannelVideo +likeMoments +loginByPassword +loginBySms +logout +navigateToChat +navigateToMain +navigateToMoments +openMiniProgram +pinChat +ping +postMoments +quitGroup +rawSql +receiveRedPacket +receiveTransfer +registerAccount +removeFromFloat +removeFromGroup +removeLoginDevice +revokeMessage +scanQrCode +searchContacts +searchMessages +sendCard +sendEmoji +sendFile +sendGroupMessage +sendImage +sendLink +sendLocation +sendMessage +sendRedPacket +sendTransfer +sendVideo +sendVoice +setAccountProtection +setAvatar +setChatBackground +setContactLabel +setDoNotDisturb +setFriendRemark +setGroupAnnouncement +setGroupName +setNickname +setNotification +setPrivacy +setRegion +setSex +setSignature +setWhatUp +shareChannelVideo +shareMiniProgram +simulateBack +simulateInput +simulateTap +startFriendAddListener +startGroupMemberListener +switchAccount +takeScreenshot +unbindPhone +unblockSelf +unfollowChannel +unfollowOfficialAccount +``` + +## 六、CKB 扩展 RPC + +``` +getContactsDetail +getContactDetail +getGroupMembersDetail +startFriendAddListener +startGroupMemberListener +batchSyncContacts +``` \ No newline at end of file diff --git a/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145843.json b/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145843.json new file mode 100644 index 0000000000..bf0c0ccddf --- /dev/null +++ b/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145843.json @@ -0,0 +1,506 @@ +{ + "summary": { + "wechat_hook_v2_real_exports_count": 126, + "ckb_extension_exports_count": 6, + "total_unique_camel": 132, + "v4_flagged_unconfirmed": 32, + "v4_false_negative": 32, + "v4_truly_missing": 0 + }, + "all_real_exports_camel": [ + "acceptFriend", + "addCustomEmoji", + "addFavorite", + "addFriend", + "addFriendByQr", + "addToFloat", + "autoRegister", + "batchExecute", + "batchSyncContacts", + "bindPhone", + "browseChannels", + "changePassword", + "checkAccountStatus", + "checkLoginState", + "clearChatHistory", + "commentChannelVideo", + "commentMoments", + "createGroup", + "createLabel", + "deleteFavorite", + "deleteFriend", + "deleteLabel", + "deleteMoments", + "enableFingerprint", + "followChannel", + "followOfficialAccount", + "forwardMessage", + "forwardMultiple", + "generateGroupQrCode", + "generateMyQrCode", + "getConnectionStatus", + "getContactDetail", + "getContactInfo", + "getContactStats", + "getContacts", + "getContactsByLabel", + "getContactsDetail", + "getContactsFull", + "getCurrentActivity", + "getDeviceInfo", + "getFavorites", + "getFriendRequests", + "getGroupInfo", + "getGroupMembers", + "getGroupMembersDetail", + "getGroups", + "getGroupsFull", + "getHookStatus", + "getLabels", + "getLoginDevices", + "getMessages", + "getMoments", + "getNetworkInfo", + "getOfficialAccountArticles", + "getOfficialAccounts", + "getProcessInfo", + "getProfile", + "getRecentMessages", + "getRecentMiniPrograms", + "getScreenshotBase64", + "getSimPhone", + "getStorageInfo", + "getTransactionHistory", + "getVersionCompat", + "getWalletBalance", + "getWechatVersion", + "globalSearch", + "inviteToGroup", + "likeChannelVideo", + "likeMoments", + "loginByPassword", + "loginBySms", + "logout", + "navigateToChat", + "navigateToMain", + "navigateToMoments", + "openMiniProgram", + "pinChat", + "ping", + "postMoments", + "quitGroup", + "rawSql", + "receiveRedPacket", + "receiveTransfer", + "registerAccount", + "removeFromFloat", + "removeFromGroup", + "removeLoginDevice", + "revokeMessage", + "scanQrCode", + "searchContacts", + "searchMessages", + "sendCard", + "sendEmoji", + "sendFile", + "sendGroupMessage", + "sendImage", + "sendLink", + "sendLocation", + "sendMessage", + "sendRedPacket", + "sendTransfer", + "sendVideo", + "sendVoice", + "setAccountProtection", + "setAvatar", + "setChatBackground", + "setContactLabel", + "setDoNotDisturb", + "setFriendRemark", + "setGroupAnnouncement", + "setGroupName", + "setNickname", + "setNotification", + "setPrivacy", + "setRegion", + "setSex", + "setSignature", + "setWhatUp", + "shareChannelVideo", + "shareMiniProgram", + "simulateBack", + "simulateInput", + "simulateTap", + "startFriendAddListener", + "startGroupMemberListener", + "switchAccount", + "takeScreenshot", + "unbindPhone", + "unblockSelf", + "unfollowChannel", + "unfollowOfficialAccount" + ], + "ckb_extension_exports": [ + "getContactsDetail", + "getContactDetail", + "getGroupMembersDetail", + "startFriendAddListener", + "startGroupMemberListener", + "batchSyncContacts" + ], + "v4_unconfirmed_truth_check": [ + { + "idx": 1, + "action": "get_messages", + "mapped_rpc": "getMessages", + "category": "消息管理", + "title": "获取消息列表", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "sql_or_java", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 2, + "action": "send_message", + "mapped_rpc": "sendMessage", + "category": "消息管理", + "title": "批量发送消息(服务端逐条下发,间隔防风控,单条超时可控)", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "sql_or_java", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 4, + "action": "add_friend", + "mapped_rpc": "addFriend", + "category": "好友/联系人", + "title": "添加好友", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "sql_or_java", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 5, + "action": "accept_friend", + "mapped_rpc": "acceptFriend", + "category": "好友/联系人", + "title": "通过好友请求", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "sql_or_java", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 7, + "action": "delete_friend", + "mapped_rpc": "deleteFriend", + "category": "好友/联系人", + "title": "删除好友", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "sql_or_java", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 9, + "action": "get_contacts", + "mapped_rpc": "getContacts", + "category": "好友/联系人", + "title": "获取联系人列表", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "sql_or_java", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 10, + "action": "create_group", + "mapped_rpc": "createGroup", + "category": "群聊管理", + "title": "创建群聊", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "sql_or_java", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 11, + "action": "invite_to_group", + "mapped_rpc": "inviteToGroup", + "category": "群聊管理", + "title": "邀请入群", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "sql_or_java", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 12, + "action": "remove_from_group", + "mapped_rpc": "removeFromGroup", + "category": "群聊管理", + "title": "移出群聊", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "sql_or_java", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 14, + "action": "set_group_name", + "mapped_rpc": "setGroupName", + "category": "群聊管理", + "title": "设置群名", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "sql_or_java", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 15, + "action": "send_group_message", + "mapped_rpc": "sendGroupMessage", + "category": "消息管理", + "title": "发送群消息", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "sql_or_java", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 17, + "action": "get_groups", + "mapped_rpc": "getGroups", + "category": "群聊管理", + "title": "获取群聊列表", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "sql_or_java", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 18, + "action": "get_group_members", + "mapped_rpc": "getGroupMembers", + "category": "群聊管理", + "title": "获取群成员列表", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "sql_or_java", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 25, + "action": "post_moments", + "mapped_rpc": "postMoments", + "category": "朋友圈管理", + "title": "发布朋友圈/瞬间(统一返回 200,业务失败用 success=false 表示,避免 502)", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "sql_or_java", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 26, + "action": "like_moments", + "mapped_rpc": "likeMoments", + "category": "朋友圈管理", + "title": "点赞朋友圈", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "mixed_sql_intent", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 27, + "action": "comment_moments", + "mapped_rpc": "commentMoments", + "category": "朋友圈管理", + "title": "评论朋友圈", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "mixed_sql_intent", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 28, + "action": "get_moments", + "mapped_rpc": "getMoments", + "category": "朋友圈管理", + "title": "获取朋友圈列表", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "sql_or_java", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 29, + "action": "forward_message", + "mapped_rpc": "forwardMessage", + "category": "消息管理", + "title": "转发消息", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "mixed_sql_intent", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 32, + "action": "get_profile", + "mapped_rpc": "getProfile", + "category": "资料/账号设置", + "title": "获取当前微信账号资料", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "sql_or_java", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 38, + "action": "check_account_status", + "mapped_rpc": "checkAccountStatus", + "category": "账号安全/限制", + "title": "检查账号状态", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "sql_or_java", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 43, + "action": "get_favorites", + "mapped_rpc": "getFavorites", + "category": "收藏/文件/表情", + "title": "获取收藏列表", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "sql_or_java", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 49, + "action": "quit_group", + "mapped_rpc": "quitGroup", + "category": "群聊管理", + "title": "退出群聊", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "sql_or_java", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 50, + "action": "delete_moments", + "mapped_rpc": "deleteMoments", + "category": "朋友圈管理", + "title": "删除朋友圈", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "mixed_sql_intent", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 51, + "action": "send_red_packet", + "mapped_rpc": "sendRedPacket", + "category": "支付/钱包", + "title": "发红包", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "mixed_sql_intent", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 53, + "action": "open_mini_program", + "mapped_rpc": "openMiniProgram", + "category": "扫码/小程序/公众号", + "title": "打开小程序", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "mixed_sql_intent", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 54, + "action": "follow_official_account", + "mapped_rpc": "followOfficialAccount", + "category": "扫码/小程序/公众号", + "title": "关注公众号", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "mixed_sql_intent", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 65, + "action": "scan_qr_code", + "mapped_rpc": "scanQrCode", + "category": "扫码/小程序/公众号", + "title": "扫描二维码", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "mixed_sql_intent", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 73, + "action": "receive_red_packet", + "mapped_rpc": "receiveRedPacket", + "category": "支付/钱包", + "title": "领取红包", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "mixed_sql_intent", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 81, + "action": "send_location", + "mapped_rpc": "sendLocation", + "category": "位置/通话", + "title": "发送位置", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "mixed_sql_intent", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 83, + "action": "send_emoji", + "mapped_rpc": "sendEmoji", + "category": "收藏/文件/表情", + "title": "发送表情", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "mixed_sql_intent", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 94, + "action": "logout", + "mapped_rpc": "logout", + "category": "设置管理", + "title": "退出登录", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "mixed_sql_intent", + "verdict": "V4 误判(脚本 bug)" + }, + { + "idx": 95, + "action": "switch_account", + "mapped_rpc": "switchAccount", + "category": "设置管理", + "title": "切换账号", + "v4_claim": "未在wechat_hook_v2.js确认导出", + "actually_exported": true, + "implementation_kind": "mixed_sql_intent", + "verdict": "V4 误判(脚本 bug)" + } + ] +} \ No newline at end of file diff --git a/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145843.md b/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145843.md new file mode 100644 index 0000000000..8d3037b28a --- /dev/null +++ b/开发文档/6、测试/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145843.md @@ -0,0 +1,220 @@ +# 微信SDK真实控制接口矩阵 V5 — 检测脚本纠偏(追加版) + +生成时间:2026-05-23 14:58:43 + +## 一、结论速览 + +- `wechat_hook_v2.js` 真实 `rpc.exports` 顶层方法数:**126** +- `wechat_hook_ckb_patch.js` 扩展 RPC 数:**6** +- 去重总数(驼峰):**132** +- V4 矩阵标记「未确认导出」总条数:**32** +- 其中 **V4 误判(脚本 bug)**:**32** 条 +- 其中 **V4 准确(确实缺失)**:**0** 条 + +## 二、根因 + +`tools/build_wechat_sdk_true_control_matrix_v3_1858.py` 的 `parse_hook_exports()` 用了: + +```python +m = re.search(r'rpc\.exports\s*=\s*\{(?P.*?)}\s*;', text, flags=re.S) +``` + +`.*?` 是**非贪婪**匹配,遇到第一个内层 `};`(例如某个 export 内部 `return { success: false, ... };`)就停止, +导致只捕获到 `rpc.exports` 头部的极少数方法(如 `ping`、`getProcessInfo`、`getHookStatus`、`getWechatVersion`), +后面 122 个真实导出全部被误标「未确认导出」。 + +## 三、V4 「未确认导出」逐条核对 + +| # | action | RPC | 类目 | V4 声称 | 实际是否导出 | 实现类型 | 结论 | +|---|--------|-----|------|---------|--------------|----------|------| +| 1 | `get_messages` | `getMessages` | 消息管理 | 未确认导出 | ✅ 已导出 | sql_or_java | V4 误判(脚本 bug) | +| 2 | `send_message` | `sendMessage` | 消息管理 | 未确认导出 | ✅ 已导出 | sql_or_java | V4 误判(脚本 bug) | +| 4 | `add_friend` | `addFriend` | 好友/联系人 | 未确认导出 | ✅ 已导出 | sql_or_java | V4 误判(脚本 bug) | +| 5 | `accept_friend` | `acceptFriend` | 好友/联系人 | 未确认导出 | ✅ 已导出 | sql_or_java | V4 误判(脚本 bug) | +| 7 | `delete_friend` | `deleteFriend` | 好友/联系人 | 未确认导出 | ✅ 已导出 | sql_or_java | V4 误判(脚本 bug) | +| 9 | `get_contacts` | `getContacts` | 好友/联系人 | 未确认导出 | ✅ 已导出 | sql_or_java | V4 误判(脚本 bug) | +| 10 | `create_group` | `createGroup` | 群聊管理 | 未确认导出 | ✅ 已导出 | sql_or_java | V4 误判(脚本 bug) | +| 11 | `invite_to_group` | `inviteToGroup` | 群聊管理 | 未确认导出 | ✅ 已导出 | sql_or_java | V4 误判(脚本 bug) | +| 12 | `remove_from_group` | `removeFromGroup` | 群聊管理 | 未确认导出 | ✅ 已导出 | sql_or_java | V4 误判(脚本 bug) | +| 14 | `set_group_name` | `setGroupName` | 群聊管理 | 未确认导出 | ✅ 已导出 | sql_or_java | V4 误判(脚本 bug) | +| 15 | `send_group_message` | `sendGroupMessage` | 消息管理 | 未确认导出 | ✅ 已导出 | sql_or_java | V4 误判(脚本 bug) | +| 17 | `get_groups` | `getGroups` | 群聊管理 | 未确认导出 | ✅ 已导出 | sql_or_java | V4 误判(脚本 bug) | +| 18 | `get_group_members` | `getGroupMembers` | 群聊管理 | 未确认导出 | ✅ 已导出 | sql_or_java | V4 误判(脚本 bug) | +| 25 | `post_moments` | `postMoments` | 朋友圈管理 | 未确认导出 | ✅ 已导出 | sql_or_java | V4 误判(脚本 bug) | +| 26 | `like_moments` | `likeMoments` | 朋友圈管理 | 未确认导出 | ✅ 已导出 | mixed_sql_intent | V4 误判(脚本 bug) | +| 27 | `comment_moments` | `commentMoments` | 朋友圈管理 | 未确认导出 | ✅ 已导出 | mixed_sql_intent | V4 误判(脚本 bug) | +| 28 | `get_moments` | `getMoments` | 朋友圈管理 | 未确认导出 | ✅ 已导出 | sql_or_java | V4 误判(脚本 bug) | +| 29 | `forward_message` | `forwardMessage` | 消息管理 | 未确认导出 | ✅ 已导出 | mixed_sql_intent | V4 误判(脚本 bug) | +| 32 | `get_profile` | `getProfile` | 资料/账号设置 | 未确认导出 | ✅ 已导出 | sql_or_java | V4 误判(脚本 bug) | +| 38 | `check_account_status` | `checkAccountStatus` | 账号安全/限制 | 未确认导出 | ✅ 已导出 | sql_or_java | V4 误判(脚本 bug) | +| 43 | `get_favorites` | `getFavorites` | 收藏/文件/表情 | 未确认导出 | ✅ 已导出 | sql_or_java | V4 误判(脚本 bug) | +| 49 | `quit_group` | `quitGroup` | 群聊管理 | 未确认导出 | ✅ 已导出 | sql_or_java | V4 误判(脚本 bug) | +| 50 | `delete_moments` | `deleteMoments` | 朋友圈管理 | 未确认导出 | ✅ 已导出 | mixed_sql_intent | V4 误判(脚本 bug) | +| 51 | `send_red_packet` | `sendRedPacket` | 支付/钱包 | 未确认导出 | ✅ 已导出 | mixed_sql_intent | V4 误判(脚本 bug) | +| 53 | `open_mini_program` | `openMiniProgram` | 扫码/小程序/公众号 | 未确认导出 | ✅ 已导出 | mixed_sql_intent | V4 误判(脚本 bug) | +| 54 | `follow_official_account` | `followOfficialAccount` | 扫码/小程序/公众号 | 未确认导出 | ✅ 已导出 | mixed_sql_intent | V4 误判(脚本 bug) | +| 65 | `scan_qr_code` | `scanQrCode` | 扫码/小程序/公众号 | 未确认导出 | ✅ 已导出 | mixed_sql_intent | V4 误判(脚本 bug) | +| 73 | `receive_red_packet` | `receiveRedPacket` | 支付/钱包 | 未确认导出 | ✅ 已导出 | mixed_sql_intent | V4 误判(脚本 bug) | +| 81 | `send_location` | `sendLocation` | 位置/通话 | 未确认导出 | ✅ 已导出 | mixed_sql_intent | V4 误判(脚本 bug) | +| 83 | `send_emoji` | `sendEmoji` | 收藏/文件/表情 | 未确认导出 | ✅ 已导出 | mixed_sql_intent | V4 误判(脚本 bug) | +| 94 | `logout` | `logout` | 设置管理 | 未确认导出 | ✅ 已导出 | mixed_sql_intent | V4 误判(脚本 bug) | +| 95 | `switch_account` | `switchAccount` | 设置管理 | 未确认导出 | ✅ 已导出 | mixed_sql_intent | V4 误判(脚本 bug) | + +## 四、修正建议 + +1. **修 V3 检测脚本**:用括号配平(栈式)方式提取 `rpc.exports = { ... };` 块, + 不要用非贪婪正则。本 V5 脚本的 `extract_rpc_exports_block` 可直接复用。 +2. **重跑 V4 矩阵**:基于修好的检测脚本重新生成 V4,把「未确认导出」改为真实状态: + `已导出+SQL/Java 实现`(A 类核心)vs `已导出但只做 Intent 占位`(B 类待补)。 +3. **实现类型细分**: + - `sql_or_java`:通过 `_execSQL` 或 `Java.performNow` 读 SQLite/调 Java 实现,可视为 A 类核心; + - `intent_only`:只发 `_intentAction` 广播,仍依赖 Agent 端 IntentReceiver/ADB 兜底,不算 Hook 直达; + - `mixed_sql_intent`:先尝试 SQL,再降级 Intent。 + +## 五、所有真实 RPC 导出(驼峰名,去重后字典序) + +``` +acceptFriend +addCustomEmoji +addFavorite +addFriend +addFriendByQr +addToFloat +autoRegister +batchExecute +batchSyncContacts +bindPhone +browseChannels +changePassword +checkAccountStatus +checkLoginState +clearChatHistory +commentChannelVideo +commentMoments +createGroup +createLabel +deleteFavorite +deleteFriend +deleteLabel +deleteMoments +enableFingerprint +followChannel +followOfficialAccount +forwardMessage +forwardMultiple +generateGroupQrCode +generateMyQrCode +getConnectionStatus +getContactDetail +getContactInfo +getContactStats +getContacts +getContactsByLabel +getContactsDetail +getContactsFull +getCurrentActivity +getDeviceInfo +getFavorites +getFriendRequests +getGroupInfo +getGroupMembers +getGroupMembersDetail +getGroups +getGroupsFull +getHookStatus +getLabels +getLoginDevices +getMessages +getMoments +getNetworkInfo +getOfficialAccountArticles +getOfficialAccounts +getProcessInfo +getProfile +getRecentMessages +getRecentMiniPrograms +getScreenshotBase64 +getSimPhone +getStorageInfo +getTransactionHistory +getVersionCompat +getWalletBalance +getWechatVersion +globalSearch +inviteToGroup +likeChannelVideo +likeMoments +loginByPassword +loginBySms +logout +navigateToChat +navigateToMain +navigateToMoments +openMiniProgram +pinChat +ping +postMoments +quitGroup +rawSql +receiveRedPacket +receiveTransfer +registerAccount +removeFromFloat +removeFromGroup +removeLoginDevice +revokeMessage +scanQrCode +searchContacts +searchMessages +sendCard +sendEmoji +sendFile +sendGroupMessage +sendImage +sendLink +sendLocation +sendMessage +sendRedPacket +sendTransfer +sendVideo +sendVoice +setAccountProtection +setAvatar +setChatBackground +setContactLabel +setDoNotDisturb +setFriendRemark +setGroupAnnouncement +setGroupName +setNickname +setNotification +setPrivacy +setRegion +setSex +setSignature +setWhatUp +shareChannelVideo +shareMiniProgram +simulateBack +simulateInput +simulateTap +startFriendAddListener +startGroupMemberListener +switchAccount +takeScreenshot +unbindPhone +unblockSelf +unfollowChannel +unfollowOfficialAccount +``` + +## 六、CKB 扩展 RPC + +``` +getContactsDetail +getContactDetail +getGroupMembersDetail +startFriendAddListener +startGroupMemberListener +batchSyncContacts +``` \ No newline at end of file