Your code runs.
They don't get to read it.
CodeProtect transforms Lua, JavaScript and JVM source into heavily protected production code designed to resist analysis, tampering and reverse engineering.
return(function(,...)local _env=_ENV or j local l=0X0{bootstrap_code}local aM="Y,kofOeg,kwmHJS,GgbWgJ,kBeBYV,iiwaSe,ieI" local bb="zLWD,iiUECU,iisopy,iethzm,ipzgbe,iibdbp,iisof" local aX=",iJayBe,iRxfTz,iQPrpS,iQdJfT,kyyJEg,iRPwEr,if" local be="jceV,ieutLg,ipzLWD,iiUECU,iijVZk,iewsqW,ipzgbe" local aZ="vIMqh,iQlKqZ,exrxeP,XvLgZQ,iTRaHR,eoCNoP" local aT=",ihCrqJ,iinQxI,ipAcjQ,iinDTy,iKTgsX,iinDAf,SY" local aR="iKRsQB,SBdTZI,yBWKWs,iinDKr,GGaOBg,iinDWD,iinDKN," local aV="wiV,ieDONk,iRhNMG,iibufr,iibFBp,iKTade,iRGNJh,i" local bc="H,iiUlqW,iiUjXe,ipNSUg,kyRqTn,iRPESx,eQwuVT," local aW="eZaGW,iQdJhu,iQdJFm,iTiNHs,iRpOrj,iQPrpS,iQdJfT" local aO="pIlc,GMtqpL,XaYjhO,iibuGF,GUSXDH,dpsTTO,iiahsP," local aN="XRa,XHeQey,XPnCso,iinDAy,XbgNOp,iijArY,Xwpsbf,iR" local bg="n,iRPESx,iJURYG,iSdLxy,iijjkM,iiuiCj,iia" local bl="cXBa,iiuuLy,ietMDp,iraISf,iitdPE,iiaeik,iibFZk,ihKSgD,ihTseQ,iinDKN,iinDKD,iinDKD" local bd="XvDoMb,kRHasw,kyRqTn,iRPESx,iinxbp,iiUjxk,ii" local bh="gvZ,iiMwhe,ienyZm,iiMwyP,iiFTCf,ilocal bxor = bit32.bxor
local band = bit32.band
local rshift = bit32.rshift
local rrotate = bit32.rrotate
local w = {}
for i = 1, 16 do
local a, b, c, d = string.byte("example_message", i, i + 3)
w[i] = ((a * 256 + b) * 256 + c) * 256 + d
end
for i = 17, 32 do
local x = w[i - 15]
local y = w[i - 2]
w[i] =
w[i - 16]
+ bxor(rrotate(x, 7), rrotate(x, 18), rshift(x, 3))
+ w[i - 7]
+ bxor(rrotate(y, 17), rrotate(y, 19), rshift(y, 10))
end
local a, b, c = 0x6a09e667, 0xbb67ae85, 0x3c6ef372
for i = 1, 32 do
local t = bxor(rrotate(a, 2), rrotate(a, 13), rrotate(a, 22))
a, b, c = (t + b) % 2^32, a, b
end
print(a, b, c)Drag to compare. Left is your source; right is the protected output.
Four engines, one workflow
Each language targets the platforms it runs on. The version a file compiles for is the one your runtime actually accepts — no invalid combinations reach a build.
Lua v2
PreviewRandomized VM with four protection presets and revocable online-key delivery.
- Standard Lua
- 5.1 – 5.5, LuaJIT
- FiveM (CfxLua)
- 5.4
- Roblox
- Luau
Lua
The legacy engine, kept for compatibility with existing pipelines.
- Standard Lua
- 5.1 – 5.5
- FiveM (CfxLua)
- 5.4
- Anti-debug
- Optional
JavaScript
BetaControl-flow flattening, string encoding and self-defending output.
- Files
- .js .mjs .cjs
- Local script
- Full output
- Cloud loader
- Runtime fetch
JVM
BetaJAR protection that preserves Fabric, Mixin, Spigot and Paper entrypoints.
- Files
- .jar
- Minecraft mode
- Entrypoint-safe
- Strings
- Encrypted
Compare protection levels
Stronger protection costs runtime speed and output size. Pick the balance that fits your project.
| Preset | Runtime cost | Output size |
|---|---|---|
| Fast | ~1.2× | ~2× |
| Balanced | ~1.8× | ~4× |
| Secure | ~3× | ~7× |
| Extreme | ~5×+ | ~10×+ |
Approximate figures; actual results vary with the input.
From source to protected output in one pass
Upload
Drop a file or a whole folder. Directory structure is preserved, and files over 10 MB resume automatically.
Protect
The right engine runs from your saved defaults, with per-file overrides when you need them.
Download
Pull the protected output the moment its build finishes — status updates arrive live.
Or script it
Drive the same API from CI with a cp_ key: upload, obfuscate, poll, download.
Local delivery
The full protected script ships inside the output file. It runs anywhere, offline, with nothing to call home to.
Online keys
The output is a small loader; the payload is fetched at runtime and can be revoked. Revoking stops new fetches — running scripts keep working until they next reach out.
Protect your first file in under a minute
Sign in with ModLabs and drop a file. Every engine and preset is available during early access.