当前位置: 首页 > news >正文

洛克王国:世界 — 解包与 Mod 尝试完整记录

洛克王国:世界 — 解包与 Mod 尝试完整记录

游戏:《洛克王国:世界》(Roco Kingdom: World)
引擎:Unreal Engine 4.18
代号:NRC
平台:WeGame
反作弊:ACE(Tencent Anti-Cheat Expert)内核级


一、基本信息

1.1 目录结构

洛克王国:世界(2002304)/
├── 洛克王国:世界.exe          ← 主启动器(调用 WeGame + ACE)
├── TCLS/                        ← Tencent Cloud Launcher Service
├── WeGameLauncher/              ← WeGame 启动器组件
├── Win64/
│   ├── Engine/                  ← UE4 引擎运行时
│   ├── NRC.exe                  ← 游戏启动器(206 KB)
│   └── NRC/
│       ├── Binaries/Win64/
│       │   ├── NRC-Win64-Shipping.exe     ← 游戏本体(143 MB)
│       │   ├── NRC-Win64-ShippingBase.dll  ← 游戏核心 DLL
│       │   └── AntiCheatExpert/           ← ACE 反作弊驱动
│       ├── Content/Paks/                  ← 加密 PAK 文件(61 个,约 45 GB)
│       └── Plugins/
└── msdk/ rail_files/             ← Tencent SDK 组件

1.2 游戏版本

  • 内部版本号:0.0.0.491
  • 显示版本:v1.0.0.3
  • 引擎版本:UE 4.18(使用 PhysX3 物理引擎、Wwise 音频)

1.3 PAK 文件特征

  • 使用 AES-256 加密
  • 自定义包格式(需专用解包脚本)
  • 带有 .sig 签名文件进行完整性校验
  • 补丁文件命名规范:pakchunk{N}-WindowsNoEditor_{N}_P.pak

二、解包过程

2.1 获取 AES 密钥

密钥来源:cs.rin.ru 论坛 UE4/5 AES 密钥收集帖

该游戏在论坛中的记录:

版本 AES 密钥
封测旧版 0x07120EE6E0BEF37F6D17D15AC8FF304425F7255815307CE6DED93A376074B8
封测新版 0x7460373AD9DEE67C30155825F7254430FFC85AD117DD6E7FF3BEE0E60E1207B8
当前正式版 0x34254D23E47299B3B7F6C4CFDE9BD0688703446D9D8F37B2EBDDDE5B06ED5ADF

2.2 解包工具链

由于使用自定义包格式,FModel 无法直接打开。需用 QuickBMS + 专用脚本:

  1. 下载 QuickBMS
  2. 从 cs.rin.ru 帖子底部下载 UE4_specific_scripts.zip
  3. 解压后找到 unreal_tournament_4_0.4.27e_roco_kingdom_world.bms
  4. 必须使用 quickbms_4gb_files.exequickbms.exe 不支持 2GB 以上文件)
quickbms_4gb_files.exe \unreal_tournament_4_0.4.27e_roco_kingdom_world.bms \"E:\Game\...\Win64\NRC\Content\Paks" \"D:\Software\quickbms\Roco"

脚本内置了 AES 密钥,解包过程中自动解密。

2.3 解包结果

成功解出 9057 个文件,目录结构:

Roco/
├── Engine/          ← UE4 引擎资源
└── NRC/Content/├── ArtRes/│   ├── AnimSequence/   ← 动画序列(含角色动画)│   ├── Asset/          ← 3D 模型、贴图、物理资产│   ├── BP/             ← 战斗角色蓝图│   ├── Effects/        ← 特效资源│   └── Material/       ← 材质├── NewRoco/│   └── Modules/│       ├── Core/│       │   ├── Character/Avatar/  ← **换装系统核心**│       │   └── NPC/Fashion/       ← NPC 时装│       └── System/│           └── Appearance/        ← 外观/换装系统└── ...

三、换装系统分析

3.1 Avatar 槽位结构

角色使用组件化换装系统,各部件独立挂载:

Avatar 槽位:
├── Hair (发型)     — 编号 11000~21031
├── Eyes (眼睛)     — 编号 34001~34016
├── MakeUp (妆容)   — 编号 15001~25016
├── Skin (皮肤)     — 编号 30001~30007
├── EyeBrows (眉毛) — 编号 12001/22001
├── HeadWear (头饰) — DT_PC_HeadWear
├── Pendant (挂件)  — DT_PC_Pendant
├── Shoes (鞋子)    — BP_AvatarShoes (继承 AvatarShoesConfig)
└── Wand (魔杖)     — DT_AvatarWand

