最近被人推荐去入这个坑,趁着今天开放注册去抢了一个号,然后被人问到立绘能不能提取,于是就解包来看看,解压一看是用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

BanG Dream修改相关

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

阅读全文

超简单的il2cpp游戏修改教程

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

阅读全文

Fate/Grand Order的那些事

日服v1.15 在一个月的时间里经历了太多事情,现在终于可以慢慢的写下这篇马后炮了。 调试 Fate/Grand Order在v1.11换了个保护并禁止了root过的手机,其实当时...

阅读全文

7 条评论

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

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

欢迎留言

0 + 4 =