首页 > 其他分享 >cocos2dx TexturePacker加密资源

cocos2dx TexturePacker加密资源

时间:2023-08-28 15:34:01浏览次数:59  
标签:文件 cocos2dx 加密 TexturePacker 解密 ZipUtils 密钥 key



TexturePacker最新版本中增加了一个新功能以防止你的产品资源被反编译出来。它被称为ContentProtection,即图片加密。但目前官方只支持Cocos2d-iphone的解密.TexturePacker作者说,不久Cocos2d-x也将集成解密功能.代码已经提交Cocos2d-x github官方库。


你的app或者游戏仍可以解密数据,但是其他人则需要耗上很长的时间才能够完成破。理论上别人仍可能从源码提取出密钥,并写出一些解码器,这是因为解码器和密钥已经被存储在你的app中-否则不可能使用你的游戏资源。但是这需要花费知识,时间和精力来解密你的资源。所以他们很有可能找一些其他更简单的猎物来破而不是你的资源文件。

TexturePacker加密策略设置

假设你已经运行过TexturePacker 创建精灵表,所以只需要打开一个已经存在的.tps文件。
下载最新版的TexturePacker-在左侧你会看到一个新的option属性:Content Protection。按下“Lock”图标,并会弹出一个新的窗口:

Create new key 按钮创建新的key
使用Clear/Disable来关闭加密功能。
在 TexturePacker 中 按下Save as global key 会存储密钥key为全局变量,在.pvr查看器中用它来解密,
通过按下Use global key按钮你可以复制密钥key到其他精灵表中。
改变文件的格式为pvr.ccz是非常重要的,它是当前唯一支持解密的格式。
在TexturePacker中按下Publish完成在TexturePacker中的工作。
在命令行中输入的命令是:–content-protection <key> ,其中 key必须是32位十六进制值。

在Cocos2d-x工程准备 Content protection

下载并拷贝下面2个文件到你的cocos2d-x文件夹里并且替换掉原有的文件重新编译libcocos2d.lib: cocos2d-2.1rc0-x-2.1.*\cocos2dx\support\zip_support

  1. ZipUtils.h
  2. ZipUtils.cpp

现在在你的app里设置密钥key。在第一个精灵表导入前你可以在你的程序启动前调用4个方法来完成它。
为了让他们更难解请尝试分开调用。
如果你的密钥是aaaaaaaabbbbbbbbccccccccdddddddd,你必须将它们分成4部分每部分8位:

aaaaaaaa


bbbbbbbb


cccccccc


dddddddd



128位加密密钥每个值是32位。在它是作为一个另一个值传递给函数,因此在app中它很难定位。

然后使用:


C++

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





或者



C++


ZipUtils          ::          ccSetPvrEncryptionKeyPart          (          0                     ,                     0xaaaaaaaa          )


ZipUtils          ::          ccSetPvrEncryptionKeyPart          (          1                     ,                     0xbbbbbbbb          )


ZipUtils          ::          ccSetPvrEncryptionKeyPart          (          2                     ,                     0xcccccccc          )


ZipUtils          ::          ccSetPvrEncryptionKeyPart          (          3                     ,                     0xdddddddd          )




在每一个文件里使用解密,你都得确保添加下面一行:


C++

  #import "ZipUtils.h" 




如果你已经改了文件的格式,那么现在你需要导入的是.pvr.ccz文件代替你之前使用的。
当然你也可以添加新文件到你的工程里。对,就是这样!
总结
保护你游戏资源被盗是容易的。使用新的Content Protection功能你只需要不到五分钟的时间来设置就可以做到。

Create new key 按钮创建新的key
使用Clear/Disable来关闭加密功能。
在 TexturePacker 中 按下Save as global key 会存储密钥key为全局变量,在.pvr查看器中用它来解密,
通过按下Use global key按钮你可以复制密钥key到其他精灵表中。
改变文件的格式为pvr.ccz是非常重要的,它是当前唯一支持解密的格式。
在TexturePacker中按下Publish完成在TexturePacker中的工作。
在命令行中输入的命令是:–content-protection <key> ,其中 key必须是32位十六进制值。

在Cocos2d-x工程准备 Content protection

下载并拷贝下面2个文件到你的cocos2d-x文件夹里并且替换掉原有的文件重新编译libcocos2d.lib: cocos2d-2.1rc0-x-2.1.*\cocos2dx\support\zip_support

  1. ZipUtils.h
  2. ZipUtils.cpp

现在在你的app里设置密钥key。在第一个精灵表导入前你可以在你的程序启动前调用4个方法来完成它。
为了让他们更难被破尝试分开调用。
如果你的密钥是aaaaaaaabbbbbbbbccccccccdddddddd,你必须将它们分成4部分每部分8位:

aaaaaaaa


bbbbbbbb


cccccccc


dddddddd




128位加密密钥每个值是32位。在它是作为一个另一个值传递给函数,因此在app中它很难定位。

然后使用:


C++


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




或者

C++

