e-gleba/world_conqueror_4_ru

GitHub: e-gleba/world_conqueror_4_ru

针对 World Conqueror 4 手游的俄文本地化与全解锁 Mod 工具链,涵盖 APK 反编译、AES 加密数据处理、游戏数值修改及自动化重编译签名。

Stars: 4 | Forks: 0

# world_conqueror_4_ru

logo

**World Conqueror 4** (EasyTech) 的俄文本地化和全解锁补丁流水线。 反编译 APK → 编辑字符串表 + 数据 JSON → 重编译 → 签名 → 在 Waydroid 上侧载安装。 ## 前置条件 | 工具 | 版本 | 安装方式 | |---|---|---| | Java | 11+ | `sudo apt install default-jdk` | | Python | 3.12+ | 系统 | | `cryptography` | 任意 | `pip install cryptography` | | CMake | 4.2+ | cmake.org | | apktool | 3.0.1 | 自动下载 | | uber-apk-signer | 1.3.0 | 自动下载 | | Waydroid | 任意 | 仅用于部署目标 | ## 快速开始 ``` # 1. 配置 (首次运行时下载 apktool + uber-apk-signer JARs) cmake --preset default -Dapk_input=/path/to/wc4.apk -Dapk_pkg=com.easytech.wc4 # 2. 反编译 + 解密所有 assets/data/*.json 到 src/ cmake --build build --target update # 3. 修补字符串表和数据 # 在此处随意编辑 src/ — 更新后 JSON 为明文 # 4. 重新编译 + 加密 + 签名 cmake --build build --target build # => build/work/patched-aligned-debugSigned.apk # 5. (可选) 推送到 Waydroid cmake --build build --target deploy ``` ## CMake 目标 | 目标 | 功能描述 | | :-- | :-- | | `update` | `apktool d` → `src/`;然后就地批量解密 `assets/data/*.json` | | `build` | 暂存 `src/` → 批量加密 JSON → `apktool b` → 签名 | | `deploy` | 运行 `build` 然后通过 `waydroid app install` 安装 | ## CMake 缓存变量 | 变量 | 默认值 | 描述 | | :-- | :-- | :-- | | `apk_input` | `` | 原始 `.apk` 的路径 | | `apk_pkg` | `` | Android 包名(例如 `com.easytech.wc4`) | | `java_bin` | `java` | Java 可执行文件 | | `python3_bin` | `python3` | Python 3 可执行文件 | | `apktool_version` | `3.0.1` | 要下载的 apktool JAR 版本 | | `uber_signer_version` | `1.3.0` | uber-apk-signer JAR 版本 | | `wc4_crypt` | `scripts/wc4_crypt.py` | 加密脚本路径 | | `wc4_header` | `MD5_SIZE` | 重新加密时使用的头部格式 | | `src_dir` | `src/` | 反编译后的 smali + assets 目录树 | 在配置时覆盖: ``` cmake --preset default \ -Dapk_input=~/Downloads/wc4.apk \ -Dapk_pkg=com.easytech.wc4 ``` ## 加密 (`scripts/wc4_crypt.py`) AES-256-CBC,密钥/IV 从 `libworld-conqueror-4.so` 中提取。 所有 `assets/data/*.json` 均为加密块。该脚本处理五种头部格式: | 格式 | 布局 | | :-- | :-- | | `EASY_MD5_SIZE` | `EASY(4) + ver(4) + len(4) + md5(16) + origsize(4) + ct` | | `EASY_MD5` | `EASY(4) + ver(4) + len(4) + md5(16) + ct` | | `MD5_SIZE` | `md5(16) + origsize(4) + ct` ← 重加密默认值 | | `MD5` | `md5(16) + ct` | | `RAW` | `ct` only | 自动检测会探测每种格式并验证 UTF-8/JSON 输出。 ### 独立使用 ``` # 检查文件 python3 scripts/wc4_crypt.py info ArmySettings.json # 解密为明文 python3 scripts/wc4_crypt.py decrypt ArmySettings.json -o army.json --pretty # 重新加密 (自动检测原始 header 格式) python3 scripts/wc4_crypt.py encrypt army.json -o ArmySettings.json --ref ArmySettings.json.orig # 批量解密目录 python3 scripts/wc4_crypt.py decrypt assets/data/ -o decrypted/ # 查询 JSON 路径 (直接对加密文件生效) python3 scripts/wc4_crypt.py query ArmySettings.json 'units.0.name' python3 scripts/wc4_crypt.py query ArmySettings.json 'units.*.attack' # 原地字段编辑 + 重新加密 python3 scripts/wc4_crypt.py edit ArmySettings.json \ --set 'units.0.hp=9999' --encrypt -o ArmySettings.json # 正则替换 python3 scripts/wc4_crypt.py edit plain.json \ --regex '/OldText/NewText/' -o patched.json # 搜索所有数据文件 python3 scripts/wc4_crypt.py grep assets/data/ -p 'tank' --glob '*.json' # 验证所有文件的 md5 完整性 python3 scripts/wc4_crypt.py verify assets/data/ # 往返测试 (加密 → 解密 → 比较) python3 scripts/wc4_crypt.py roundtrip ArmySettings.json ``` ## 全解锁 (`scripts/wc4_unlock.py`) **就地修改所有 JSON 数据文件**(明文 `src/assets/data/`)以解锁所有内容。 **不**触碰属性/战斗数值。**不**修改 `ScenarioSettings.json`。 ``` python3 scripts/wc4_unlock.py src/assets/data/ ``` 修改内容(25 个类别): - **将军** —— 所有属性上限为 6,技能上限为 5,`CostMedal=1`,`CostGold=0`,所有商店解锁,全部设为传说级(橙色) - **将军晋升** —— 晋升链消耗归零;保留 `AdvanceID` 链表 - **技能** —— `CostMedal=1`,默认全部解锁,移除关卡/场景门槛 - **科技** —— 所有消耗归零,移除 HQ 等级要求 - **关卡 / 战役** —— 全部开放,移除 HQ 锁;教程任务 (Id=10001) 给予 1000 万经验 + 100 万勋章 + 解锁所有关卡 - **征服** —— 全部可见且开放,国家消耗归零 - **军队购买** —— `CostMoney=1`,装备/原子弹消耗归零,建造时间/CD 归零 - **建筑、奇观、军团、军、精英部队、前线、装饰品、HQ、商店** —— 消耗最小化,清除锁定 ## 字体补丁 (`scripts/patch_lang_notosans.py`) 将 APK 内的字体替换为 **Noto Sans**,以修复本地化后的西里尔文渲染问题。 ``` python3 scripts/patch_lang_notosans.py src/ ``` 在 `update` 之后、`build` 之前运行。 ## 规格转储 (`scripts/wc_spec_dump.py`) 将单位/将军属性从解密后的 JSON 转储为可读表格以供分析。 ``` python3 scripts/wc_spec_dump.py src/assets/data/ -o specs.md ``` ## 典型补丁工作流 ``` cmake --preset default -Dapk_input=~/wc4.apk -Dapk_pkg=com.easytech.wc4 cmake --build build --target update # decompile + decrypt python3 scripts/wc4_unlock.py src/assets/data/ # unlock everything python3 scripts/patch_lang_notosans.py src/ # fix Cyrillic font # 编辑 src/assets/strings/strings.xml 以修改 RU 字符串 cmake --build build --target build # encrypt + recompile + sign cmake --build build --target deploy # push to Waydroid ``` ## 项目结构 ``` . ├── CMakeLists.txt # build pipeline (LANGUAGES NONE) ├── CMakePresets.json # default configure/build presets ├── scripts/ │ ├── wc4_crypt.py # AES-256-CBC encrypt/decrypt toolkit │ ├── wc4_unlock.py # full-unlock patcher (25 categories) │ ├── patch_lang_notosans.py # Cyrillic font patch │ └── wc_spec_dump.py # unit/general stat extractor ├── src/ # decompiled APK tree (after `update`) │ └── assets/data/ # encrypted *.json game data └── schemas/ # JSON schemas for data files ``` ## 存档 存档文件存储在 **公共外部存储** 中(Android SDK 35 目标所需)。 更新后首次启动时,存档会自动从旧位置迁移。 **更新前请导出你的存档** —— 使用游戏内导出功能。 ## 发布版本 | 版本 | 日期 | 备注 | | :-- | :-- | :-- | | `v1.24.2_ru2` | 2026-03-22 | 存档导出支持,GDPR 崩溃修复,overbuf mod 修复,翻译修复 | | `v1.24.2_ru1` | 2026-03-15 | 首次公开发布 | ## 许可证 MIT —— 参见 [`license`](license)。
标签:APKTool, APK修改, Bash脚本, CMake构建, EasyTech, Java工具, JS文件枚举, URL提取, Waydroid, World Conqueror 4, 代码混淆, 俄罗斯语, 修改器, 反编译, 字符串表编辑, 安卓逆向, 本地化翻译, 游戏汉化, 目录枚举, 移动安全, 自动化管道, 资源解密, 逆向工具, 重编译