I need best luajit compiler

Hossi_Bad

Участник
Автор темы
85
24
Версия MoonLoader
.026-beta
привет

Мне нужен компилятор Lua. Что никто не сможет декомпилировать мой чит.

Пожалуйста, порекомендуйте.
 

chromiusj

Стань той переменой, которую хочешь увидеть в мире
Модератор
5,734
4,040
В данном случае более уместно будет использовать обфускаторы, чем компилировать. Что-то в духе мунсека(хотя уже и на него находится управа, хоть какая-то), или же:
 
  • Нравится
Реакции: Hossi_Bad

Naito

Активный
160
34
Hola

Necesito un compilador Lua. Que nadie pueda descompilar mi truco.

Por favor avise.

Hola

Necesito un compilador Lua. Que nadie pueda descompilar mi truco.

Por favor avise.

Hola

Necesito un compilador Lua. Que nadie pueda descompilar mi truco.

Por favor avise.
 

routefleeder

Известный
16
5
В данном случае более уместно будет использовать обфускаторы, чем компилировать. Что-то в духе мунсека(хотя уже и на него находится управа, хоть какая-то), или же:
Насколько легко отревёрсить обфусцированый код данным обфускатором?
 

routefleeder

Известный
16
5
Lua Obfuscator - просто имба
Чем он так хорош? Если пройтись по скрипту только с помощью него, то насколько легко будет вскрыть скрипт? Да и я бы не доверял сайтам обфускаторам, только опен сурсным обфускаторам, которые ты запускаешь локально
 

w99zzl1

Участник
146
16
Чем он так хорош? Если пройтись по скрипту только с помощью него, то насколько легко будет вскрыть скрипт? Да и я бы не доверял сайтам обфускаторам, только опен сурсным обфускаторам, которые ты запускаешь локально
Да никак ты не вскроешь (ну или мои познания ограничены) хах. Там система, я аж ахнул. Только что, написал функцию:
Lua:
function test()
     print('test')
end

Поигрался с обфускатором, и вышло.......

