Skip to content

Latest commit

 

History

History
200 lines (134 loc) · 6.75 KB

README.md

File metadata and controls

200 lines (134 loc) · 6.75 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 register VM virtualization, 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)

Lua 5.1's legacy implicit arg table in vararg functions is unsupported. Use ... and select('#', ...) instead; see Limitations. Replacing a function's environment while it is running is also unsupported; set the environment before calling the function.


Quick Start

Try the browser version first:

Open Prometheus Playground

Install CLI (Linux/macOS)

Install latest release with one command:

curl -fsSL https://raw.githubusercontent.com/prometheus-lua/Prometheus/master/install.sh | sh

Then use the CLI directly:

prometheus-lua --version
prometheus-lua --preset Medium ./your_file.lua

The release bundle includes a Lua runtime, so no separate Lua install is required for the packaged CLI.

To update to the latest release:

prometheus-lua update

To uninstall:

rm -f ~/.local/bin/prometheus-lua && rm -rf ~/.local/share/prometheus-lua

Local source usage

git clone https://github.com/prometheus-lua/Prometheus.git
cd Prometheus
lua cli.lua --preset Medium ./your_file.lua

Documentation

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

Documentation

Contribution guidelines: CONTRIBUTING.md


Requirements

Packaged CLI releases include a bundled Lua runtime. For source usage, Prometheus requires LuaJIT or Lua 5.1+.

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

The test suite runs existing cases on Lua 5.1 and Luau, plus the adapted official Lua 5.1 suite on Lua 5.1, inside Docker:

./scripts/run-tests.sh           # Run all tests (default: 10 iterations)
./scripts/run-tests.sh -b        # Build image and run tests
./scripts/run-tests.sh -n 5      # Run with 5 iterations
./scripts/run-tests.sh -c config.lua  # Use a custom config
./scripts/run-tests.sh -v        # Verbose output
./scripts/run-tests.sh --suite upstream --baseline-only  # Verify official originals
./scripts/run-tests.sh --case lua51/closure.lua --preset Cff --seed 4 -n 1

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