攻克图片发送最后一公里(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>