Roblox Luau Obfuscation

Change the program, not just the text.

Morpheus transforms Luau into a virtualized, polymorphic runtime built to make static recovery and reusable devirtualization substantially harder.

v1.0.0Current release
LuauRoblox focused
MPSProtection intrinsics
Virtualized execution Per-build polymorphism Protected constants VM-level control flow
Under the hood

Protection built around representation.

Morpheus focuses on changing the structure a reverser has to recover, not covering normal Luau in visual noise.

01

Virtual machine execution

Luau operations are lowered into a custom virtual instruction set. Opcode IDs, operand layouts and runtime mappings can change between builds, so one solved build is not a permanent map for the next.

02

Polymorphic structure

The same source does not need to produce the same protected shape. Morpheus varies instruction mappings, decoder forms, packet layouts and control-flow structure between compilations.

03

Protected constants and atoms

Strings and runtime names can travel through stateful representations instead of remaining as obvious constants. Sensitive values can be reconstructed close to the point where they are actually consumed.

04

VM-level control flow

Virtual blocks can be fragmented and reconnected after lowering. Recovering the instruction stream is therefore not automatically the same thing as recovering the source program's original structure.

Morpheus V1

More than a renamed instruction stream.

Sealed operations

Selected call and data-flow chains can collapse into higher-level VM operations so the original sequence no longer exists as a simple instruction trail.

Generated superoperators

Instruction chains can be fused into larger semantics, then diversified again so fixed opcode signatures become less useful across builds.

Staged prototypes

Runtime structures can be assembled through intermediate descriptors instead of exposing one complete application prototype up front.

Source shattering

Names, literals, accesses and expressions are broken into temporary data-flow before virtualization to reduce obvious source-level structure.

Private VM domains

Sensitive regions can receive isolated mappings and stronger local transformations without forcing the entire script through the heaviest profile.

Live build stages

The CLI reports parsing, lowering, VM generation, packing and final output stages as they happen, so long builds never feel like a black box.

MPS intrinsics

Mark the parts that deserve stronger treatment.

MPS directives are consumed during compilation. They let a script mark values or entire functions for specialized protection without leaving an MPS runtime library inside the protected output.

MPS.ENCSTR MPS.SECURESTR MPS.VM MPS.VM_STRONG
protected.lua Luau
local token = MPS.SECURESTR(
    "InventoryService"
)

local run = MPS.VM_STRONG(
    function(value)
        return value + 1
    end
)

run(41)
Morpheus V1

Built for Roblox Luau.

Current release: v1.0.0