State machine (cold start, first launch)
A returning user with a cached, still-valid
ip/port/zone skips straight from step 6 to step 9; the RSA+AES GSL dance only runs on first launch or when the cache is stale/rejected.
Check-version endpoint
ea- variant by GrayUtils.GetPercentageFromMd5: MD5(deviceId) read as a little-endian uint64, mod 100 + 1 <= 5):
getserverlist.php, getnotice.php, probe.php); there is no separate “gate server” discovery step.
Hot-update transport & patch format
Three independently-versioned payloads, compared via the fields above and patched separately:- Asset bundles (incl. C#
.mdlassemblies): standard UnityAssetBundle, tracked by thedllresmanifest. - Lua bundle: one flat
LWLFfile, not wrapped in an AssetBundle at all. - Data tables: the plain-ZIP
table_*.dataarchive.
Key/nonce are derived once from hardcoded dummy constants via two self-referential ChaCha8 passes (reproduced independently in Python and confirmed reproducible):