Skip to content

Releases: DRDRDRRDDRDR/hackmud-zh

hackmud 简体中文汉化补丁 v1.3.2

Choose a tag to compare

@DRDRDRRDDRDR DRDRDRRDDRDR released this 29 Sep 05:26

hackmud 简体中文汉化补丁 v1.3.2

真机截图复盘发现的 2 处客户端漏译,已补齐。这两条是 v1.3.1 审计误判漏掉的。

本版新增

原文 译文 #US 偏移 判定依据
Received 收到 0x5c91 method#1421 里 Format("L{0}{1} 来自C{2}", "Received", …) 的显示实参
CONNECTING 连接中 0xca6a 唯一引用点就是 UnityEngine.UI::set_text

真机表现:修前会看到 Received 36GC 来自 marks —— 同一句里一半英文一半中文。

为什么上一版漏了(两条独立的误判叠加)

v1.3.1 的审计把 Received 判成「JSON 键」,错在两处:

  1. 消费方启发式不准:旧法取 ldstr 后 6 条指令内的第一个 call 当消费方。
    而 Received 是多参表达式的一个实参,后面那个 get_Item 其实是紧接着的 'amount' 实参的调用。
    → 已改为只看紧随其后 1 条指令。
  2. IDENT 规则太粗:把「无空格无标点的单词」一律归为「标识符/键名」,
    Received / CONNECTING 这类单词显示文本正好落进去。
    → 该类别共 209 条,是漏译高危区,已逐条重扫。

改正后重扫,Received、[DEADNODE]、final、time、fg、priv_store 等
「疑似显示」条目全部复检:

串 结论 依据
CONNECTING 可译 ✅ 唯一消费方 set_text
Received 可译 ✅ Format 的显示实参
[DEADNODE] 禁译 ✗ 既做 ContainsKey 字典键、又做显示 —— 单副本,译了键就找不到
final 禁译 ✗ 两处都是 op_Equality 判别式
time 禁译 ✗ 同时是 userAutos.Add("time") 补全键、TryGetValue("time") JSON 键
fg / priv_store / chat_pass / trade_gc / pass / OnLayout 禁译 ✗ 均有字典/比较类消费方

新增「显示文本权威清单」工具

recon/find_settext_strings.py:穷举所有 ldstr 紧接 UnityEngine.UI::set_text 的字面量
—— 凡直接喂给 set_text 的串一定被渲染到界面,这是显示文本的权威集合。
本次结果:纯显示 3 条(`c `、time、CONNECTING),有其它消费方 43 条。

真机验证(本轮已做)

启动游戏连拍 64 帧 + Windows OCR:

  • 载荷哈希 4/4 匹配、进程存活、识别汉字 2048 个
  • 开场自检动画识别为中文(创建备份补丁文件、初始化半空间入口、哈希脚本令牌、刷新缓存、预热主用户界面),英文开场 0 命中
  • 终端界面为中文([清空窗口]、[断开终端连接]、要运行脚本,请输入脚本名称并按回车。)

仍为英文且确认无法汉化

内容 原因
Top level marks are available to earn now…、Because I'm - again - such a nice fella…、mark ::!money_manager:: has been hidden、Death and taxes… 等 服务器下发的 marks/脚本输出,在 Core.dll 中零命中(实测),本地改不到
scratch / chat(面板标题) 是窗口/面板标识符:method#2723 用 FFCLEEJHJNN("shell"/"badge"/"breach"/"scratch") 按名找 GameObject;译了会找不到面板
命令名与脚本名(trade、marks.accts、sys.specs …) 玩家要敲、服务端要校验

校验值

文件 SHA256
Managed/Core.dll 见包内 SHA256SUMS.txt
resources.assets 5B2345F938D02A4289A76518D3DEA8B604CD3EAEDDE870C3BAE8958CDAB2C6D7
sharedassets0.assets B837895A23225B7A4CEAD9AC477A2328AFD856FC585465E3022F9D26236A15EE
level0 0465927CA0FCFD49519FB331487D0FAEC0653026982E731F430090C982A4695C

⚠️ 风险声明

hackmud 官方规则禁止修改任何既有文件,并把 client file modification 视为 "custom client",
检测到可能导致封号。使用风险自负。分发的二进制为修改后的游戏文件,版权归 hackmud 开发者所有。

