Skip to content

Latest commit

 

History

History
203 lines (133 loc) · 6.09 KB

File metadata and controls

203 lines (133 loc) · 6.09 KB

Prometheus obfuscation process preview

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)

Quick Start

Try the browser version first:

Open Prometheus Web UI

Local CLI usage

Clone the repository:

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

Alternatively, you can download the sources directly here.

To obfuscate a script, run:

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

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


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/


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