吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 54332|回复: 58
上一主题 下一主题
收起左侧

[Android 原创] Cocos2d-x的lua官方加密的解密方法

  [复制链接]
跳转到指定楼层
楼主
wmsuper 发表于 2017-3-26 17:21 回帖奖励
本帖最后由 wmsuper 于 2017-3-26 17:23 编辑

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

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

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





0x02 寻找sign和key
将apk解压之后就找到src这个目录,这里放着lua脚本

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

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



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

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

解密成功

为了实现批量解密,可以编写个脚本去实现(为啥不直接在解密程序中实现批量?本人比较懒,脚本代码少些
[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

解密脚本可以批量的解密


0x04 更安全的加密方案
1.应该使用luajit去编译自己的脚本,就算攻击者解密出来也无法获得源码
2.不应该采用官方的加密方案,应该自己实现加密解密算法。
3.隐藏自己的加密秘钥,不应该过分明显。
4.保护好自己的so库,加壳或者做混淆。


/*******************************************************************/
使用的源码和脚本
http://pan.baidu.com/s/1gfDVWS7
nl4s



免费评分

参与人数 15威望 +1 吾爱币 +27 热心值 +15 收起 理由
siuhoapdou + 1 + 1 谢谢@Thanks!
fu90 + 1 + 1 我很赞同!
文可う润心 + 1 + 1 谢谢@Thanks!
Three_fish + 1 + 1 谢谢@Thanks!
海绵foryou + 1 + 1 热心回复!
dr_dargon + 1 + 1 谢谢@Thanks!
q914562027 + 1 + 1 热心回复!
jasonyao + 1 + 1 很好的教程,赞一个
soyiC + 2 + 1 用心讨论,共获提升!
qtfreet00 + 1 + 12 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
流年回忆 + 1 + 1 谢谢@Thanks!
18024128955 + 1 + 1 谢谢@Thanks!
caddy + 1 + 1 我很赞同!
ssd1997 + 1 + 1 用心讨论,共获提升!
守护神艾丽莎 + 1 + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
503959233 发表于 2017-3-26 23:32 来自手机
厉害,已收藏
推荐
wangxd 发表于 2018-8-7 15:05
longee 发表于 2018-2-4 19:51
你好,我想问一下,我把libcocos2dlua.so用IDA加载了之后,搜索sign,为什么搜索不出来的?

是搜索签名字符串,lua头文件的字符串,不是搜索:sign!!!!
3#
冲洞男 发表于 2017-3-26 17:39 来自手机
4#
晨夕小璞 发表于 2017-3-26 17:56
大手膜拜。。
5#
黑山走天涯 发表于 2017-3-26 18:11
不错,学习了!!!!
6#
caddy 发表于 2017-3-26 18:28
谢谢分享,收藏啦
7#
明月相照 发表于 2017-3-26 20:21
还没有学到家,没有明白,不过谢谢分享。
8#
萌鬼出没 发表于 2017-3-26 20:40
这个很厉害啊
9#
萌鬼出没 发表于 2017-3-26 20:40
我就要好好学习一下
10#
蓝颜永生 发表于 2017-3-26 22:00
楼主学习一下
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-21 17:53

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表