Lua:
--[[
 .____                  ________ ___.    _____                           __               
 |    |    __ _______   \_____  \\_ |___/ ____\_ __  ______ ____ _____ _/  |_  ___________
 |    |   |  |  \__  \   /   |   \| __ \   __\  |  \/  ___// ___\\__  \\   __\/  _ \_  __ \
 |    |___|  |  // __ \_/    |    \ \_\ \  | |  |  /\___ \\  \___ / __ \|  | (  <_> )  | \/
 |_______ \____/(____  /\_______  /___  /__| |____//____  >\___  >____  /__|  \____/|__|   
         \/          \/         \/    \/                \/     \/     \/                   
          \_Welcome to LuaObfuscator.com   (Alpha 0.10.8) ~  Much Love, Ferib

]]--

local StrToNumber = tonumber;
local Byte = string.byte;
local Char = string.char;
local Sub = string.sub;
local Subg = string.gsub;
local Rep = string.rep;
local Concat = table.concat;
local Insert = table.insert;
local LDExp = math.ldexp;
local GetFEnv = getfenv or function()
    return _ENV;
end;
local Setmetatable = setmetatable;
local PCall = pcall;
local Select = select;
local Unpack = unpack or table.unpack;
local ToNumber = tonumber;
local function VMCall(ByteString, vmenv, ...)
    local DIP = 1;
    local repeatNext;
    ByteString = Subg(Sub(ByteString, 5), "..", function(byte)
        if (Byte(byte, 2) == 81) then
            repeatNext = StrToNumber(Sub(byte, 1, 1));
            return "";
        else
            local a = Char(StrToNumber(byte, 16));
            if repeatNext then
                local b = Rep(a, repeatNext);
                repeatNext = nil;
                return b;
            else
                return a;
            end
        end
    end);
    local function gBit(Bit, Start, End)
        if End then
            local Res = (Bit / (2 ^ (Start - 1))) % (2 ^ (((End - 1) - (Start - 1)) + 1));
            return Res - (Res % 1);
        else
            local Plc = 2 ^ (Start - 1);
            return (((Bit % (Plc + Plc)) >= Plc) and 1) or 0;
        end
    end
    local function gBits8()
        local a = Byte(ByteString, DIP, DIP);
        DIP = DIP + 1;
        return a;
    end
    local function gBits16()
        local a, b = Byte(ByteString, DIP, DIP + 2);
        DIP = DIP + 2;
        return (b * 256) + a;
    end
    local function gBits32()
        local a, b, c, d = Byte(ByteString, DIP, DIP + 3);
        DIP = DIP + 4;
        return (d * 16777216) + (c * 65536) + (b * 256) + a;
    end
    local function gFloat()
        local Left = gBits32();
        local Right = gBits32();
        local IsNormal = 1;
        local Mantissa = (gBit(Right, 1, 20) * (2 ^ 32)) + Left;
        local Exponent = gBit(Right, 21, 31);
        local Sign = ((gBit(Right, 32) == 1) and -1) or 1;
        if (Exponent == 0) then
            if (Mantissa == 0) then
                return Sign * 0;
            else
                Exponent = 1;
                IsNormal = 0;
            end
        elseif (Exponent == 2047) then
            return ((Mantissa == 0) and (Sign * (1 / 0))) or (Sign * NaN);
        end
        return LDExp(Sign, Exponent - 1023) * (IsNormal + (Mantissa / (2 ^ 52)));
    end
    local function gString(Len)
        local Str;
        if not Len then
            Len = gBits32();
            if (Len == 0) then
                return "";
            end
        end
        Str = Sub(ByteString, DIP, (DIP + Len) - 1);
        DIP = DIP + Len;
        local FStr = {};
        for Idx = 1, #Str do
            FStr[Idx] = Char(Byte(Sub(Str, Idx, Idx)));
        end
        return Concat(FStr);
    end
    local gInt = gBits32;
    local function _R(...)
        return {...}, Select("#", ...);
    end
    local function Deserialize()
        local Instrs = {};
        local Functions = {};
        local Lines = {};
        local Chunk = {Instrs,Functions,nil,Lines};
        local ConstCount = gBits32();
        local Consts = {};
        for Idx = 1, ConstCount do
            local Type = gBits8();
            local Cons;
            if (Type == 1) then
                Cons = gBits8() ~= 0;
            elseif (Type == 2) then
                Cons = gFloat();
            elseif (Type == 3) then
                Cons = gString();
            end
            Consts[Idx] = Cons;
        end
        Chunk[3] = gBits8();
        for Idx = 1, gBits32() do
            local Descriptor = gBits8();
            if (gBit(Descriptor, 1, 1) == 0) then
                local Type = gBit(Descriptor, 2, 3);
                local Mask = gBit(Descriptor, 4, 6);
                local Inst = {gBits16(),gBits16(),nil,nil};
                if (Type == 0) then
                    Inst[3] = gBits16();
                    Inst[4] = gBits16();
                elseif (Type == 1) then
                    Inst[3] = gBits32();
                elseif (Type == 2) then
                    Inst[3] = gBits32() - (2 ^ 16);
                elseif (Type == 3) then
                    Inst[3] = gBits32() - (2 ^ 16);
                    Inst[4] = gBits16();
                end
                if (gBit(Mask, 1, 1) == 1) then
                    Inst[2] = Consts[Inst[2]];
                end
                if (gBit(Mask, 2, 2) == 1) then
                    Inst[3] = Consts[Inst[3]];
                end
                if (gBit(Mask, 3, 3) == 1) then
                    Inst[4] = Consts[Inst[4]];
                end
                Instrs[Idx] = Inst;
            end
        end
        for Idx = 1, gBits32() do
            Functions[Idx - 1] = Deserialize();
        end
        return Chunk;
    end
    local function Wrap(Chunk, Upvalues, Env)
        local Instr = Chunk[1];
        local Proto = Chunk[2];
        local Params = Chunk[3];
        return function(...)
            local Instr = Instr;
            local Proto = Proto;
            local Params = Params;
            local _R = _R;
            local VIP = 1;
            local Top = -1;
            local Vararg = {};
            local Args = {...};
            local PCount = Select("#", ...) - 1;
            local Lupvals = {};
            local Stk = {};
            for Idx = 0, PCount do
                if (Idx >= Params) then
                    Vararg[Idx - Params] = Args[Idx + 1];
                else
                    Stk[Idx] = Args[Idx + 1];
                end
            end
            local Varargsz = (PCount - Params) + 1;
            local Inst;
            local Enum;
            while true do
                Inst = Instr[VIP];
                Enum = Inst[1];
                if (Enum <= 2) then
                    if (Enum <= 0) then
                        Env[Inst[3]] = Stk[Inst[2]];
                    elseif (Enum == 1) then
                        Stk[Inst[2]] = Inst[3];
                    else
                        Stk[Inst[2]] = Wrap(Proto[Inst[3]], nil, Env);
                    end
                elseif (Enum <= 3) then
                    local A = Inst[2];
                    Stk[A](Stk[A + 1]);
                elseif (Enum > 4) then
                    do
                        return;
                    end
                else
                    Stk[Inst[2]] = Env[Inst[3]];
                end
                VIP = VIP + 1;
            end
        end;
    end
    return Wrap(Deserialize(), {}, vmenv)(...);
end
return VMCall("LOL!013Q0003043Q007465737400033Q002Q027Q00124Q00014Q00053Q00013Q00013Q00023Q0003053Q007072696E7403043Q007465737400043Q0012043Q00013Q001201000100024Q00033Q000200012Q00053Q00017Q00", GetFEnv(), ...);



Ещё варик:

Код:
--[[
 .____                  ________ ___.    _____                           __               
 |    |    __ _______   \_____  \\_ |___/ ____\_ __  ______ ____ _____ _/  |_  ___________
 |    |   |  |  \__  \   /   |   \| __ \   __\  |  \/  ___// ___\\__  \\   __\/  _ \_  __ \
 |    |___|  |  // __ \_/    |    \ \_\ \  | |  |  /\___ \\  \___ / __ \|  | (  <_> )  | \/
 |_______ \____/(____  /\_______  /___  /__| |____//____  >\___  >____  /__|  \____/|__|   
         \/          \/         \/    \/                \/     \/     \/                   
          \_Welcome to LuaObfuscator.com   (Alpha 0.10.8) ~  Much Love, Ferib

]]--

local v0=string.char;local v1=string.byte;local v2=string.sub;local v3=bit32 or bit ;local v4=v3.bxor;local v5=table.concat;local v6=table.insert;local function v7(v8,v9) local v10={};for v11=1, #v8 do v6(v10,v0(v4(v1(v2(v8,v11,v11 + 1 )),v1(v2(v9,1 + (v11% #v9) ,1 + (v11% #v9) + 1 )))%256 ));end return v5(v10);end function test() print(v7("\197\198\200\49","\126\177\163\187\69\134\219\167"));end
или если не сильно прям, там можно все функции, короче весь код в одну строчку поместить, можно просто, а можно заменяя какие то штучки, на подобные выше. Словом - лучше, я думаю, нет))

