• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

lua手游

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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人参与评论

请发表评论

全部评论

专题导读
上一篇:
Lua的内存管理发布时间:2022-07-22
下一篇:
Lua学习笔记(四):表和数组发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap