吾爱破解 - LCG - LSG |安卓破解|病毒分析|破解软件|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 11721|回复: 47

[Android 原创] 血族手游Lua脚本及资源文件解密

[复制链接]
发表于 2018-1-12 09:11 | 显示全部楼层
本帖最后由 abel_xu 于 2018-1-13 12:54 编辑

快速分析

下载最新的血族apk并解压之后看到assets\lua可以猜测这个游戏是由cocos2d-lua开发的。打开其中的一个lua脚本看到里面都是乱码而且开头也没有特征值,应该不是使用xxtea加密的。
story Lua.png
打开png图片提示无法读取该文件。
png报错.png
打开lib\armeabi文件夹,libgame.so是最大的也是等一下分析的重点文件。
libgame.png

快速分析小结
1.血族使用cocos2d-lua开发
2.lua脚本和一些重要资源都已经被加密,但不是用官方的xxtea
3.加解密是由libgame.so进行


静态分析libgame.so

IDA打开libgame.so,文件较大打开时间比较长。打开字符串窗口可以快速获得一些重要信息。比如LuaJIT2.0.1、Lua5.1等等。
lua脚本由cocos2dx_lua_loader加载,最后由lua_loadbuffer函数加载到内存中。动态分析一般会在这两个地方下断点,然后将lua脚本dump下来。

cocos2dx_lua_loader分析

找到cocos2dx_lua_loader之后f5查看反汇编代码。根据之后的动态调试分析可以知道,lua脚本是在第一个红色方框处进行解密操作。
Lua_load.png
lua_load调用了CCFileUtilsAndroid::getFileData,接着调用CCFileUtilsAndroid::doGetFileData,然后调用decryptFile。其实所有的资源都是在decryptFile中进行解密操作。根据文件类型主要分为三大类:png、jpg、其他加密文件(Lua,csv,xml)。
decryptFile.png

cocos2d::decryptTxt分析

在接下去分析会发现这三个类型的解密过程都是大同小异,先是判断该文件是否已经加密,如果加密了就调用了cocos2d::decryptData进行真正的解密,只是传入的参数有所差异。下面用cocos2d::decryptTxt作为例子
decryptTxt特征.png

1.判断文件最后第4个字节到最后第2个字节是否为0x53 0x44 0x47
2.调用cocos2d::decryptData进行解密操作,传入的参数只用到了前三个。第一个:开始解密的位置。第二个:需要解密的大小。第三个:用于后续解密的“密钥”
lua特征.png

cocos2d::decryptData分析

解密的步骤如下:
1.将需要解密的第一个字节和“密钥”异或
2.将需要解密的最后一个字节和“密钥”异或
3.将第一个字节和最后一个字节交换
4."密钥" =("密钥"+1)%0xff
...
解密的步骤还是比较简单的稍微花点时间就能看懂。
decryptData.png

静态分析小结
函数调用的顺序是:
1.cocos2dx_lua_loaderlua脚本加载函数
2.cocos2d::CCFileUtilsAndroid::GetFileData
3.cocos2d::CCFileUtilsAndroid::doGetFileData
4.cocos2d::decryptFile选择对应的解密函数
5.cocos2d::decryptTxt判断是否需要解密
6.cocos2d::decryptData解密完成


动态分析

在lua_load和loadbuffer下断点
lua_load断点.png
loadbuffer断点.png

点击游戏里的一些按钮触发断点,当运行到loadbuffer断点的时候,lua脚本源码已经出现在内存中了
loadbuffer动态调试.png

R1:脚本的起始位置
R2:脚本的长度

可以使用IDC脚本将lua代码保存到本地
idc脚本.png
效果源码如下图
storyLua源码.png

动态调试总结
在loadbuffer关键函数下断点可直接获得解密后的代码
使用IDC脚本将代码保存下来
优点:省略分析加解密算法的步骤,配合hook框架可以将运行过的代码都获取到
缺点:没运行到的代码依然得不到


最后放几张jpg,png解密后的图片和解密脚本的效果
png解密.png
png解密.png
解密脚本效果.png

详细代码已经上传github

python版本3.6
脚本代码链接

参考文章链接

浅析android手游lua脚本的加密与解密
Lua游戏逆向及破解方法介绍

免费评分

参与人数 23吾爱币 +21 热心值 +23 收起 理由
第三世界 + 1 热心回复!
jnez112358 + 1 + 1 谢谢@Thanks!
kilkilo502 + 1 谢谢@Thanks!
genou + 1 + 1 热心回复!
13480542071 + 1 + 1 已经处理,感谢您对吾爱破解论坛的支持!
joseph + 1 + 1 谢谢@Thanks!
fisherpau + 1 + 1 谢谢@Thanks!
sobad + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
鸡儿在学习 + 1 + 1 用心讨论,共获提升!
79狼烟 + 1 + 1 用心讨论,共获提升!
Shanghanzu + 1 + 1 我很赞同!
Ravey + 1 + 1 谢谢@Thanks!
O丶ne丨柒夜彡 + 1 + 1 热心回复!
遛你玩528 + 1 + 1 谢谢@Thanks!
zhiyi1120 + 1 + 1 谢谢@Thanks!
xinkui + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
sunnylds7 + 1 热心回复!
wmsuper + 2 + 1 我很赞同!
baqzh + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
plasd + 1 + 1 热心回复!
lp55535 + 1 + 1 谢谢@Thanks!
窗边的小豆豆 + 1 + 1 用心讨论,共获提升!
dwq308 + 1 + 1 谢谢@Thanks!

查看全部评分

本帖被以下淘专辑推荐:

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

 楼主| 发表于 2018-1-12 13:20 | 显示全部楼层
杀阡陌爱花千骨 发表于 2018-1-12 13:08
感谢分享技术帖。学习了,不过我遇到的lua脚本都是配合unity热更新使用的

还没碰到过lua脚本配合unity热跟新的。当时只是想看看图片而已,做到最后的时候发现解密的地方是同一个就把资源和脚本一起做了。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

发表于 2018-1-20 00:24 | 显示全部楼层
楼主这个是MT1的老游戏了。能帮我看看TAB的解密同加密过程吗。成功有心意~~
链接:https://pan.baidu.com/s/1slXATfZ 密码:xgcu

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

发表于 2018-1-12 09:15 | 显示全部楼层

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

发表于 2018-1-12 09:36 | 显示全部楼层
参考了,感谢分享了

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

发表于 2018-1-12 09:49 | 显示全部楼层
666.思路可以啊

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

发表于 2018-1-12 10:07 | 显示全部楼层
F5大法万岁

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

发表于 2018-1-12 10:09 | 显示全部楼层
多谢楼主分享

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

发表于 2018-1-12 10:15 | 显示全部楼层
就没有你们破解不了的软件 天天脱壳 我都懂很多了

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

发表于 2018-1-12 10:18 | 显示全部楼层
感谢分享了,谢谢楼主

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

发表于 2018-1-12 11:18 | 显示全部楼层
参考了,感谢分享了

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

发表于 2018-1-12 12:53 | 显示全部楼层
感谢分享 学习啦

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则


免责声明:
吾爱破解所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:Service@52PoJie.Cn

快速回复 收藏帖子 返回列表 搜索

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

GMT+8, 2018-4-25 11:00

Powered by Discuz!

© 2001-2017 Comsenz Inc.

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