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.

Project Activity

See All Activity >

Categories

Compilers

License

MIT License

Follow unluac

unluac Web Site

Other Useful Business Software
Free team chat app Icon
Free team chat app

For teams that need a collaboration and team chat solution

Replace email and collaborate with your co-workers more efficiently. Unlimited users and message history, free forever.
Rate This Project
Login To Rate This Project

User Ratings

★★★★★
★★★★
★★★
★★
8
0
0
0
0
ease 1 of 5 2 of 5 3 of 5 4 of 5 5 of 5 4 / 5
features 1 of 5 2 of 5 3 of 5 4 of 5 5 of 5 5 / 5
design 1 of 5 2 of 5 3 of 5 4 of 5 5 of 5 4 / 5
support 1 of 5 2 of 5 3 of 5 4 of 5 5 of 5 3 / 5

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
Read more reviews >

Additional Project Details

Languages

English

Intended Audience

Advanced End Users, Developers

User Interface

Command-line

Programming Language

Java

Registered

2012-04-15