add:FixQQVersion

This commit is contained in:
2023-03-17 17:39:14 +08:00
parent 48501b09ff
commit b14601ef2c
4 changed files with 73 additions and 1 deletions

View File

@@ -0,0 +1,68 @@
package com.yutou.qqbot.utlis;
import net.mamoe.mirai.utils.BotConfiguration;
import java.lang.reflect.Field;
import java.util.EnumMap;
import java.util.HashMap;
import java.util.Map;
public class FixProtocolVersion {
public static void fix(){
try {
Class<?> MiraiProtocolInternal = Class.forName("net.mamoe.mirai.internal.utils.MiraiProtocolInternal");
Field field = MiraiProtocolInternal.getFields()[0];
Object companion = field.get(Object.class);
EnumMap<BotConfiguration.MiraiProtocol, Object> protocols = (EnumMap<BotConfiguration.MiraiProtocol, Object>)companion.getClass().getMethod("getProtocols$mirai_core").invoke(companion);
Object pad = protocols.get(BotConfiguration.MiraiProtocol.ANDROID_PAD);
/*
* apkId: String,
id: Long,
ver: String,
sdkVer: String,
miscBitMap: Int,
subSigMap: Int,
mainSigMap: Int,
sign: String,
buildTime: Long,
ssoVersion: Int,
canDoQRCodeLogin: Boolean = false,
* */
Class<?> padClass = pad.getClass();
Map<String, Object> padData = new HashMap<String, Object>(){{
put("id", 537151218);
put("ver", "8.9.33.10335");
put("sdkVer", "6.0.0.2534");
put("buildTime", 1673599898L);
}};
for (Field f : padClass.getFields()) {
f.setAccessible(true);
if(padData.containsKey(f.getName())){
f.set(pad, padData.get(f.getName()));
}
f.setAccessible(false);
}
Object phone = protocols.get(BotConfiguration.MiraiProtocol.ANDROID_PHONE);
Map<String, Object> phoneData = new HashMap<String, Object>(){{
put("id", 537151682);
put("ver", "8.9.33.10335");
put("sdkVer", "6.0.0.2534");
put("buildTime", 1673599898L);
}};
for (Field f : padClass.getFields()) {
f.setAccessible(true);
if(padData.containsKey(f.getName())){
f.set(phone, phoneData.get(f.getName()));
}
f.setAccessible(false);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}