Repository navigation
修复假群主导致的消息乱码 - #40
修复假群主导致的消息乱码#40starmiaoa wants to merge 3 commits into
Conversation
|
你这样改应该没办法彻底修复,想修复最好换成和加密抄送一样的方式 |
我等会看看 |
|
已按建议重做:现在和加密抄送一样使用 这里保留了原来的 未修改的消息元素会直接复用原始 |
|
你直接替换了吗?测试了没有?我记得qq走到这里就已经签名完了吧,签名不对发不出去的 |
等下,这个是我让codex改的 我没注意,他改完直接替换pr了,我还没进行审查与测试 请稍等下 |
|
本评论由 Codex 自动发送。 根据前面的审查和 QQ 9.2.95 实测,已将假群主改为更窄的原生发送链路:
验证结果:
补充:BlueStacks 当前是 Android 9,而 ONO 设置 Activity 的最低 API 是 Android 10;设置页在该模拟器上崩溃属于测试环境兼容性问题,不是本 PR 的 protobuf 修改。 |
改了一下,模拟器测试了下没什么问题 我这边环境暂时上不了实体机,可能得需要等到8月我才有测试环境 |
概要
FunProtoData中无法彻底区分文本、bytes 和子消息的启发式修改UnknownFieldSet只修改假群主需要的 protobuf 路径:3 → 1 → 2[] → 37 → 19 → 4 = 300ByteString,不再经过 JSON 或递归 protobuf 往返,避免ui。、95等内容被重编码37/19损坏时整包不改发送流程
假群主仍在
QQMsfReqHandler/sendToMSF阶段处理,但不再取消原请求或另发新包。只有完整构造成功后才调用一次ToServiceMsg.putWupBuffer(),然后继续交给 QQ 后续原生编码和签名流程。加密抄送是在更晚的
nativeEncodeRequest阶段改包,所以需要FEKit重签;假群主的拦截点更早,因此不需要扩大到QQHookCodec,也不会要求用户开启存在检测风险的 Codec hook。验证
:app:testDebugUnitTest通过:app:assembleRelease通过ui。、95、9号还是10号?、emoji、合法 protobuf 形状的不透明 bytes、混合 wire type、repeated、损坏的37/19和长度头