本帖最后由 wmsuper 于 2017-3-26 17:23 编辑

0x01 加密方式分析

Cocos2d-x对于lua脚本加密提供了一种轻量级解决方案,加密算法是xxtea,下面是这个打包脚本cocos2d.py加密参数的说明

10.png (29.54 KB, 下载次数: 12)

2017-3-26 16:36 上传

主要就是两个部分,sign和key,sign是加密标记,用于判断脚本是否加密,key是xxtea解密时候的秘钥,下面是Cocos2d-x部分源码

这里设置了sign和key

8.png (27.02 KB, 下载次数: 11)

2017-3-26 16:36 上传

这里就是通过对比文件开头的字符串是否为所设置的sign判断是否加密,如果加密的话就解密,解密后才加载脚本

7.png (28.82 KB, 下载次数: 11)

2017-3-26 16:36 上传

0x02 寻找sign和key

将apk解压之后就找到src这个目录,这里放着lua脚本

wenjian.png (19.54 KB, 下载次数: 15)

2017-3-26 16:47 上传

这里的lua脚本是加密的,用记事本打开,可以看到开头的字符串"CreatByDartou",这就是上面所说的sign ,知道sign之后下面就要找key

5.png (38.66 KB, 下载次数: 10)

2017-3-26 16:36 上传

找key很简单,用IDA载入libcocos2dlua.so这个库,打开string窗口,直接搜索sign,key就在附近,"thirteenPokerCOCOS"就是key,知道了这些就可以解密了。

6.png (10.95 KB, 下载次数: 13)

2017-3-26 16:36 上传

解密算法和加密算法可以在https://github.com/cocos2d/cocos2d-x-3rd-party-libs-bin/tree/v3/xxtea找到

0x03 编写解密程序

解密思路很简单,无非就是读取文件,调用xxtea_decrypt来解密,然后写入文件,写好代码编译运行即可

jj.png (30.92 KB, 下载次数: 12)

2017-3-26 16:58 上传

解密成功

DG~}D73YT2P_ANZ[MP)Q5V0.png (10.38 KB, 下载次数: 13)

2017-3-26 17:00 上传

为了实现批量解密,可以编写个脚本去实现(为啥不直接在解密程序中实现批量?本人比较懒,脚本代码少些

)

[Shell] 纯文本查看 复制代码#!/bin/sh

process_file(){

for file in `ls -a $1`

do

if [ x"$file" != x"." -a x"$file" != x".." ];then

if [ -d "$1/$file" ];then

process_file "$1/$file" $2 $3

else

#You should backup your file

if [ x"${file##*.}" = x"luac" ];then

./lua_decrypt "$1/$file" "$1/$file" $2 $3

fi

fi

fi

done

}

