Quick-cocos2d-x 加密全过程解析

最近有好几个朋友在问我quick脚本和资源加密的相关问题,看来很多人还是有不解的地方,现在就详细介绍一下,免得各位折腾许久。

  1. 对资源和脚本加密的操作,本文就不介绍,直接运行几个命令行就搞定,具体可以参考官方的教程。
  2. 对脚本的解密也很简单,直接在按照官方说的设置的key和签名即可,不用再修改任何代码。
  3. 资源解密,这个修改的地方有点多。首先导入头文件搜索路径,$(SRCROOT)/…/…/runtime-src/Classes/quick-src
    3.1 单个图片的解密,修改CCImage.cpp文件,
    3.1.1 导入头文件,#include “extra/apptools/HelperFunc.h”
    3.1.2 找到函数 bool Image::initWithImageFile(const std::string& path)
    修改Data data = FileUtils::getInstance()->getDataFromFile(_filePath); 为Data data = HelperFunc::getData(_filePath);
    此时就完成了单个图片的解密过程。
    3.2 csb文件解密,修改CSLoader.cpp文件,
    3.2.1 导入头文件,#include “extra/apptools/HelperFunc.h”
    3.2.2 找到函数Node* CSLoader::nodeWithFlatBuffersFile(const std::string &fileName)
    修改Data buf = FileUtils::getInstance()->getDataFromFile(fullPath);为Data buf = HelperFunc::getData(fullPath);
    此时就完成了对csb文件的解密过程。
    3.3 plist文件解密,修改CCFileUtils-apple.mm 特别注意,本文是针对xcode修改的,Android修改原理差不多
    3.3.1 导入头文件,#include “extra/apptools/HelperFunc.h”
    3.3.2 找到函数 ValueMap FileUtilsApple::getValueMapFromFile(const std::string& filename)
    替换NSDictionary* dict = ;为以下代码
    Data buf = HelperFunc::getData(filename);
    NSData *data = initWithBytes:buf.getBytes() length:buf.getSize()] autorelease];
    NSPropertyListFormat format;
    NSString *error;
    NSMutableDictionary *dict = (NSMutableDictionary *)
    NSPropertyListSerialization propertyListFromData:data
    mutabilityOption:NSPropertyListMutableContainersAndLeaves
    format:&format
    errorDescription:&error];
    此时就完成对plist文件的解密过程。

如还有疑问的可以单独发信息询问。