Files
TankIC/3DTank/names/command_alias.json
T
TermiNexus b6f2cb71ee feat(3dtank): 协议逆向工程与自研服务器入库(工具链 + 协议表 + 空间回放 + MySQL)
工具链(3DTank/tools/):extract(模块提取)、mine_evidence/apply_names(命名证据与别名回填)、extract_codec_fields(字段表 + 全库槽位类型 + PrimClassWire/ResourceClasses)、mine_downlink(下行字段表)、extract_space_init/rebase_space_init/audit_space_init(空间模板与记录切分审计)、extract_space_session(把真实会话切成按上行触发的回放模板)、pair_flow(请求→应答配对)、probe_containers、ingest/decrypt_frames(抓包入库与解密)、serve/fetch_assets(本地站点镜像)、import_db(抓包对象仓库导入 MySQL)。

服务器(3DTank/tools/server/):link/entry/codec/container/dispatch/world/space/semantic(协议层与 lt/pt/zt 三个容器布局)、session(会话回放,顺序推进)、db + schema.sql(MySQL 连接层与对象仓库表结构)、store/responder(查库组帧与定向应答;接管范围默认只开 ba.lcr)。

同时修 pair_flow 的时间轴偏移:timeline_c2s 与 timeline_s2c 的 0 点相差 144~4453ms,改前配对整体偏约 2 秒(实测 space-100073070 偏 2084ms),改后 22.4% 的触发者被纠正。

src/、src_named/、packets/、3DTank/local/(含数据库口令)不进库,可用上述工具重新生成。
2026-09-17 20:00:41 +08:00

