LuaJIT在各平台的编译方法

LuaJIT 可以将 lua 代码编译为字节码然后解释执行,增加反编译的难度。

通过对 LuaJIT 引擎的源码进行定制,将其生成的 LuaJIT 字节码的 opcode 随机化地打乱、增加干扰的opcode、文件格式变换。这样反编译的难度会进一步提高。下面记录一下编译 LuaJIT 的过程。

Windows

32

打开x86 Native Tools Command Prompt for VS 2019控制台

1
2
3
D:
cd D:\tolua_runtime\LuaJIT-2.1.0-beta3\src
msvcbuild

拷贝src目录下的lua51.dll和luajit.exe

64

打开x64 Native Tools Command Prompt for VS 2019控制台

1
2
3
D:
cd D:\tolua_runtime\LuaJIT-2.1.0-beta3\src
msvcbuild

拷贝src目录下的lua51.dll和luajit.exe

MacOS

32

1
2
cd LuaJIT-2.1.0-beta3
make clean && make && cp src/luajit ../luajit-32 && make clean

拷贝LuaJIT-2.1.0-beta3目录下的luajit-32

64

1
2
cd LuaJIT-2.1.0-beta3
make clean && make CFLAGS=-DLUAJIT_ENABLE_GC64 && cp src/luajit ../luajit-64 && make clean

拷贝LuaJIT-2.1.0-beta3目录下的luajit-64

测试

1
2
3
1. cd进入到luajit.exe的目录下
2. 然后生成字节码: luajit.exe -b a.lua a.bc
3. 运行生成的字节码: luajit.exe a.bc