Luajit反编译之探索记

本文记录了作者在没有成熟Luajit反编译器的情况下,通过人肉反编译和研究现有工具,成功将Luajit编译的代码还原成可读的Lua源码的过程。过程中涉及到对luajit指令的理解、函数结构恢复以及全局变量定位等挑战。
摘要由CSDN通过智能技术生成

由于工作需求,要反编译一个luajit编译过的文件。百度反编译luajit,得到的信息是目前没有此类成熟的反编译器。所以,如果你用luajit编译了代码,基本上不用担心被别人破解(2015.12)。

虽然没有luaj反编译器,但是不代表反编译不可能。至少,人肉反编译是可以的,哈。因为我只需要反编译一个文件,所以采取人肉的方式,也许是可行的。

首先,在github上面找到了唯一的一个项目是关于反编译luaj的项目,这个作者写了个工具,可以把手头上的代码翻译成可以可以阅读的模式。(在win/linux下可以直接执行他的工具,他的工具用的是AutoIt脚本写的)

通过阅读他的源码,才知道这个工具首先是用luajit的命令行工具,把字节码转换成可读的模式:

luajit -bl test.lua test.txt

翻译的思路,就是根据luajit提供的指令表,把指令翻译成对应的lua源码,例如, 对这句指令 MOV dst var,翻译成 local dst = var

在对luajit指令的翻译过程,最麻烦的是,lua里的function被重新整理,原来是树状结构的(毕竟大家总是会在function里嵌套function),编译后变成线性的。

这个项目的作者没有解决这个问题,反编译出来的内容,是无数个function,而且没有排版,function里的指令也只是单纯

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值