Skip to content

prometheus-lua/Prometheus

Repository files navigation


About

Prometheus is a Lua obfuscator written in pure Lua.

It applies a range of AST-based transformations to make source code significantly harder to read, analyze, and reverse engineer.
These include techniques such as control-flow flattening, constant encryption, and other Lua-specific obfuscation strategies.

The project was inspired by the excellent javascript-obfuscator.

Currently, Prometheus supports:

  • Lua 5.1
  • LuaU (basic support is available, but still not fully finished)

Preview

Prometheus obfuscation process preview


Highlights

AST-Based

Works on structured syntax trees instead of simple text replacements.

Pure Lua

Implemented in pure Lua with no heavy external runtime dependencies.

Practical Protection

Focused on real obfuscation passes useful for shipped Lua applications.

Included techniques

  • Control-flow obfuscation / flattening
  • Constant and string encryption
  • Lua-specific runtime tricks
  • Anti-tamper related transformations
  • Additional AST-based obfuscation passes

Documentation

You can find the full documentation, including the getting started guide, here:

Documentation


Installation

Clone the repository:

git clone https://github.com/prometheus-lua/Prometheus.git
cd Prometheus

Alternatively, you can download the sources directly here.

Requirements

Prometheus requires LuaJIT or Lua 5.1 in order to run.

Lua 5.1 binaries can be downloaded here:
https://sourceforge.net/projects/luabinaries/files/5.1.5/Tools%20Executables/


Quick Start

To quickly obfuscate a script, run:

lua ./cli.lua --preset Medium ./your_file.lua

Example

Input

-- input.lua
print("Hello, World!");

Obfuscated output

-- input.obfuscated.lua
return(function(...)local L={"afT6mf1V","/7mJXsuvmE1c/fT3";"tn1ZSn6=","37ghSJM=";"WqermfWAWuuZpb3XX7M=","tqXGSJ3u","XQXpL9x21dxAWJa//p==","SrM=";"3q+5SJM=","/D==";"t7XUt0p=";"mIeOmIx9";"LdgrBfWdWuNABsb+KJxj","SJWJ4dahKsebW7t+KQv=","/cDu3AvP/D==";"Llv7uD==","tJWhFfTE";"TQ43ctIuy9HIop==","mEu93p==";"WJax1sXEXEaxWuxGt6==","t0gPSEp=",...
-- remaining obfuscated output omitted

For more advanced use cases, configuration, and presets, see the documentation.


Tests

To run the Prometheus test suite:

lua ./tests.lua [--Linux]

Community

Prometheus has an official Discord server:

Join Discord


License and Commercial Use

Prometheus is licensed under the Prometheus License, a modified MIT-style license.

You are free to use, modify, and distribute this software, including for commercial purposes, under the following conditions:

  • Any commercial product, wrapper, or service (including SaaS or hosted solutions) that uses or integrates Prometheus must include clear attribution to:
Based on Prometheus by Elias Oelschner, https://github.com/prometheus-lua/Prometheus
  • The attribution must be visible in the product’s:
    • UI
    • documentation
    • public website
  • The obfuscated output files generated by Prometheus do not need to include any license or copyright notice.
  • Derivative works and public forks must also include a statement in their README noting that they are based on Prometheus.

Full license text: Prometheus License


Packages

 
 
 

Contributors

Languages