游戏中大概有3种文件,分别是pyc,nxs,npk,还有一些配置文件就不说了
这里的pyc是修改过opcode的,pyc文件加密后就是nxs文件,nxs文件会被打包到npk文件中
我们从里向外说吧,先放出GitHub链接
https://github.com/yuanbi/NeteaseUnpackTools
Pyc文件
NeteasePycObject,这个文件夹中的文件是用来还原pyc opcode的,使用方式如下:
netpyc 输入文件 输出文件 [是否加密]
第三个参数是可选的,默认为0,代表解密,如果为1代表加密,就是将正常的opcode修改为游戏中python的opcode
这个工具的部分pyobject的偏移有问题,大部分文件不会出现问题,懂这方面的大佬可以自行修改下,后面修改过后也会在GitHub更新的
用netpyc修改opcode过后,可以使用uncomply6,进行反编译
还有一个问题就是部分pyc文件会有一个或两个字节码不是python中的字节码,极少数的文件会出现这种问题,这个时候在反编译的时候就会报error,如果报了error可以观察解析失败的opcode附近的代码,可以自行修改
如果被修改过的字节码不在opcode中,就要手动分析了,当然这种情况出现的很少
Nxs文件
接下来就是nxs文件了,nxs文件直接使用NeteaseNxsUnpack中的NeteaseNxsUnpack.py进行解密,使用方法如下
python2 NeteaseNxsUnpack.py 输入文件 输出文件
之后使用netpyc解密opcode,然后反编译就行了
Npk文件
直接使用NeteaseNpkUnpack中的NeteaseNpkUnpack.py,使用方法如下
python2 NeteaseNpkUnpack.py 输入文件 输出文件夹,解密后的文件无后缀,文件类型需要自己分析
Script.Npk解包
网易游戏基本上会有script.npk,解包方法如下
先解包npk,解包后文件夹中的所有文件都是nxs文件,在进行nxs文件解密的步骤就行了
DecodeBuffer
这些是三种文件,还有一种是这样的,这里说的是Windows的版本,在nxfilesystem.dll中会有一个decodebuffer函数,这个就是第四个,这个函数的上层是openwithloader
openwithloader作用是打开文件,文件校对,和部分初始化,在openwithloader中并不是所有的数据都要经过decodebuffer函数,部分数据需要解密,多数会是一些配置文件
在openwithloader中,捕获数据如下,在openwithloader的ret字节下断点,文件名,文件大小,会存储在[eax+4]的位置,如果我没记错的话
还有就是在Windows中并不是所有文件都存储在npk文件里,还有一部分存储在 C:\Users\用户名\AppData\Local\游戏名缩写 中,如果你在这里中找到了script文件夹,这个文件夹中会包含很多文件夹和一个文件
这些文件夹和文件的名字都是被加密过的,可以在nxfilesystem.dll中搜索导出的包含path的函数,具体名字忘记了,函数功能是这样的,传入正常路径,传出加密路径
喜欢的老哥,来波关注吧
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!