标准Lua字节码和LuaJIT字节码之间的差异

R40*_*000 5 lua bytecode luajit

我一直在尝试反编译一个LuaJIT字节码文件.我设法拆卸它(但找不到任何方法重新组装它).所以我正在考虑编写一些软件来从LuaJIT字节码转换为标准的Lua字节码,然后通过LuaDec很好地运行.

但是LuaJIT字节码和标准Lua字节码之间有什么区别?

Mic*_*man 9

差异非常大.LuaJIT使用比标准Lua更多的操作码,因为它专门用于某些操作,例如从函数返回而返回1返回值等.

你能做的最好的事情是比较Lua操作码LuaJIT操作码的定义,看看你是否可以在它们之间进行转换,但这不会是微不足道的......


Nec*_*lis 1

要获得确切的答案,您只需要比较两个项目的 BC 生成器即可,但是,为什么要麻烦使用转换器呢,LuaJIT 是开源的,IIRC 也是 LuaDec,将其转换为 LuaJIT 的字节码应该非常简单。

然而,你应该看看LuaJIT本身使用的命令行选项,有一些用于转储字节码列表,或转储字节码的C/h/obj/o文件,这两者都可以用来做你想要什么。