10 分钟学会用 unnpk 解包网易 NPK 文件:从编译安装到提取游戏资源全流程

发布时间:2026/8/17 22:44:28
10 分钟学会用 unnpk 解包网易 NPK 文件:从编译安装到提取游戏资源全流程 10 分钟学会用 unnpk 解包网易 NPK 文件从编译安装到提取游戏资源全流程【免费下载链接】unnpk解包网易游戏NeoX引擎NPK文件如阴阳师、魔法禁书目录。项目地址: https://gitcode.com/gh_mirrors/un/unnpk假设你刚刚下载了一份《阴阳师》的资源包文件名后缀是.npk。双击打不开改扩展名也没用扔进十六进制编辑器只能看到一堆看不懂的字节。这其实是网易 NeoX 引擎的资源封装格式——里面的立绘、音效、脚本都被打包并做了压缩处理。今天要介绍的unnpk就是专为解开这类文件而生的命令行工具。它会读取 NPK 的索引结构、解压每个条目、识别文件类型并补上扩展名最后把资源按类别分文件夹吐出来。本文会带你走完编译 → 首次解包 → 验证结果 → 解密脚本的完整闭环全程照抄命令即可。一、它到底解决了什么问题一句话概括unnpk 能把网易 NeoX 引擎的 NPK 资源包拆成一个个可正常打开的普通文件。它值得你花十分钟的原因有三个动手成本低一条命令完成解包输出目录自动创建不用记一堆参数。结果可直接用工具会借助 libmagic 识别每个条目的真实类型自动补上.png、.mp4、.json等扩展名并按 MIME 类型分文件夹存放。自带解密链路针对《阴阳师》的脚本加密做了配套工具能从密文一路还原到可读的 Python 源码。顺带一提它不只是能用还留了结构分析工具mapnpk方便你研究 NPK 内部是怎么组织的。源码全部在本仓库内逻辑清晰适合作为学习二进制文件解析的入门读物。二、编译安装两条命令拿到可执行文件2.1 先装依赖unnpk 的编译依赖libmagic用于识别文件类型和zlib用于解压。按你的系统选一条执行# macOS brew install libmagic # CentOS / RHEL sudo yum install file-libs file-develDebian/Ubuntu 用户则安装libmagic-dev即可。zlib通常系统自带一般不需要单独处理。2.2 克隆并编译git clone https://gitcode.com/gh_mirrors/un/unnpk cd unnpk make编译结束后目录下会出现两个新文件可执行文件用途unnpk主解包程序负责拆包与还原mapnpk结构分析工具输出包内索引明细用ls确认这两个文件存在编译这步就算过关了。三、首次运行解包一个 NPK 文件并验证结果找到任意一个 NPK 文件比如scene.npk执行./unnpk scene.npk scene_output命令只有两个参数第一个是输入包第二个是输出目录。运行后终端会打印一个表格逐行列出每个条目的偏移、压缩前后大小、是否被 zip 压缩、MIME 类型和扩展名。解包完成后进入输出目录验证一下ls scene_output你会看到类似image/、video/、text/这样的子目录。工具按 MIME 类型归类文件名是条目在索引中的十六进制编号例如0000004C.png。这一步做对了就说明你的环境没问题可以进入实战环节了。四、实战主线把《阴阳师》的 script.npk 还原成源码下面用《阴阳师》的script.npk走一遍完整解密链这也是本工具最具代表性的用法。4.1 第一步拆包./unnpk script.npk script解出来的文件很多先不用管我们只需要一个目标文件。在输出目录里找一个类似0A0D60DC的文件文件名就是它在包内的编号具体名称随版本不同而变化它就是加密后的脚本。4.2 第二步第一层解密用项目自带的tools/script_redirect.py处理这个文件。这个脚本实现了从游戏逆向出的 redirect 逻辑rotor 解密 → zlib 解压 → 字节反转。python2 tools/script_redirect.py script/0A0D60DC 0A0D60DC.out注意这里输出的是重定向后的二进制流直接写入.out文件不要打印到屏幕看内容不是给人读的。4.3 第三步纠正 opcode阴阳师对 Python 字节码做了混淆直接反编译会报错。先用tools/pyc_decryptor.py把 opcode 换回标准值python2 tools/pyc_decryptor.py 0A0D60DC.out 0A0D60DC.pyc这一步会生成带标准 Python 2.7 头部的.pyc文件。4.4 第四步反编译出源码最后用 uncompyle2 反编译uncompyle2 -o 0A0D60DC.py 0A0D60DC.pyc打开生成的0A0D60DC.py你就能看到游戏逻辑对应的 Python 源码了。至此一条完整的解密链跑通NPK 解包 → rotor 解密 → 解压反转 → opcode 纠正 → 反编译。4.5 前置环境提醒上面的脚本依赖 Python 2.7 环境需要提前准备好pip install rotor git clone https://github.com/wibiti/uncompyle2.git cd uncompyle2 python setup.py install如果电脑里没有 Python 2建议用 Docker 起一个 Python 2.7 容器来跑这一步避免污染系统环境。五、想看得更细用 mapnpk 分析包结构如果你不满足于能用还想知道 NPK 内部怎么组织的mapnpk可以帮你把索引表完整导出来./mapnpk -i scene.npk -o structure.md它支持的参数如下参数作用-i, --input指定输入的 NPK 文件-o, --output输出到文件缺省打印到终端-f, --format输出格式支持markdown和csv-t, --type数值显示形式支持hex、int、original输出表格里每一项对应包内一个条目索引编号、数据偏移、压缩大小、解压大小、是否压缩。把-f csv的结果丢进表格软件就能做资源规模统计比如这个包里有几张立绘、几个音频。六、避坑指南这几个问题提前帮你踩掉6.1 报错 npk file open failed输入路径写错了或者文件权限不够。确认路径存在后再执行。6.2 解出的文件没有扩展名这属于正常现象。unnpk 已经尽力按内容补了扩展名但总有识别不了的类型比如引擎自定义格式。此时用系统自带的file命令看真实类型file 输出目录/某个无扩展名文件也可以直接看文件头部字节判断。扩展名缺失不影响文件内容完整性。6.3 脚本解密失败先检查环境rotor是否安装、Python 版本是不是 2.7、uncompyle2是否装好。其次注意网易不同游戏的 redirect 密钥代码里的asdf_dn、asdf_dt、asdf_df可能不同script_redirect.py内置的是针对《阴阳师》逆向得到的参数换一款游戏未必通用。6.4 想解包别的游戏但找不到目标脚本文件README 里提到一个思路redirect.pyc本身也藏在script.npk里文件名就是包内偏移编号例如某个版本里对应FB54F059这个文件。解包后可以按这个特征去筛选定位。6.5 大包解包偏慢NPK 越大逐条magic_buffer识别类型的耗时越明显。解大包时保持磁盘有至少两倍于包体大小的剩余空间尽量用 SSD别同时跑太多程序。七、进阶玩法批量解包与资源归档手上 NPK 一多手工一条条敲命令太累。写个循环脚本一口气处理当前目录下所有包#!/bin/bash for npk in *.npk; do [ -f $npk ] || continue out${npk%.npk}_out echo 处理中: $npk ./unnpk $npk $out done解完还能顺手做资源统计把同类型文件归拢# 统计各类文件数量 find 输出目录 -type f | sed s/.*\.// | sort | uniq -c | sort -rn八、动手时刻跑通你的第一条命令整篇文章压缩成核心就三步装依赖、make、解包。现在你可以克隆仓库并编译确认unnpk与mapnpk两个文件就位拿一个 NPK 文件跑通./unnpk 输入.npk 输出目录进目录检查分类是否合理想挑战《阴阳师》脚本的按第四章的四步解密链走一遍看看源码长什么样。工具是死的玩法是活的。解包出来的美术资源可以用于学习参考脚本逻辑可以帮你理解游戏机制而 NPK 的索引结构本身也是一份很好的文件格式教学材料。唯一要守住的原则是只用于个人学习研究不把提取内容用于商业分发或破坏游戏公平性。现在打开终端开始吧——第一个命令跑通之后后面的一切都会水到渠成。【免费下载链接】unnpk解包网易游戏NeoX引擎NPK文件如阴阳师、魔法禁书目录。项目地址: https://gitcode.com/gh_mirrors/un/unnpk创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考