hackmud 简体中文汉化补丁 v1.3.1

Choose a tag to compare

@DRDRDRRDDRDR DRDRDRRDDRDR released this 29 Sep 05:07

hackmud 简体中文汉化补丁 v1.3.1

把 Core.dll 剩余英文逐项审计后,补上最后 2 条漏译的界面标签。

本版新增

原文 译文 位置 消费方(判定依据)
offers 提供 Core.dll #US 堆 仅 System::Format —— 纯显示
-=accepts=- -=接受=- Core.dll #US 堆 System::Format + UnityEngine::LogError —— 纯显示

这两条是交易界面的标签。IL 实证(method#1526):

Format("`{0}{1}` `{2}{3}`", "C", arg2, flag ? "A" : "l",
                              flag ? "offers" : "-=accepts=-")

即 offers 与 -=accepts=- 是同一处互斥显示的两个分支。同型串
-= ultra-cool-supporter-only purchasable stuff =- 在更早的补丁里已经译成中文,
说明 -=...=- 确实是给玩家看的标签,这两条属漏网。

本轮的 Core.dll 逐项审计(结论:无更多可译项)

把 Core.dll 里仍是英文的条目全量列出(456 条),按既定判据自动初判并逐条复核:

初判 条数 例子
禁译:网络/协议 API 少数 Authorization、Token token="
禁译:API 路径/文件名 多数 /download.json、/trade/init.json、Explorer.EXE
禁译:证书钉扎数据 21 CN=R3, O=Let's Encrypt, C=US …
禁译:Unity 生命周期消息名 若干 OnFocus、OnLayout、OnShutdown、OnSwitchUser
禁译:格式/颜色/版面模板 若干 `{0}{1}` `{2}{3}`、<color={0}>
禁译:正则/转义 若干 ^Your users: [^(]*( \(\d+ / \d+\))?$
禁译:玩家输入的命令前缀 若干 trade 、#edit 、create_user
禁译:标识符/脚本名/JSON 载荷 多数 chats.send、gui.bgm、sys.specs、{"input":
可译(本版已处理) 2 上表两条

另有 3 条经 IL 复核后仍判禁译:

  • `LSuccess`\n —— 既被 op_Equality 比较,又被 UnityEngine::Find 当 GameObject 名查找
  • ÈusernameÉ —— 是构建提示串的模板占位符(È/É 是客户端高亮标记),单处引用,改动风险大于收益
  • function(context, args){...} —— JS 桩代码

结论:Core.dll 已无更多可译的界面文本。

技术说明

沿用等长替换(#US 堆是 UTF-16,槽位以字符数计):

串 槽位 译文 余量
offers 6 提供 4(空格补齐)
-=accepts=- 11 -=接受=- 5

Core.dll 大小不变(541,184 B),协议串闸门仍 0 命中。

闸门增强

verify_package.py 的「译文落地」检查从 13 条扩到 15 条,并支持逐条指定编码:

  • Unity 资产 → UTF-8
  • Core.dll #US 堆 → UTF-16LE
  • 对 Core.dll 还用精确填充形态判译文(提供 是常见词,裸查会假阳性——实测补丁版里 提供 作为子串命中 7 次)

校验值

文件 SHA256
Managed/Core.dll FBF8E61D429A6F838C88A6D7933B8D15B431E5722812CD321D4F2068952E8AC4
resources.assets 5B2345F938D02A4289A76518D3DEA8B604CD3EAEDDE870C3BAE8958CDAB2C6D7
sharedassets0.assets B837895A23225B7A4CEAD9AC477A2328AFD856FC585465E3022F9D26236A15EE
level0 0465927CA0FCFD49519FB331487D0FAEC0653026982E731F430090C982A4695C

⚠️ 风险声明

hackmud 官方规则禁止修改任何既有文件,并把 client file modification 视为 "custom client",
检测到可能导致封号。使用风险自负。分发的二进制为修改后的游戏文件,版权归 hackmud 开发者所有。

hackmud 简体中文汉化补丁 v1.3.0

Choose a tag to compare

@DRDRDRRDDRDR DRDRDRRDDRDR released this 29 Sep 04:55

hackmud 简体中文汉化补丁 v1.3.0

本轮把 Unity 资产全量扫了一遍,补上剩余 3 处界面文本。

本版新增

原文 译文 所在 对象名
ACQUIRING HARDLINE 接入硬连线中 level0 GameObject text(CanvasRenderer + RectTransform)
HARDLINE ENGAGE 硬连线接通 level0 GameObject text
placeholder text 占位文本 sharedassets0.assets GameObject label_text(3 处)

本轮怎么找出来的(以及为什么没漏)

写了个扫描器把 level0 / resources.assets / sharedassets0.assets 里所有 Unity 对象
的全部长度前缀字符串取出来,再用「像不像给玩家看的文本」的规则筛:

  • 筛出 143 条候选
  • 其中 81 条是引擎/工具内部命名(Cull Mode、Stencil ID、Font Atlas、digit (1)、
    Main Camera、Bevel Clamp …)—— 着色器属性名与物体名,不是给玩家看的
  • 其余多是音频片段名(Incoming Attack Chain、robovac dreamtime、in risk we trust、
    Slick Gold、vlan party …)、TMP 内部数据(LineBreaking Leading Characters、
    Smiling face with smiling eyes、Default Style Sheet)、字体/材质名 —— 均不显示
  • 真候选只有上表 3 条,且都用同一判据确认过

可译判据(同 v1.2.0)

把字面量拿去搜全部托管程序集的 #US 堆(本次扫了 102 个可解析程序集,
含 mscorlib / System.* / 全部 UnityEngine.* 模块 / Unity.TextMeshPro / Core.dll):

  • ACQUIRING HARDLINE → 零命中
  • HARDLINE ENGAGE → 零命中
  • placeholder text → 零命中

代码若要用这些文本做逻辑,就必须在自己程序集里有同文字面量;零命中 ⇒ 只能是「读字段 → 显示」。
另用 GameObject 名字与组件构成佐证:三个都是带 CanvasRenderer + RectTransform 的 UI 元素
(名字分别是 text / text / label_text)。

技术说明

沿用等长替换(int32 字节长度 + UTF-8,中文多出的字节用尾部空格补齐):

文件 替换 文件大小 差异段
level0 2 处 36,168 B 不变 2 段(0x5fd4–0x6193)
sharedassets0.assets 3 处 1,490,000 B 不变 3 段(0x16b26c–0x16baac)

前两条中文恰好占满原字节预算(18/18、15/15,零填充)。UnityPy 复载正常
(level0 250 对象、sharedassets0.assets 309 对象)。

校验值

文件 SHA256
Managed/Core.dll 04523E88269020BF92A20A05F132BB3FEF6C19F12D6AAE8855BC3437FA4FBF52
resources.assets 5B2345F938D02A4289A76518D3DEA8B604CD3EAEDDE870C3BAE8958CDAB2C6D7
sharedassets0.assets B837895A23225B7A4CEAD9AC477A2328AFD856FC585465E3022F9D26236A15EE
level0 0465927CA0FCFD49519FB331487D0FAEC0653026982E731F430090C982A4695C

安装 / 回滚

powershell -ExecutionPolicy Bypass -File install_zh.ps1 install
powershell -ExecutionPolicy Bypass -File install_zh.ps1 rollback

已确认为「不可译」,不再重复排查

  • 服务器下发的文本:Top Donors、WHAT'S NEW、last_login、脚本输出等
  • scratch / chat 面板标题:在 Core.dll 里但被同时当作窗口名/字典键,全文件仅一份副本
  • 引擎/音频/TMP 内部命名:见上文 143 条候选的分拣结果
  • 终端历史回放:%APPDATA%\hackmud\shell.txt 的旧英文记录不是漏译,游戏内 clear 可清屏

⚠️ 风险声明

hackmud 官方规则禁止修改任何既有文件,并把 client file modification 视为 "custom client",
检测到可能导致封号。使用风险自负。分发的二进制为修改后的游戏文件,版权归 hackmud 开发者所有。

hackmud 简体中文汉化补丁 v1.2.0

Choose a tag to compare

@DRDRDRRDDRDR DRDRDRRDDRDR released this 29 Sep 04:47

hackmud 简体中文汉化补丁 v1.2.0

新增内核自检/修复序列的终端状态串汉化,补丁载荷增至 4 个文件。

本版新增:开机自检与内核修复状态串

游戏在自检/内核异常修复流程中显示的那组终端状态串已中文化:

原文 译文
-running self diagnostics- -正在运行自检-
-kernel error detected- -检测到内核错误-
-attempting fix- -尝试修复-
-fix successful- -修复成功-
-initializing kernel- -初始化内核-
-creating acct- -创建账户-
-crosslinking hardline- -交叉连接硬连线-
-patching terminal- -修补终端-
-complete- -完成-

(打字机动画用的 . / .. / ... 帧原样保留。)

为什么判定「可以译」

这 9 条串不在任何托管程序集里 —— 对 Core.dll 及 Managed/ 下全部 DLL 逐个解析 #US 堆,
零命中。它们只作为数据存在于场景文件 level0(path_id=250 的 MonoBehaviour)。

也就是说,客户端代码没有同文字面量可供比较,不可能拿它们做逻辑判断;它们与已汉化的
-terminal active- → -终端已激活- 属同一类纯显示文本。

技术说明

沿用等长替换:每串是 int32 字节长度 + UTF-8,中文较英文多出的字节用尾部空格补齐到原长度。

  • 9 处替换,level0 文件大小不变(36,168 B)
  • 差异恰好 9 段(0x8c41–0x8d3e)
  • UnityPy 仍可正常载入(250 个对象)

载荷变化(共 4 个)

文件 说明
Managed/Core.dll 256 条文本(同前)
resources.assets 中文字体(同前)
sharedassets0.assets 开场 13 行打字机动画(v1.1.0 加入)
level0 本版新增:内核自检/修复状态串

校验值

文件 SHA256
Managed/Core.dll 04523E88269020BF92A20A05F132BB3FEF6C19F12D6AAE8855BC3437FA4FBF52
resources.assets 5B2345F938D02A4289A76518D3DEA8B604CD3EAEDDE870C3BAE8958CDAB2C6D7
sharedassets0.assets 436939FD6091DB230F84E0632DBD6AF6D231A9A81C125FF74444F270EB4E221E
level0 0B31BD4938643F9084B47AC0E5B91E60A120BC9CC10207F45028E09F1B6FE35C

安装 / 回滚

powershell -ExecutionPolicy Bypass -File install_zh.ps1 install
powershell -ExecutionPolicy Bypass -File install_zh.ps1 rollback

从旧版升级:直接跑 install,脚本会把 4 个文件一并更新并保留原版备份。

仍不在补丁范围内

  • 服务器下发的文本(Top Donors、WHAT'S NEW、last_login、脚本输出等)
  • scratch / chat 面板标题:在 Core.dll 里但被同时当作窗口名/字典键使用,全文件仅一份副本
  • 终端历史回放:%APPDATA%\hackmud\shell.txt 的旧英文记录不是漏译,游戏内 clear 可清屏

⚠️ 风险声明

hackmud 官方规则禁止修改任何既有文件,并把 client file modification 视为 "custom client",
检测到可能导致封号。使用风险自负。分发的二进制为修改后的游戏文件,版权归 hackmud 开发者所有。

hackmud 简体中文汉化补丁 v1.1.0

Choose a tag to compare

@DRDRDRRDDRDR DRDRDRRDDRDR released this 29 Sep 04:31

hackmud 简体中文汉化补丁 v1.1.0

新增开场自检文字汉化,补丁载荷从 2 个文件变为 3 个。

本版新增:开场打字机动画中文化

游戏启动时那 13 行自检文字已全部译为中文:

初始化内核... 完成。
处理子系统... 完成。
激活硬连线... 完成。
锁定失效保护... 完成。
激活一次性密钥... 完成。
启动主驱动器... 完成。
启动辅助驱动器... 完成。
创建备份补丁文件... 完成。
初始化半空间入口... 完成。
哈希脚本令牌... 完成。
刷新缓存... 完成。
预热主用户界面... 完成。
加载启动动画... 完成。

技术说明

这段文字不在 Core.dll 里,而在 Unity 资产 sharedassets0.assets 的
Kernel.startup_text 字段(path_id=286 的 MonoBehaviour)。它不是一段文本,而是
18 帧的打字机动画快照——每帧都是整屏的富文本,彼此只差累进的点号与 完成。。

处理方式:等长替换。每帧是独立 Unity 字符串(int32 长度 + UTF-8),中文比英文长的
部分从该帧尾部的填充空格里等量扣除(那些空格本只为版面填充,中文是双宽,扣掉反而更贴合)。
结果:

  • 18 帧逐帧字节长度完全不变(如末帧 2170 → 2170)
  • 文件总大小不变(1,490,000 B)
  • 只有 startup_text 那一处被动过(622 处差异全部落在该区间)
  • 附带一道硬闸门:译完后颜色标签之外不得残留任何 ASCII 字母,否则拒绝写盘

载荷变化

文件 说明
Managed/Core.dll 同 v1.0.1(256 条文本)
resources.assets 同 v1.0.1(中文字体)
sharedassets0.assets 本版新增:开场自检文字

安装脚本已改为表格驱动($Files 表),新增文件只需加一行;哈希常量由
build_release.py 打包时自动回填,不手改。

校验值

文件 SHA256
Managed/Core.dll 04523E88269020BF92A20A05F132BB3FEF6C19F12D6AAE8855BC3437FA4FBF52
resources.assets 5B2345F938D02A4289A76518D3DEA8B604CD3EAEDDE870C3BAE8958CDAB2C6D7
sharedassets0.assets 436939FD6091DB230F84E0632DBD6AF6D231A9A81C125FF74444F270EB4E221E

安装 / 回滚

powershell -ExecutionPolicy Bypass -File install_zh.ps1 install
powershell -ExecutionPolicy Bypass -File install_zh.ps1 rollback

从 v1.0.x 升级:直接跑 install 即可,脚本会把三个文件一并更新并保留原版备份。

仍不在补丁范围内

  • 服务器下发的文本:Top Donors、WHAT'S NEW、last_login、脚本输出等由服务器产生,本地改不到。
  • scratch / chat 面板标题:它们在 Core.dll 里,但同时被当作窗口名/字典键使用
    (全文件只有一份副本),翻译会破坏窗口查找,故保留英文。
  • 终端历史回放:%APPDATA%\hackmud\shell.txt 会在启动时回放,里面的旧英文记录不属于漏译;
    游戏内输入 clear 即可清屏。

⚠️ 风险声明

hackmud 官方规则禁止修改任何既有文件(Modifying any existing files is not permitted),
并把 client file modification 视为 "custom client",检测到可能导致封号。使用风险自负。
分发的二进制为修改后的游戏文件,版权归 hackmud 开发者所有。

hackmud 简体中文汉化补丁 v1.0.1

Choose a tag to compare

@DRDRDRRDDRDR DRDRDRRDDRDR released this 28 Sep 15:28

hackmud 简体中文汉化补丁 v1.0.1

紧急修复:v1.0.0 会导致游戏无法登录。请务必使用本版。

修复内容

Token token=" 被误译,导致所有网络请求失败

客户端执行的是:

www.SetRequestHeader("Authorization", "Token token=\"" + token + "\"");

v1.0.0 把这个前缀译成了 令牌 token="。Unity 的 SetRequestHeader 会拒绝含非 ASCII 的 header 值,
抛出:

InvalidOperationException: Header value contains invalid characters

后果:所有鉴权请求根本发不出去,游戏卡在「命令执行超时。请重试。」,无法登录。

本版已把该字符串还原为英文。这是 v1.0.0 唯一的已知功能性缺陷。

为什么之前没发现

原有的判定逻辑把「被 Concat 拼接的字符串」一律当作显示用途,而这条恰恰是用 Concat
拼出来的协议串。教训是:判断一个字符串能否翻译,不能看它怎么被拼接,要看它流向哪个 API。

本版为此新增了自动化闸门 audit_protocol.py:反汇编 Core.dll,找出所有网络/协议 API 调用点,
断言紧邻的字面量全是纯 ASCII。CI 每次提交都会跑;该脚本在解析失败或未检视到字面量时会拒绝放行
(宁可失败也不做"永远绿"的空闸门)。

已知问题(不在本补丁范围内)

  • Steam 认证失败(723 / HTTP 401):已实测用原版未修改的 Core.dll 同样复现,
    与本补丁无关。可能成因:系统时钟偏差(本机实测慢约 96 秒,且 Windows 时间服务未启动)、
    Steam 登录态、代理/VPN 线路。请先校准系统时间再试。
  • 开场自检文字未翻译:initializing kernel... done. 等 13 行位于 Unity 资产
    (level0 与 sharedassets0.assets,UTF-8 编码),不在 Core.dll,故本补丁覆盖不到。

校验值

文件 SHA256
Managed/Core.dll 04523E88269020BF92A20A05F132BB3FEF6C19F12D6AAE8855BC3437FA4FBF52
resources.assets 5B2345F938D02A4289A76518D3DEA8B604CD3EAEDDE870C3BAE8958CDAB2C6D7

安装 / 回滚

powershell -ExecutionPolicy Bypass -File install_zh.ps1 install
powershell -ExecutionPolicy Bypass -File install_zh.ps1 rollback

⚠️ 风险声明

hackmud 官方规则禁止修改任何既有文件(Modifying any existing files is not permitted),
并把 client file modification 视为 "custom client",检测到可能导致封号。使用风险自负。
分发的二进制为修改后的游戏文件,版权归 hackmud 开发者所有。

hackmud 简体中文汉化补丁 v1.0.0

Choose a tag to compare

@DRDRDRRDDRDR DRDRDRRDDRDR released this 28 Sep 11:54

hackmud 简体中文汉化补丁 v1.0.0

首个公开版本。

内容

  • 256 条界面 / 提示 / 帮助文本简体中文化(终端横幅、命令用法、解析错误、参数校验、帮助清单、脚本执行状态词)
  • 中文字体注入:把游戏自带的 Liberation Sans 与中文黑体子集合并为单一 TTF,替换字体资产,CJK 字形可正常渲染
  • 一键安装 / 回滚 / 校验脚本 install_zh.ps1(自动备份 → 覆盖 → 哈希校验,幂等)
  • 可自行校验安装包:verify_package.py 检查载荷哈希、脚本内嵌常量、编码与必备文件;
    ci_selftest.py 是它的反向自检(人为破坏必须被检出)
  • CI 全绿:每次提交自动跑包完整性、反向自检,以及在 Windows 上的
    install → 幂等 install → verify → rollback 往返测试

技术要点

文本改动做在 .NET 程序集的 #US(user string)堆里,采用等长替换:中文 + 空格填充到原
UTF-16 长度,因此堆大小、元数据 token、所有偏移全部不变,不会影响其它字符串。

刻意保留英文(不译)

保留项 原因
FULLSEC / MIDSEC / HIGHSEC / LOWSEC / NULLSEC 服务器端 scripts.lib().security_level_names 权威取值;客户端用其做 JSON 键查询与相等比较;官方沙盒规则里的安全边界
命令名 / 脚本名(trade、#help、accts.balance、marks.* …) 游戏按英文解析输入,服务端校验
success(小写 JSON 协议字段名) 服务器通信协议的一部分

校验值

文件 SHA256
Managed/Core.dll F6CBF53FC177FE8A04E6384D59C474A78D5120DC81B86C54CADF96C176AD9FD0
resources.assets 5B2345F938D02A4289A76518D3DEA8B604CD3EAEDDE870C3BAE8958CDAB2C6D7

安装

powershell -ExecutionPolicy Bypass -File install_zh.ps1 install

回滚:install_zh.ps1 rollback 校验:install_zh.ps1 verify

已知限制

  • 在线内容无法汉化(服务器下发的其他玩家消息、排行、marks 教学输出不经客户端)
  • 帮助文本的终端表格对齐基于等宽英文,中文 2 倍宽,部分表格列会偏(仅显示问题)
  • 补丁前产生的终端历史记录仍为英文,游戏内输入 clear 可清屏

许可

  • 原创部分(安装脚本 install_zh.ps1、构建脚本 build_release.py、文档)按 MIT 授权,见 LICENSE。
  • 分发的游戏二进制(Managed/Core.dll、resources.assets)不在 MIT 范围内,
    权利归 hackmud 开发者所有;本补丁不含游戏本体,使用前请自行通过 Steam 购买并安装 hackmud。
  • 完整权利归属与免责说明见 NOTICE.md。

⚠️ 风险声明

hackmud 官方规则明确写着 「Modifying any existing files is not permitted」,并把
client file modification 视为 "custom client",检测到可能导致封号。本补丁修改了
Core.dll 与 resources.assets,使用存在封号风险,请自行判断,风险自负。

分发的二进制为修改后的游戏文件,版权归 hackmud 开发者所有;本项目与官方无关,
仅供学习与汉化交流,若权利人要求将立即移除。