Newest version 2026 18:21
This commit is contained in:
parent
c99fbf1834
commit
d96e596c76
@ -29,32 +29,27 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||||||
protectBtn.style.opacity = '0.5';
|
protectBtn.style.opacity = '0.5';
|
||||||
|
|
||||||
terminal.innerHTML = '';
|
terminal.innerHTML = '';
|
||||||
log(`INITIALIZING LUARTEX EXTREME KERNEL v3.5-DELTA`, 'info');
|
log(`INITIALIZING LUARTEX V3.2 NON-DETERMINISTIC ENGINE`, 'info');
|
||||||
await sleep(300);
|
await sleep(300);
|
||||||
log(`TARGET: ROBLOX / LUAU ENVIRONMENT`, 'info');
|
log(`TARGET: ROBLOX / LUAU (HYPERION COMPATIBLE)`, 'info');
|
||||||
await sleep(400);
|
await sleep(400);
|
||||||
|
|
||||||
log(`MAPPING: Randomized Opcode IDs (100-255)...`, 'info');
|
log(`POLYMorphism: Seed Evolution Initialized...`, 'info');
|
||||||
await sleep(400);
|
await sleep(400);
|
||||||
log(`ENCRYPTION: 4-Key XOR Rotation on Constants...`, 'info');
|
log(`JITTER: Synchronizing Timing & GC Entropy...`, 'info');
|
||||||
await sleep(400);
|
await sleep(400);
|
||||||
|
|
||||||
log(`VIRTUALIZATION: Register-based Dispatcher...`, 'info');
|
log(`VM: Loading Self-Modifying Bytecode Layer...`, 'info');
|
||||||
await sleep(300);
|
await sleep(300);
|
||||||
log(`VIRTUALIZATION: Dot-Syntax Global Resolver...`, 'info');
|
log(`VM: Enabling Silent Failure (Trap) Mode...`, 'info');
|
||||||
await sleep(300);
|
await sleep(300);
|
||||||
|
|
||||||
log(`SECURITY: Interleaving Anti-Hook Integrity Guards...`, 'info');
|
log(`CONSTANTS: Injecting Arithmetic Synthesis Chains...`, 'info');
|
||||||
await sleep(400);
|
await sleep(400);
|
||||||
log(`SECURITY: Real-time tick() Timing Verification...`, 'info');
|
log(`DECEPTION: Spawning Fake Crypto & Protocol Paths...`, 'info');
|
||||||
await sleep(300);
|
await sleep(300);
|
||||||
log(`SECURITY: debug.info Native Source Checks...`, 'info');
|
log(`INTEGRITY: Binding VM State to Environment...`, 'info');
|
||||||
await sleep(200);
|
await sleep(200);
|
||||||
log(`SECURITY: Anti-Tamper State Synchronization...`, 'info');
|
|
||||||
await sleep(200);
|
|
||||||
|
|
||||||
log(`STRENGTHENING: Injecting Junk Opcodes...`, 'info');
|
|
||||||
await sleep(100);
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const response = await fetch('process.php', {
|
const response = await fetch('process.php', {
|
||||||
@ -68,9 +63,9 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||||||
if (data.success) {
|
if (data.success) {
|
||||||
await sleep(500);
|
await sleep(500);
|
||||||
outputArea.value = data.protected_code;
|
outputArea.value = data.protected_code;
|
||||||
log(`SUCCESS: VM Locked. Final Size: ${data.stats.protected_size}b`, 'success');
|
log(`SUCCESS: Luartex V3.2 VM Finalized.`, 'success');
|
||||||
log(`VM Status: ULTRA-SECURE | Environment: DELTA COMPATIBLE`, 'success');
|
log(`Protection Level: OMEGA | Entropy: HIGH`, 'success');
|
||||||
log(`Watermark: "ts was obfuscated by Luartex V3.2" injected.`, 'info');
|
log(`Watermark: "Luartex V3.2 https://discord.gg/GpucUKeCtF" injected.`, 'info');
|
||||||
} else {
|
} else {
|
||||||
log(`CRITICAL ERROR: ${data.error}`, 'warn');
|
log(`CRITICAL ERROR: ${data.error}`, 'warn');
|
||||||
}
|
}
|
||||||
@ -86,7 +81,7 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||||||
if (!outputArea.value) return;
|
if (!outputArea.value) return;
|
||||||
navigator.clipboard.writeText(outputArea.value);
|
navigator.clipboard.writeText(outputArea.value);
|
||||||
const originalText = copyBtn.textContent;
|
const originalText = copyBtn.textContent;
|
||||||
copyBtn.textContent = 'LOCKED & COPIED';
|
copyBtn.textContent = 'COPIED';
|
||||||
setTimeout(() => copyBtn.textContent = originalText, 2000);
|
setTimeout(() => copyBtn.textContent = originalText, 2000);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
14
index.php
14
index.php
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
$projectName = $_SERVER['PROJECT_NAME'] ?? 'Luartex';
|
$projectName = $_SERVER['PROJECT_NAME'] ?? 'Luartex';
|
||||||
$projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? 'Enterprise Luau Obfuscation & Custom VM Protection';
|
$projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? 'Advanced Non-Deterministic Luau Obfuscation';
|
||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
@ -23,13 +23,13 @@ $projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? 'Enterprise Luau Obfusc
|
|||||||
<nav class="navbar">
|
<nav class="navbar">
|
||||||
<a href="/" class="brand">LUAR<span>TEX</span></a>
|
<a href="/" class="brand">LUAR<span>TEX</span></a>
|
||||||
<div style="flex-grow: 1;"></div>
|
<div style="flex-grow: 1;"></div>
|
||||||
<div class="badge">Hyperion V10.0 (DIP)</div>
|
<div class="badge">Luartex V3.2 (Stable)</div>
|
||||||
</nav>
|
</nav>
|
||||||
|
|
||||||
<main class="container-main">
|
<main class="container-main">
|
||||||
<header style="margin-bottom: 3rem;">
|
<header style="margin-bottom: 3rem;">
|
||||||
<h1 style="font-size: 3rem; margin-bottom: 0.5rem; letter-spacing: -2px;">Protect your <span style="color: var(--accent-color);">Luau</span> scripts.</h1>
|
<h1 style="font-size: 3rem; margin-bottom: 0.5rem; letter-spacing: -2px;">The Ultimate <span style="color: var(--accent-color);">Luau</span> Obfuscator.</h1>
|
||||||
<p style="color: var(--text-secondary); max-width: 600px;">Luartex utilizes a proprietary custom VM architecture to transform your scripts into secure, encrypted bytecode that is resistant to reverse-engineering. Optimized for Roblox Executors.</p>
|
<p style="color: var(--text-secondary); max-width: 600px;">Luartex V3.2 introduces Non-Deterministic VM states, Self-Modifying Bytecode, and Silent Failure mechanisms to break modern AI deobfuscators and execution tracers.</p>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<div class="workspace">
|
<div class="workspace">
|
||||||
@ -54,11 +54,13 @@ print('Hello Luartex!')"></textarea>
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="controls" style="justify-content: center;">
|
<div class="controls" style="justify-content: center;">
|
||||||
<button id="protect-btn" class="btn-primary" style="padding: 1rem 4rem; font-size: 1.2rem;">Obfuscate with Hyperion V10.0</button>
|
<button id="protect-btn" class="btn-primary" style="padding: 1rem 4rem; font-size: 1.2rem;">Protect with Luartex V3.2</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="terminal" class="terminal-log">
|
<div id="terminal" class="terminal-log">
|
||||||
<div class="log-entry log-info">[SYSTEM] Hyperion V10.0 Engine Initialized. Dynamic Instruction Polymorphism (DIP) & Seed Evolution Active.</div>
|
<div class="log-entry log-info">[SYSTEM] Luartex V3.2 Engine Initialized.</div>
|
||||||
|
<div class="log-entry log-info">[SYSTEM] Non-Determinism & Self-Modifying Bytecode Active.</div>
|
||||||
|
<div class="log-entry log-warning">[SECURITY] Silent Failure (Trap) Mode Enabled.</div>
|
||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
|
|||||||
131
process.php
131
process.php
@ -15,14 +15,16 @@ if (!$input || empty($input['code'])) {
|
|||||||
$code = $input['code'];
|
$code = $input['code'];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Hyperion V10.0 - Dynamic Instruction Polymorphism
|
* Luartex V3.2 - Advanced Non-Deterministic VM
|
||||||
* Features:
|
* Features:
|
||||||
* - Dynamic Opcode Mapping (Seed-based)
|
* - Runtime-generated keys (Jitter, GC side effects)
|
||||||
* - Operand Permutation (A, B, C swap roles)
|
* - Self-Modifying Bytecode (Dynamic instruction mutation)
|
||||||
* - Instruction Ghosting & Seed Evolution
|
* - Unstable Opcodes (Context-sensitive behavior)
|
||||||
* - Semantic Flattening & Environmental Entanglement (inherited)
|
* - Silent Failure (Believable but incorrect results on tamper)
|
||||||
|
* - Constant Synthesis & Deferred Decoding
|
||||||
|
* - Deceptive Logic Injection (Fake crypto/protocols)
|
||||||
*/
|
*/
|
||||||
class LuartexHyperionV10_0 {
|
class LuartexV3_2 {
|
||||||
private $rawCode;
|
private $rawCode;
|
||||||
private $constants = [];
|
private $constants = [];
|
||||||
private $instructions = [];
|
private $instructions = [];
|
||||||
@ -33,9 +35,9 @@ class LuartexHyperionV10_0 {
|
|||||||
|
|
||||||
public function __construct($code) {
|
public function __construct($code) {
|
||||||
$this->rawCode = $code;
|
$this->rawCode = $code;
|
||||||
$this->polyKey = rand(50, 200);
|
$this->polyKey = rand(50, 250);
|
||||||
$this->seed = rand(1000, 9999);
|
$this->seed = rand(5000, 20000);
|
||||||
for ($i = 0; $i < 32; $i++) {
|
for ($i = 0; $i < 64; $i++) {
|
||||||
$this->keys[] = rand(0, 255);
|
$this->keys[] = rand(0, 255);
|
||||||
}
|
}
|
||||||
$this->setupOpcodes();
|
$this->setupOpcodes();
|
||||||
@ -49,7 +51,7 @@ class LuartexHyperionV10_0 {
|
|||||||
'TAMPER_CHECK', 'ENTROPY_SYNC',
|
'TAMPER_CHECK', 'ENTROPY_SYNC',
|
||||||
'FETCH_ENV', 'RESOLVE_SYMBOL',
|
'FETCH_ENV', 'RESOLVE_SYMBOL',
|
||||||
'MUTATE_BYTECODE', 'COMPUTE_PC',
|
'MUTATE_BYTECODE', 'COMPUTE_PC',
|
||||||
'MORPH_STATE', 'GHOST_NOP'
|
'MORPH_STATE', 'GHOST_NOP', 'DECEPTIVE_TRAP'
|
||||||
];
|
];
|
||||||
shuffle($ops);
|
shuffle($ops);
|
||||||
foreach ($ops as $op) {
|
foreach ($ops as $op) {
|
||||||
@ -57,7 +59,7 @@ class LuartexHyperionV10_0 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private function genVar($len = 24) {
|
private function genVar($len = 20) {
|
||||||
$sets = ['l1Ii', 'O0Q', 'uvvw', 'nmM', 'S5s', 'Z2z', 'B8b', 'g9q'];
|
$sets = ['l1Ii', 'O0Q', 'uvvw', 'nmM', 'S5s', 'Z2z', 'B8b', 'g9q'];
|
||||||
$res = '_';
|
$res = '_';
|
||||||
for($i=0; $i<$len; $i++) {
|
for($i=0; $i<$len; $i++) {
|
||||||
@ -71,12 +73,17 @@ class LuartexHyperionV10_0 {
|
|||||||
$res = [];
|
$res = [];
|
||||||
for ($i = 0; $i < strlen($s); $i++) {
|
for ($i = 0; $i < strlen($s); $i++) {
|
||||||
$char = ord($s[$i]);
|
$char = ord($s[$i]);
|
||||||
$a = rand(1, 100);
|
$a = rand(1, 200);
|
||||||
$b = rand(1, 100);
|
$b = rand(1, 200);
|
||||||
$op = rand(0, 2);
|
$op = rand(0, 3);
|
||||||
if ($op == 0) { $x = $char - ($a + $b); $res[] = "($x + $a + $b)"; }
|
if ($op == 0) { $x = $char - ($a + $b); $res[] = "($x + $a + $b)"; }
|
||||||
elseif ($op == 1) { $x = $char + ($a - $b); $res[] = "($x - $a + $b)"; }
|
elseif ($op == 1) { $x = $char + ($a - $b); $res[] = "($x - $a + $b)"; }
|
||||||
else { $x = $char ^ $a ^ $b; $res[] = "bit32.bxor($x, $a, $b)"; }
|
elseif ($op == 2) { $x = $char ^ $a ^ $b; $res[] = "bit32.bxor($x, $a, $b)"; }
|
||||||
|
else {
|
||||||
|
$c = rand(1, 100);
|
||||||
|
$x = ($char + $c) ^ $a;
|
||||||
|
$res[] = "bit32.bxor($x, $a) - $c";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return "function() local r = ''; for _, v in ipairs({" . implode(",", $res) . "}) do r = r .. string.char(v) end return r end";
|
return "function() local r = ''; for _, v in ipairs({" . implode(",", $res) . "}) do r = r .. string.char(v) end return r end";
|
||||||
}
|
}
|
||||||
@ -91,30 +98,38 @@ class LuartexHyperionV10_0 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private function compile() {
|
private function compile() {
|
||||||
$this->addConst("Hyperion V10.0 - DIP Engine Active");
|
$this->addConst("Luartex V3.2 - Security Active");
|
||||||
|
|
||||||
|
// Inject deceptive logic at the beginning
|
||||||
|
$this->injectDeceptiveLogic();
|
||||||
|
|
||||||
$cleanCode = preg_replace('/--[[]*.*?[]]*--/s', '', $this->rawCode);
|
$cleanCode = preg_replace('/--[[]*.*?[]]*--/s', '', $this->rawCode);
|
||||||
$cleanCode = preg_replace('/--.*$/m', '', $cleanCode);
|
$cleanCode = preg_replace('/--.*$/m', '', $cleanCode);
|
||||||
$tokens = preg_split('/[;\n]+/', $cleanCode);
|
$tokens = preg_split('/[;
|
||||||
|
]+/', $cleanCode);
|
||||||
|
|
||||||
foreach ($tokens as $token) {
|
foreach ($tokens as $token) {
|
||||||
$token = trim($token);
|
$token = trim($token);
|
||||||
if (empty($token)) continue;
|
if (empty($token)) continue;
|
||||||
|
|
||||||
// Randomly inject Ghost NOPs to evolve the state
|
// Randomly inject Ghost NOPs or State Morphs
|
||||||
if (rand(0, 5) == 0) {
|
if (rand(0, 4) == 0) {
|
||||||
$this->instructions[] = [$this->opMap['GHOST_NOP'], rand(0,255), rand(0,255), rand(0,255)];
|
$this->instructions[] = [$this->opMap['GHOST_NOP'], rand(0,255), rand(0,255), rand(0,255)];
|
||||||
}
|
}
|
||||||
|
if (rand(0, 10) == 0) {
|
||||||
|
$this->instructions[] = [$this->opMap['MUTATE_BYTECODE'], rand(0, 255), rand(0, 255), rand(0, 255)];
|
||||||
|
}
|
||||||
|
|
||||||
$this->instructions[] = [$this->opMap['ENTROPY_SYNC'], 0, 0, 0];
|
$this->instructions[] = [$this->opMap['ENTROPY_SYNC'], 0, 0, 0];
|
||||||
|
|
||||||
if (preg_match('/^(?:local\s+)?([a-zA-Z_]\w*)\s*=\s*\{\}$/', $token, $m)) {
|
if (preg_match('/^(?:local\s+)?([a-zA-Z_]\w*)\s*=\s*{\}\s*$/', $token, $m)) {
|
||||||
$this->instructions[] = [$this->opMap['NEWTABLE'], 0, 0, 0];
|
$this->instructions[] = [$this->opMap['NEWTABLE'], 0, 0, 0];
|
||||||
$this->emitSemanticSetGlobal(0, $m[1]);
|
$this->emitSemanticSetGlobal(0, $m[1]);
|
||||||
}
|
}
|
||||||
elseif (preg_match('/^([a-zA-Z_]\w*)\s*[.[\]\s*["\']?(.*?)["\\]?\s*[\\]]?\s*=\s*(.*)$/', $token, $m)) {
|
elseif (preg_match('/^([a-zA-Z_]\w*)\s*[.[\\\]\s*["\\\]?(.*?)["\\]?\s*[\\]]?\s*=\s*(.*)$/', $token, $m)) {
|
||||||
$this->emitTableSet($m[1], $m[2], $m[3]);
|
$this->emitTableSet($m[1], $m[2], $m[3]);
|
||||||
}
|
}
|
||||||
elseif (preg_match('/^([a-zA-Z_]\w*(?:[.:]\w*)*)\s*\((.*?)\)$/', $token, $m)) {
|
elseif (preg_match('/^([a-zA-Z_]\w*(?:[.:]\w*)*)\s*\((.*?)\)\s*$/', $token, $m)) {
|
||||||
$this->emitCall($m[1], $m[2]);
|
$this->emitCall($m[1], $m[2]);
|
||||||
}
|
}
|
||||||
elseif (preg_match('/^(?:local\s+)?([a-zA-Z_]\w*)\s*=\s*(.*)$/', $token, $m)) {
|
elseif (preg_match('/^(?:local\s+)?([a-zA-Z_]\w*)\s*=\s*(.*)$/', $token, $m)) {
|
||||||
@ -124,6 +139,13 @@ class LuartexHyperionV10_0 {
|
|||||||
$this->instructions[] = [$this->opMap['RETURN'], 0, 0, 0];
|
$this->instructions[] = [$this->opMap['RETURN'], 0, 0, 0];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function injectDeceptiveLogic() {
|
||||||
|
// Fake Crypto Ops
|
||||||
|
for ($i = 0; $i < 3; $i++) {
|
||||||
|
$this->instructions[] = [$this->opMap['DECEPTIVE_TRAP'], rand(0,255), rand(0,255), rand(0,255)];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private function emitSemanticGetGlobal($reg, $name) {
|
private function emitSemanticGetGlobal($reg, $name) {
|
||||||
$this->instructions[] = [$this->opMap['FETCH_ENV'], $reg, 0, 0];
|
$this->instructions[] = [$this->opMap['FETCH_ENV'], $reg, 0, 0];
|
||||||
foreach (explode('.', $name) as $part) {
|
foreach (explode('.', $name) as $part) {
|
||||||
@ -145,7 +167,7 @@ class LuartexHyperionV10_0 {
|
|||||||
$kIdx = $this->addConst($this->synthesizeString($key));
|
$kIdx = $this->addConst($this->synthesizeString($key));
|
||||||
$this->instructions[] = [$this->opMap['LOADK'], 1, $kIdx, 1];
|
$this->instructions[] = [$this->opMap['LOADK'], 1, $kIdx, 1];
|
||||||
$val = trim($val); $vReg = 2;
|
$val = trim($val); $vReg = 2;
|
||||||
if (preg_match('/^["\\](.*)["\\]$/', $val, $vm)) {
|
if (preg_match('/^["\\\](.*?)["\\]$/', $val, $vm)) {
|
||||||
$vIdx = $this->addConst($this->synthesizeString($vm[1]));
|
$vIdx = $this->addConst($this->synthesizeString($vm[1]));
|
||||||
$this->instructions[] = [$this->opMap['LOADK'], $vReg, $vIdx, 1];
|
$this->instructions[] = [$this->opMap['LOADK'], $vReg, $vIdx, 1];
|
||||||
} elseif (is_numeric($val)) {
|
} elseif (is_numeric($val)) {
|
||||||
@ -163,7 +185,7 @@ class LuartexHyperionV10_0 {
|
|||||||
if (!empty(trim($argStr))) {
|
if (!empty(trim($argStr))) {
|
||||||
foreach (explode(',', $argStr) as $idx => $arg) {
|
foreach (explode(',', $argStr) as $idx => $arg) {
|
||||||
$arg = trim($arg); $rIdx = $idx + 1;
|
$arg = trim($arg); $rIdx = $idx + 1;
|
||||||
if (preg_match('/^["\\](.*)["\\]$/', $arg, $m)) {
|
if (preg_match('/^["\\\](.*?)["\\]$/', $arg, $m)) {
|
||||||
$vIdx = $this->addConst($this->synthesizeString($m[1]));
|
$vIdx = $this->addConst($this->synthesizeString($m[1]));
|
||||||
$this->instructions[] = [$this->opMap['LOADK'], $rIdx, $vIdx, 1];
|
$this->instructions[] = [$this->opMap['LOADK'], $rIdx, $vIdx, 1];
|
||||||
} elseif (is_numeric($arg)) {
|
} elseif (is_numeric($arg)) {
|
||||||
@ -180,7 +202,7 @@ class LuartexHyperionV10_0 {
|
|||||||
|
|
||||||
private function emitAssignment($var, $val) {
|
private function emitAssignment($var, $val) {
|
||||||
$val = trim($val);
|
$val = trim($val);
|
||||||
if (preg_match('/^["\\](.*)["\\]$/', $val, $m)) {
|
if (preg_match('/^["\\\](.*?)["\\]$/', $val, $m)) {
|
||||||
$vIdx = $this->addConst($this->synthesizeString($m[1]));
|
$vIdx = $this->addConst($this->synthesizeString($m[1]));
|
||||||
$this->instructions[] = [$this->opMap['LOADK'], 0, $vIdx, 1];
|
$this->instructions[] = [$this->opMap['LOADK'], 0, $vIdx, 1];
|
||||||
} elseif (is_numeric($val)) {
|
} elseif (is_numeric($val)) {
|
||||||
@ -197,7 +219,7 @@ class LuartexHyperionV10_0 {
|
|||||||
foreach ($this->instructions as $pc_idx => $inst) {
|
foreach ($this->instructions as $pc_idx => $inst) {
|
||||||
$pc = $pc_idx + 1;
|
$pc = $pc_idx + 1;
|
||||||
$op = (int)$inst[0];
|
$op = (int)$inst[0];
|
||||||
$mask = ($this->polyKey + $pc) % 256;
|
$mask = ($this->polyKey + $pc * 7) % 256;
|
||||||
$bin .= chr($op ^ $mask);
|
$bin .= chr($op ^ $mask);
|
||||||
$bin .= chr((int)$inst[1] & 0xFF);
|
$bin .= chr((int)$inst[1] & 0xFF);
|
||||||
$bin .= pack("n", (int)$inst[2]);
|
$bin .= pack("n", (int)$inst[2]);
|
||||||
@ -212,7 +234,7 @@ class LuartexHyperionV10_0 {
|
|||||||
}
|
}
|
||||||
$keyLen = count($this->keys); $enc = "";
|
$keyLen = count($this->keys); $enc = "";
|
||||||
for ($i = 0; $i < strlen($bin); $i++) {
|
for ($i = 0; $i < strlen($bin); $i++) {
|
||||||
$enc .= chr(ord($bin[$i]) ^ $this->keys[$i % $keyLen] ^ (($i * 31) % 256));
|
$enc .= chr(ord($bin[$i]) ^ $this->keys[$i % $keyLen] ^ (($i * 31) % 256) ^ (($i + 13) % 256));
|
||||||
}
|
}
|
||||||
return bin2hex($enc);
|
return bin2hex($enc);
|
||||||
}
|
}
|
||||||
@ -220,20 +242,20 @@ class LuartexHyperionV10_0 {
|
|||||||
public function build() {
|
public function build() {
|
||||||
$this->compile();
|
$this->compile();
|
||||||
$vars = [];
|
$vars = [];
|
||||||
foreach(['k','b','e','f','d','c','v','stack','asm','poly','handlers','tamper','watchdog','fetch','tk','entropy','pc','rolling','inst','op','a','b_p','c_p','res','env','hash','sym','prev_op','state_hash','ctx','seed','morph','perm'] as $v) {
|
foreach(['k','b','e','f','d','c','v','stack','asm','poly','handlers','tamper','watchdog','fetch','tk','entropy','pc','rolling','inst','op','a','b_p','c_p','res','env','hash','sym','prev_op','state_hash','ctx','seed','morph','perm','corrupted','dispatcher','mutate','deceptive'] as $v) {
|
||||||
$vars[$v] = $this->genVar();
|
$vars[$v] = $this->genVar();
|
||||||
}
|
}
|
||||||
$k_str = implode(",", $this->keys);
|
$k_str = implode(",", $this->keys);
|
||||||
$lua = "-- [[ Hyperion Engine V10.0 - DIP ]] --\n";
|
$lua = "-- [[ Luartex V3.2 | https://discord.gg/GpucUKeCtF ]] --\n";
|
||||||
$lua .= "local " . $vars['k'] . " = { " . $k_str . " }; ";
|
$lua .= "local " . $vars['k'] . " = { " . $k_str . " }; ";
|
||||||
$lua .= "local " . $vars['b'] . " = \"" . $this->serializeAll() . "\"; ";
|
$lua .= "local " . $vars['b'] . " = \"" . $this->serializeAll() . "\"; ";
|
||||||
$lua .= "local " . $vars['e'] . " = (getgenv and getgenv()) or (getfenv and getfenv(0)) or _G; ";
|
$lua .= "local " . $vars['e'] . " = (getgenv and getgenv()) or (getfenv and getfenv(0)) or _G; ";
|
||||||
|
|
||||||
$lua .= "local function _H(h) local b = {}; for i = 1, #h, 2 do b[#b+1] = tonumber(h:sub(i, i+1), 16) end return b end; ";
|
$lua .= "local function _H(h) local b = {}; for i = 1, #h, 2 do b[#b+1] = tonumber(h:sub(i, i+1), 16) end return b end; ";
|
||||||
$lua .= "local function _D(b) local o = {}; for i = 1, #b do local k = ((i - 1) % 32) + 1; o[i] = bit32.bxor(b[i], " . $vars['k'] . "[k], ((i - 1) * 31) % 256) end return o end; ";
|
$lua .= "local function _D(b) local o = {}; for i = 1, #b do local k = ((i - 1) % 64) + 1; o[i] = bit32.bxor(b[i], " . $vars['k'] . "[k], ((i - 1) * 31) % 256, ((i - 1) + 13) % 256) end return o end; ";
|
||||||
$lua .= "local " . $vars['d'] . " = _D(_H(" . $vars['b'] . ")); ";
|
$lua .= "local " . $vars['d'] . " = _D(_H(" . $vars['b'] . ")); ";
|
||||||
|
|
||||||
$lua .= "local function " . $vars['entropy'] . "() return bit32.bxor(math.floor(os.clock() * 1000) % 65536, collectgarbage('count') % 256, 0x1337) end; ";
|
$lua .= "local function " . $vars['entropy'] . "() return bit32.bxor(math.floor(os.clock() * 1000) % 65536, collectgarbage('count') % 256, 0x5A) end; ";
|
||||||
$lua .= "local function _R32(b, p) return b[p]*16777216 + b[p+1]*65536 + b[p+2]*256 + b[p+3] end; ";
|
$lua .= "local function _R32(b, p) return b[p]*16777216 + b[p+1]*65536 + b[p+2]*256 + b[p+3] end; ";
|
||||||
$lua .= "local function _R16(b, p) return b[p]*256 + b[p+1] end; ";
|
$lua .= "local function _R16(b, p) return b[p]*256 + b[p+1] end; ";
|
||||||
|
|
||||||
@ -244,17 +266,24 @@ class LuartexHyperionV10_0 {
|
|||||||
$lua .= "local " . $vars['fetch'] . " = function(p) local o = 5 + (p - 1) * 5; return " . $vars['d'] . "[o], " . $vars['d'] . "[o+1], _R16(" . $vars['d'] . ", o+2), " . $vars['d'] . "[o+4] end; ";
|
$lua .= "local " . $vars['fetch'] . " = function(p) local o = 5 + (p - 1) * 5; return " . $vars['d'] . "[o], " . $vars['d'] . "[o+1], _R16(" . $vars['d'] . ", o+2), " . $vars['d'] . "[o+4] end; ";
|
||||||
|
|
||||||
$lua .= "local " . $vars['v'] . " = function() ";
|
$lua .= "local " . $vars['v'] . " = function() ";
|
||||||
$lua .= "local " . $vars['stack'] . " = {}; local " . $vars['pc'] . " = 1; local " . $vars['seed'] . " = " . $this->seed . "; ";
|
$lua .= "local " . $vars['stack'] . " = {}; local " . $vars['pc'] . " = 1; local " . $vars['seed'] . " = " . $this->seed . " + " . $vars['entropy'] . "(); ";
|
||||||
$lua .= "local " . $vars['rolling'] . " = " . $vars['entropy'] . "(); local " . $vars['handlers'] . " = {}; ";
|
$lua .= "local " . $vars['rolling'] . " = " . $vars['entropy'] . "(); local " . $vars['corrupted'] . " = false; ";
|
||||||
|
$lua .= "local " . $vars['handlers'] . " = {}; ";
|
||||||
|
|
||||||
// Morphing Function
|
// Unstable Opcode Mapping - Context Sensitive
|
||||||
$lua .= "local function " . $vars['morph'] . "(op, seed, pc) return bit32.bxor(op, bit32.band(seed, 0xFF), bit32.band(pc, 0xFF)) % 256 end; ";
|
$lua .= "local function " . $vars['dispatcher'] . "(op, seed, pc) return bit32.bxor(op, bit32.band(seed, 0xFF), bit32.band(pc, 0xFF)) % 256 end; ";
|
||||||
|
|
||||||
// Dynamic Handler Population
|
|
||||||
foreach ($this->opMap as $name => $val) {
|
foreach ($this->opMap as $name => $val) {
|
||||||
$lua .= $vars['handlers'] . "[" . $val . "] = function(a, b, c) ";
|
$lua .= $vars['handlers'] . "[" . $val . "] = function(a, b, c) ";
|
||||||
|
|
||||||
|
// Silent Failure logic
|
||||||
|
$lua .= "if " . $vars['corrupted'] . " then if math.random() > 0.5 then a = (a + 1) % 256 end if math.random() > 0.8 then return end end; ";
|
||||||
|
|
||||||
switch($name) {
|
switch($name) {
|
||||||
case 'ENTROPY_SYNC': $lua .= $vars['rolling'] . " = bit32.bxor(" . $vars['rolling'] . ", " . $vars['entropy'] . "()); "; break;
|
case 'ENTROPY_SYNC':
|
||||||
|
$lua .= $vars['rolling'] . " = bit32.bxor(" . $vars['rolling'] . ", " . $vars['entropy'] . "()); ";
|
||||||
|
$lua .= "if " . $vars['rolling'] . " == 0 then " . $vars['corrupted'] . " = true end; ";
|
||||||
|
break;
|
||||||
case 'FETCH_ENV': $lua .= $vars['stack'] . "[a] = " . $vars['e'] . "; "; break;
|
case 'FETCH_ENV': $lua .= $vars['stack'] . "[a] = " . $vars['e'] . "; "; break;
|
||||||
case 'RESOLVE_SYMBOL': $lua .= $vars['stack'] . "[a] = " . $vars['stack'] . "[b][" . $vars['stack'] . "[c]]; "; break;
|
case 'RESOLVE_SYMBOL': $lua .= $vars['stack'] . "[a] = " . $vars['stack'] . "[b][" . $vars['stack'] . "[c]]; "; break;
|
||||||
case 'LOADK': $lua .= "local v = " . $vars['c'] . "[b + 1]; if c == 1 then local f = loadstring('return ' .. v); if f then v = f()() end end; " . $vars['stack'] . "[a] = v; "; break;
|
case 'LOADK': $lua .= "local v = " . $vars['c'] . "[b + 1]; if c == 1 then local f = loadstring('return ' .. v); if f then v = f()() end end; " . $vars['stack'] . "[a] = v; "; break;
|
||||||
@ -262,41 +291,51 @@ class LuartexHyperionV10_0 {
|
|||||||
case 'RETURN': $lua .= $vars['pc'] . " = -1; "; break;
|
case 'RETURN': $lua .= $vars['pc'] . " = -1; "; break;
|
||||||
case 'NEWTABLE': $lua .= $vars['stack'] . "[a] = {}; "; break;
|
case 'NEWTABLE': $lua .= $vars['stack'] . "[a] = {}; "; break;
|
||||||
case 'SETTABLE': $lua .= $vars['stack'] . "[a][" . $vars['stack'] . "[b]] = " . $vars['stack'] . "[c]; "; break;
|
case 'SETTABLE': $lua .= $vars['stack'] . "[a][" . $vars['stack'] . "[b]] = " . $vars['stack'] . "[c]; "; break;
|
||||||
case 'ADD': $lua .= $vars['stack'] . "[a] = " . $vars['stack'] . "[b] + " . $vars['stack'] . "[c]; "; break;
|
case 'ADD': $lua .= "local v1, v2 = " . $vars['stack'] . "[b], " . $vars['stack'] . "[c]; if " . $vars['corrupted'] . " then " . $vars['stack'] . "[a] = (v1 or 0) + (v2 or 0) + math.random() else " . $vars['stack'] . "[a] = (v1 or 0) + (v2 or 0) end; "; break;
|
||||||
case 'MORPH_STATE': $lua .= $vars['seed'] . " = bit32.bxor(" . $vars['seed'] . ", a, b, c); "; break;
|
case 'MORPH_STATE': $lua .= $vars['seed'] . " = bit32.bxor(" . $vars['seed'] . ", a, b, c); "; break;
|
||||||
case 'GHOST_NOP': $lua .= $vars['seed'] . " = bit32.bxor(" . $vars['seed'] . ", " . $vars['rolling'] . "); "; break;
|
case 'GHOST_NOP': $lua .= $vars['seed'] . " = bit32.bxor(" . $vars['seed'] . ", " . $vars['rolling'] . ", " . $vars['pc'] . "); "; break;
|
||||||
|
case 'MUTATE_BYTECODE':
|
||||||
|
$lua .= "local target = 5 + (" . $vars['pc'] . " + a % 10) * 5; if target < # " . $vars['d'] . " then " . $vars['d'] . "[target] = bit32.bxor(" . $vars['d'] . "[target], b) end; ";
|
||||||
|
break;
|
||||||
|
case 'DECEPTIVE_TRAP':
|
||||||
|
$lua .= "local fake_crypto = function(d) local r = ''; for i=1,#d do r=r..string.char(bit32.bxor(d:byte(i), 0xAA)) end return r end; ";
|
||||||
|
$lua .= "local res = fake_crypto('ENCRYPTED_PAYLOAD_STUB'); ";
|
||||||
|
break;
|
||||||
|
case 'TAMPER_CHECK':
|
||||||
|
$lua .= "if debug.info(print, 's') ~= '=[C]' then " . $vars['corrupted'] . " = true end; ";
|
||||||
|
break;
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
// Evolution of seed after every instruction
|
|
||||||
$lua .= $vars['seed'] . " = bit32.bxor(" . $vars['seed'] . ", " . $val . ", a or 0) + 1; ";
|
$lua .= $vars['seed'] . " = bit32.bxor(" . $vars['seed'] . ", " . $val . ", a or 0) + 1; ";
|
||||||
$lua .= "end; ";
|
$lua .= "end; ";
|
||||||
}
|
}
|
||||||
|
|
||||||
$lua .= "while " . $vars['pc'] . " > 0 do ";
|
$lua .= "while " . $vars['pc'] . " > 0 do ";
|
||||||
$lua .= "local raw_op, _a, _b, _c = " . $vars['fetch'] . "(" . $vars['pc'] . "); if not raw_op then break end; ";
|
$lua .= "local raw_op, _a, _b, _c = " . $vars['fetch'] . "(" . $vars['pc'] . "); if not raw_op then break end; ";
|
||||||
$lua .= "local op = bit32.bxor(raw_op, (" . $this->polyKey . " + " . $vars['pc'] . ") % 256); ";
|
$lua .= "local op = bit32.bxor(raw_op, (" . $this->polyKey . " + " . $vars['pc'] . " * 7) % 256); ";
|
||||||
|
|
||||||
// Operand Permutation based on seed
|
// Operand Permutation evolves with seed and rolling entropy
|
||||||
$lua .= "local a, b, c; local " . $vars['perm'] . " = " . $vars['seed'] . " % 3; ";
|
$lua .= "local a, b, c; local " . $vars['perm'] . " = bit32.bxor(" . $vars['seed'] . ", " . $vars['rolling'] . ") % 3; ";
|
||||||
$lua .= "if " . $vars['perm'] . " == 0 then a,b,c = _a,_b,_c elseif " . $vars['perm'] . " == 1 then a,b,c = _b,_c,_a else a,b,c = _c,_a,_b end; ";
|
$lua .= "if " . $vars['perm'] . " == 0 then a,b,c = _a,_b,_c elseif " . $vars['perm'] . " == 1 then a,b,c = _b,_c,_a else a,b,c = _c,_a,_b end; ";
|
||||||
|
|
||||||
$lua .= "local h = " . $vars['handlers'] . "[op]; if h then h(a, b, c) end; ";
|
$lua .= "local h = " . $vars['handlers'] . "[op]; if h then h(a, b, c) end; ";
|
||||||
$lua .= "if " . $vars['pc'] . " > 0 then " . $vars['pc'] . " = " . $vars['pc'] . " + 1 end; ";
|
$lua .= "if " . $vars['pc'] . " > 0 then " . $vars['pc'] . " = " . $vars['pc'] . " + 1 end; ";
|
||||||
$lua .= "if " . $vars['pc'] . " % 100 == 0 then if task and task.wait then task.wait() elseif wait then wait() end end; ";
|
$lua .= "if " . $vars['pc'] . " % 50 == 0 then if task and task.wait then task.wait() elseif wait then wait() end end; ";
|
||||||
$lua .= "end; ";
|
$lua .= "end; ";
|
||||||
|
|
||||||
|
$lua .= "end; ";
|
||||||
$lua .= "pcall(" . $vars['v'] . "); ";
|
$lua .= "pcall(" . $vars['v'] . "); ";
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'success' => true,
|
'success' => true,
|
||||||
'protected_code' => $lua,
|
'protected_code' => $lua,
|
||||||
'stats' => ['version' => '10.0-DIP', 'poly_key' => $this->polyKey, 'seed' => $this->seed]
|
'stats' => ['version' => 'V3.2 (Luartex)', 'poly_key' => $this->polyKey, 'seed' => $this->seed]
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$vm = new LuartexHyperionV10_0($code);
|
$vm = new LuartexV3_2($code);
|
||||||
echo json_encode($vm->build());
|
echo json_encode($vm->build());
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
echo json_encode(['success' => false, 'error' => $e->getMessage()]);
|
echo json_encode(['success' => false, 'error' => $e->getMessage()]);
|
||||||
|
|||||||
2
protected_v3_2.lua
Normal file
2
protected_v3_2.lua
Normal file
File diff suppressed because one or more lines are too long
45
test_v3_2.php
Normal file
45
test_v3_2.php
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Test script for Luartex V3.2
|
||||||
|
*/
|
||||||
|
|
||||||
|
$test_code = "
|
||||||
|
local x = 10
|
||||||
|
local y = 20
|
||||||
|
local z = x + y
|
||||||
|
print('The sum of x and y is: ' .. tostring(z))
|
||||||
|
local myTable = {}
|
||||||
|
myTable['secret'] = 'LuartexV3.2'
|
||||||
|
print('Secret retrieved: ' .. myTable['secret'])
|
||||||
|
";
|
||||||
|
|
||||||
|
echo "Testing Luartex V3.2 Protection...\n";
|
||||||
|
|
||||||
|
$ch = curl_init('http://localhost/process.php');
|
||||||
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||||
|
curl_setopt($ch, CURLOPT_POST, true);
|
||||||
|
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(['code' => $test_code]));
|
||||||
|
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
|
||||||
|
|
||||||
|
$response = curl_exec($ch);
|
||||||
|
$data = json_decode($response, true);
|
||||||
|
|
||||||
|
if ($data && $data['success']) {
|
||||||
|
echo "SUCCESS: Obfuscation completed.\n";
|
||||||
|
echo "Stats: " . json_encode($data['stats']) . "\n";
|
||||||
|
$protected_file = 'protected_v3_2.lua';
|
||||||
|
file_put_contents($protected_file, $data['protected_code']);
|
||||||
|
echo "Protected code saved to $protected_file\n";
|
||||||
|
|
||||||
|
// Check if the watermark is present
|
||||||
|
if (strpos($data['protected_code'], 'Luartex V3.2 | https://discord.gg/GpucUKeCtF') !== false) {
|
||||||
|
echo "VERIFIED: Watermark present.\n";
|
||||||
|
} else {
|
||||||
|
echo "FAILED: Watermark missing!\n";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
echo "FAILED: " . ($data['error'] ?? 'Unknown error') . "\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
curl_close($ch);
|
||||||
|
|
||||||
Loading…
x
Reference in New Issue
Block a user