unluac is a decompiler for Lua 5.0 through 5.4. It runs on Lua chunks that have been compiled with the standard Lua compiler. It requires that debugging information has not been stripped from the chunk. (By default, the Lua compiler includes this debugging information.)
This program is written in Java. A JAR package is available in the downloads section so you don't have to compile it. It runs from the command line and accepts a single argument: the file name of a Lua chunk. The decompiled code is printed to the standard output.
Here is an example usage of unluac:
java -jar unluac.jar myfile.lua > myfile_decompiled.lua
The current version also has pretty good support for Lua 5.0 and Lua 5.1. Support for later versions is also good if the code doesn't use too many gotos.
Categories
CompilersLicense
MIT LicenseFollow unluac
User Reviews
-
Great decompiler. Works well.
-
httffps://cdn.discordapp.com/attachments/531913020256026634/535445320272707604/client.luac
-
Great for decompiling Wherigo's!
-
good~
-
Having a little problem. eg: function split(szFullString, szSeparator) local nFindStartIndex = 1 local nSplitIndex = 1 local nSplitArray = {} while true do local nFindLastIndex = string.find(szFullString, szSeparator, nFindStartIndex) if not nFindLastIndex then nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, string.len(szFullString)) break end nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, nFindLastIndex - 1) nFindStartIndex = nFindLastIndex + string.len(szSeparator) nSplitIndex = nSplitIndex + 1 end return nSplitArray end Dec: function split(_ARG_0_, _ARG_1_) do while true do if not string.find(_ARG_0_, _ARG_1_, 1) then {}[1] = string.sub(_ARG_0_, 1, string.len(_ARG_0_)) break end {}[1] = string.sub(_ARG_0_, 1, string.find(_ARG_0_, _ARG_1_, 1) - 1) end return {} end end