首页
社区
课程
招聘
[求助]android游戏 lua如何解密脚本 遇到的各种坑 求助大神
发表于: 2019-9-18 15:07 2837

[求助]android游戏 lua如何解密脚本 遇到的各种坑 求助大神

2019-9-18 15:07
2837
最近自己玩的一款android游戏
想看看游戏里的小游戏-赛跑活动的代码
该活动开始后,可以控制人物跳跃,每局游戏会随机生成障碍物,游戏内可以使用道具加速
Post密文如下:
"prop":"320,340,340,316,332,352,320,340,340,316,332","SList":"320,316,324,316,344,316,336,316,336,316,364,316,336,316,336,316,324,316,328,316,324,316,324,316,324,316,324,316,344,316,364,316,324,316,336,316,324,316,324,316,336,316,324,316,324,316,324,316,336,316,324,316,360,316,360,316,364,316,324"
根据参数名称,猜测第一段prop数据是道具的id及数量,第二段SList数据为游戏数据
反复游戏截取数据猜想加密方式 是 凯撒密码?(不确定)
按照凯撒密码解:(反复使用道具,改变使用数量并记录抓包得出如下结果)
0 332
1 328
2 324
3 320
4 348
5 344
6 340
7 336
8 364
9 360
再配合密文解(因为游戏可以控制的只有道具数量,所以316及352暂时不清楚是什么符号),316暂时用" : "代替, 352使用 空格代替
第一个道具使用3个,第二个道具使用6个

366:3
367:6

这个结果跟我已知的道具ID就符合了(有点强行凑的意思,没办法笨人只能用笨办法)

接下来使用相同的方法解第二段数据

第二段数据
3 2 5 7 7 8 7 7 2 1 2 2 2 2 5 8 2 7 2 2 7 2 2 2 7 2 9 9 8 2
第二次抓包第二段数据
5 2 9 8 10 4 6 6 2 4 1 2 2 2 1 1 2 1 2 1 9 2 2 1 7 1 1 1 7 5
第三次抓包第二段数据
4 2 1 1 4 4 9 9 2 1 2 2 2 2 1 7 2 3 2 2 6 2 2 2 1 5 5 6 6 10
这段数据解出来 就完全看不懂了,即使障碍物刷新的位置一模一样,这段数据也不同
到这里,如果想真正了解第二段数据,只能逆向了


但自己对android游戏没有一点经验,只能硬着头皮上了
最初是在java层搜索相关字符串,结果没有一个是相符的

查阅了相关资料,了解到游戏一般会使用lua、cocos2dx这些引擎
按照一般思路,先修改.apk为.zip,解压根目录如下


据说重点要关注accets目录,如下



看到spine-lua猜想使用的是lua脚本,但遍历目录也没找到一个lua文件
最后查看resource.car文件



看到很多.lu后缀的文件名,但是目录下也找不到这些文件
于是疯狂恶补搜索.car如何打开或解密文件
可能是car的关键词太多,度娘一下午也没找到相关资料

到这里基本上就没思路了
不甘心,或许ios上可以给我什么惊喜

果然,在ios上得到了这些文件,看起来全都是脚本文件了,包括子文件夹内所有的文件,都是.lu结尾的
到这里很激动也很忐忑,打开main.lu看一下


是的,怎么可能这么简单,乱码了


使用winhex 查看.LU文件头,如下



所有的.LU文件头都是 "PaoYou"
又开始恶补LUA解密,了解到这属于lua加密的签名
在lib\liblua.so搜索PaoYou,没有结果
后来查资料看到游戏本身调用方法是调用so中的loadbuffer来解密





这些跟查到的资料里,完全不一样,没办法了

求助大神,有什么思路解这种.LU文件
liblua.so及main.lu已上传至云盘

链接:https://pan.baidu.com/s/1UQwJKj3XXACy6Wz4aZMI8g
提取码:hehb

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2019-9-18 15:23 被迈泽编辑 ,原因: 使用表格更直观
收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 8447
活跃值: (5041)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
2
hook lual_loadbuffer,第二个参数就是指向内存中解密后的lua源码的指针
2019-9-18 15:22
0
游客
登录 | 注册 方可回帖
返回
//