-
图片 CDN 上传打通后,把发图能力接进使用层: - skill_wechat_send/SKILL.md: 图片段 🟢→✅,给出 SEND_IMAGE_INTERNAL 广播 + wechat_send.sh 封装用法,标注真机验证(filehelper + 火星人全图收到)。 - wechat_send.sh image: 弃用旧的 share intent + 手动选联系人(UI 模拟), 改走内部 API 广播 SEND_IMAGE_INTERNAL;先 stage 到 /sdcard 保证 WeChat 进程可读,再 fire-and-forget 到 <wxid>。真机验证 oj()+CDN submit 均 DONE。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
-
攻克图片发送最后一公里(LSPosed,微信 8.0.74,真机验证全分辨率送达): 根因: b80.u.oj(o70.k) 只做「插消息 f9 + 插 ImgInfo b0 + 建缩略图」并 返回 List<o70.l> CDN 上传描述符,自己不提交 CDN。旧代码拿到 res 就丢掉 list → 上传永不触发(缩略图渲染但全图转圈)。真实编排 pe5.f.a 才循环 list 逐图提交(b80.s 只是 prebuild service checkPreBuildImg,不含 oj)。 补上第二步(照搬 pe5.f.a): oj() 后对每个 o70.l: cdnSvc = n0.c(xs.d1.class) // v70.w MsgImgFeatureService g = new r70.g(l.e, compress, c01.z1.r()/*self wxid*/, talker, k70.i0{a=3}) cdnSvc.oj(g, l) // → 启动 CDN 上传协程 e80.c 真机: oj() DONE res=size=1 + CDN submit DONE items=1,无异常;filehelper 收到消息点开是全分辨率原图(有原图+保存按钮,不再转圈)。 坑: v70.w.oj 内部走 ViewModelProvider.get 须主线程调(广播 receiver 本就在 主线程);jadx 字段名末位字母=真实 dex 字段;XposedHelpers stub 无 getLongField 用原生反射。逆向靠拉 Tinker dex + jadx --single-class。 产物: WECHAT_SEND_API.md §3 完整两步实现 + API 表;backups 源码快照。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
-
逆向微信 8.0.74 内部发送 API(LSPosed,无 UI 模拟): - 文字(中英文): w11.r0(type=1) Object-ctor + z2.b NetSceneQueue,真机验证送达。 中文走 text_b64 base64 通道避免 shell 损坏 UTF-8。避开 dk5.s5.Ni(实为发名片)。 - 图片: hook 真实发送抓 o70.h/o70.k/o70.i 原样重放,攻克消息构建—— 能建 type=3 图片消息、缩略图渲染、进 pt0.e0 管线;全图 CDN 上传是最后一公里。 - 语音: jg0.x.w hot-swap(真机验证投递)。 - wxid 解析: EnMicroMsg.db SQLCipher 解密(key=MD5(imei+uin)[:7])查 rcontact。 - 坑: 真实代码在 Tinker 补丁 CL(hook 用 sTinkerCL);force-stop 不 flush 加密 WAL。 产物: WECHAT_SEND_API.md(完整逆向文档)+ skill_wechat_send/SKILL.md + backups/(WeChatHook.java 快照 + 构建/发送脚本)。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>