决战平安京解包

您所在的位置:网站首页 决战平安京段位列表 决战平安京解包

决战平安京解包

2023-08-11 04:10| 来源: 网络整理| 查看: 265

据我观察 这若干游戏中 平安京的桔梗模型是最精致的 打算就从这里面搞出来模型来

woc b站这编辑器怎么不支持markdown

前言

通用游戏模型提取方式

数据包里的模型 -> 内存中的模型 -> 显卡显存中的模型

数据包里的模型 经过 游戏引擎读取后放到内存中 

然后经过当作动作和物理计算后 把结果最终发送到显卡显存中

什么opengl ripper、ninja ripper都是从显卡显存或者发送到显卡前的内存中读取的

因此得到的结果是含有动作的模型 使用价值不大

信息搜集

已经有网易Neox的解包方法了

https://www.bilibili.com/read/cv1348159

然而最大的问题是决战平安京用到的是EXPK(Encryption neoX PacKage)

现在的问题是如何解密

分析

其实解密要么ida pro反编译找到加密的方式 要么直接dump内存

曾经尝试用第一种方法 结果平安京实在是太大了 根本不好下断点调试

那就用第二种

pidof com.netease.moba

查看平安京的进程号

cat /proc/`pidof com.netease.moba/maps

查看平安京的内存映射

cat /proc/`pidof com.netease.moba/maps | grep malloc > /data/local/tmp/memmaps.txt

找到平安京malloc分配的堆内存 并把映射表保存下来

ida pro按这个表把堆内存拉下来

注意要用dword而不是byte 不然会慢四倍

至此得到平安京运行时堆内存镜像

接下来我们来从镜像中寻找突破口

分析原有的nxpk文件 觉得可能索引表留在内存中

接下来从文件数量最多的包入手查找(原因:数量多 表大 很可能 单独分配个大内存块

找到后兴高采烈得去解密内容 然后发现也加密了

怎么搞?

接下来又三条路

1 只提取一个模型 还原类得信息 (投入与回报太少了

2 仍旧反汇编 很难啊

3 根据明文跟密文破解 没玩过 

我们先看一下从内存dump出来的索引表 跟阴阳师的一模一样 尤其是第七块 要么0要么1

也就是说压缩算法也是zlib

zlib有个标头(magic number) 78 9c 但我们在expk包里发现的是15 23

搜索一下15 23的数量 跟 一个随便同长度的数字的数量 

发现差基本是文件数量

可以确认这个加密算法应该是对每个文件做相同的变化(也就是说加密不会与文件内容之外的信息有关,比如文件索引号等) 很可能是基于字节的

根据程序员的三大美德之首 懒惰 猜测可能跟索引加密方法一样(突破的核心

加密方法很可能是 异或运算

从索引表推出xor 的值

解密内容 可以还原出zlib头

至此 解密结束

剩下的翻上面阴阳师解包的文章找工具查看模型跟转模型

(注:我相信一大堆人都搞出来了 索引表 但是都卡在文件内容解密了



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3