cocos lua 溶解_Cocos2d-x的lua官方加密的解密方法

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

0x01 加密方式分析

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

55fd2b2273b5a8b4531f72773c469d6e.gif

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

2017-3-26 16:36 上传

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

这里设置了sign和key

55fd2b2273b5a8b4531f72773c469d6e.gif

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

2017-3-26 16:36 上传

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

55fd2b2273b5a8b4531f72773c469d6e.gif

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

2017-3-26 16:36 上传

0x02 寻找sign和key

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

55fd2b2273b5a8b4531f72773c469d6e.gif

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

2017-3-26 16:47 上传

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

55fd2b2273b5a8b4531f72773c469d6e.gif

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

2017-3-26 16:36 上传

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

55fd2b2273b5a8b4531f72773c469d6e.gif

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来解密,然后写入文件,写好代码编译运行即可

55fd2b2273b5a8b4531f72773c469d6e.gif

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

2017-3-26 16:58 上传

解密成功

55fd2b2273b5a8b4531f72773c469d6e.gif

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

2017-3-26 17:00 上传

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

5a63e1c35f76db073d965a74a848add1.gif)

[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

解密脚本可以批量的解密

55fd2b2273b5a8b4531f72773c469d6e.gif

[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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值