美文网首页
Cocos2d-x 2.X iOS lua代码XXTEA 加密后

Cocos2d-x 2.X iOS lua代码XXTEA 加密后

作者: 钟董不懂 | 来源:发表于2016-01-06 20:06 被阅读0次

Cocos2d-x 2.2.6 iOS 版,直接跳过了XXTEA 解密,导致XXTEA加密的代码无法运行,以下是改后的正确代码

'''
static const std::string BYTECODE_FILE_EXT = ".luac";
static const std::string NOT_BYTECODE_FILE_EXT = ".lua";

int CCLuaStack::executeScriptFile(const char* filename)
{

if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)

std::string code("require \"");
code.append(filename);
code.append("\"");
return executeString(code.c_str());

elif (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)

std::string buf(filename);
//
// remove .lua or .luac
//
size_t pos = buf.rfind(BYTECODE_FILE_EXT);
if (pos != std::string::npos)
{
    buf = buf.substr(0, pos);
}
else
{
    pos = buf.rfind(NOT_BYTECODE_FILE_EXT);
    if (pos == buf.length() - NOT_BYTECODE_FILE_EXT.length())
    {
        buf = buf.substr(0, pos);
    }
}

CCFileUtils *utils = CCFileUtils::sharedFileUtils();
//
// 1. check .lua suffix
// 2. check .luac suffix
//
std::string tmpfilename = buf + NOT_BYTECODE_FILE_EXT;

if (utils->isFileExist(tmpfilename))
{
    buf = tmpfilename;
}
else
{
    tmpfilename = buf + BYTECODE_FILE_EXT;
    if (utils->isFileExist(tmpfilename))
    {
        buf = tmpfilename;
    }
}

unsigned char* chunk = NULL;
unsigned long chunkSize = 0;
std::string chunkName = "";

chunkName = CCFileUtils::sharedFileUtils()->fullPathForFilename(buf.c_str());
chunk = utils->getFileData(chunkName.c_str(), "rb", &chunkSize);
int rn = 0;
if (NULL != chunk)
{
    if (luaLoadBuffer(m_state, (const char*)chunk, (int)chunkSize, chunkName.c_str()) == 0)
    {
        rn = executeFunction(0);
    }
}
return rn;

else

std::string fullPath = CCFileUtils::sharedFileUtils()->fullPathForFilename(filename);
++m_callFromLua;
int nRet = luaL_dofile(m_state, fullPath.c_str());
--m_callFromLua;
CC_ASSERT(m_callFromLua >= 0);
// lua_gc(m_state, LUA_GCCOLLECT, 0);

if (nRet != 0)
{
    CCLOG("[LUA ERROR] %s", lua_tostring(m_state, -1));
    lua_pop(m_state, 1);
    return nRet;
}
return 0;

endif

}
'''

相关文章

  • Cocos2d-x 2.X iOS lua代码XXTEA 加密后

    Cocos2d-x 2.2.6 iOS 版,直接跳过了XXTEA 解密,导致XXTEA加密的代码无法运行,以下是改...

  • cocos资料

    Cocos 资料大全 Cocos2d-x Lua运行流程 加密 cocos2dx资源和脚本加密quick-lua3...

  • Lua xxtea 解密脚本

    众所周知,使用 cocos 引擎编写的游戏,如果直接使用 xxtea 加密 Lua 脚本,实际上是很容易被解密的,...

  • python 对称加密案例

    网络传输中往往为了防止三方人员监听 篡改数据分析往往需要加密算法。今天简单介绍些对称加密 xxtea。 xxtea...

  • cocos2d-x 图片xxtea加密

    图片加密1.导入相应头文件 2.加密方法HelloWorld.h文件bool picJm(std::string ...

  • cocos2dx lua基础篇

    Cocos2d-x lua 是 Cocos2d-x引擎添加了Lua绑定的版本。使用C++和Cocos2d-x引擎开...

  • luajit下代码加密方案

    lua代码加密,以前服务器的加密方式是以下几种相结合: 1.修改文件头(luaU_header、LUA_SIGNA...

  • iOS代码加密常用加密方式

    iOS代码加密常用加密方式,常见的iOS代码加密常用加密方式算法包括MD5加密、AES加密、BASE64加密,三大...

  • iOS常用加密方式

    iOS代码加密常用加密方式,常见的iOS代码加密常用加密方式算法包括MD5加密、AES加密、BASE64加密,三大...

  • Cocos2d-x Lua运行流程

    Cocos2d-lua 是 Cocos2d-x引擎添加了Lua绑定的版本。使用C++和Cocos2d-x引擎开发时...

网友评论

      本文标题:Cocos2d-x 2.X iOS lua代码XXTEA 加密后

      本文链接:https://www.haomeiwen.com/subject/ninxkttx.html