ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

解不开网易游戏的 NPK 包?这份 unnpk 上手路线图请收好

解不开网易游戏的 NPK 包?这份 unnpk 上手路线图请收好 解不开网易游戏的 NPK 包这份 unnpk 上手路线图请收好【免费下载链接】unnpk解包网易游戏NeoX引擎NPK文件如阴阳师、魔法禁书目录。项目地址: https://gitcode.com/gh_mirrors/un/unnpk你可能在某个资源站下载过《阴阳师》的补丁满怀期待地解压却只得到一堆十六进制文件名和乱码。这些.npk文件是网易 NeoX 引擎打包游戏资源的专用容器市面上几乎没有现成的通用工具能打开它。开源项目unnpk正是为此而生两个用 C 写的可执行程序负责拆包三个 Python 脚本负责解密组合起来能把《阴阳师》《魔法禁书目录》等游戏里的模型、贴图、脚本一件件完整请出来。先弄清楚NPK 到底难在哪如果把 NPK 文件比作一间没有门牌的仓库你会更容易理解它的结构文件头相当于仓库的登记簿记录着版本、大小等元信息索引表是货架清单告诉你每份资源叫什么、堆在哪、占多大数据区则是密密麻麻的货架本体。麻烦的地方在于索引表里的名字不是models/hero.png这样的明文路径而是一串经过哈希运算的数字而且索引表的起点藏得很深需要从文件偏移0x14处读出一个 4 字节的数值才能定位。通用解压软件既没有这套哈希映射也不知道该去哪找索引自然只能干瞪眼。所以正式动手之前建议先用配套的mapnpk摸个底。它能按多种格式把索引表原样导出帮你确认包内资源的构成./mapnpk -f csv input.npk structure.csv # 导出 CSV 表格 ./mapnpk -f markdown -t hex input.npk # 默认输出 Markdown 表格每行对应一条资源记录包含索引号、数据偏移、压缩前后的大小、压缩标志等 7 个字段。看懂了这张表后面解包时心里就有数了。十五分钟跑通第一次解包unnpk 对运行环境的要求不高Linux、macOS 都行唯一的外部依赖是libmagic用于识别文件类型# macOS brew install libmagic # CentOS / RHEL sudo yum install file-libs file-devel依赖装好后clone 源码并编译一个make就能得到unnpk和mapnpk两个可执行文件git clone https://gitcode.com/gh_mirrors/un/unnpk cd unnpk make解包本身更是简单到只有一条命令两个参数分别是待解包的 NPK 文件和输出目录./unnpk scene_resources.npk extracted_scenes命令跑完你会在extracted_scenes下看到按MIME 类型分好的子目录比如image/、text/、application/里面是0A0D60DC.png这类哈希名 扩展名的文件。为什么这样命名因为 NPK 索引里根本没有原始文件名哈希值就是它唯一的身份标识。控制台还会同步打出一张表格列出每个文件的偏移、大小、压缩状态和识别出的类型方便你核对有没有漏包。它凭什么认识这些文件拆包只完成了一半另一半是类型识别。如果解出来的全是一堆无扩展名的裸数据后续处理依然很痛苦。unnpk 的思路是双保险先交给 libmagic根据内容特征给出 MIME 类型比如image/png、video/mp4、application/font-sfnt再对游戏特有的格式做二次校验。文件头是KTX、RGIS、PKM等魔数时直接补上对应后缀文本类内容则根据NeoX、FxGroup、SceneMusic这类开头标签识别出各类 NeoX XML还能通过vec4、tex2D、float等关键词把 GLSL 着色器和 OBJ 模型区分出来。也就是说它像个眼力很好的分拣员先看整体类别再抠细节特征尽量减少类型张冠李戴的情况。另一个贴心的细节是解压失败不中断。当某个文件被判定为 zlib 压缩、但解压时报错时unnpk 会保留原始字节照常输出只在终端打一条警告整个批次继续往下走。对于动辄上千个文件的资源包来说这种坏一个不拖垮全队的设计能帮你省下大量排查时间。硬核彩蛋把《阴阳师》的脚本完整解密如果说拆包是开胃菜脚本解密才是 unnpk 真正亮眼的地方。以《阴阳师》的script.npk为例解包后会得到一堆无扩展名的文件其中就藏着游戏逻辑脚本。挑一个比如0A0D60DC按下面三步走# 第一步依次完成 rotor 解密、zlib 解压与字符串反转 python tools/script_redirect.py 0A0D60DC 0A0D60DC.out # 第二步修复被重新映射的 Python 字节码 opcode python tools/pyc_decryptor.py 0A0D60DC.out 0A0D60DC.pyc # 第三步反编译成可读的 Python 源码 uncompyle2 -o 0A0D60DC.py 0A0D60DC.pyc三层保护逐层剥掉最终拿到接近原始样貌的.py文件。这里要特别提醒tools/script_redirect.py中的asdf_dn、asdf_dt、asdf_df三个加密参数是针对《阴阳师》逆向得到的不同游戏、不同版本可能不同。一个实用的找参数思路是——解密用的redirect.pyc本身就躺在script.npk里3.0.3 版本对应FB54F059这个文件先把它解出来再通过动态调试反推出新参数。上手前先避开这几个坑别在 Windows 上硬刚。作者的建议很直白路径分隔、libmagic 编译、Python 2 环境都会让你怀疑人生老老实实用 Linux/macOS解密链路依赖 Python 2 和 rotor 库以及 uncompyle2 反编译器装环境时别漏了它们不是所有网易游戏都适用同一套参数。解不开时先怀疑版本差异再怀疑工具本身。说到底unnpk 适合三类人研究游戏引擎资源组织方式的逆向爱好者、想拿原始素材做 MOD 或本地化翻译的玩家以及把二进制格式解析当教学案例的学生。当然也请守住一条底线——这些能力只用于个人学习研究别拿去商用或二次分发。想动手的话现在就去 clone 一份源码准备一个手头的 NPK 文件按文中的路线完整走一遍。当你第一次看到上千个资源被整齐地分门别类摆进目录时那种感觉还是挺奇妙的。【免费下载链接】unnpk解包网易游戏NeoX引擎NPK文件如阴阳师、魔法禁书目录。项目地址: https://gitcode.com/gh_mirrors/un/unnpk创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表