3.2 鞋子配置

BP_AvatarShoes.uasset 是一个蓝图,继承自 C++ 类 AvatarShoesConfig

{"Type": "BlueprintGeneratedClass","Name": "BP_AvatarShoes_C","SuperStruct": "Class'AvatarShoesConfig'","Properties": {"DefaultHeight": 8.0}
}
  • DefaultHeight: 8.0 是鞋跟高度参数(用于调整角色离地高度)
  • 鞋子 3D 模型不在 Avatar 目录,而是随套装(Suits)分布于各 PAK 中
  • 套装文件命名:suits1_001 ~ suits1_111(男)/ suits2_001 ~ suits2_111(女)

四、运行时 Mod 尝试(全部失败)

目标:在游戏中隐藏鞋子模型,仅本地可见

4.1 方法一:直接修改 PAK 文件

  • ❌ PAK 有 .sig 签名校验
  • ❌ 修改后无法通过完整性检查
  • ❌ 重打包需要原始签名密钥

4.2 方法二:3DMigoto DLL 代理

复制 d3d11.dll + d3dx.ini + nvapi64.dll → 游戏目录
  • ❌ ACE 文件扫描检测到非白名单 d3d11.dll
  • 错误:游戏安全系统检测到非法劫持模块

4.3 方法三:3DMigoto Loader 外部注入

3DMigoto Loader.exe → 远程注入 d3d11.dll
  • ❌ ACE 进程保护阻止 CreateRemoteThread
  • 错误码:5 (ACCESS_DENIED)

4.4 方法四:ReShade + RockDLL

RockDLL 是一个专门为该游戏编写的 DLL 注入器,意图通过外部加载 dxgi.dll 绕过 ACE 文件扫描:

[INJECT]
target=NRC-Win64-Shipping.exe
dlls=D:\Tool\dist\dxgi.dll
  • ❌ 注入失败:FAILED
  • 即使是同名开源项目 RockDLL 也已被 ACE 封锁

4.5 方法五:UE4SS xinput1_3.dll 代理

复制 UE4SS.dll + dwmapi.dll(改名xinput1_3.dll) → 游戏目录
  • ❌ ACE 文件扫描检测
  • 错误:检测到非法劫持模块 (xinput1_3.dll)

4.6 方法六:UE4SS version.dll 代理

dwmapi.dll 改名为 version.dll
  • ❌ ACE 自身加载异常
  • 错误:ACE-Base64.dll 加载失败,该文件缺失或损坏
  • 副作用:version.dll 的 API hook 干扰了 ACE 的 LoadLibrary 调用

4.7 方法七:禁用 ACE 驱动

尝试 A:sc stop

sc stop ACE-BASE
sc stop ACE-ADVT
sc stop ACE-CORE102700
sc stop ACE-CORE302700
  • ❌ ACE-BASE/ADVT 卡在 STOP_PENDING 状态
  • ❌ ACE-CORE 持续运行

尝试 B:注册表禁用

reg add "HKLM\SYSTEM\CurrentControlSet\Services\ACE-BASE" /v Start /t REG_DWORD /d 4 /f
# ...(全部 5 个驱动)
  • ❌ 重启后 ACE 自修复,全部恢复为 RUNNING

4.8 方法八:关闭 WeGame + RockDLL

  1. 启动游戏 → 进入角色界面
  2. 关闭 WeGame 启动器
  3. 管理员运行 RockDLL.exe
  • ❌ 仍然 FAILED
  • ACE 是内核驱动,不依赖 WeGame 进程

五、ACE 反作弊系统分析

5.1 驱动清单

驱动名 类型 功能
ACE-BASE 内核驱动 基础保护框架
ACE-ADVT 内核驱动 高级威胁检测
ACE-BOOT 内核驱动 启动时加载
ACE-CORE102700 内核驱动 核心保护模块 A
ACE-CORE302700 内核驱动 核心保护模块 B

5.2 保护层面

┌────────────────────────────────┐
│  文件扫描层                      │
│  检查游戏目录下 DLL 白名单        │
├────────────────────────────────┤
│  进程保护层                      │
│  阻止外部 CreateRemoteThread     │
│  阻止 DLL 注入                    │
├────────────────────────────────┤
│  内核驱动层                      │
│  ACE-BASE.sys + ACE-CORE.sys    │
│  自修复 + 反禁用                 │
└────────────────────────────────┘
  • 全链路保护:文件 → 进程 → 内核
  • 自修复机制:注册表修改后重启自动恢复
  • 非白名单 DLL 全部拦截:d3d11.dll、xinput1_3.dll、version.dll

