加载中…
个人资料
elecs
elecs
  • 博客等级:
  • 博客积分:0
  • 博客访问:53,097
  • 关注人气:1
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
正文 字体大小:

总结:反编译lua脚本

(2018-11-05 10:11:57)
标签:

反编译luajit

分类: 信息安全

一般lua文件分为3种:其中lua是明文代码,直接用记事本打开,luaclua编译后的字节码,文件头为0x1B 0x4C 0x75 0x61 0x51lua虚拟机能够直接解析lualuac脚本文件,而luaJIT是另一个lua的实现版本(不是原作者写的),JIT是指Just-In-Time(即时解析运行),luaJIT相比lualuac更加高效,文件头是0x1B 0x4C 0x4A 

luac

总结:反编译lua脚本

总结:反编译lua脚本

luajit

总结:反编译lua脚本

 

1.       反编译luac

反编译主要用的工具有unluacluadec

 

2.       反编译luagit

反编译主要是通过luajit-decomp项目,它能够将luajit字节码反编译成伪lua代码。

参照网上的若干文档操作,也不知道怎样使用luagit-decomp,因而有了此篇文章,希望能帮助到有同样困惑的朋友们。 


下面详细描述怎样反编译luagit文件。

 1)假设手头上有一个luagit文件。IDA中查看下lua版本和luagit版本

总结:反编译lua脚本

lua版本为5.1

luagit版本为2.1.0-beta3

 

2windows下编译LuaJIT

下载LuaJIT源码 http://luajit.org/download.html

 

  打开VS命令行工具(下面分别演示在VS2008VS2015下的情况)

总结:反编译lua脚本

VS2015中,打开“VS2015开发人员命令提示”

总结:反编译lua脚本

  解压 LuaJIT 源码,并进入到解压目录/src下。输入msvcbuild开始编译。

总结:反编译lua脚本

  看到=== Successfully built LuaJIT for xxxxx ===则是编译成功了。

在解压目录/src下可以找到编译生成的luajit.exelua51.dll.

总结:反编译lua脚本

注意:此时在/src目录下运行luagit.exe会报错。查找了很多文章也没找到原因,将/src添加到系统Path环境变量里也照样报错,只得放弃。

总结:反编译lua脚本

3)下载luagit-decomp,覆盖相关文件和文件夹

https://github.com/bobsayshilol/luajit-decomp

 

luajit-decomp默认的lua版本为5.1luajit版本为2.0.2,我们需要下载对应lualuajit的版本,编译后替换luajit-decomp下的lua51.dllluajit.exejit文件夹。反编译时需要注意的文件和文件夹:

总结:反编译lua脚本

这里需要下载版本为2.1.0-beta3luajit,并且编译生成文件后,复制LuaJIT-2.1.0-beta3\src路径下的lua51.dllluajit.exe文件和jit文件夹覆盖到luajit-decomp目录中。

 

4decoder.exe得到伪lua代码

这里的操作与网上的教程有很大出入,也许大牛们觉得都为基本操作,所以隐去细节不说了吧。

 

  运行convert all – asm.bat

此文件的作用在于将luajit-decomp目录下的test.lua转换为test.asm

 

譬如将手头上的luagit字节码存为test.lua,复制到luajit-decomp目录下

总结:反编译lua脚本

运行convert all – asm.bat后,luajit-decomp目录下生成了test.asm

总结:反编译lua脚本

  运行decoder.exe,将test.asm转化为lua伪码文件out.luaout2.luaout2.lua为精简版的lua文件,删除了多余的注释。

总结:反编译lua脚本


网上很多教程说直接运行jitdecomp.exe,发现目录下没有该文件。后来了解到luagit-decomp用的是autolt3语言,decoder.au3文件的代码编译出来对应的执行文件为decoder.exe。查看decoder.au3才清楚,它的作用在于将test.asm转换为 out.lua


0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有