SKILL.md 3.22 KB

name: wechat-internal-send description: 通过 LSPosed 内部 API 发送微信文字/图片/语音(调用微信自己的发送 API,无 UI 模拟点击) version: 1.0

category: communication

WeChat 内部 API 发送(文字 / 图片 / 语音)

通过 LSPosed 模块 wechathook 直接调用微信自己的内部发送 API,不模拟点击、不走无障碍。 逆向自微信 8.0.74。完整技术文档见 ../WECHAT_SEND_API.md。

When to Use

  • 用户要求「发微信」「发条消息/图片/语音给某人」
  • 需要程序化、无 UI 干扰地发微信(agent 自动发通知、日报、提醒)

前置:拿到 wxid

内部 API 认 wxid(username)不认昵称。从解密的 EnMicroMsg.db 查 rcontact:

# key = MD5("1234567890ABCDEF"+uin)[:7];本机 uin=215004919 → key=e03ce81
sqlcipher EnMicroMsg.db <<'EOF'
PRAGMA key='e03ce81'; PRAGMA cipher_compatibility=1; PRAGMA cipher_page_size=1024;
SELECT username,nickname FROM rcontact WHERE nickname LIKE '%火星人%';
EOF
# → yibooo(火星人的 wxid)

⚠️ 先只对 filehelper(文件传输助手,自己)测试,确认无误再发真人,避免账号风险。

能力与用法

✅ 文字(中英文,已验证送达)

# ASCII
adb shell su -c 'am broadcast -a com.hermes.wechat.SEND_MSG_INTERNAL --es to yibooo --es text "hello"'
# 中文(base64 避免 shell 损坏 UTF-8)
B64=$(python3 -c "import base64;print(base64.b64encode('你好'.encode()).decode())")
adb shell su -c "am broadcast -a com.hermes.wechat.SEND_MSG_INTERNAL --es to yibooo --es text_b64 '$B64'"

或用封装脚本:./wechat_send.sh text yibooo "你好火星人"

🟢 图片(消息+缩略图已可发,全图 CDN 上传是最后一公里)

adb shell su -c 'am broadcast -a com.hermes.wechat.SEND_IMAGE_INTERNAL --es to filehelper --es path /sdcard/Pictures/x.png'

现状:图片消息建成、缩略图渲染、进真实发送管线;全图 CDN 上传仍在完善(详见技术文档 §3)。

✅ 语音(TTS→SILK,半自动 hot-swap)

纯合成卡「发送中」,用 hot-swap:让微信真录一段 + 偷换 SILK 字节。 端到端脚本 ../tts_voice_swap.sh(需先打开目标聊天并处语音模式)。详见技术文档 §2。

不要做

  • 不要用 dk5.s5.Ni 发文字——那是发名片的(会得到失败的空名片)。
  • 不要自己实现编解码 / 缩略图 / CDN 上传——都是 hook 内部的事。
  • 不要假设 base.apk = 正在跑的码——真实代码在 Tinker 补丁里,hook 要用 sTinkerCL。
  • 不要用 force-stop 后查库验证送达——SIGKILL 不 flush 加密 WAL,查不到最新。用实时截图/肉眼确认。

部署 / 重建 hook

export ADB=/opt/homebrew/share/android-commandlinetools/platform-tools/adb
export ANDROID_HOME=/opt/homebrew/share/android-commandlinetools
export JAVA_HOME=/opt/homebrew/opt/openjdk@17
bash ../rebuild_wechathook.sh   # 编译+签名+安装+重启微信

相关

  • ../WECHAT_SEND_API.md — 完整逆向技术文档(内部 API 结构、踩坑、图片链路)
  • ../wechathook_src/WeChatHook.java — hook 源码
  • memory wechat-voice-send-internals.md — 逆向记录 + 踩坑史