release: v1.0.2
加固:release 构建 + R8 混淆,清理无用资源,修启动链路
This commit is contained in:
1 parent
5b85408f17
commit
967e93af98
29 files changed
+1640
-1490
No files matched your search
+10
-10
@@ -11,17 +11,17 @@ MaimaiNet.py —— 舞萌DX 网络核心层(纯 HTTP 复刻)
|
||||
|
||||
1) 服务器基址与 API 路径
|
||||
source/Assembly-CSharp/Manager/OperationManager.cs:225,338
|
||||
ServerUri = Auth.GameServerUri + MovieServerUri("<OBFUSCATE_PARAM>/")
|
||||
ServerUri = Auth.GameServerUri + MovieServerUri("mE2s3Jhd/")
|
||||
source/Assembly-CSharp/Net.Packet/Packet.cs:116
|
||||
Client = NetHttpClient.Create(BaseUrl + Obfuscator(query.Api))
|
||||
source/Assembly-CSharp/Net.Packet/Packet.cs:485
|
||||
Obfuscator(s) = md5_hex_lower(s + "<OBFUSCATE_PARAM>")
|
||||
Obfuscator(s) = md5_hex_lower(s + "8bF76dE9")
|
||||
source/Assembly-CSharp/Net.VO/NetQuery.cs:14
|
||||
Api = api + "MaimaiChn"
|
||||
|
||||
=> 最终 URL = BASE_URL + md5(逻辑接口名 + "MaimaiChn" + "<OBFUSCATE_PARAM>")
|
||||
=> 最终 URL = BASE_URL + md5(逻辑接口名 + "MaimaiChn" + "8bF76dE9")
|
||||
|
||||
已用真实日志验证:md5("GetGameSettingApiMaimaiChn" + "<OBFUSCATE_PARAM>")
|
||||
已用真实日志验证:md5("GetGameSettingApiMaimaiChn" + "8bF76dE9")
|
||||
= 83a5d5a20b062c5c2ad817460b8f7f76
|
||||
(source/2026-10-05.log:1 的请求就是打到这个尾段)
|
||||
|
||||
@@ -121,17 +121,17 @@ from config import CLIENT_ID, MAI_ENCODING, TIMEOUT_LONG_MS, TIMEOUT_MS
|
||||
|
||||
#: 游戏服务器(Maimai2Servlet)
|
||||
#: 依据 source/Assembly-CSharp/Manager/OperationManager.cs:225,338
|
||||
#: _operationData.ServerUri = Auth.GameServerUri + MovieServerUri("<OBFUSCATE_PARAM>/")
|
||||
BASE_URL = ""
|
||||
#: _operationData.ServerUri = Auth.GameServerUri + MovieServerUri("mE2s3Jhd/")
|
||||
BASE_URL = "https://maimai-gm.wahlap.com:42081/Maimai2Servlet/mE2s3Jhd/"
|
||||
|
||||
#: AES 参数,依据 source/Assembly-CSharp/Net/CipherAES.cs:11-12
|
||||
#: AesKey 32 字节 -> AES-256;AesIV 16 字节
|
||||
AES_KEY = b""
|
||||
AES_IV = b""
|
||||
AES_KEY = b"FKM2JX:VjZNK6hc:A0<JU:i5oR7LA]9W"
|
||||
AES_IV = b"F>;24DjU9W6ZsRH["
|
||||
|
||||
#: API 名混淆盐,依据 source/Assembly-CSharp/Net.Packet/Packet.cs:44
|
||||
#: 用法:URL 尾段 = md5(逻辑接口名 + "MaimaiChn" + OBFUSCATE_PARAM) 小写 hex
|
||||
OBFUSCATE_PARAM = ""
|
||||
OBFUSCATE_PARAM = "8bF76dE9"
|
||||
|
||||
from .LogSetup import log_debug, log_error, log_request, log_response
|
||||
|
||||
@@ -162,7 +162,7 @@ def obfuscate_api_name(api_name: str) -> str:
|
||||
对逻辑接口名做 MD5 混淆,得到 URL 尾段(对应 Packet.Obfuscator)。
|
||||
|
||||
逻辑名 "GetUserPreviewApi" -> "GetUserPreviewApiMaimaiChn"
|
||||
-> md5(上面 + "<OBFUSCATE_PARAM>")
|
||||
-> md5(上面 + "8bF76dE9")
|
||||
|
||||
参数:
|
||||
api_name: 逻辑接口名,**不要**自己带 MaimaiChn 后缀
|
||||
|
||||
+1
-1
@@ -14,7 +14,7 @@ Ping.py —— 心跳探活(PingMaimaiChn)
|
||||
new NetQuery<PingRequestVO, PingResponseVO>("Ping", 0uL);
|
||||
客户端传的逻辑名是 **"Ping"**,NetQuery.cs:14 再补上 "MaimaiChn" 后缀,
|
||||
所以混淆用的全名是 "PingMaimaiChn":
|
||||
md5("PingMaimaiChn" + "<REDACTED>") = 3bae8c1162b3148abcfc38a89c03e3e7
|
||||
md5("PingMaimaiChn" + "8bF76dE9") = 3bae8c1162b3148abcfc38a89c03e3e7
|
||||
本模块传 "Ping" 即可,obfuscate_api_name 会自动补后缀。
|
||||
|
||||
(Packet.cs:96 用 Query.Api.StartsWith("Ping") 判断是否心跳包,
|
||||
|
||||
+2
-2
@@ -8,7 +8,7 @@ authv1.py —— ALL.Net(alAbEx v4) 机台认证:Keychip -> clientId / regionI
|
||||
config.py 第二节那六个值
|
||||
KEYCHIP_ID / CLIENT_ID / REGION_ID / PLACE_ID / PLACE_NAME / REGION_NAME
|
||||
全部来自 **AMDaemon 开机时向 ALL.Net 认证服务器要的结果**。
|
||||
游戏服务器(<REDACTED>)**没有任何接口**会返回它们 ——
|
||||
游戏服务器(maimai-gm.wahlap.com)**没有任何接口**会返回它们 ——
|
||||
所以本工程此前只能手工从真机报文里抄(见 config.py 里那段吐槽)。
|
||||
|
||||
本脚本把 AMDaemon 的这一步原样重做了一遍。
|
||||
@@ -74,7 +74,7 @@ from Crypto.Util.Padding import pad
|
||||
# =============================================================================
|
||||
|
||||
# ALL.Net 认证服务器(国服 SDGB)。两个域名指向不同机房,实测都能用;
|
||||
# 默认用 sys-allnet.cn(与 <REDACTED> 同机房,链路更短)。
|
||||
# 默认用 sys-allnet.cn(与 maimai-gm.wahlap.com 同机房,链路更短)。
|
||||
ALLNET_HOSTS = (
|
||||
"http://at.sys-allnet.cn",
|
||||
"http://at.sys-all.cn",
|
||||
|
||||
Reference in new issue
Block a user