cocos lua 溶解_Cocos2d-x的lua官方加密的解密方法
本帖最后由 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官方加密的解密方法相关推荐
- 脚本语言lua笔记(5)c++调用lua
首先搭建环境,使用vs2010的c++开发工具,lua源码包,可以去官方下载最新源码包,我采用的是lua-5.1.5的版本.好了,开始配环境. 第一步: 下载源码包后,解压lua-5.1.5源码包到硬 ...
- lua源代码分析01:lua源代码结构分析
目录 一.什么是lua 二.lua源代码结构 三.阅读lua源代码顺序 一.什么是lua 1.lua是用C编写的脚本语言,可以在web.游戏.物联网等场景下使用,源代码共1万多行:可以独立编程,可以嵌 ...
- 【Lua进阶系列】实例lua调用capi
[Lua进阶系列]实例lua调用capi 大家好,我是Lampard~~ 欢迎来到Lua进阶系列的博客 首先祝大家2021新年 ...
- 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: ...
- 浅析android手游lua脚本的加密与解密
2018.05.02更新 这段时间在翻备份的硬盘,突然发现了以前的分析项目和代码,从里面提取了之前附件的内容,现在上传给大家,真是柳暗花明又一村啊.附件包括201703版本的梦幻手游里面提取的so文件 ...
- Redis学习笔记 - Lua脚本(2) - Lua脚本的实现
参考:<<Redis设计与实现>> 注:这本书是基于Redis3.0版本写的,和后面的版本有点差异 Redis中Lua脚本相关命令介绍以及简单使用,参考博客:https://b ...
- xLua学习之路(三) ------ C#主动发起对Lua数据结构的访问(Lua文件保存格式要为UTF-8)
1.访问全局基本数据类型 定义全局变量: 代码: LuaEnv luaEnv = new LuaEnv();luaEnv.DoString("require 'CSharpCallLua'& ...
- android studio lua插件,android Studio 配置LUA 开发环境
android Studio 配置 LUA开发环境 关于Android LUA资料 引诉大牛的原话: Android 调用 Lua /Lua 调用 Android 代码 在Android项目中使用Lu ...
- 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的协程 ...
- lua脚本的加密与解密简单介绍
1.lua脚本在手游中的现状 略. 2.lua.luac.luaJIT三种文件的关系 在学习lua手游过程中,本人遇到的lua文件大部分是这3种.其中lua是明文代码,直接用记事本就能打开,luac是 ...
最新文章
- Ubuntu下通过CMake文件编译CUDA+OpenCV代码操作步骤
- Mac下chrome的webapp hostadmin 快速切换host
- ResultSet获取set中的记录数
- MapReduce中Client提交Job源码分析
- 理解Fragment生命周期
- c语言socket调用图灵API,socket通信(四):socket实现机器人在线聊天
- SpringBoot依赖注入
- java简单纸牌游戏_2020年最佳2人棋盘游戏:拼凑,Kingdomino等
- Linux上跑程序加大内存
- matlab 数据是否符合正态分布的判断方法
- 国土空间规划项目资料获取的途径
- NIO-java.nio.ByteBuffer中flip、rewind、clear方法的区别
- 融合大数据能力,解决在存量时代下的力分之困
- javascript窗口属性示意图
- 计算机电路电子技术试题答案,数字电子技术基础测试题及其答案.doc
- 正则判断数字加下划线加数字
- mysql按照关键字查询
- 【转】Android地图开发之OpenStreetMap基础教程
- EasyNVR网页/微信播放RTSP摄像机HLS/RTMP播放时出现起播等待问题的优化过程
- 【敏捷】1.0 待办事项列表