Cocos2d-x客户端代码加密

代码加密的重要性就不用多讲了。网上讲代码加密的一大堆,但是很多都只是讲讲原理,还有好多转载的,而本博注重的是步骤详细,让新手一步步完成代码加密。


一、下载quick-cocos2d-x

quick-cocos2d-x封装了一套加密的工具,先下载quick-cocos2d-x,git地址https://github.com/dualface/v3quick

解压之后把bin目录拷贝到我们的cocos2d-x工程根目录。



二、加密代码

cocos提供了luacompile命令,讲lua文件编译成luac字节码,但是luac可以被反编译。

quick-cocos2d-x提供了pack_files命令,可以将文件加密后打包成压缩包。

到bin目录打开命令行窗口,执行pack_files.bat -h 可以查看pack_files的使用方法。



1、编译luac字节码

::script_compile.bat
set SRC=E:\Cocos2d\Cocos2d-x\Projects\Game_Lua\src
set DSRC=E:\Cocos2d\Cocos2d-x\Projects\Game_Lua\dsrc

cocos luacompile -s %SRC% -d %DSRC%

2、对luac字节码文件进行加密后打包
::script_pack.bat

set DSRC=E:\Cocos2d\Cocos2d-x\Projects\Game_Lua\dsrc
set ESRC=E:\Cocos2d\Cocos2d-x\Projects\Game_Lua\esrc

cd bin

pack_files.bat -i %DSRC% -o %ESRC% -m zip -ek 123456 -es test

这时候会生成esrc压缩文件。



三、修改AppDelegate文件

bool AppDelegate::applicationDidFinishLaunching()
{
    auto engine = LuaEngine::getInstance();
    ScriptEngineManager::getInstance()->setScriptEngine(engine);
    lua_State* L = engine->getLuaStack()->getLuaState();
    lua_module_register(L);

    // If you want to use Quick-Cocos2d-X,please uncomment below code
    // register_all_quick_manual(L);

	if (USE_XXTEA_ENCRYPT == 1)
	{
		auto stack = engine->getLuaStack();
		stack->setXXTEAKeyAndSign("123456",strlen("123456"),"test",strlen("test"));
		stack->loadChunksFromZIP("esrc");
		stack->executeString("require 'main.luac'");
	}
	else
	{
		if (engine->executeScriptFile("src/main.lua")) {
			return false;
		}
	}

    return true;
}

注意:这里用的是require "main.luac"。

删除原来的代码源文件,运行也成功运行。

相关文章

    本文实践自 RayWenderlich、Ali Hafizji 的文章《...
Cocos-code-ide使用入门学习地点:杭州滨江邮箱:appdevzw@1...
第一次開始用手游引擎挺激动!!!进入正题。下载资源1:从C...
    Cocos2d-x是一款强大的基于OpenGLES的跨平台游戏开发...
1.  来源 QuickV3sample项目中的2048样例游戏,以及最近《...
   Cocos2d-x3.x已经支持使用CMake来进行构建了,这里尝试...