工具链(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/(含数据库口令)不进库,可用上述工具重新生成。
130 lines
16 KiB
JSON
130 lines
16 KiB
JSON
{
|
||
"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),疑似战斗,未证" }
|
||
}
|
||
}
|