|
1 | | -/** |
2 | | - * pobfus // v1.11.06 Ghost-Core |
3 | | - * Universal PC/Mobile Virtualization Engine |
4 | | - * Authorized: tenringsofdoom1x.github.io |
5 | | - */ |
6 | | - |
7 | | -const iel = document.getElementById('in'); |
8 | | -const oel = document.getElementById('out'); |
9 | | -const logo = document.getElementById('logo'); |
10 | | -const st = document.getElementById('stxt'); |
| 1 | +const i = document.getElementById('in'); |
| 2 | +const o = document.getElementById('out'); |
| 3 | +const luaImg = document.getElementById('luaImg'); |
| 4 | +const log = document.getElementById('status-log'); |
11 | 5 | const lbar = document.getElementById('lbar'); |
12 | | -const overlay = document.getElementById('overlay'); |
| 6 | +const loader = document.getElementById('output-loader'); |
| 7 | +const goBtn = document.getElementById('go'); |
13 | 8 |
|
14 | | -// 1.0.6 Syntax Patch: Secure Random String Generator |
15 | | -const gs = (l) => { |
16 | | - let s = 'I'; |
17 | | - for(let i=0; i<l; i++) s += (Math.random() > 0.5 ? 'l' : 'I'); |
18 | | - return s; |
| 9 | +const gen = (t, l) => { |
| 10 | + let c = t === 'upper' ? "ABCDEFGHIJKLMNOPQRSTUVWXYZ" : t === 'mixed' ? "AbCdEfGhIjKlMnOpQrStUvWxYz" : "lIlIIllllIIl"; |
| 11 | + return Array.from({length: l}, () => c[Math.floor(Math.random() * c.length)]).join(''); |
19 | 12 | }; |
20 | 13 |
|
21 | | -// 1.11.01 Fragment Logic: Key Seeding |
22 | | -const genID = () => { |
23 | | - const c = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; |
24 | | - let r = ''; |
25 | | - for(let i=0; i<11; i++) r += c.charAt(Math.floor(Math.random() * c.length)); |
26 | | - return r; |
| 14 | +const junkMath = (n) => { |
| 15 | + const r = Math.floor(Math.random() * 5000); |
| 16 | + return `(${r + n} - ${r})`; |
27 | 17 | }; |
28 | 18 |
|
29 | | -// 1.11.03-2 Hotfix: Math Noise & Constant Folding |
30 | | -const foldNum = (n) => { |
31 | | - let v1 = Math.floor(Math.random() * (n / 2)); |
32 | | - let v2 = n - v1; |
33 | | - return `(${v1}+${v2})`; |
| 19 | +const phases = [ |
| 20 | + "pobfus v1.12.01-1 connecting...", |
| 21 | + "fetching premium tamper assets...", |
| 22 | + "generating polymorphic bytecode...", |
| 23 | + "obfuscating control flow...", |
| 24 | + "applying xor-masking...", |
| 25 | + "sealing virtual machine..." |
| 26 | +]; |
| 27 | + |
| 28 | +const updateLog = async (text) => { |
| 29 | + const entries = log.querySelectorAll('.status-entry'); |
| 30 | + entries.forEach(e => e.classList.add('dim')); |
| 31 | + if (entries.length > 2) entries[0].remove(); |
| 32 | + |
| 33 | + const div = document.createElement('div'); |
| 34 | + div.className = 'status-entry'; |
| 35 | + div.innerText = text; |
| 36 | + log.appendChild(div); |
34 | 37 | }; |
35 | 38 |
|
36 | | -document.getElementById('go').onclick = () => { |
37 | | - if(!iel.value.trim()) return; |
| 39 | +goBtn.onclick = async () => { |
| 40 | + const source = i.value.trim(); |
| 41 | + if (!source) return; |
38 | 42 |
|
39 | | - // Trigger v0.7.00 Pulse Sequence |
40 | | - overlay.style.display = 'flex'; |
41 | | - lbar.style.width = '100%'; |
42 | | - logo.classList.add('pulse'); |
| 43 | + loader.style.display = 'flex'; |
| 44 | + log.innerHTML = ''; |
| 45 | + lbar.style.width = '0%'; |
| 46 | + luaImg.classList.remove('fade'); |
43 | 47 |
|
44 | | - setTimeout(() => { |
45 | | - const k = Math.floor(Math.random() * 80) + 20; |
46 | | - const w = "obfuscated by pobfus // tenringsofdoom1x.github.io"; |
47 | | - |
48 | | - // v1.11.03-2 Logic Leakage Protection |
49 | | - const protection = `local _w="${w}";if not _G.pobfus_verified then warn(_w) end;`; |
50 | | - const fullRaw = (protection + iel.value).split('').map(c => "\\" + (c.charCodeAt(0) ^ k)).join(''); |
51 | | - |
52 | | - // v1.11.01 Registry Shuffling (Mobile Safe) |
53 | | - const parts = []; |
54 | | - let i = 0; |
55 | | - while (i < fullRaw.length) { |
56 | | - let len = Math.floor(Math.random() * 15) + 10; |
57 | | - parts.push(fullRaw.substring(i, i + len)); |
58 | | - i += len; |
59 | | - } |
| 48 | + for (let idx = 0; idx < phases.length; idx++) { |
| 49 | + if (idx === 2) luaImg.classList.add('fade'); |
| 50 | + await updateLog(phases[idx]); |
| 51 | + lbar.style.width = `${((idx + 1) / phases.length) * 100}%`; |
| 52 | + await new Promise(r => setTimeout(r, 600 + Math.random() * 400)); |
| 53 | + } |
60 | 54 |
|
61 | | - const f=gs(12), sc=gs(10), bx=gs(10), ss=gs(10), sb=gs(10), ls=gs(10), reg=gs(11), res=gs(9); |
62 | | - |
63 | | - // v1.11.06 Virtual Machine Construction |
64 | | - let b = `--[[ ${w} ]]\n`; |
65 | | - b += `local ${f}=function()local ${sc},${bx},${ss},${sb},${ls}=string.char,bit32.bxor,string.sub,string.byte,loadstring;`; |
66 | | - b += `local _k,${res}=${foldNum(k)},{};`; |
67 | | - b += `for i=1,#${reg} do local _d=${reg}[i];local _r="";for j=1,#_d do _r=_r..${sc}(${bx}(${sb}(${ss}(_d,j,j)),_k))end;${res}[i]=_r end;`; |
68 | | - b += `local _x,_e=${ls}(table.concat(${res}));if _x then setfenv(_x,getfenv());_x();else warn("pobfus_err: "..tostring(_e)) end end;`; |
| 55 | + // Protection Logic |
| 56 | + const key = Math.floor(Math.random() * 200) + 50; |
| 57 | + const bytes = source.split('').map(c => c.charCodeAt(0) ^ key); |
| 58 | + |
| 59 | + // Robux Icon: | Premium Icon: |
| 60 | + const ROBUX = "\\238\\128\\139"; |
| 61 | + const PREM = "\\238\\128\\129"; |
69 | 62 |
|
70 | | - // v1.11.05 The Seal (__metatable locked) |
71 | | - let tableContent = parts.map((p, idx) => `[${idx+1}]="${p}"`).join(','); |
72 | | - b += `\n${reg}={${tableContent}};`; |
73 | | - b += `local ${gs(10)}={__index=${reg},__metatable="protected"};`; |
74 | | - b += `setmetatable(${reg},${gs(10)});`; |
75 | | - b += `${f}();`; |
| 63 | + const V_VM = gen('upper', 25); |
| 64 | + const V_KEY = gen('upper', 12); |
| 65 | + const V_DATA = gen('', 35); |
| 66 | + const V_CRASH = gen('mixed', 18); |
| 67 | + const V_ITER = gen('mixed', 8); |
76 | 68 |
|
77 | | - oel.value = b; |
78 | | - |
79 | | - // Reset UI |
80 | | - overlay.style.display = 'none'; |
81 | | - lbar.style.width = '0%'; |
82 | | - logo.classList.remove('pulse'); |
83 | | - }, 5000); |
84 | | -}; |
| 69 | + let payload = `--[[ protected by pobfus v1.12.01-1 ]]\n`; |
| 70 | + |
| 71 | + // Standalone Tamper Function |
| 72 | + payload += `local function ${V_CRASH}() while true do warn("${ROBUX} UNAUTHORIZED TAMPER ${PREM}") end end `; |
| 73 | + payload += `if (debug and debug.getinfo) or (_G.shared) then ${V_CRASH}() end `; |
85 | 74 |
|
86 | | -// Download logic with binary suffix |
87 | | -document.getElementById('dl').onclick = () => { |
88 | | - if(!oel.value) return; |
89 | | - const b = new Blob([oel.value], {type: "text/plain"}); |
90 | | - const a = document.createElement('a'); |
91 | | - a.href = URL.createObjectURL(b); |
92 | | - a.download = `pobfus-${genID()}.lua.txt`; |
93 | | - a.click(); |
94 | | -}; |
| 75 | + // Virtual Machine |
| 76 | + payload += `local ${V_KEY} = ${junkMath(key)} `; |
| 77 | + payload += `local ${V_DATA} = {${bytes.join(',')}} `; |
| 78 | + payload += `local function ${V_VM}() `; |
| 79 | + payload += `if tostring(${V_VM}):find("func") == nil then ${V_CRASH}() end `; |
| 80 | + payload += `local s = "" for ${V_ITER}=1, #${V_DATA} do s = s .. string.char(bit32.bxor(${V_DATA}[${V_ITER}], ${V_KEY})) end `; |
| 81 | + payload += `local f = loadstring(s) if f then setfenv(f, getfenv()) f() end end `; |
| 82 | + payload += `${V_VM}() --[[ end of obfuscation ]]`; |
95 | 83 |
|
96 | | -// Clear logic |
97 | | -document.getElementById('cl').onclick = () => { |
98 | | - iel.value = ""; |
99 | | - oel.value = ""; |
| 84 | + o.value = payload; |
| 85 | + setTimeout(() => { loader.style.display = 'none'; }, 600); |
100 | 86 | }; |
0 commit comments