cocos2dx lua 加密

转载 2015年11月20日 16:07:59
  cocos2dx lua已经集成了对lua脚本的加解密,见AppDelegate.cpp.
  1. LuaStack* stack = engine->getLuaStack();  
  2. stack->setXXTEAKeyAndSign("123", strlen("123"), "cloud", strlen("cloud"));  
它是通过XXTEA来加解密的。参数,key,keyLen,signment,signmentLen。它的签名作用可能是用来判断文件是否经过加密的。
       好,我们来对文件加密。打开cocos2d-x\external\xxtea文件夹,调用相关函数xxtea_encrypt进行加密,最后在文件开始位置,写上签名就可以了。我把相关操作封装成一个python文件。可以直接调用。
[python] view plaincopy在CODE上查看代码片派生到我的代码片
  1. import xxteaModule  
  2. import os  
  3.   
  4. def ReadFile(filePath):  
  5.     file_object = open(filePath,'rb')  
  6.     all_the_text = file_object.read()  
  7.     file_object.close()  
  8.     return all_the_text  
  9.   
  10. def WriteFile(filePath,all_the_text):      
  11.     file_object = open(filePath,'wb')      
  12.     file_object.write(all_the_text)  
  13.     file_object.close()  
  14.       
  15. def BakFile(filePath,all_the_text):  
  16.     file_bak = filePath[:len(filePath)-3] + 'bak'     
  17.     WriteFile(file_bak,all_the_text)  
  18.   
  19.   
  20.   
  21. def ListLua(path):  
  22.     fileList = []   
  23.     for root,dirs,files in os.walk(path):  
  24.        for eachfiles in files:  
  25.            if eachfiles[-4:] == '.lua' :                 
  26.                fileList.append(root + '/' + eachfiles)  
  27.     return fileList  
  28.   
  29. def EncodeWithXxteaModule(filePath,key,signment):      
  30.     all_the_text = ReadFile(filePath)      
  31.   
  32.     if all_the_text[:len(signment)] == signment :  
  33.         return  
  34.     #bak lua  
  35.     BakFile(filePath,all_the_text)  
  36.          
  37.     encrypt = xxteaModule.encrypt(all_the_text,key)  
  38.     signment = signment + encrypt  
  39.     WriteFile(filePath,signment)      
  40.       
  41. def EncodeLua(projectPath,key,signment):  
  42.     path = projectPath + '/src'  
  43.     fileList = ListLua(path)  
  44.     for files in fileList:  
  45.         EncodeWithXxteaModule(files,key,signment)  
  46.   
  47. def FixCpp(projectPath,key,signment):  
  48.     filePath = projectPath + '/frameworks/runtime-src/Classes/AppDelegate.cpp'  
  49.     all_the_text = ReadFile(filePath)  
  50.   
  51.     #bak cpp  
  52.     BakFile(filePath,all_the_text)      
  53.   
  54.   
  55.     pos = all_the_text.find('stack->setXXTEAKeyAndSign')  
  56.     left = all_the_text.find('(',pos)  
  57.     right = all_the_text.find(';',pos)     
  58.   
  59.     word = str.format('("%s", strlen("%s"), "%s", strlen("%s"))' % (key,key,signment,signment))  
  60.       
  61.     all_the_text = all_the_text[:left] + word + all_the_text[right:-1]  
  62.       
  63.     WriteFile(filePath,all_the_text)   
  64.       
  65.       
  66.       
  67. projectPath = "D:/cocosIDEWork/aseGame/"  
  68. key = "123"  
  69. signment = "cloud"  
  70.   
  71.   
  72. EncodeLua(projectPath,key,signment)  
  73. FixCpp(projectPath,key,signment)  
  74. print "encode ok"  

整个工程是用cocosIDE生成的。这个工具会自动加密src下的lua,并在AppDelegate.cpp中设置相应的密码与签名。xxTeaModule是对cocos2d-x\external\xxtea\xxtea.cpp的一个python封装。
相关工具我已打包上传,见地址:http://download.csdn.net/detail/cloud95/7675821

cocos2dx 3.4 lua加密 setXXTEAKeyAndSign

1.在自己项目的根目录下按住Shift键,右击鼠标,点击“在此处打开命令窗口”然后输入“ cocos luacompile -s src/ -d out/ -e -k testKey -b testS...
  • zhb394441487
  • zhb394441487
  • 2015年03月19日 23:36
  • 4410

手机游戏加密那点事儿_2d脚本加密

本文章讲述利用cocos2d-x 开发手机游戏的一些加密心得。如有问题,请多指正。 更多信息详见:http://blog.csdn.net/chengyingzhilian/article/deta...
  • chengyingzhilian
  • chengyingzhilian
  • 2014年05月13日 17:51
  • 6201

cocos2dx使用xxtea加密资源

记录在cocos2dx下使用xxtea加密,以下都为ios版本操作 1.资源加密 quick有一个加密资源和脚本的解决方案,即使用xxtea加密并且可以进行打包,在pack_files文件夹下有一...
  • u011005189
  • u011005189
  • 2016年06月24日 15:43
  • 675

quick-cocos2d-x 脚本和资源加密

一、脚本加密 如果只是实现加密,这个更简单了。 在引擎目录下/quick/bin/下面 compile_scripts.bat  这个东西就是我们需要的。他接受好几种加密方式,我一般只用到xxt...
  • houjia159
  • houjia159
  • 2015年07月17日 13:52
  • 2104

cocos2dx lua 加密

cocos2dx lua 加密
  • cloud95
  • cloud95
  • 2014年07月25日 10:29
  • 9734

lua: cocos2dx lua 加密

cocos2dx lua已经集成了对lua脚本的加解密,见AppDelegate.cpp. [cpp] view plaincopy LuaStack*...
  • haihsl123456789
  • haihsl123456789
  • 2014年11月11日 18:36
  • 591

Cocos2d-x客户端代码加密

继昨天的资源加密之后,今天继续来说下代码如何加密。 讲原理的网上一大把,讲加密原因也是,本博注重的是如何让新手一步步完成代码加密。 一、下载quici-cocos2d-x quick-cocos2d...
  • wxc237786026
  • wxc237786026
  • 2016年03月15日 07:34
  • 1093

[寒江孤叶丶的Cocos2d-x之旅_35]在Cocos2d-Lua中使用ProtoBuf (Xcode配置方法)

数据传输格式有很多种最常见XML和Json,这两种格式生成速度非常快,但是解析的效率却很低。尤其在数据量非常大的情况下,会卡住好半天。并且这种格式的传输也会使得传输所耗费流量变大。解析效率最高,传输消...
  • qq446569365
  • qq446569365
  • 2015年07月21日 10:00
  • 2315

Cocos2d-x Lua引擎制作的游戏代码加密

使用cocos luacompile完成,XXTEA加密。
  • HQC17
  • HQC17
  • 2017年01月15日 23:18
  • 2046

关于cocos2dx手游lua文件加密的解决方案

很多使用cocos2dx+lua做游戏的同学,都会想到一个问题,我的游戏一旦发布,怎样才能保证的我脚本代码不被破解,不泄露代码。虽然这和开源、共享的原则不合,但是代码也是coder的劳动成果,理应得到...
  • ycg514230
  • ycg514230
  • 2014年05月15日 09:11
  • 10401
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:cocos2dx lua 加密
举报原因:
原因补充:

(最多只允许输入30个字)