lua手游

lua手游一般是cocos2d引擎+lua,除此之外还有个love2d引擎,不过用的人特少。

lua手游有三种文件:lua,luac,luajit。

lua是明文代码,直接用记事本就能打开。

luac是lua编译后的字节码。

luajit是用的另一种对lua加密。

luac和luajit同样是.luac后缀,但是文件头不同,对其所使用的反编译方法也不同,所以需要特别注意。

luac文件头为:0x1B 0x4C 0x75 0x61 0x51

luacjit文件头为:文件头是0x1B 0x4C 0x4A

打开so文件(一般是文件大小最大的那个(不做更改的话是libcocos2dlua.so),在so文件里搜字符串有无lua就知道是不是)

lua调用是lua_loader->checkstring->cryptkey->readfilebyte->encrypt/decrypt->pushstring->loadbuffer

一般开始搜lua_loader,没有的话就搜在字符串中搜.lua。找到调用.lua文件的函数。再进行解密,最后存放在loadbuffer。

关于lua的解密

棋牌类的游戏下了几个都是cocos+lua,所以尝试破解了一个单机的斗地主游戏。

根据这篇文章做的:https://www.freebuf.com/column/173221.html

首先下载下来,解压搜索有无lua文件或者luac文件,然后在\assets\src_c找到了

 

查看文件头,既不是luac也不是luajit,但打开每个文件查看,每个文件开头都是byds

 

就很有可能是xxtea加密,byds是签名,只需要找到key就可以进行解密。

然后使用Android EagleEye这个开源项目进行hook找key

要hook首先要找到解密的关键函数,搜索了函数发现这个位关键函数

 

然后使用Android EagleEye,修改\EagleEye\jni\hooks\hook_apis.c

 

但是最后只要hook游戏就会停止运行,还没搞懂为什么。

暂存。

关于luajit的反编译

遇到一个叫做小闲幺鸡麻将的lua游戏,里面是luac文件,文件头为

 

所以是luajit文件。

要想反编译,需要先知道luajit的版本,通过so文件,搜索字符串luajit得知。

 

luajit文件的反编译工具有两种:

第一种工具:luajit-decomp

首先要下载对应版本的luajit源码,然后在vs的命令行中编译源码

编译好后将图中3个文件复制进luajit-decomp文件夹中

 

然后将要反编译的文件也复制进去,并改名为test.lua,运行

decoder_new.exe得到的out2.lua就是所需的。

第二种工具:ljd-master

环境:python3

执行命令 python main.py "路径"

两种工具,luajit-decomp兼容性更好支持所有的luajit版本,ljd-master支持luajit2.0、luajit2.1。并且像小闲幺鸡麻将这样的游戏有的luajit文件即使是2.1.0 beta2ljd-master工具也不能反编译出来,只能使用luajit-decomp。

而且luajit-decomp反编译出来的很难看懂,相对来说ljd就好得多,下面两张反编译结果,一张是luajit,一张是ljd。

 

 

luac反编译工具

unluac反编译工具挺好用的。有个LuacGUI可以批量反编译。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值