标准Lua字节码和LuaJIT字节码的区别

6

我一直在尝试反编译一个LuaJIT字节码文件。我已经成功分解它(但找不到任何重新组合的方法)。因此,我考虑编写一些软件,将LuaJIT字节码转换为标准的Lua字节码,然后可以通过LuaDec顺利运行。

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

2个回答

9
这两者之间的差异相当大。LuaJIT使用了比标准Lua更多的操作码,因为它专门针对一些操作进行了优化,例如从函数返回与返回1个返回值等。
最好的方法是比较Lua操作码LuaJIT操作码的定义,并尝试在它们之间进行翻译,但这并不容易...

我很担心这个:( 谢谢你的帮助,我会看一眼的。 - R4000

1

要得到一个精确的答案,你只需要比较两个项目中的BC生成器,然而,为什么要使用转换器呢?LuaJIT是开源的,而且我记得LuaDec也是开源的,将其转换为LuaJIT的字节码应该很简单。

但是,你应该查看LuaJIT本身的命令行选项,有一些用于转储字节码清单或转储字节码的C/h/obj/o文件的选项,这两个选项都可以用来实现你想要的功能。


我尝试了所有的字节码转储标志,但它们都没有返回一个我可以重新组装或馈送到LuaDec的格式。 - R4000

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接