chore: 收编 hook bridge · V5矩阵报告入库 · Obsidian 图谱配色
wechat_hook_bridge.js 进 sdk/agent/hook;Graph 视图按目录着色与 CSS snippet 对齐。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
55
.obsidian/graph.json
vendored
Normal file
55
.obsidian/graph.json
vendored
Normal file
@@ -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
|
||||
}
|
||||
@@ -5,6 +5,7 @@
|
||||
## 文件说明
|
||||
|
||||
- `wechat_hook_v1.js`:微信 Hook 初版脚本(含 RPC + 消息事件上报骨架)
|
||||
- `wechat_hook_bridge.js`:安全桥接模板(ping / 连接状态 / 占位 RPC;可替换为完整 `wechat_hook_v*.js`)
|
||||
- `setup_redmi11.sh`:红米11 一键初始化脚本
|
||||
|
||||
## 快速执行
|
||||
|
||||
45
sdk/agent/hook/wechat_hook_bridge.js
Normal file
45
sdk/agent/hook/wechat_hook_bridge.js
Normal file
@@ -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'); }
|
||||
};
|
||||
@@ -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 准确(确实缺失)"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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<body>.*?)}\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
|
||||
|
||||
```
|
||||
|
||||
```
|
||||
@@ -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)"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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<body>.*?)}\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
|
||||
|
||||
```
|
||||
|
||||
```
|
||||
@@ -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)"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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<body>.*?)}\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
|
||||
```
|
||||
@@ -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)"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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<body>.*?)}\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
|
||||
```
|
||||
Reference in New Issue
Block a user