if [ $# != 3 ]; then

echo "error.. example:\ndecode.sh srcdir sign key"

exit 1

fi

process_file $1 $2 $3

解密脚本可以批量的解密

[1[N~{U537]W`%[U%RW0_97.png (117.9 KB, 下载次数: 11)

2017-3-26 17:06 上传

0x04 更安全的加密方案

1.应该使用luajit去编译自己的脚本,就算攻击者解密出来也无法获得源码

2.不应该采用官方的加密方案,应该自己实现加密解密算法。

3.隐藏自己的加密秘钥,不应该过分明显。

4.保护好自己的so库,加壳或者做混淆。

/*******************************************************************/

使用的源码和脚本

http://pan.baidu.com/s/1gfDVWS7

nl4s

cocos lua 溶解_Cocos2d-x的lua官方加密的解密方法相关推荐

  1. 脚本语言lua笔记(5)c++调用lua

    首先搭建环境,使用vs2010的c++开发工具,lua源码包,可以去官方下载最新源码包,我采用的是lua-5.1.5的版本.好了,开始配环境. 第一步: 下载源码包后,解压lua-5.1.5源码包到硬 ...

  2. lua源代码分析01:lua源代码结构分析

    目录 一.什么是lua 二.lua源代码结构 三.阅读lua源代码顺序 一.什么是lua 1.lua是用C编写的脚本语言,可以在web.游戏.物联网等场景下使用,源代码共1万多行:可以独立编程,可以嵌 ...

  3. 【Lua进阶系列】实例lua调用capi

                             [Lua进阶系列]实例lua调用capi     大家好,我是Lampard~~     欢迎来到Lua进阶系列的博客     首先祝大家2021新年 ...

  4. linux lua socket编程,CentOs 安装lua,luasocket

    一.centos安装Lua 3)个人在这里选择使用5.1版本的 *下载 wget http://www.lua.org/ftp/lua-5.1.5.tar.gz --2013-10-14 16:23: ...

  5. 浅析android手游lua脚本的加密与解密

    2018.05.02更新 这段时间在翻备份的硬盘,突然发现了以前的分析项目和代码,从里面提取了之前附件的内容,现在上传给大家,真是柳暗花明又一村啊.附件包括201703版本的梦幻手游里面提取的so文件 ...

  6. Redis学习笔记 - Lua脚本(2) - Lua脚本的实现

    参考:<<Redis设计与实现>> 注:这本书是基于Redis3.0版本写的,和后面的版本有点差异 Redis中Lua脚本相关命令介绍以及简单使用,参考博客:https://b ...

  7. xLua学习之路(三) ------ C#主动发起对Lua数据结构的访问(Lua文件保存格式要为UTF-8)

    1.访问全局基本数据类型 定义全局变量: 代码: LuaEnv luaEnv = new LuaEnv();luaEnv.DoString("require 'CSharpCallLua'& ...

  8. android studio lua插件,android Studio 配置LUA 开发环境

    android Studio 配置 LUA开发环境 关于Android LUA资料 引诉大牛的原话: Android 调用 Lua /Lua 调用 Android 代码 在Android项目中使用Lu ...

  9. lua学习01:c调用lua、lua调用c、lua的协程、lua的常见API、lua读取配置文件总结

    文章目录 1.c通过虚拟机和虚拟栈调用lua test-vm.c test-vm.lua 打印效果 2.lua通过虚拟机和虚拟栈调用c lua-tbl.c test-tbl.lua 3.lua的协程 ...

  10. lua脚本的加密与解密简单介绍

    1.lua脚本在手游中的现状 略. 2.lua.luac.luaJIT三种文件的关系 在学习lua手游过程中,本人遇到的lua文件大部分是这3种.其中lua是明文代码,直接用记事本就能打开,luac是 ...

最新文章

  1. Ubuntu下通过CMake文件编译CUDA+OpenCV代码操作步骤
  2. Mac下chrome的webapp hostadmin 快速切换host
  3. ResultSet获取set中的记录数
  4. MapReduce中Client提交Job源码分析
  5. 理解Fragment生命周期
  6. c语言socket调用图灵API,socket通信(四):socket实现机器人在线聊天
  7. SpringBoot依赖注入
  8. java简单纸牌游戏_2020年最佳2人棋盘游戏:拼凑,Kingdomino等
  9. Linux上跑程序加大内存
  10. matlab 数据是否符合正态分布的判断方法
  11. 国土空间规划项目资料获取的途径
  12. NIO-java.nio.ByteBuffer中flip、rewind、clear方法的区别
  13. 融合大数据能力,解决在存量时代下的力分之困
  14. javascript窗口属性示意图
  15. 计算机电路电子技术试题答案,数字电子技术基础测试题及其答案.doc
  16. 正则判断数字加下划线加数字
  17. mysql按照关键字查询
  18. 【转】Android地图开发之OpenStreetMap基础教程
  19. EasyNVR网页/微信播放RTSP摄像机HLS/RTMP播放时出现起播等待问题的优化过程
  20. 【敏捷】1.0 待办事项列表

热门文章

  1. PMP考试的成绩怎么算?
  2. 计算机网络(王道考研笔记)
  3. Docker资源配置方法(Cgroup)
  4. 三星980 NVMe SSD推出:首款不含 DRAM 的消费类硬盘
  5. Linux - ZModem协议的sz命令传输文件异常
  6. 【Ubuntu】Ubuntu16.04安装火狐浏览器中国版
  7. 微信小程序列表懒加载
  8. java定时数据同步_java实现定时同步数据同步
  9. 自创RTSP 服务器 用多款客户端软件测试接入可以,唯独VLC接入不了
  10. 盗窟手机小我私人撤军华强北:市场一年不如一年