一、脚本加密
如果只是实现加密,这个更简单了。
在引擎目录下/quick/bin/下面 compile_scripts.bat 这个东西就是我们需要的。他接受好几种加密方式,我一般只用到xxtea_zip 和 xxtea_chunk 这两种。前一种是把lua脚本压缩成一个zip,为这个zip加密。后一种是为每个脚本加密,然后再压缩一次(包会比前一种大)。其他都差不多。
compile_scripts.bat中带有不少的参数,详情如下:
1、-h帮助。显示参数的解释及使用,英文的。
2、-i 源码目录。
3、-o 输出文件或目录。
4、-p 包前缀。
5、-x 不包含在内的包。如果你有些源文件不想被编译进去的话,将会用到这个参数,只能设置包(对应文件夹),不能指定到文件,多个包的话用,(逗号)隔开。示例:-x app.test,server,指的是app/test/.*,server/.*这两个目录下的所有文件都不会被编译。
注:经测试,目前这个参数没有作用,已报告给作者,请等待修复。
6、-m 编译模式。有两个值:
-mzip默认,生成的是zip格式文件;
files生成的是一个个文件,不打包,这个时候-o参数指的就是输出的目录。
7、-e 加密模式。可以对编译后的文件再进行XXTEA加密,有两个值:
-e xxtea_zip对应-m zip,对打包后的zip格式文件进行加密,之后再打包成zip格式。
-exxtea_chunk对编译后的文件加密,最后打不打包取决于-m。
注:xxtea_zip一定要与-m zip编译模式对应,不然会提示出错。
8、-ek 加密密钥。对-e有效,且设置了-e之后一定要设置-ek。
9、-es 加密签名。对-e有效,默认值为"XXTEA",这个只是为了让引擎知道文件是否被加密过,意义不大,所以可不设置。
下面是一个编译及加密的例子:
1 |
compile_scripts.sh-iscripts-ores/game.zip-exxtea_zip-ekaaa-esXT |
10、-ex 编译后的文件的后缀名。对-m files有效,默认值为"lua"。
11、-c 从一个文件加载参数列表。
12、-q 生成过程不输出信息。
终端进入 /quick/bin/这个目录,执行./compile_scripts.bat -i 你的脚本的目录(比如我的/Users/bkbl/Documents/game/src) -o 加密后文件的输出目录(比如我的/Users/bkbl/Documents/game/res/game.zip) -e (加密方式 xxtea_chunk 或者 xxtea_zip ) -es 签名(比如 XXTEA) -ek 密钥(也就是KEY 比如 adadada)
只要代码没错误,这儿也不会报错。我的输出路径是我项目res下。如果不是 拷贝进去。
最后在AppDelegate.ccp 添加
stack->setXXTEAKeyAndSign("你的key",strlen("你的key"),"你的签名",strlen("你的签名"));
比如:
@H_502_175@
1
|
stack->setXXTEAKeyAndSign(
"adadada"
,
strlen
(
),
"XXTEA"
));
|