При чем, любой код работает. Бывают конечно исключения
 

chromiusj

Стань той переменой, которую хочешь увидеть в мире
Модератор
5,734
4,040
то насколько легко будет вскрыть скрипт?
не особо легко, но можно получить некоторые части кода, есть способы открытия некоторых частей с помощью самого же обфуса
 

routefleeder

Известный
16
5
Да никак ты не вскроешь (ну или мои познания ограничены) хах. Там система, я аж ахнул. Только что, написал функцию:
Lua:
function test()
     print('test')
end

Поигрался с обфускатором, и вышло.......

Lua:
--[[
 .____                  ________ ___.    _____                           __              
 |    |    __ _______   \_____  \\_ |___/ ____\_ __  ______ ____ _____ _/  |_  ___________
 |    |   |  |  \__  \   /   |   \| __ \   __\  |  \/  ___// ___\\__  \\   __\/  _ \_  __ \
 |    |___|  |  // __ \_/    |    \ \_\ \  | |  |  /\___ \\  \___ / __ \|  | (  <_> )  | \/
 |_______ \____/(____  /\_______  /___  /__| |____//____  >\___  >____  /__|  \____/|__|  
         \/          \/         \/    \/                \/     \/     \/                  
          \_Welcome to LuaObfuscator.com   (Alpha 0.10.8) ~  Much Love, Ferib

]]--

local StrToNumber = tonumber;
local Byte = string.byte;
local Char = string.char;
local Sub = string.sub;
local Subg = string.gsub;
local Rep = string.rep;
local Concat = table.concat;
local Insert = table.insert;
local LDExp = math.ldexp;
local GetFEnv = getfenv or function()
    return _ENV;
end;
local Setmetatable = setmetatable;
local PCall = pcall;
local Select = select;
local Unpack = unpack or table.unpack;
local ToNumber = tonumber;
local function VMCall(ByteString, vmenv, ...)
    local DIP = 1;
    local repeatNext;
    ByteString = Subg(Sub(ByteString, 5), "..", function(byte)
        if (Byte(byte, 2) == 81) then
            repeatNext = StrToNumber(Sub(byte, 1, 1));
            return "";
        else
            local a = Char(StrToNumber(byte, 16));
            if repeatNext then
                local b = Rep(a, repeatNext);
                repeatNext = nil;
                return b;
            else
                return a;
            end
        end
    end);
    local function gBit(Bit, Start, End)
        if End then
            local Res = (Bit / (2 ^ (Start - 1))) % (2 ^ (((End - 1) - (Start - 1)) + 1));
            return Res - (Res % 1);
        else
            local Plc = 2 ^ (Start - 1);
            return (((Bit % (Plc + Plc)) >= Plc) and 1) or 0;
        end
    end
    local function gBits8()
        local a = Byte(ByteString, DIP, DIP);
        DIP = DIP + 1;
        return a;
    end
    local function gBits16()
        local a, b = Byte(ByteString, DIP, DIP + 2);
        DIP = DIP + 2;
        return (b * 256) + a;
    end
    local function gBits32()
        local a, b, c, d = Byte(ByteString, DIP, DIP + 3);
        DIP = DIP + 4;
        return (d * 16777216) + (c * 65536) + (b * 256) + a;
    end
    local function gFloat()
        local Left = gBits32();
        local Right = gBits32();
        local IsNormal = 1;
        local Mantissa = (gBit(Right, 1, 20) * (2 ^ 32)) + Left;
        local Exponent = gBit(Right, 21, 31);
        local Sign = ((gBit(Right, 32) == 1) and -1) or 1;
        if (Exponent == 0) then
            if (Mantissa == 0) then
                return Sign * 0;
            else
                Exponent = 1;
                IsNormal = 0;
            end
        elseif (Exponent == 2047) then
            return ((Mantissa == 0) and (Sign * (1 / 0))) or (Sign * NaN);
        end
        return LDExp(Sign, Exponent - 1023) * (IsNormal + (Mantissa / (2 ^ 52)));
    end
    local function gString(Len)
        local Str;
        if not Len then
            Len = gBits32();
            if (Len == 0) then
                return "";
            end
        end
        Str = Sub(ByteString, DIP, (DIP + Len) - 1);
        DIP = DIP + Len;
        local FStr = {};
        for Idx = 1, #Str do
            FStr[Idx] = Char(Byte(Sub(Str, Idx, Idx)));
        end
        return Concat(FStr);
    end
    local gInt = gBits32;
    local function _R(...)
        return {...}, Select("#", ...);
    end
    local function Deserialize()
        local Instrs = {};
        local Functions = {};
        local Lines = {};
        local Chunk = {Instrs,Functions,nil,Lines};
        local ConstCount = gBits32();
        local Consts = {};
        for Idx = 1, ConstCount do
            local Type = gBits8();
            local Cons;
            if (Type == 1) then
                Cons = gBits8() ~= 0;
            elseif (Type == 2) then
                Cons = gFloat();
            elseif (Type == 3) then
                Cons = gString();
            end
            Consts[Idx] = Cons;
        end
        Chunk[3] = gBits8();
        for Idx = 1, gBits32() do
            local Descriptor = gBits8();
            if (gBit(Descriptor, 1, 1) == 0) then
                local Type = gBit(Descriptor, 2, 3);
                local Mask = gBit(Descriptor, 4, 6);
                local Inst = {gBits16(),gBits16(),nil,nil};
                if (Type == 0) then
                    Inst[3] = gBits16();
                    Inst[4] = gBits16();
                elseif (Type == 1) then
                    Inst[3] = gBits32();
                elseif (Type == 2) then
                    Inst[3] = gBits32() - (2 ^ 16);
                elseif (Type == 3) then
                    Inst[3] = gBits32() - (2 ^ 16);
                    Inst[4] = gBits16();
                end
                if (gBit(Mask, 1, 1) == 1) then
                    Inst[2] = Consts[Inst[2]];
                end
                if (gBit(Mask, 2, 2) == 1) then
                    Inst[3] = Consts[Inst[3]];
                end
                if (gBit(Mask, 3, 3) == 1) then
                    Inst[4] = Consts[Inst[4]];
                end
                Instrs[Idx] = Inst;
            end
        end
        for Idx = 1, gBits32() do
            Functions[Idx - 1] = Deserialize();
        end
        return Chunk;
    end
    local function Wrap(Chunk, Upvalues, Env)
        local Instr = Chunk[1];
        local Proto = Chunk[2];
        local Params = Chunk[3];
        return function(...)
            local Instr = Instr;
            local Proto = Proto;
            local Params = Params;
            local _R = _R;
            local VIP = 1;
            local Top = -1;
            local Vararg = {};
            local Args = {...};
            local PCount = Select("#", ...) - 1;
            local Lupvals = {};
            local Stk = {};
            for Idx = 0, PCount do
                if (Idx >= Params) then
                    Vararg[Idx - Params] = Args[Idx + 1];
                else
                    Stk[Idx] = Args[Idx + 1];
                end
            end
            local Varargsz = (PCount - Params) + 1;
            local Inst;
            local Enum;
            while true do
                Inst = Instr[VIP];
                Enum = Inst[1];
                if (Enum <= 2) then
                    if (Enum <= 0) then
                        Env[Inst[3]] = Stk[Inst[2]];
                    elseif (Enum == 1) then
                        Stk[Inst[2]] = Inst[3];
                    else
                        Stk[Inst[2]] = Wrap(Proto[Inst[3]], nil, Env);
                    end
                elseif (Enum <= 3) then
                    local A = Inst[2];
                    Stk[A](Stk[A + 1]);
                elseif (Enum > 4) then
                    do
                        return;
                    end
                else
                    Stk[Inst[2]] = Env[Inst[3]];
                end
                VIP = VIP + 1;
            end
        end;
    end
    return Wrap(Deserialize(), {}, vmenv)(...);
end
return VMCall("LOL!013Q0003043Q007465737400033Q002Q027Q00124Q00014Q00053Q00013Q00013Q00023Q0003053Q007072696E7403043Q007465737400043Q0012043Q00013Q001201000100024Q00033Q000200012Q00053Q00017Q00", GetFEnv(), ...);



Ещё варик:

Код:
--[[
 .____                  ________ ___.    _____                           __              
 |    |    __ _______   \_____  \\_ |___/ ____\_ __  ______ ____ _____ _/  |_  ___________
 |    |   |  |  \__  \   /   |   \| __ \   __\  |  \/  ___// ___\\__  \\   __\/  _ \_  __ \
 |    |___|  |  // __ \_/    |    \ \_\ \  | |  |  /\___ \\  \___ / __ \|  | (  <_> )  | \/
 |_______ \____/(____  /\_______  /___  /__| |____//____  >\___  >____  /__|  \____/|__|  
         \/          \/         \/    \/                \/     \/     \/                  
          \_Welcome to LuaObfuscator.com   (Alpha 0.10.8) ~  Much Love, Ferib

]]--

local v0=string.char;local v1=string.byte;local v2=string.sub;local v3=bit32 or bit ;local v4=v3.bxor;local v5=table.concat;local v6=table.insert;local function v7(v8,v9) local v10={};for v11=1, #v8 do v6(v10,v0(v4(v1(v2(v8,v11,v11 + 1 )),v1(v2(v9,1 + (v11% #v9) ,1 + (v11% #v9) + 1 )))%256 ));end return v5(v10);end function test() print(v7("\197\198\200\49","\126\177\163\187\69\134\219\167"));end
или если не сильно прям, там можно все функции, короче весь код в одну строчку поместить, можно просто, а можно заменяя какие то штучки, на подобные выше. Словом - лучше, я думаю, нет))

