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
Bringing success to your events Icon
Bringing success to your events

State-of-the-art, cloud-based event ticketing.

Find out why thousands of organizations choose Tix for their box office and online ticket sales.
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