12558网页游戏私服论坛

 找回密码
 立即注册
游戏开服表 申请开服
游戏名称 游戏描述 开服状态 游戏福利 运营商 游戏链接
攻城掠地-仿官 全新玩法,觉醒武将,觉醒技能 每周新区 经典复古版本,长久稳定 进入游戏
巅峰新版攻 攻城掠地公益服 攻城掠地SF 新兵种、新武将(兵种) 进入游戏
攻城掠地公 散人玩家的天堂 新开 进入游戏
改版攻城掠 上线即可国战PK 稳定新区 全新改版,功能强大 进入游戏
少年江山 高福利高爆率 刚开一秒 江湖水落潜蛟龙 进入游戏
太古封魔录 开服送10亿钻石 福利多多 不用充钱也可升级 进入游戏
神魔之道 签到送元宝 稳定开新区 送豪华签到奖励 进入游戏
神奇三国 统帅三军,招揽名将 免费玩新区 激情国战,征战四方 进入游戏
龙符 三日豪礼领到爽 天天开新区 助你征战无双 进入游戏
王者之师 免费领豪华奖励 免费玩新区 6元送6888元宝 进入游戏
查看: 335|回复: 0

luajit反编译、解密

[复制链接]

60

主题

60

帖子

130

积分

实习版主

Rank: 7Rank: 7Rank: 7

积分
130
发表于 2021-5-8 00:20:25 | 显示全部楼层 |阅读模式
ps:最近在做个项目,因为我是个CV工程师,能copy的绝对不自己写,尤其是lua,以往都是拿来直接扒,后面也遇到过轻量级的加密,随手也就解了,昨天遇到个加密lua,之前的解密方法都不凑效,研究了一晚上终于能扒了。。。


看到这乱码我着实懵逼,也不知道是啥加密方式,也不知道怎么查,后来着实没办法,直接搜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,查找字符串


如图所示,我这个是用的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文件夹


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文件拷贝到目录下


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

方案二:下载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是反编译后输出文件。经测算假如加密时带有调试信息的,这个方法险些可以完全还
原,即使不带调试信息,还原出来的代码可读性也比力高。


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


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


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

写在最后:有没有大佬再穷究一下,把这个反编译工具美满一下造福众人,手动滑稽。
ljd-master-xiuzheng.zip
来源:http://www.12558.net
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
楼主热帖
回复

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|12558网页游戏私服论坛 |网站地图

GMT+8, 2024-4-29 10:22 , Processed in 0.156250 second(s), 31 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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