130 lines
16 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"Note": "派生命名词典:这些名字**不是客户端原始名**(原始名在压缩过程中丢了,见 names/evidence.json 的说明),而是我们读源码证实语义后起的名。用途:① server/ 与 relay 的日志直接用别名,可读;② apply_names.js --aliases 可把它们回填进 src_named/(须与证据命名分开统计)。每条都带 Evidence 说明依据。键格式:Classes/Methods/Fields = \"<moduleId>::<短名>\";MethodIds = 十进制 methodId;Spaces = spaceId。语义没证实的条目标注【推测】或【语义未证】,别名只描述事实,不编造领域名。",
"Classes": {
"10283::Bn": { "Alias": "LoginCommand", "Evidence": "module_10283.js:742 持 methodId 常数 ph3_1=登录/th3_1=2FA;2315 发送法 wh3" },
"10283::Dn": { "Alias": "AccountLoginModel", "Evidence": "module_10283.js:716 三个 s2c 分支全是登录错误/2FA(2316 起 q7i)" },
"10283::$n": { "Alias": "ExternalLoginModel", "Evidence": "module_10283.js:2137 八分支:OAuth 链接/绑定冲突/2FA" },
"25377::dn": { "Alias": "UserActivityReporter", "Evidence": "module_25377.js:1516 gdk 六字符串 = 用户行为上报;gT 在 module_18334.js:3895 调用" },
"29554::G": { "Alias": "ModelServiceProxy", "Evidence": "module_29554.js:280 q1wd 编码 ObjectsData 后发 methodId n1wd_1" },
"29554::U": { "Alias": "ModelServiceProtocol", "Evidence": "module_29554.js:246 q7i 分发 4 条 s2c(_loadDependencies/_loadObjectsData/_setModelCommandAlias/_unloadObjects)" },
"45686::_t": { "Alias": "ProtocolRegistries", "Evidence": "module_45686.js:94 持有 gameType/model/resource/space 四张注册表" },
"61860::mr": { "Alias": "CommandRegistry", "Evidence": "module_61860.js:1681 l7n 按 methodId 找模型并分发;h7n 注册" },
"61860::Ie": { "Alias": "WebSocketTransport", "Evidence": "module_61860.js:981 构造 p7t_1=URL 后 new WebSocket(全库唯一建连点)" },
"61860::Vr": { "Alias": "Space", "Evidence": "module_61860.js:600 构造时自建一条 WS;持有 spaceId 与协议" },
"61860::Ji": { "Alias": "OpenSpaceCommand", "Evidence": "module_61860.js:271 命令名 \"Open space\"、命令 ID 32" },
"61860::Oi": { "Alias": "SpaceOpenedCommand", "Evidence": "module_61860.js:229 空间连接建立后回发的鉴权命令(spaceId + hash)" },
"61860::fr": { "Alias": "SpaceCommandCodec", "Evidence": "module_61860.js:1633 o7g 依次写 objectId(i64)、methodId(i64)" },
"45686::lt": { "Alias": "ContainerItemCodec", "Evidence": "module_45686.js:483/486/487 读 i64 id,0 → 下一个 i64 为值,否则按 modelRegister 展开" },
"45686::pt": { "Alias": "ContainerObjectsCodec", "Evidence": "module_45686.js:525/531 对象引用表 + lt 项表" },
"45686::zt": { "Alias": "ContainerModelsCodec", "Evidence": "module_45686.js:557/563 模型归属表 + 对象项表(915B 入口帧 1782/1782 字节标定)" },
"10283::xn": { "Alias": "EntranceCommands", "Evidence": "module_10283.js:2114 入口模型新建的 c2s 发送器;2197 sh1" },
"10283::ji": { "Alias": "RegisterStateCommands", "Evidence": "module_10283.js:2710 注册流程发送器;2782 ehd / 2788 zax / 2794 fhd / 2803 ghd" },
"10283::ki": { "Alias": "RegistrationModel", "Evidence": "module_10283.js:1110 七个 s2c 常数;2735 _enteredUidIsBusy_advisedUidsCodec" },
"10283::Fn": { "Alias": "RememberLoginModel", "Evidence": "module_10283.js:762;2353 _remember2FaHash / 2360 _rememberUsersHash" },
"10283::Hn": { "Alias": "RememberLoginCommands", "Evidence": "module_10283.js:789;2368 wh4 / 2374 xh4" },
"10283::ci": { "Alias": "SocialNetworkCommands", "Evidence": "module_10283.js:2574 六个双字符串上报;2566 _unlinkSuccess_socialNetworkIdCodec" },
"10283::Ui": { "Alias": "ClientParamsCommands", "Evidence": "module_10283.js:2980 只有 thf 一条上行;调用点 18334.js:8990 算时区" },
"10283::gn": { "Alias": "EntranceRequestModelCC", "Evidence": "module_10283.js:529 持有 s2c 常数 ngz_1=(2025886178375810581);被导出为 t.$_$.j" },
"10283::mn": { "Alias": "EntranceRequestModel", "Evidence": "module_10283.js:538 gn.taw 现场创建;唯一上行 xbl(空负载)" },
"85667::cs": { "Alias": "SpaceObjectsModel", "Evidence": "module_85667.js:681 该模型无 s2c,只有一个上行 codec ls" },
"85667::ls": { "Alias": "SpaceObjectsCommands", "Evidence": "module_85667.js:2752 xbl 空负载上行" },
"85196::ka": { "Alias": "GarageDevicesModel", "Evidence": "module_85196.js:6943 s2c ccr_1 = _devicesLoaded_devicesCodec" },
"85196::ba": { "Alias": "GarageDevicesCommands", "Evidence": "module_85196.js:6973 lcr 空负载上行" },
"10032::ZY": { "Alias": "LobbyHomeScreen", "Evidence": "module_10032.js:9733 屏幕名 \"Lobby.Home\"" },
"10032::OX": { "Alias": "GarageScreen", "Evidence": "module_10032.js:9903 屏幕名 \"Garage\"" },
"10032::lY": { "Alias": "EntranceLoginByPasswordScreen", "Evidence": "module_10032.js:9591 屏幕名 \"Entrance.LoginByPassword\"" },
"10032::fY": { "Alias": "EntranceSelectTypeScreen", "Evidence": "module_10032.js:9594 屏幕名 \"Entrance.SelectEntranceType\"" },
"10032::wY": { "Alias": "EntranceGameAccountScreen", "Evidence": "module_10032.js:9600 屏幕名 \"Entrance.GameAccountEntrance\"" }
},
"Methods": {
"10283::Bn.wh3": { "Alias": "SendLogin", "Evidence": "module_10283.js:2315 写 账号/密码/rememberMe 后发 ph3_1" },
"10283::Bn.nh1": { "Alias": "SendTwoFactorCode", "Evidence": "module_10283.js:2319 写 2FA 码后发 th3_1" },
"10283::Dn.q7i": { "Alias": "DispatchLoginResult", "Evidence": "module_10283.js:2316 三分支:需 2FA / 2FA 错 / 密码错" },
"29554::G.q1wd": { "Alias": "RequestObjects", "Evidence": "module_29554.js:280 客户端向服务端要对象数据(实测负载 i32)" },
"25377::dn.gdk": { "Alias": "ReportActivity", "Evidence": "module_25377.js:1516 六字符串上报(第 2 个是菜单项名)" },
"25377::dn.fdk": { "Alias": "ReportActivityShort", "Evidence": "module_25377.js:1510 两字符串版本" },
"10283::Mn.bh3": { "Alias": "SendButtonClickText", "Evidence": "module_10283.js:2284 发送 zh2_1 文本;实测 \"click button X\" / \"select entrance type\"" },
"10283::xn.sh1": { "Alias": "SetRememberMe", "Evidence": "module_10283.js:2197 写 kh1_1(bool)+lh1_1(string);调用点 18334.js:8637 sh1(!0, window.location.hostname);UI 命令 10032.js:16958 Jit(\"SetRememberMe(rememberMe=\")" },
"10283::ji.ehd": { "Alias": "SendPassword", "Evidence": "module_10283.js:2782 写 thc_1(string);调用点 18334.js:8876 SetPassword / 8122 CheckPassword" },
"10283::ji.ghd": { "Alias": "SendUniqueUserId", "Evidence": "module_10283.js:2803 写 chd_1(单 i64 模型);值来自 localStorage uniqueUserId(18334.js:7815-7837)" },
"10283::ji.zax": { "Alias": "SendUid", "Evidence": "module_10283.js:2788 写 vhc_1(string);调用点 18334.js:8870 SetUid" },
"10283::ji.fhd": { "Alias": "SendRegister", "Evidence": "module_10283.js:2794 写 login/password/url/forceLogin;调用点 18334.js:8864" },
"10283::ci.sh9": { "Alias": "SendSocialNetworkValue", "Evidence": "【语义未证】module_10283.js:2604 写 jh9_1(string);模型 ai 的 7 条上行之一,实测空串" },
"10283::Hn.wh4": { "Alias": "SendLoginViaHash", "Evidence": "module_10283.js:2368 写 sh4_1(string=64 字符 token);调用点 18334.js:5608 LoginViaHash" },
"10283::Hn.xh4": { "Alias": "SendSecondHash", "Evidence": "【语义未证】module_10283.js:2374 写 uh4_1(string),与 wh4 对称;触发方未定位" },
"10283::Ui.thf": { "Alias": "SendTimezoneOffset", "Evidence": "module_18334.js:8990 算 (getTimezoneOffset/60) 并加号;module_10283.js:2995 写 rhf_1" },
"10283::mn.xbl": { "Alias": "SendEmptyRequest", "Evidence": "【语义未证】module_10283.js:2095 空负载上行(methodId 3553092084033962840);配对 s2c = gn 的 ngz_1(读 1 个 long);无 toString/报错串可佐证领域名" },
"85667::ls.xbl": { "Alias": "RequestSpaceObjects", "Evidence": "【推测】module_85667.js:2752 空负载上行;调用点 18334.js:4359/5916/8607;应答是 41590B 大帧" },
"85196::ba.lcr": { "Alias": "LoadAvailableDevices", "Evidence": "【推测】module_85196.js:6973 空负载上行;触发链 Ur=$_$.c15=wU=GarageLoadAvailableDevices(10032.js:51762)" }
},
"Fields": {
"10283::Bn.qh3_1": { "Alias": "login", "Evidence": "实测值 \"WYT2WYT\";源码 wh3(t,n,i) 第 1 参" },
"10283::Bn.rh3_1": { "Alias": "password", "Evidence": "实测值 \"1Qq@1Qq@\";wh3 第 2 参" },
"10283::Bn.sh3_1": { "Alias": "rememberMe", "Evidence": "wh3 第 3 参 bool,实测 true" },
"10283::Bn.uh3_1": { "Alias": "twoFactorCode", "Evidence": "module_10283.js:2319 nh1 写的唯一字段" },
"10283::xn.kh1_1": { "Alias": "rememberMe", "Evidence": "module_10283.js:2197 sh1(t,n) 第 1 参;实测 bool=true" },
"10283::xn.lh1_1": { "Alias": "host", "Evidence": "sh1 第 2 参;调用点 18334.js:8637 传 window.location.hostname;实测 \"localhost\"" },
"10283::ji.thc_1": { "Alias": "password", "Evidence": "module_10283.js:2782 ehd 写的唯一字段(string)" },
"10283::ji.vhc_1": { "Alias": "uid", "Evidence": "module_10283.js:2788 zax 写的唯一字段(string)" },
"10283::ji.xhc_1": { "Alias": "registerLogin", "Evidence": "【推测】module_10283.js:2794 fhd(t,n,i,r) 第 1 参(string),按 2718-2723 的声明序推断" },
"10283::ji.yhc_1": { "Alias": "registerPassword", "Evidence": "【推测】fhd 第 2 参(string),同上序推" },
"10283::ji.zhc_1": { "Alias": "registerUrl", "Evidence": "【推测】fhd 第 3 参(string),同上序推" },
"10283::ji.ahd_1": { "Alias": "registerForceLogin", "Evidence": "【推测】fhd 第 4 参,codec 为 v().pb()(bool),其余 3 个是 v().xb()(string)" },
"10283::ji.chd_1": { "Alias": "uniqueUserId", "Evidence": "module_10283.js:2803 ghd 写的唯一字段(i64);值来自 localStorage uniqueUserId(18334.js:7815-7837)" },
"10283::ci.jh9_1": { "Alias": "socialNetworkValue", "Evidence": "【语义未证】module_10283.js:2604 sh9 写的唯一字段(string);实测空串" },
"10283::Hn.sh4_1": { "Alias": "loginHash", "Evidence": "module_10283.js:2368 wh4 写的唯一字段(string);实测 64 字符 token" },
"10283::Hn.uh4_1": { "Alias": "secondHash", "Evidence": "【语义未证】module_10283.js:2374 xh4 写的唯一字段(string);与 sh4_1 同为 64 字符 token" },
"10283::Ui.rhf_1": { "Alias": "timezoneOffsetHours", "Evidence": "module_10283.js:2995 thf 写的唯一字段(string);实测 \"+8\"" },
"10283::Fn.hh4_1": { "Alias": "remember2FaHash_codecField", "Evidence": "module_10283.js:2353 取该 s2c 负载用,报错串 \"_remember2FaHash_hashCodec\"" },
"10283::Fn.jh4_1": { "Alias": "rememberUsersHash_codecField", "Evidence": "module_10283.js:2360 取该 s2c 负载用,报错串 \"_rememberUsersHash_hashCodec\"" },
"10283::ki.chc_1": { "Alias": "advisedUids_codecField", "Evidence": "module_10283.js:2735 取该 s2c 负载用,报错串 \"_enteredUidIsBusy_advisedUidsCodec\"" },
"29554::G.o1wd_1": { "Alias": "requestPayload", "Evidence": "q1wd 用它编码传入值;实测 4 字节 i32=1,语义未完全确认" },
"25377::dn.zdj_1": { "Alias": "menuItem", "Evidence": "gdk 第 2 参;实测值 \"GARAGE\"" }
},
"MethodIds": {
"2045663294076292": { "Alias": "SocialNetworkCommands.SendSocialNetworkValue", "Dir": "c2s" },
"108605496059850042": { "Alias": "LoginCommand.SendLogin", "Dir": "c2s" },
"237130683810296524": { "Alias": "RememberLoginModel.RememberUsersHash", "Dir": "s2c", "Note": "module_10283.js:770 ih4_1 = R(-1109675316, 55211289);2356 分支读串 \"_rememberUsersHash_hashCodec\"(旧表里的 ...296524 即此值,勿改成 ...294924)" },
"761463638726320835": { "Alias": "RegistrationModel.s2cViaGhc", "Dir": "s2c", "Note": "module_10283.js:1120 ghc_1 = R(531145411, 177292069);2745 分支调 ohc(),无负载" },
"1151554561693937214": { "Alias": "RegisterStateCommands.SendPassword", "Dir": "c2s" },
"1247179769701109529": { "Alias": "RegistrationModel.EnteredUidIsBusy", "Dir": "s2c", "Note": "module_10283.js:1116 bhc_1;2731 分支读 advisedUids 列表(报错串 2735)" },
"1247179769701225356": { "Alias": "RegistrationModel.s2cViaDhc", "Dir": "s2c", "Note": "module_10283.js:1117 dhc_1(与 bhc_1 同高位,低位差 115827);2739 分支调 lhc(),无负载" },
"1816792453857564692": { "Alias": "ModelService.RequestObjects", "Dir": "c2s" },
"1968866752316155064": { "Alias": "RegisterStateCommands.SendRegister", "Dir": "c2s" },
"1968867162405923123": { "Alias": "RegisterStateCommands.SendUid", "Dir": "c2s" },
"2025886178375810581": { "Alias": "EntranceRequestModelCC.ReceiveLong", "Dir": "s2c", "Note": "【语义未证】模型 ModelId 2951079444907754024(module_10283 gn,字段 jgz_1..ogz_1);2090 分支读 1 个 long(a7g_1.q2u());与 c2s mn.xbl(3553092084033962840) 配对" },
"2522279596878141909": { "Alias": "UserActivityReporter.ReportActivity", "Dir": "c2s" },
"2528403217084400809": { "Alias": "SpaceObjectsCommands.RequestSpaceObjects", "Dir": "c2s", "Note": "【推测】module_85667 ls.xbl,空负载" },
"2851527043709977805": { "Alias": "RegistrationModel.s2cViaHhc", "Dir": "s2c", "Note": "module_10283.js:1121 hhc_1;2747 分支调 phc(),无负载" },
"3048017108161529684": { "Alias": "RegisterStateCommands.SendUniqueUserId", "Dir": "c2s" },
"3216143066888387731": { "Alias": "ModelService.LoadDependencies", "Dir": "s2c" },
"3553092084033962840": { "Alias": "EntranceRequestModel.SendEmptyRequest", "Dir": "c2s", "Note": "【语义未证】module_10283.js:539 sgz_1 = R(-484916392, 827268716),2095 mn.xbl 空负载" },
"3559444790692169462": { "Alias": "EntranceCommands.SetRememberMe", "Dir": "c2s" },
"3777380964115009138": { "Alias": "AccountLoginModel.NeedTwoFactor", "Dir": "s2c" },
"4091278427760769105": { "Alias": "ClientParamsCommands.SendTimezoneOffset", "Dir": "c2s" },
"4345588892358775163": { "Alias": "RegistrationModel.s2cViaEhc", "Dir": "s2c", "Note": "module_10283.js:1118 ehc_1;2741 分支调 mhc(),无负载" },
"5785879225652927897": { "Alias": "RememberLoginModel.s2cViaFh4", "Dir": "s2c", "Note": "module_10283.js:768 fh4_1;2348 分支调 mh4(),无负载" },
"6160917066910786241": { "Alias": "AccountLoginModel.WrongPassword", "Dir": "s2c" },
"6180114602676583672": { "Alias": "RegistrationModel.s2cViaFhc", "Dir": "s2c", "Note": "module_10283.js:1119 fhc_1;2743 分支调 nhc(),无负载" },
"6941935892500153516": { "Alias": "AccountLoginModel.TwoFactorWrong", "Dir": "s2c" },
"7286120219821118707": { "Alias": "LoginCommand.SendTwoFactorCode", "Dir": "c2s" },
"7546805075905111829": { "Alias": "RegistrationModel.s2cViaAhc", "Dir": "s2c", "Note": "module_10283.js:1115 ahc_1;2730 分支读 1 个 long(reportUid?)" },
"7640916300855664666": { "Alias": "ModelService.LoadObjectsData", "Dir": "s2c" },
"7806260029063678398": { "Alias": "GarageDevicesCommands.LoadAvailableDevices", "Dir": "c2s", "Note": "【推测】module_85196 ba.lcr,空负载" },
"7889047569932192655": { "Alias": "RememberLoginModel.Remember2FaHash", "Dir": "s2c", "Note": "module_10283.js:769 gh4_1;2349 分支读串 \"_remember2FaHash_hashCodec\"" },
"7981625407112679465": { "Alias": "RememberLoginCommands.SendLoginViaHash", "Dir": "c2s" },
"8179162314198150518": { "Alias": "ModelService.SetModelCommandAlias", "Dir": "s2c" },
"8701688322991734706": { "Alias": "RememberLoginModel.s2cViaEh4", "Dir": "s2c", "Note": "module_10283.js:767 eh4_1;2347 分支调 lh4(),无负载" },
"9038756763225879447": { "Alias": "ModelService.UnloadObjects", "Dir": "s2c" }
},
"Spaces": {
"100045260": { "Alias": "Entrance", "Evidence": "握手帧同帧下发;入口空间" },
"100073070": { "Alias": "Garage", "Evidence": "button_click GARAGE 后真实服下发" },
"100072911": { "Alias": "Shop", "Evidence": "容器模式表 = Jj/ShopCategoryCC" },
"100045720": { "Alias": "Chat", "Evidence": "容器模式表 = _t/Kz/ChatCC/ClanChatCC/NewsShowingCC" },
"920007382011": { "Alias": "Queue", "Evidence": "登录后空间列表第 1 条(旧注释:快速战斗队列)" },
"100119080": { "Alias": "Unknown1", "Evidence": "登录后空间列表第 2 条,用途未证" },
"3074457345817190050": { "Alias": "Battle", "Evidence": "帧量极大(3551 条 s2c),疑似战斗,未证" }
}
}