最近被人推荐去入这个坑,趁着今天开放注册去抢了一个号,然后被人问到立绘能不能提取,于是就解包来看看,解压一看是用cocos2dx做的,这是我接触的第二个用cocos2dx做的游戏,立绘毫无意外的用了TexturePacker打包,于是去下了个TexturePacker的破解版,然后毫无意外的看到了这张图
QQ截图20150719204001
对于这种加密过的TexturePacker资源,网上可以百度到3种办法,其中两种都是使用hook,hook画图函数或者解压函数,不过有个缺点,必须要把所有场景都过一遍才能拿到全部资源。第三种方法就是用IDA这个大杀器了,直接打开游戏的SO库查看密钥
TexturePacker加密密钥为32位,使用时需要分成4部分每部分8位,有两种方式调用
比如密钥是aaaaaaaabbbbbbbbccccccccdddddddd则为

ZipUtils::ccSetPvrEncryptionKey(0xaaaaaaaa, 0xbbbbbbbb, 0xcccccccc, 0xdddddddd);

或者

ZipUtils::ccSetPvrEncryptionKeyPart(0, 0xaaaaaaaa);
ZipUtils::ccSetPvrEncryptionKeyPart(1, 0xbbbbbbbb);
ZipUtils::ccSetPvrEncryptionKeyPart(2, 0xcccccccc);
ZipUtils::ccSetPvrEncryptionKeyPart(3, 0xdddddddd);

直接在IDA中搜索这两个函数,然后F5后就能看到代码,大概是下面这种样子
QQ截图20150719202700
图里是4个有符号整型,把它们转成16进制后拼起来就是密钥了
然后我们继续说“大家的幻想乡”
直接把APK解压,在lib下只有libcocos2dcpp.so这个文件,用IDA打开,直接搜索ccSetPvrEncryptionKey然后F5,如下图
QQ截图201507192035201
咋一看有点不一样,实际跟踪进去后就会发现密钥就是那4个16进制
所以密钥就是

D587BE8D6DDE2D596BFD8960B123A40E

用TexturePacker打开
QQ图片20150719203900
至于切图,网上可以搜到一个Python脚本,切完以后就是这样了
QQ截图20150720140123

【2017-9-29】碧蓝航线音频提取

2017-9-29更新: 今天有人发现hca中文文件名乱码问题,还好vgm是用c#写的能够方便修改代码,扫了遍代码后发现是编码问题,把vgmtutil.dll里的Encoding改成Enc...

阅读全文

BanG Dream修改相关

版本:1.1.0 好久没有写游戏修改的文章了,最主要的原因是没有感兴趣入坑的游戏。这次新出的BanG Dream个人还是挺喜欢的,除了上拉note感觉有点反人类。然后...

阅读全文

超简单的il2cpp游戏修改教程

本文较旧,已不适合参考 锁链战记3.0版本也是换上了il2cpp,所以刚好就用它来写一篇简单的il2cpp修改教程 使用的是日服3.0.1版的锁链战记 首先要使用一款工具...

阅读全文

8 条评论

  1. 請問對於有加密的pvr.ccz在知道key後有辦法做批量解密轉png嗎?
    不然在texturepacker-GUI中一張一張轉很費時

  2. 大大帮帮忙啊,我按照你的步骤破解,出现的跟你有一点点不一样
    v1 = cocos2d::ZipUtils::setPvrEncryptionKey(
    (cocos2d::ZipUtils *)&loc_8A10BC,
    0x253EC10Bu,
    0xD21B5FAB,
    0x941ABBF9,
    v31);
    )
    这个&loc_8A10BC 是什么啊?

    1. 我也跟你 一样的情况 cocos2d::ZipUtils::setPvrEncryptionKey( (cocos2d::ZipUtils *)&loc_8A10BC,
      ,大兄弟 你怎么解决的?

欢迎留言

7 + 1 =