ZipUtils           ::           ccSetPvrEncryptionKeyPart           (           0                       ,                       0xaaaaaaaa           )


ZipUtils           ::           ccSetPvrEncryptionKeyPart           (           1                       ,                       0xbbbbbbbb           )


ZipUtils           ::           ccSetPvrEncryptionKeyPart           (           2                       ,                       0xcccccccc           )


ZipUtils           ::           ccSetPvrEncryptionKeyPart           (           3                       ,                       0xdddddddd           )





在每一个文件里使用解密,你都得确保添加下面一行:



C++

#import "ZipUtils.h"

如果你已经改了文件的格式,那么现在你需要导入的是.pvr.ccz文件代替你之前使用的。
当然你也可以添加新文件到你的工程里。对,就是这样!
总结
保护你游戏资源被盗是容易的。使用新的Content Protection功能你只需要不到五分钟的时间来设置就可以做到。

标签:文件,cocos2dx,加密,TexturePacker,解密,ZipUtils,密钥,key
From: https://blog.51cto.com/u_13566975/7264363

相关文章

  • cocos2dx 3.x打包出现Can't find config file .cocos-project.json in path
    youcanjustcreatea.cocos-project.jsonfileyourself.Allitcontainsisthefollowingcode: {"project_type":"cpp"如果是lua工程话,直接修改成lua即可。......
  • 圣天诺加密锁(加密狗)保护Python应用程序防止被反编译Python代码保护的好方法
    (开发套件使用的是原HASP/SafeNet/金雅拓/泰雷兹加密狗开发工具)(注:本文为Python程序保护的纯技术贴,欢迎留言探讨)开发工具下载:​​http://www.chinadlp.com/?list-DriveDownload.html​​  概述使用圣天诺加密锁保护Python应用程序的方法:1.SentinelLDKEnvelope带S......
  • Linux文件加密指南
    在工作和生活中为了安全考虑,通常会对一些重要文件进行加密备份或加密保存。在Linux中如何做到呢?本文将为你介绍在Linux中常见的加密文件的方法。01利用vim/vi加密优点:加密后,如果不知道密码,就看不到明文,包括root用户也看不了;缺点:很明显让别人知道加密了,容易让别人把加密的文件破......
  • 圣天诺加密锁保护Python应用程序防止被反编译
    (开发套件使用的是原HASP/SafeNet/金雅拓/泰雷兹加密狗最新开发工具)(注:本文为Python程序保护的纯技术贴,欢迎留言探讨)开发工具下载:http://www.chinadlp.com/?list-DriveDownload.html,概述使用圣天诺加密锁保护Python应用程序的方法:1.SentinelLDKEnvelope带SentinelLDK数据文件......
  • 步步高 BPK 加密方式总结
    前言最近花了几天时间彻底研究透了步步高的BPK加密格式,写一篇博客记录一下研究的成果本文只记录一些研究的步骤和研究成果,不是破解教程之前的记录步步高加密APK格式BPK研究:续步步高家教机加密安装包BPK研究(已弃坑)什么是BPK步步高为其旗下搭载StudyOS定......
  • 【web_逆向12】RSA加密实战
    目标中大网校登录获取数据分析根据接口分析,我们需要对密码逆向,识别验证码加密入口加密逻辑,标准的RSA加密查找ress.data,注意:这里不一定是时间戳,不能简单暴力的使用data.now()代替;根据callstack往回找发现此处的data是ajax请求,成功返回的数据,url就是gettime所以此处......
  • 深入了解Webpack:特性、特点和结合JS混淆加密的实例
    Webpack是现代前端开发中最受欢迎的构建工具之一,其强大的特性和灵活性使得开发者能够更有效地管理和优化项目资源。在本文中,我们将深入探讨Webpack的特性和特点,并结合实例演示如何使用Webpack与JS混淆加密相结合。Webpack的特性和特点1.模块化管理Webpack支持将项目拆分为多个模块......
  • 【MySQL 8.0】透明数据加密(TDE)
    [mysql@node01~]$vim/etc/my.cnf[mysqld]early-plugin-load=keyring_file.sokeyring_file_data=/usr/local/mysql/data/keyring(root@node01)>selectplugin_name,plugin_statusfrominformation_schema.pluginswhereplugin_namelike'keyring%';......
  • cocos2dx之多点触屏
    在多点触屏的实现中,我们用到了CCLayer中的:voidccTouchesBegan(CCSet*pTouches,CCEvent*pEvent);voidccTouchesMoved(CCSet*pTouches,CCEvent*pEvent);voidccTouchesEnded(CCSet*pTouches,CCEvent*pEvent);voidccTouchesCancelled(CCSet*pTouches,CCE......
  • cocos2dx之创建CCControlSlider
    采用CCControlSlider创建,代码如下:CCControlSlider*slider=CCControlSlider::create("extensions/sliderTrack.png","extensions/sliderProgress.png","extensions/sliderThumb.png"); slider->setAnchorPoint(ccp(0.5,1.0f)); slider->......