六、关键文件清单

文件 路径
游戏本体 Win64/NRC/Binaries/Win64/NRC-Win64-Shipping.exe
加密 PAK Win64/NRC/Content/Paks/pakchunk*.pak
ACE 驱动 Win64/NRC/Binaries/Win64/AntiCheatExpert/
解包脚本 unreal_tournament_4_0.4.27e_roco_kingdom_world.bms
QuickBMS https://aluigi.altervista.org/quickbms.htm
AES 密钥帖 https://cs.rin.ru/forum/viewtopic.php?t=100672

七、致谢

  • spiritovod @ cs.rin.ru — AES 密钥收集与专用解包脚本
  • Luigi Auriemma — QuickBMS 工具
  • Goldppx — RockDLL(虽然已被封,但提供了研究思路)

Disclaimer:本文仅为技术研究记录。修改游戏客户端可能违反用户协议。本文内容仅用于学习和研究目的。

http://www.zskr.cn/news/1351977.html

相关文章:

  • 避开BLE开发第一个坑:搞懂广播帧里的TxAdd、ChSel字段,让你的智能硬件不再‘隐身’
  • C++ Kafka实战:用librdkafka手写一个带自定义分区和事件回调的生产者
  • 我踩了N多劣质工具坑从嫌弃到真香,2026这款语音生成软件真后悔没早用
  • 2026 年一人公司创业热潮:政策与 AI 驱动,机遇背后暗藏风险
  • Vue 3 + 高德地图实战:打造全能定位与搜索组件
  • 2026年多门店商城小程序怎么做
  • 告别一堆转接头!一个自研小工具搞定USB、网口、485、232、TTL互转(附配置教程)
  • 保姆级教程:在YOLOv5s.yaml里给YOLOv5 V7.0模型加上SimAM注意力(附代码)
  • 减速机:以“减速”之名,行“增力”之实的机械智慧
  • 【c++面向对象编程】第46篇:CRTP(奇异递归模板模式):静态多态的妙用
  • 国产多模态大模型 vs DALL-E:本土化突围与全球竞技
  • 别再只调样式了!深入理解鸿蒙ArkTS中Slider的四种交互状态(Begin/Moving/End/Click)
  • 手把手教你用C语言写一个简易的SMTP邮件内容解析器(基于libnids抓包库)
  • 【c++面向对象编程】第44篇:typename与class的区别,依赖类型名与template消除歧义
  • 告别开发依赖!SAP顾问必学的SQ01/SQ02/SQ03实战:5步搞定自定义报表
  • DocKit v1.0 发布 — AI 原生 NoSQL 桌面客户端,支持 Elasticsearch、OpenSearch 和 DynamoDB,本地优先,Apache 2.0 开源
  • 21.jdbc 学习笔记:从原理到实践的全流程梳理
  • 20.MySQL事务隔离级别示例详解(脏读、不可重复读、幻读)
  • 化妆品俄罗斯 Honest Sign诚实标签采集技术方案解析
  • Klogg实战:5分钟搞定海量日志中的Error排查(颜色标记+正则过滤技巧)
  • 炉石传说佣兵战记自动化脚本完整指南:5步轻松实现自动战斗
  • RK3588/3568嵌入式视觉开发:为什么我选择OpenCV 3.4.3 + FFmpeg 4.2.9这个“经典组合”?
  • 避开RK3566以太网PHY调试的那些‘坑’:从硬件C15到DTS配置的完整避坑指南
  • 众汇量化以多策略融合与智能投研打造高质量投资体系
  • 告别 GPU 独占时代:用 HAMi 实现训练推理一体化——博维智慧 GPU 虚拟化实战
  • 复合AI系统基准测试与优化实践指南
  • BE-ToF技术:突破传统飞行时间成像的深度感知新方案
  • Vue3 + TypeScript实战:封装一个带实时预览的企业级图片裁剪组件(附完整源码)
  • 在树莓派上玩转framebuffer:手把手教你用C语言点亮第一块屏幕(附完整代码)
  • 麒麟KYLINOS权限设置避坑指南:从图形界面到命令行的完整流程与常见错误排查