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

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 14891|回复: 45
收起左侧

[调试逆向] luajit反编译、解密

  [复制链接]
玉树临煈 发表于 2021-2-27 10:11
ps:最近在做个项目,因为我是个CV工程师,能copy的绝对不自己写,尤其是lua,以往都是拿来直接扒,后面也遇到过轻量级的加密,顺手也就解了,昨天遇到个加密lua,之前的解密方法都不凑效,研究了一晚上终于能扒了。。。
image.png

看到这乱码我实在懵逼,也不知道是啥加密方式,也不知道怎么查,后来实在没办法,直接搜lua加密LJ,终于知道这是luajit。然后一顿百度luajit解密、反编译
目前网上搜索到的主要是两种反编译方法:
方案一、下载对应的luajit版本源码,编译后用luajit -bl xx.lua xxx.lua得到字节码文件,再讲字节码文件转成可读lua文件
用到的工具:luajit源码 官网下载对应的版本:http://luajit.org   decomp下载地址:https://github.com/bobsayshilol/luajit-decomp/tree/deprecated
问题:如何确定加密文件是用的哪个版本luajit?
这个网上有很多资料,如果是apk的话,应该是有个so文件,用IDA打开,查找字符串luaJIT,能找到版本字符串。我分析的这个是windows平台的,直接用ida打开调用lua的DLL,查找字符串
image.png

如图所示,我这个是用的luajit-2.1.0b3版本。

好的,知道了luajit版本了,下载好工具后就要开始编译了,这里是重点,如果你的加密文件是64位的,那么你的luajit也需要编译成64位的,要不然会报字节码不兼容错误。
编译方法:打开 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Visual Studio 2019\Visual Studio Tools\VC\x64 Native Tools Command Prompt for VS 2019 ,进入luajit源码目录src文件夹
image.png

msvcbuild.bat 编译32位 msvcbuild.bat gc64编译64位,编译64位后面一定要跟gc64,一开始我以为只要用x64的工具编译的一定就是x64,后面发现编译的luajit.exe也确实是64位,但是就是不能反编译成功,后来加上gc64编译就好了,具体原因我也没整明白。
编译后会在luajit 目录src文件夹下生成luajit.exe文件,将luajit.exe、jit文件夹、lua51.dll拷贝到我们下载下来的luajit-decomp目录下,然后将需要解密的lua文件拷贝到目录下
image.png

。注意:加密文件一定要改成test.lua,否则无法反编译,运行会报错。运行decoder_new.exe,将会生成out.lua ,这就是解密后的lua文件,这种反编译方法有点鸡肋,原因是解密出来的文件可读性极差,变量名、函数名都无法还原。但这个方法比较稳定,基本上只要luajit版本对了,都能反编译成功。如图: image.png

方案二:下载luajit反编译工具https://github.com/zzwlpx/ljd
这个工具是有前人修正过的,能正确反编译32位下的加密文件,需要对应luajit版本,这个版本经过我测试可以编译luajit2.1.0b2-b3版本,其他版本应该需要修改对应的Opcode,具体的我没有测试
环境安装,需要安装python3+,我装的是3.7版本。将加密lua文件放到工具目录下,在目录下按shift右键命令行,输入py -3 main.py xx.lua >xxx.lua 完成反编译,xx是加密文件,xxx是反编译后输出文件。经测算如果加密时带有调试信息的,这个方法几乎可以完全还
原,即使不带调试信息,还原出来的代码可读性也比较高。
image.png

但是这个工具无法反编译64位的加密文件,会出现如图所示错误
image.png

一开始我一直以为是python环境问题,后来经过无数测试最终才确定是加密文件的原因,没办法,只能看看源代码调试一下了,之前从没接触过python,也是第一次接触luajit,随便下载了个python IDE,胡乱百度了一下开始调试,屏蔽了几处代码,勉强能反编译出几个lua文件,熬了一个通宵,后面项目要赶进度,也没时间继续深究了。上效果图:
image.png

反编译出来的代码可读性要比第一种方案更好了,起码函数名是有了,但是局部变量还是没办法还原,因为屏蔽了嵌套函数解析代码,所以函数调用都没有解析,不过我的目的已经达到了。这货写的代码太乱了,我实在是懒得抄,就借鉴了几个函数实现逻辑,哈哈哈哈。。。。

写在最后:有没有大佬再深究一下,把这个反编译工具完善一下造福众人,手动滑稽。
ljd-master-xiuzheng.zip (217.28 KB, 下载次数: 1029)
image.png
image.png

免费评分

参与人数 4威望 +1 吾爱币 +23 热心值 +4 收起 理由
qweasdasd + 1 + 1 谢谢@Thanks!
Hmily + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
ll52wj1pjo + 1 + 1 用心讨论,共获提升!
光之优雅 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

  • · Aarow|主题: 991, 订阅: 304

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

Hmily 发表于 2021-2-27 10:28
玉树临煈 发表于 2021-2-27 10:13
第一次发帖,不知道怎么搞的,排版成这样

我帮你编辑还行一下好多了,但是还有几个图没插入到正文中,还需要你自己编辑下。
 楼主| 玉树临煈 发表于 2021-2-27 10:13
第一次发帖,不知道怎么搞的,排版成这样

点评

我帮你编辑还行一下好多了,但是还有几个图没插入到正文中,还需要你自己编辑下。  详情 回复 发表于 2021-2-27 10:28
Vulpine 发表于 2021-2-27 10:30
ciker_li 发表于 2021-2-27 11:17
厉害厉害
ningm 发表于 2021-2-27 11:18
感谢,学习了
57114863 发表于 2021-2-27 12:30
现在有的LUA一键解密不能用?
niuyufeng 发表于 2021-2-27 13:04
有时opcode 会被打乱,要重新与源码 一 一 对应起来,在游戏引擎中是一种常见的加密方式,包括lua,python,luajit.
butwatch 发表于 2021-2-27 17:34
非常好非常好,首次见到
ll52wj1pjo 发表于 2021-2-27 21:53
学习学习66666
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

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

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

GMT+8, 2024-4-25 06:22

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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