При чем, любой код работает. Бывают конечно исключения
Ну кстати выглядит безумно). А что если пройтись несколькими обфускаторами по скрипту?
 

chromiusj

Стань той переменой, которую хочешь увидеть в мире
Модератор
5,734
4,040
  • Нравится
Реакции: routefleeder

routefleeder

Известный
16
5
Да никак ты не вскроешь (ну или мои познания ограничены) хах. Там система, я аж ахнул. Только что, написал функцию:
Lua:
function test()
     print('test')
end

Поигрался с обфускатором, и вышло.......

Lua:
--[[
 .____                  ________ ___.    _____                           __              
 |    |    __ _______   \_____  \\_ |___/ ____\_ __  ______ ____ _____ _/  |_  ___________
 |    |   |  |  \__  \   /   |   \| __ \   __\  |  \/  ___// ___\\__  \\   __\/  _ \_  __ \
 |    |___|  |  // __ \_/    |    \ \_\ \  | |  |  /\___ \\  \___ / __ \|  | (  <_> )  | \/
 |_______ \____/(____  /\_______  /___  /__| |____//____  >\___  >____  /__|  \____/|__|  
         \/          \/         \/    \/                \/     \/     \/                  
          \_Welcome to LuaObfuscator.com   (Alpha 0.10.8) ~  Much Love, Ferib

]]--

local StrToNumber = tonumber;
local Byte = string.byte;
local Char = string.char;
local Sub = string.sub;
local Subg = string.gsub;
local Rep = string.rep;
local Concat = table.concat;
local Insert = table.insert;
local LDExp = math.ldexp;
local GetFEnv = getfenv or function()
    return _ENV;
end;
local Setmetatable = setmetatable;
local PCall = pcall;
local Select = select;
local Unpack = unpack or table.unpack;
local ToNumber = tonumber;
local function VMCall(ByteString, vmenv, ...)
    local DIP = 1;
    local repeatNext;
    ByteString = Subg(Sub(ByteString, 5), "..", function(byte)
        if (Byte(byte, 2) == 81) then
            repeatNext = StrToNumber(Sub(byte, 1, 1));
            return "";
        else
            local a = Char(StrToNumber(byte, 16));
            if repeatNext then
                local b = Rep(a, repeatNext);
                repeatNext = nil;
                return b;
            else
                return a;
            end
        end
    end);
    local function gBit(Bit, Start, End)
        if End then
            local Res = (Bit / (2 ^ (Start - 1))) % (2 ^ (((End - 1) - (Start - 1)) + 1));
            return Res - (Res % 1);
        else
            local Plc = 2 ^ (Start - 1);
            return (((Bit % (Plc + Plc)) >= Plc) and 1) or 0;
        end
    end
    local function gBits8()
        local a = Byte(ByteString, DIP, DIP);
        DIP = DIP + 1;
        return a;
    end
    local function gBits16()
        local a, b = Byte(ByteString, DIP, DIP + 2);
        DIP = DIP + 2;
        return (b * 256) + a;
    end
    local function gBits32()
        local a, b, c, d = Byte(ByteString, DIP, DIP + 3);
        DIP = DIP + 4;
        return (d * 16777216) + (c * 65536) + (b * 256) + a;
    end
    local function gFloat()
        local Left = gBits32();
        local Right = gBits32();
        local IsNormal = 1;
        local Mantissa = (gBit(Right, 1, 20) * (2 ^ 32)) + Left;
        local Exponent = gBit(Right, 21, 31);
        local Sign = ((gBit(Right, 32) == 1) and -1) or 1;
        if (Exponent == 0) then
            if (Mantissa == 0) then
                return Sign * 0;
            else
                Exponent = 1;
                IsNormal = 0;
            end
        elseif (Exponent == 2047) then
            return ((Mantissa == 0) and (Sign * (1 / 0))) or (Sign * NaN);
        end
        return LDExp(Sign, Exponent - 1023) * (IsNormal + (Mantissa / (2 ^ 52)));
    end
    local function gString(Len)
        local Str;
        if not Len then
            Len = gBits32();
            if (Len == 0) then
                return "";
            end
        end
        Str = Sub(ByteString, DIP, (DIP + Len) - 1);
        DIP = DIP + Len;
        local FStr = {};
        for Idx = 1, #Str do
            FStr[Idx] = Char(Byte(Sub(Str, Idx, Idx)));
        end
        return Concat(FStr);
    end
    local gInt = gBits32;
    local function _R(...)
        return {...}, Select("#", ...);
    end
    local function Deserialize()
        local Instrs = {};
        local Functions = {};
        local Lines = {};
        local Chunk = {Instrs,Functions,nil,Lines};
        local ConstCount = gBits32();
        local Consts = {};
        for Idx = 1, ConstCount do
            local Type = gBits8();
            local Cons;
            if (Type == 1) then
                Cons = gBits8() ~= 0;
            elseif (Type == 2) then
                Cons = gFloat();
            elseif (Type == 3) then
                Cons = gString();
            end
            Consts[Idx] = Cons;
        end
        Chunk[3] = gBits8();
        for Idx = 1, gBits32() do
            local Descriptor = gBits8();
            if (gBit(Descriptor, 1, 1) == 0) then
                local Type = gBit(Descriptor, 2, 3);
                local Mask = gBit(Descriptor, 4, 6);
                local Inst = {gBits16(),gBits16(),nil,nil};
                if (Type == 0) then
                    Inst[3] = gBits16();
                    Inst[4] = gBits16();
                elseif (Type == 1) then
                    Inst[3] = gBits32();
                elseif (Type == 2) then
                    Inst[3] = gBits32() - (2 ^ 16);
                elseif (Type == 3) then
                    Inst[3] = gBits32() - (2 ^ 16);
                    Inst[4] = gBits16();
                end
                if (gBit(Mask, 1, 1) == 1) then
                    Inst[2] = Consts[Inst[2]];
                end
                if (gBit(Mask, 2, 2) == 1) then
                    Inst[3] = Consts[Inst[3]];
                end
                if (gBit(Mask, 3, 3) == 1) then
                    Inst[4] = Consts[Inst[4]];
                end
                Instrs[Idx] = Inst;
            end
        end
        for Idx = 1, gBits32() do
            Functions[Idx - 1] = Deserialize();
        end
        return Chunk;
    end
    local function Wrap(Chunk, Upvalues, Env)
        local Instr = Chunk[1];
        local Proto = Chunk[2];
        local Params = Chunk[3];
        return function(...)
            local Instr = Instr;
            local Proto = Proto;
            local Params = Params;
            local _R = _R;
            local VIP = 1;
            local Top = -1;
            local Vararg = {};
            local Args = {...};
            local PCount = Select("#", ...) - 1;
            local Lupvals = {};
            local Stk = {};
            for Idx = 0, PCount do
                if (Idx >= Params) then
                    Vararg[Idx - Params] = Args[Idx + 1];
                else
                    Stk[Idx] = Args[Idx + 1];
                end
            end
            local Varargsz = (PCount - Params) + 1;
            local Inst;
            local Enum;
            while true do
                Inst = Instr[VIP];
                Enum = Inst[1];
                if (Enum <= 2) then
                    if (Enum <= 0) then
                        Env[Inst[3]] = Stk[Inst[2]];
                    elseif (Enum == 1) then
                        Stk[Inst[2]] = Inst[3];
                    else
                        Stk[Inst[2]] = Wrap(Proto[Inst[3]], nil, Env);
                    end
                elseif (Enum <= 3) then
                    local A = Inst[2];
                    Stk[A](Stk[A + 1]);
                elseif (Enum > 4) then
                    do
                        return;
                    end
                else
                    Stk[Inst[2]] = Env[Inst[3]];
                end
                VIP = VIP + 1;
            end
        end;
    end
    return Wrap(Deserialize(), {}, vmenv)(...);
end
return VMCall("LOL!013Q0003043Q007465737400033Q002Q027Q00124Q00014Q00053Q00013Q00013Q00023Q0003053Q007072696E7403043Q007465737400043Q0012043Q00013Q001201000100024Q00033Q000200012Q00053Q00017Q00", GetFEnv(), ...);



Ещё варик:

Код:
--[[
 .____                  ________ ___.    _____                           __              
 |    |    __ _______   \_____  \\_ |___/ ____\_ __  ______ ____ _____ _/  |_  ___________
 |    |   |  |  \__  \   /   |   \| __ \   __\  |  \/  ___// ___\\__  \\   __\/  _ \_  __ \
 |    |___|  |  // __ \_/    |    \ \_\ \  | |  |  /\___ \\  \___ / __ \|  | (  <_> )  | \/
 |_______ \____/(____  /\_______  /___  /__| |____//____  >\___  >____  /__|  \____/|__|  
         \/          \/         \/    \/                \/     \/     \/                  
          \_Welcome to LuaObfuscator.com   (Alpha 0.10.8) ~  Much Love, Ferib

]]--

local v0=string.char;local v1=string.byte;local v2=string.sub;local v3=bit32 or bit ;local v4=v3.bxor;local v5=table.concat;local v6=table.insert;local function v7(v8,v9) local v10={};for v11=1, #v8 do v6(v10,v0(v4(v1(v2(v8,v11,v11 + 1 )),v1(v2(v9,1 + (v11% #v9) ,1 + (v11% #v9) + 1 )))%256 ));end return v5(v10);end function test() print(v7("\197\198\200\49","\126\177\163\187\69\134\219\167"));end
или если не сильно прям, там можно все функции, короче весь код в одну строчку поместить, можно просто, а можно заменяя какие то штучки, на подобные выше. Словом - лучше, я думаю, нет))

При чем, любой код работает. Бывают конечно исключения
Друг, я закинул в нейронку DeepSeek твою обфускацию, конечно же убрал верхний комментарий с упоминанием сайта обфускатора и она её всё равно расшифровала.

Краткий отрывок ответа:

Конкретный пример: В данном случае байткод, скорее всего, просто вызывает print("test"), так как в константах присутствуют строки "print" и "test".

Упрощенная версия того, что делает этот код:​

print("test")
Этот обфусцированный код - это просто сложный способ напечатать слово "test". Весь остальной код представляет собой механизм для декодирования и выполнения упакованного байткода.
 
  • Грустно
Реакции: w99zzl1