我一直在尝试反编译 LuaJIT 字节码文件。我已经设法拆卸它(但找不到任何方法来重新组装它)。所以我正在考虑编写一些软件来将 LuaJIT 字节码转换为标准 Lua 字节码,然后可以通过 LuaDec 正常运行。
但是 LuaJIT 字节码和标准 Lua 字节码有什么区别呢?
差异相当大。LuaJIT 使用比标准 Lua 更多的操作码,因为它专注于某些操作,例如从函数返回与返回 1 个返回值等。
你能做的最好的就是比较Lua 操作码和LuaJIT 操作码的定义,看看你是否可以在它们之间进行转换,但这不会是微不足道的......
要获得确切的答案,您只需比较两个项目的 BC 生成器,但是,为什么要使用转换器,LuaJIT 是开源的,而 IIRC 也是 LuaDec,将其转换为 LuaJIT 的字节码应该很简单。
但是,你应该看看LuaJIT 本身使用的命令行选项,有用于转储字节码列表,或转储字节码的 C/h/obj/o 文件的选项,这两个都可以用来做你想要什么。