news 2026/8/19 20:27:16

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
解不开网易游戏的 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就能得到unnpkmapnpk两个可执行文件:

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 的思路是"双保险":

  1. 先交给 libmagic,根据内容特征给出 MIME 类型,比如image/pngvideo/mp4application/font-sfnt
  2. 再对游戏特有的格式做二次校验。文件头是KTXRGISPKM等魔数时直接补上对应后缀;文本类内容则根据<NeoX<FxGroup<SceneMusic这类开头标签识别出各类 NeoX XML,还能通过vec4tex2Dfloat等关键词把 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_dnasdf_dtasdf_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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/19 20:26:07

多核对齐切分:让矩阵乘法在多核上“各干各的“

多核对齐切分&#xff1a;让矩阵乘法在多核上"各干各的" 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言&#xff0c;原生支持C和C标准规范&#xff0c;主要由类库和语言扩展层构成&#xff0c;提供多层级API&#xff0c;满足多…

作者头像 李华
网站建设 2026/8/19 20:23:35

Linux资源合集精选:从装系统到玩转命令行的完整进阶指南

Linux资源合集精选&#xff1a;从装系统到玩转命令行的完整进阶指南 【免费下载链接】awesome-linux :penguin: A list of awesome projects and resources that make Linux even more awesome. :penguin: 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-linux L…

作者头像 李华
网站建设 2026/8/19 20:23:29

lidR 树冠度量计算:从点云分割到每木属性的完整指南

lidR 树冠度量计算&#xff1a;从点云分割到每木属性的完整指南 【免费下载链接】lidR Airborne LiDAR data manipulation and visualisation for forestry application 项目地址: https://gitcode.com/gh_mirrors/li/lidR lidR 是 R 语言中面向林业应用的机载 LiDAR 点…

作者头像 李华
网站建设 2026/8/19 20:22:12

终极Godot逆向工程指南:用GDRE Tools快速恢复源码、提取PCK资源

终极Godot逆向工程指南&#xff1a;用GDRE Tools快速恢复源码、提取PCK资源 【免费下载链接】gdsdecomp Godot reverse engineering tools 项目地址: https://gitcode.com/GitHub_Trending/gd/gdsdecomp 如果你正在寻找一套能够对 Godot 游戏进行逆向工程的专业工具&…

作者头像 李华