飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 9861|回复: 6

[iOS] 破解TexturePacker加密资源,寻找解密Key之旅

[复制链接]
  • TA的每日心情
    奋斗
    2015-10-29 08:08
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2015-6-1 13:10:43 | 显示全部楼层 |阅读模式
    本帖最后由 creantan 于 2015-6-10 21:42 编辑

    By: creantan/ChinaPYG

    破解TexturePacker加密资源的方式有好多种。。最多的是hook uncompress然后获取到内容,加入ccz的文件头写入文件。
    例如:

    http://blog.csdn.net/ynnmnm/article/details/38392795
    http://bbs.pediy.com/showthread.php?t=187332

    今天我用最直接的方法搞定,直接找到用户设置的秘钥。

    void ZipUtils::ccSetPvrEncryptionKeyPart(int index, unsigned int value)// 设置密钥的接口  

    上appstore上随便找个cocos2dx写的游戏,看看是否有加密的pvr.ccz文件。

    拖入Hopper,搜索ccSetPvrEncryptionKeyPart,没有找到。然后搜索ZipUtils,如下图:

    1.png


    ccDecodeEncodedPvr用来解密pvr.ccz文件,没有找到ccSetPvrEncryptionKeyPart,那么我们在ccDecodeEncodedPvr上下代码块里面试试运气

    2.png

    int sub_444200(int arg0, int arg1) {
        r1 = arg1;
        r0 = arg0;
        r3 = *(0x7d79d0 + r0 * 0x4);
        asm{ it         eq };
        if (r3 == r1) {
                return r0;
        }
        *(0x7d79d0 + r0 * 0x4) = r1;
        *(int8_t *)0x7d89e0 = 0x0;
        return 0x0;
    }

    这个有点像。。猜测arg0为index  arg1为value
    写tweak验证:
    int(*orgccSetPvrEncryptionKey)(int index,unsigned int key);
    int myccSetPvrEncryptionKey(int index,unsigned int key);
    int myccSetPvrEncryptionKey(int index,unsigned int key){
      NSLog(@"\n\n=====  keys: %d-%u    ======\n\n",index,key);
      orgccSetPvrEncryptionKey(index,key);
    }
    %ctor{
      NSLog(@"====== HOOKED ======");
      intptr_t module_vmaddr = _dyld_get_image_vmaddr_slide(0);
      intptr_t ccSetPvrEncryptionKey = module_vmaddr + 0x444200 + 1;
      MSHookFunction((void *)ccSetPvrEncryptionKey, (void*)myccSetPvrEncryptionKey, (void**)&orgccSetPvrEncryptionKey);
    }

    测试log
    Jun  1 11:57:43 crean XXX[73393]:

            =====  keys: 0-405172683    ======
    Jun  1 11:57:43 crean XXX[73393]:

            =====  keys: 1-1270815801    ======
    Jun  1 11:57:43 crean XXX[73393]:

            =====  keys: 2-3663874658    ======
    Jun  1 11:57:43 crean XXX[73393]:

            =====  keys: 3-2333226975    ======

    将这4个Key转为16进制拼接为
    182671CB4BBF1C39DA624A628B1237DF

    用TexturePacker打开加密的pvr.ccz的文件,它会提示你输入加密的KEY,输入直接解密验证:


    3.png

    我想,看了这篇教程学到的不紧紧是破解TexturePacker加密资源哦。。自己动手验证试试。。只随机了一个游戏测试。。有兴趣的朋友可以找个游戏验证验证是否通用。。

    转载请注明出处:creantan/ChinaPYG



    点评

    好强悍啊~  发表于 2015-6-1 14:17

    评分

    参与人数 4威望 +56 飘云币 +76 收起 理由
    tree_fly + 8 + 8 很给力!
    0xcb + 8 + 8 赞一个!
    GGLHY + 20 + 40 PYG有你更精彩!
    lucky_789 + 20 + 20 玩64的都那么牛!

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2024-1-15 22:57
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2015-6-1 19:34:24 | 显示全部楼层
    大神。。。完全看不懂。
    意思是cocos2dx的通杀了?{:soso_e179:}{:soso_e179:}

    点评

    不确定哦。。我就测试了一两个。。大家可以自己测试测试。。  详情 回复 发表于 2015-6-1 20:34
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2015-10-29 08:08
  • 签到天数: 3 天

    [LV.2]偶尔看看I

     楼主| 发表于 2015-6-1 20:34:21 | 显示全部楼层
    zaas 发表于 2015-6-1 19:34
    大神。。。完全看不懂。
    意思是cocos2dx的通杀了?

    不确定哦。。我就测试了一两个。。大家可以自己测试测试。。
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2021-9-29 15:05
  • 签到天数: 114 天

    [LV.6]常住居民II

    发表于 2015-6-1 20:39:54 | 显示全部楼层
    给力!用框架里面带的加密方案的公司,肯定通杀
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2019-3-17 22:44
  • 签到天数: 132 天

    [LV.7]常住居民III

    发表于 2015-6-9 19:22:47 | 显示全部楼层
    好棒,又有好玩的可以玩了。
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2015-8-2 16:07
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2015-6-10 17:57:14 | 显示全部楼层
    大神,请受我一拜
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表