我正在努力从 cocos2dx 游戏(对于 wiki)解密 LUA 脚本。
游戏文件链接: libhellolua.so(cocos2dx 外部库) 示例加密的 LUA 脚本(*.abc 文件)
我正在阅读 IDA Pro 中的图书馆。这个库没有提到“xxtea”。
我发现函数 getEncyptedFileData: pastebin getEncyptedFileData
这个功能在 Cocos2d-x 的原始源码中是没有的。我认为这个函数与解密有关(因为这个函数是用变量“*.abc”在附近调用的)。我无法理解此函数中的某些行:
1:我认为这个函数是CCFileUtils:getFileData。
v5 = (_BYTE *)(*(int (__fastcall **)(cocos2d::CCFileUtils *, const char *, const char *, unsigned int *))(*(_DWORD *)this + 16))(this, a2, "rb", &v26);
2:这个循环不可读。在这个循环中使用第一行的结果。
do
  {
    v6[(signed int)v17 * (signed __int64)v11 % (unsigned __int64)v14] = *(_BYTE *)(v13 + v16) ^ v15[v17];
    ++v17;
    v16 = (v16 + 1) % v10;
  }
  while ( v17 < v14 );
3:函数getEncyptedFileData返回这一行的结果:
v19 = (*(int (__cdecl **)(cocos2d::CCFileUtils *, _BYTE *))(*(_DWORD *)v21 + 24))(v21, v6);