Openwrt Luajit反编译
openwrt中的lua脚本和传统的luajit编译后的有点不一样,需要打几个补丁才能正常使用luadec进行反编译,在研究过程中走了很多弯路,把安装过程大概的记录了一下,命令如下
47 cd ..
48 mkdir luadec
49 cd luadec/
50 git clone https://github.com/viruscamp/luadec
51 cd luadec/
52 git submodule update --init lua-5.1
53 cd lua-5.1
54 make linux
55 make clean
56 mkdir patch
57 cd patch/
58 wget https://dev.openwrt.org/export/HEAD/trunk/package/utils/lua/patches/010-lua-5.1.3-lnum-full-260308.patch
61 wget https://dev.openwrt.org/export/HEAD/trunk/package/utils/lua/patches/030-archindependent-bytecode.patch
62 wget https://dev.openwrt.org/export/HEAD/trunk/package/utils/lua/patches/011-lnum-use-double.patch
63 wget https://dev.openwrt.org/export/HEAD/trunk/package/utils/lua/patches/015-lnum-ppc-compat.patch
64 wget https://dev.openwrt.org/export/HEAD/trunk/package/utils/lua/patches/020-shared_liblua.patch
67 wget https://dev.openwrt.org/export/HEAD/trunk/package/utils/lua/patches/040-use-symbolic-functions.patch
68 wget https://dev.openwrt.org/export/HEAD/trunk/package/utils/lua/patches/050-honor-cflags.patch
69 wget https://dev.openwrt.org/export/HEAD/trunk/package/utils/lua/patches/100-no_readline.patch
70 wget https://dev.openwrt.org/export/HEAD/trunk/package/utils/lua/patches/200-lua-path.patch
71 wget https://dev.openwrt.org/export/HEAD/trunk/package/utils/lua/patches/300-opcode_performance.patch
72 ls -lh|wc
73 ls -lh
74 cd ..
75 mv patch/ patches
76 for i in ../patches/*.patch; do patch -p1 <$i ; done
77 for i in ./patches/*.patch; do patch -p1 <$i ; done
78 make linux
修改 lua-5.1/src/MakeFile
# USE_READLINE=1
+PKG_VERSION = 5.1.5
-CFLAGS= -O2 -Wall $(MYCFLAGS)
+CFLAGS= -fPIC -O2 -Wall $(MYCFLAGS)
- $(CC) -o $@ -L. -llua $(MYLDFLAGS) $(LUA_O) $(LIBS)
+ $(CC) -o $@ $(LUA_O) $(MYLDFLAGS) -L. -llua $(LIBS)
- $(CC) -o $@ -L. -llua $(MYLDFLAGS) $(LUAC_O) $(LIBS)
+ $(CC) -o $@ $(LUAC_O) $(MYLDFLAGS) -L. -llua $(LIBS)
执行
make linux
ldconfig
cd ../luadec
make LUAVER=5.1
sudo cp luadec /usr/local/bin/
参考来源
http://storypku.com/2015/07/how-to-decompile-bytecoded-openwrt-lua-files/