local path = loadfile('/sdcard/MC_path.lua') function MD5(strss) local HexTable = {"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"} local A = 0x67452301 local B = 0xefcdab89 local C = 0x98badcfe local D = 0x10325476 local S11 = 7 local S12 = 12 local S13 = 17 local S14 = 22 local S21 = 5 local S22 = 9 local S23 = 14 local S24 = 20 local S31 = 4 local S32 = 11 local S33 = 16 local S34 = 23 local S41 = 6 local S42 = 10 local S43 = 15 local S44 = 21 local function F(x,y,z) return (x & y) | ((~x) & z) end local function G(x,y,z) return (x & z) | (y & (~z)) end local function H(x,y,z) return x ~ y ~ z end local function I(x,y,z) return y ~ (x | (~z)) end local function FF(a,b,c,d,x,s,ac) a = a + F(b,c,d) + x + ac a = (((a & 0xffffffff) << s) | ((a & 0xffffffff) >> 32 - s)) + b return a & 0xffffffff end local function GG(a,b,c,d,x,s,ac) a = a + G(b,c,d) + x + ac a = (((a & 0xffffffff) << s) | ((a & 0xffffffff) >> 32 - s)) + b return a & 0xffffffff end local function HH(a,b,c,d,x,s,ac) a = a + H(b,c,d) + x + ac a = (((a & 0xffffffff) << s) | ((a & 0xffffffff) >> 32 - s)) + b return a & 0xffffffff end local function II(a,b,c,d,x,s,ac) a = a + I(b,c,d) + x + ac a = (((a & 0xffffffff) << s) | ((a & 0xffffffff) >> 32 - s)) + b return a & 0xffffffff end local function MD5StringFill(s) local len = #s local mod512 = len * 8 % 512 local fillSize = (448 - mod512) // 8 if mod512 > 448 then fillSize = (960 - mod512) // 8 end local rTab = {} local byteIndex = 1 for i = 1,len do local index = (i - 1) // 4 + 1 rTab[index] = rTab[index] or 0 rTab[index] = rTab[index] | (s:byte(i) << (byteIndex - 1) * 8) byteIndex = byteIndex + 1 if byteIndex == 5 then byteIndex = 1 end end local b0x80 = false local tLen = #rTab if byteIndex ~= 1 then rTab[tLen] = rTab[tLen] | 0x80 << (byteIndex - 1) * 8 b0x80 = true end for i = 1,fillSize // 4 do if not b0x80 and i == 1 then rTab[tLen + i] = 0x80 else rTab[tLen + i] = 0x0 end end local bitLen = math.floor(len * 8) tLen = #rTab rTab[tLen + 1] = bitLen & 0xffffffff rTab[tLen + 2] = bitLen >> 32 return rTab end string.md5 = function(s) local fillTab = MD5StringFill(s) local result = {A,B,C,D} for i = 1,#fillTab // 16 do local a = result[1] local b = result[2] local c = result[3] local d = result[4] local offset = (i - 1) * 16 + 1 a = FF(a, b, c, d, fillTab[offset + 0], S11, 0xd76aa478) d = FF(d, a, b, c, fillTab[offset + 1], S12, 0xe8c7b756) c = FF(c, d, a, b, fillTab[offset + 2], S13, 0x242070db) b = FF(b, c, d, a, fillTab[offset + 3], S14, 0xc1bdceee) a = FF(a, b, c, d, fillTab[offset + 4], S11, 0xf57c0faf) d = FF(d, a, b, c, fillTab[offset + 5], S12, 0x4787c62a) c = FF(c, d, a, b, fillTab[offset + 6], S13, 0xa8304613) b = FF(b, c, d, a, fillTab[offset + 7], S14, 0xfd469501) a = FF(a, b, c, d, fillTab[offset + 8], S11, 0x698098d8) d = FF(d, a, b, c, fillTab[offset + 9], S12, 0x8b44f7af) c = FF(c, d, a, b, fillTab[offset + 10], S13, 0xffff5bb1) b = FF(b, c, d, a, fillTab[offset + 11], S14, 0x895cd7be) a = FF(a, b, c, d, fillTab[offset + 12], S11, 0x6b901122) d = FF(d, a, b, c, fillTab[offset + 13], S12, 0xfd987193) c = FF(c, d, a, b, fillTab[offset + 14], S13, 0xa679438e) b = FF(b, c, d, a, fillTab[offset + 15], S14, 0x49b40821) a = GG(a, b, c, d, fillTab[offset + 1], S21, 0xf61e2562) d = GG(d, a, b, c, fillTab[offset + 6], S22, 0xc040b340) c = GG(c, d, a, b, fillTab[offset + 11], S23, 0x265e5a51) b = GG(b, c, d, a, fillTab[offset + 0], S24, 0xe9b6c7aa) a = GG(a, b, c, d, fillTab[offset + 5], S21, 0xd62f105d) d = GG(d, a, b, c, fillTab[offset + 10], S22, 0x2441453) c = GG(c, d, a, b, fillTab[offset + 15], S23, 0xd8a1e681) b = GG(b, c, d, a, fillTab[offset + 4], S24, 0xe7d3fbc8) a = GG(a, b, c, d, fillTab[offset + 9], S21, 0x21e1cde6) d = GG(d, a, b, c, fillTab[offset + 14], S22, 0xc33707d6) c = GG(c, d, a, b, fillTab[offset + 3], S23, 0xf4d50d87) b = GG(b, c, d, a, fillTab[offset + 8], S24, 0x455a14ed) a = GG(a, b, c, d, fillTab[offset + 13], S21, 0xa9e3e905) d = GG(d, a, b, c, fillTab[offset + 2], S22, 0xfcefa3f8) c = GG(c, d, a, b, fillTab[offset + 7], S23, 0x676f02d9) b = GG(b, c, d, a, fillTab[offset + 12], S24, 0x8d2a4c8a) a = HH(a, b, c, d, fillTab[offset + 5], S31, 0xfffa3942) d = HH(d, a, b, c, fillTab[offset + 8], S32, 0x8771f681) c = HH(c, d, a, b, fillTab[offset + 11], S33, 0x6d9d6122) b = HH(b, c, d, a, fillTab[offset + 14], S34, 0xfde5380c) a = HH(a, b, c, d, fillTab[offset + 1], S31, 0xa4beea44) d = HH(d, a, b, c, fillTab[offset + 4], S32, 0x4bdecfa9) c = HH(c, d, a, b, fillTab[offset + 7], S33, 0xf6bb4b60) b = HH(b, c, d, a, fillTab[offset + 10], S34, 0xbebfbc70) a = HH(a, b, c, d, fillTab[offset + 13], S31, 0x289b7ec6) d = HH(d, a, b, c, fillTab[offset + 0], S32, 0xeaa127fa) c = HH(c, d, a, b, fillTab[offset + 3], S33, 0xd4ef3085) b = HH(b, c, d, a, fillTab[offset + 6], S34, 0x4881d05) a = HH(a, b, c, d, fillTab[offset + 9], S31, 0xd9d4d039) d = HH(d, a, b, c, fillTab[offset + 12], S32, 0xe6db99e5) c = HH(c, d, a, b, fillTab[offset + 15], S33, 0x1fa27cf8) b = HH(b, c, d, a, fillTab[offset + 2], S34, 0xc4ac5665) a = II(a, b, c, d, fillTab[offset + 0], S41, 0xf4292244) d = II(d, a, b, c, fillTab[offset + 7], S42, 0x432aff97) c = II(c, d, a, b, fillTab[offset + 14], S43, 0xab9423a7) b = II(b, c, d, a, fillTab[offset + 5], S44, 0xfc93a039) a = II(a, b, c, d, fillTab[offset + 12], S41, 0x655b59c3) d = II(d, a, b, c, fillTab[offset + 3], S42, 0x8f0ccc92) c = II(c, d, a, b, fillTab[offset + 10], S43, 0xffeff47d) b = II(b, c, d, a, fillTab[offset + 1], S44, 0x85845dd1) a = II(a, b, c, d, fillTab[offset + 8], S41, 0x6fa87e4f) d = II(d, a, b, c, fillTab[offset + 15], S42, 0xfe2ce6e0) c = II(c, d, a, b, fillTab[offset + 6], S43, 0xa3014314) b = II(b, c, d, a, fillTab[offset + 13], S44, 0x4e0811a1) a = II(a, b, c, d, fillTab[offset + 4], S41, 0xf7537e82) d = II(d, a, b, c, fillTab[offset + 11], S42, 0xbd3af235) c = II(c, d, a, b, fillTab[offset + 2], S43, 0x2ad7d2bb) b = II(b, c, d, a, fillTab[offset + 9], S44, 0xeb86d391) result[1] = result[1] + a result[2] = result[2] + b result[3] = result[3] + c result[4] = result[4] + d result[1] = result[1] & 0xffffffff result[2] = result[2] & 0xffffffff result[3] = result[3] & 0xffffffff result[4] = result[4] & 0xffffffff end local retStr = "" for i = 1,4 do for _ = 1,4 do local temp = result[i] & 0x0F local str = HexTable[temp + 1] result[i] = result[i] >> 4 temp = result[i] & 0x0F retStr = retStr .. HexTable[temp + 1] .. str result[i] = result[i] >> 4 end end return retStr end return string.md5(strss) end local function rwio(Path, data) if data then io.open(Path, "w"):write(data) else return io.open(Path, "r"):read("*a") end end selctFile = gg.prompt( {'XEC仿制版:\n温馨提示:加密失败,请多加密几次\n选择脚本','加密单引号'} , {(path or gg.getFile)()} , {'file','checkbox'} ) if not selctFile then return end rwio('/sdcard/MC_path.lua' , ' return \034'.. selctFile[1] .. '\034') data = rwio(selctFile[1]) data=[[ gg.alert("本次享受套餐:OP体验版") print("本次享受套餐:OP体验版") if MCLEAN ==16384 then else gg.alert("您可能涉嫌非法解密") os.exit() end ]]..'\n'..data local time1 = os.time() fuc={ ["gg"]=2, ["os"]=2, ["io"]=2, ["string"]=2, ["math"]=2, ["table"]=2, ["debug"]=2, ["bit32"]=2, ["utf8"]=2, } fucEnc=function (data) gg.toast("正在处理标准库....") for v, s in pairs(_ENV) do if type(s)=="table" and fuc[v] then for i in pairs(s) do data=data:gsub(v.."%."..i.."%(", "_ENV[\34"..v.."\34]".."[\34"..i.."\34](") data=data:gsub(v.."%."..i.."%)", "_ENV[\34"..v.."\34]".."[\34"..i.."\34])") end end end return data end data=fucEnc(data) local numStr=function (gr) gg.toast("number...") Tonum="tonumber" local Calcul={ } local Num_Match="%s*(%-?%d+%.?%d*E?e?%-?%+?%d*)%s*" local Num_Match2="%s*(%-?0?x?X?[A-Fa-f0-9]*%.?[%-%+A-Fa-f0-9]*)" local Fd_Num=function (Trmi, str) if tonumber(str)~= nil then if not Calcul[tonumber(str)] then local numTostr=str Calcul[tonumber(str)]=numTostr data=numTostr:match("'") if data then return Trmi.."("..Tonum.."("..numTostr.."))" else return Trmi.."("..Tonum.."('"..numTostr.."'))" end else data=Calcul[tonumber(str)]:match("'") if data then return Trmi.."("..Tonum.."("..Calcul[tonumber(str)].."))" else return Trmi.."("..Tonum.."('"..Calcul[tonumber(str)].."'))" end end end end gr=gr:gsub("(=)"..Num_Match2, Fd_Num) local Num_Tab={ { "{", "," }, { ",", "," }, { "{", "}" }, { ",", "}" }, } for i, k in pairs(Num_Tab) do gr=gr:gsub(k[1]..Num_Match..k[2], function (x) local it=load("str="..x) if it~= nil then it() if tonumber(str)~= nil then if not Calcul[tonumber(str)] then local numTostr=tostring(str) Calcul[tonumber(str)]=numTostr data=numTostr:match("'") if data then return k[1].."("..Tonum.."("..numTostr.."))"..k[2] else return k[1].."("..Tonum.."('"..numTostr.."'))"..k[2] end else return k[1].."("..Tonum.."("..Calcul[tonumber(str)].."))"..k[2] end end else return x end end ) end gr=gr:gsub("%("..Num_Match.."%)", function (x) local it=load("str="..x) if it~= nil then it() if tonumber(str)~= nil then if not Calcul[tonumber(str)] then local numTostr=tostring(str) Calcul[tonumber(str)]=numTostr data=numTostr:match("'") if data then return "("..Tonum.."("..numTostr.."))" else return "("..Tonum.."('"..numTostr.."'))" end else data=Calcul[tonumber(str)]:match("'") if data then return "("..Tonum.."("..Calcul[tonumber(str)].."))" else return "("..Tonum.."('"..Calcul[tonumber(str)].."'))" end end end else return x end end ) gr=gr:gsub("'(%-)"..Num_Match2.."'", Fd_Num) gr=gr:gsub("'(%+)"..Num_Match2.."'", Fd_Num) return gr end local time1 = os.time() data=numStr(data) local time1 = os.time() _G['字符串加密']=function(data)-- 创建一个加密函数 data=table.concat( { string.byte(data, 1, -1) }, ',') data='MCL_GG('..data..')' return data-- 返回成功加密后的数据 end _ENV["导入os类"]=function(data) local pattern = "import%s+(['\"])([^'\"]+)%1" data = data:gsub(pattern, function(quote, path) return '_ENV['.._G['字符串加密']("import")..'](' .. _G['字符串加密'](path) .. ')' end) local patten = [=[import%s*[%(%[]?%s*['"]([^'"]+)['"]%s*[%)%]]?]=] data = data:gsub(patten, function(path) return '_ENV['.._G['字符串加密']("import")..'](' .. _G['字符串加密'](path) .. ')' end) local pattern = "require%s+(['\"])([^'\"]+)%1" data = data:gsub(pattern, function(quote, path) return '_ENV['.._G['字符串加密']("require")..'](' .. _G['字符串加密'](path) .. ')' end) local patten = [=[require%s*[%(%[]?%s*['"]([^'"]+)['"]%s*[%)%]]?]=] data = data:gsub(patten, function(path) return '_ENV['.._G['字符串加密']("require")..'](' .. _G['字符串加密'](path) .. ')' end) local pattern = "compile%s+(['\"])([^'\"]+)%1" data = data:gsub(pattern, function(quote, path) return '_ENV['.._G['字符串加密']("compile")..'](' .. _G['字符串加密'](path) .. ')' end) local patten = [=[compile%s*[%(%[]?%s*['"]([^'"]+)['"]%s*[%)%]]?]=] data = data:gsub(patten, function(path) return '_ENV['.._G['字符串加密']("compile")..'](' .. _G['字符串加密'](path) .. ')' end) local pattern = "javac%s+(['\"])([^'\"]+)%1" data = data:gsub(pattern, function(quote, path) return '_ENV['.._G['字符串加密']("javac")..'](' .. _G['字符串加密'](path) .. ')' end) local patten = [=[javac%s*[%(%[]?%s*['"]([^'"]+)['"]%s*[%)%]]?]=] data = data:gsub(patten, function(path) return '_ENV['.._G['字符串加密']("javac")..'](' .. _G['字符串加密'](path) .. ')' end) return data end data=_ENV["导入os类"](data) local t = {} _G['转16进制'] = function (str) local t = {string.byte(str, 1, -1)} for i = 1, #t do t[i] = string.format('\\x%02x', t[i]) end return '"' .. table.concat(t) .. '"' end local Tes={'\x21','\x22','\x23','\x24','\x25','\x26','\x27','\x28','\x29','\x2a','\x2b','\x2c','\x2d','\x2e','\x2f','\x3a','\x3b','\x3c','\x3d','\x3e','\x3f','\x40','\x5b','\x5c','\x5d','\x5e','\x7b','\x7d','\x7e','MX'} function name(len) if type(len)~="number" then len=math.random(4,6) end local res = '' for i = 1, len do local s=math.random(1,#Tes) res = res .. Tes[s] end return res end local function xor2(src) local src = {src:byte(1,-1)} local byte = {} local ii = math.random(1,255) for v = 1, #src do byte[v] = string.format('\\x%02X', src[v] ~ ii) end return string.format('(function() return Toll("%s",%s,%d) end)()', table.concat(byte), _G['转16进制'](name(math.random(1,255))),ii) end _ENV["搜索加密处理"]=function(data) -- 第一个搜索函数 local pattern1 = "gg%.setRanges%(%d+%)" data = data:gsub(pattern1, function() return '_ENV['..xor2("gg.setRanges")..']('..xor2("32")..')' end) return data end data=_ENV["搜索加密处理"](data) local time1 = os.time() saw=math.random(6,8) asx=" local a=(_) " ass="while nil do\n"..asx:rep(saw*5).." end\n" data=data:gsub("then","then\n"..ass) --防反2 if tostring(data):match("searchNumber") then data = data:gsub("%w+.searchNumber","_ENV['yyds_CitMau_nb']") data = [[ _ENV['yyds_CitMau_nb']=function(...) ajja = gg.searchNumber(...) return ajja end ]]..data data = data:gsub("%w+.searchNumber.-%)", function(a) return a .. "\nfunction ayrye() if false then function codeidw() return math.random(99999, 999999) == 999999 end local state = 100000 ::piiewig:: if state == 100000 then state = middle goto piiewig elseif state == middle then if codeidw() then state = 237616 else state = 10000 end goto piiewig elseif state == 237616 then return 976461 end end end ayrye()\n" end) local hse = {} for i, v in pairs(gg) do if type(v) == "function" then local str = tostring(v) local Name = string.match(str,'(gg%.%w+)') if Name then table.insert(hse,string.char(math.random(97, 122))..string.char(math.random(48, 57))..string.char(math.random(97, 122))..string.char(math.random(65, 90))..string.char(math.random(97, 122)).."_CitMau") end end end for iajwh = 0, 5 do CitMau_f = hse[math.random(1,#hse)] CitMau_b = "\nlocal "..CitMau_f.." " CitMau_a = "= "..data:match("gg.searc.-umber").."\n" local g = data:match("gg.searc.-umber") data = data:gsub(g,CitMau_f) data = CitMau_b .. data data = data:gsub("local "..CitMau_f.."", function(a) return a .. CitMau_a end) end data = data:gsub("%w+.searchNumber","_ENV['nb_CitMau_nb']") data = [[ _ENV['nb_CitMau_nb']=function(...) ajja = gg.searchNumber(...) return ajja end ]]..data data = data:gsub("%w+.searchNumber.-%)", function(a) return a .. "\nif false then; while(_ENV)do; ::xx:: local x={};_x={};_x[-nil<<-true>>nil]=_x[nil/false](x[nil*nil>>true>-false](_x[-#true-nil>nil])())do;_x[x[nil~-true~false][-nil%-false%nil]]=nil+nil%#-true;return(nil/-nil%true~-false);end;goto xx;end; end\n" end) end local KZ ="\nif nil then if false then ::XX:: while not((function()return math.random(1000, 10000)%2==0 end)())do goto XX end end local function goto_s(); local jd = 1704618 if jd > 1 then jd = jd - 10000 else; if false then; jd = jd // 5 * 6666 * 24 + 1 // 2 - 16564 end; end; end; local function control_flow() local _X = 96919 while true do _X = _X + 1 goto_s() if _X > 9999 then break end end end control_flow() if false or nil then goto akx goto akx goto akx goto akx ::akx:: if false ~= nil then goto asqd goto asqd ::asqd:: else return nil,1274,true end end end\not[name] = nil\n" data=data:gsub("if.-then",function(a) return a .. KZ end) local time1 = os.time() data = '\n' .. data .. '\n' local f ={} local n = 1 local function randomLanMa() local len = 6 local cs = {} for v = 1,len do cs[v] = (string.format('\\%3d' , math.random(0,255)~255)):gsub('%s*' , '') end return table.concat(cs) end local function val(s) local bool = '('..math.random(1,9999999) .. ' or '..math.random(1,9999999)..' >> '..math.random(1,9999999)..' and '..math.random(1,9999999)..' + ' ..math.random(1,9999999)..' > '..math.random(1,9999) .. ' or '..math.random(1,999)..' >> '..math.random(1,999)..' and '..math.random(1,999)..' + ' ..math.random(1,999) .. ' )' return '(function()\nif '..bool..' then return '..s..' elseif false then else if false then end end end)()' end local function byte_char(src) local code = {src:byte(1,-1)} for v = 1,#code do local key = math.random(1,999999) code[v]='byte[decode('..(code[v]+key)..' , '..key..')]' end local lanma = randomLanMa() table.insert(f , n , 'MSR[\034'.. lanma ..'\034] = ('.. table.concat(code , '..')..')') n = n+1 value = '' m = math.random(1,3) if m == 1 then value = math.random(1,999999)..' < '..math.random(1,999999) elseif m == 2 then value = math.random(1,999999)..' > '..math.random(1,999999) elseif m == 3 then value = math.random(1,999999)..' == '..math.random(1,999999) end return val('MSR[(function(...) return \034'..lanma..'\034 end)('..value..' or \034'..randomLanMa()..'\034 == \034'..randomLanMa().. '\034 and \034'..randomLanMa()..'\034 ~= \034'..randomLanMa()..'\034)]') , f end decode = [[ local function Toll(src, d, key) local src = {src:byte(1, -1)} local byte = {} for v = 1, #src do byte[v] = string.char(src[v] ~ key) end if d then return table.concat(byte) end return true end MCL_GG=string.char MSR={} local byte = {}; local function value() for i=0,255 do byte[i]=string.char(i) end return byte end byte = value() local decode = function() end local function value() local decode = function(s,key) return s - key end return decode end local decode = value() ot[name] = nil ]] keypy=math.random(100,5200) __SF=[=[ local Str_L = {} local decryptString=function(encryptedString, key1,key2) wkey2="" for i,v in pairs(key2)do jie=string.char(v) wkey2=wkey2..jie end local key=wkey2..key1 local decryptedString = "" local keyLength = string.len(key) for i = 1, string.len(encryptedString) do local char = string.sub(encryptedString, i, i) local keyChar = string.sub(key, (i % keyLength) + 1, (i % keyLength) + 1) local offset = (string.byte(char) - string.byte(keyChar)) % 256 local decryptedChar = string.char(offset) decryptedString = decryptedString .. decryptedChar end return decryptedString end local PY=function(number) number=number-]=]..keypy..[=[ return number end local _Decscript=function(Decrypt,wkey,key2) Rebound= decryptString(Decrypt, wkey,key2) return Rebound end ]=] data=__SF..decode..table.concat(f,'\n')..data Numto16=function(num) if type(num)~="number" or num>255 or num<0 then return num else local sp=string.format("%x",num) if #sp==1 then sp="0"..sp end return "\\x"..sp end end toLuaHex=function(str) return(string.gsub(str,".",function(x) return(Numto16(string.byte(x))) end)) end randomStr = function(len) len = len or 6 local str = '' for i = 1, len do local num1 = math.random(1, 26) if i % 2 == 0 then num1 = num1 + 64 else num1 = num1 + 96 end str = str .. string.char(num1) end return str end randomKey = randomStr(200) keyTable = {string.byte(randomKey, 1, -1)} data="local key={"..table.concat(keyTable, ',').."}\n"..data local RanStr = (function() local res = "" for i = 1, math.random(3, 6) do res = res .. "\\" .. math.random(0, 255) end return res end) function Ran_True() local n1, n2, s1, s2, ranx, min, max local ran = math.random(0, 3) if ran == 0 then if math.random(0, 1) == 0 then local s = RanStr() return "\034" .. s .. "\034==\034" .. s .. "\034" else local n = math.random(0, 114514) return n .. "==" .. n end elseif ran == 1 then if math.random(0, 1) == 0 then repeat s1 = RanStr() s2 = RanStr() until s1 ~= s2 return "\034" .. s1 .. "\034~=\034" .. s2 .. "\034" else repeat n1 = math.random(0, 114514) n2 = math.random(0, 114514) until n1 ~= n2 return n1 .. "~=" .. n2 end elseif ran == 2 then ranx = math.random(0, 2) if ranx == 0 then n1 = math.random(1, 114514) n2 = math.random(0, n1 - 1) return n1 .. ">" .. n2 elseif ranx == 1 then n = math.random(1, 114514) return n .. ">=" .. n elseif ranx == 2 then n1 = math.random(1, 114514) n2 = math.random(0, n1 - 1) return n1 .. ">=" .. n2 end elseif ran == 3 then ranx = math.random(0, 2) if ranx == 0 then n1 = math.random(1, 114514) n2 = math.random(0, n1 - 1) return n2 .. "<" .. n1 elseif ranx == 1 then n = math.random(1, 114514) return n .. "<=" .. n elseif ranx == 2 then n1 = math.random(1, 114514) n2 = math.random(0, n1 - 1) return n2 .. "<=" .. n1 end end end local function Ran_False() local n1, n2, s1, s2, ranx, min, max local ran = math.random(0, 3) if ran == 0 then if math.random(0, 1) == 0 then local s = RanStr() return "\034" .. s .. "\034~=\034" .. s .. "\034" else local n = math.random(0, 114514) return n .. "~=" .. n end elseif ran == 1 then if math.random(0, 1) == 0 then repeat s1 = RanStr() s2 = RanStr() until s1 ~= s2 return "\034" .. s1 .. "\034==\034" .. s2 .. "\034" else repeat n1 = math.random(0, 114514) n2 = math.random(0, 114514) until n1 ~= n2 return n1 .. "==" .. n2 end elseif ran == 2 then ranx = math.random(0, 2) if ranx == 0 then n1 = math.random(1, 114514) n2 = math.random(0, n1 - 1) return n1 .. "<" .. n2 elseif ranx == 1 then repeat n1 = math.random(0, 114514) n2 = math.random(0, n1 - 1) until n1 ~= n2 return n1 .. "<=" .. n2 elseif ranx == 2 then n1 = math.random(1, 114514) n2 = math.random(0, n1 - 1) return n1 .. "<=" .. n2 end elseif ran == 3 then ranx = math.random(0, 2) if ranx == 0 then n1 = math.random(1, 114514) n2 = math.random(0, n1 - 1) return n2 .. ">" .. n1 elseif ranx == 1 then repeat n1 = math.random(0, 114514) n2 = math.random(0, n1 - 1) until (n1 ~= n2 and n1 > n2) return n2 .. ">=" .. n1 elseif ranx == 2 then n1 = math.random(1, 114514) n2 = math.random(0, n1 - 1) return n2 .. ">=" .. n1 end end end local function Ran_Bool(boolean) if boolean == nil then return "_Bool[\034" .. RanStr() .. "\034]" elseif boolean == true then if math.random(0, 1) == 0 then return Ran_True() else return "not (" .. Ran_False() .. ")" end elseif boolean == false then if math.random(0, 1) == 0 then return Ran_False() else return "not (" .. Ran_True() .. ")" end end end function bool_Control(data) local BoolTab = {true, false, nil} for i = 1, #BoolTab do local boolStr = tostring(BoolTab[i]) data = data:gsub( '%f[%w_"]' .. boolStr .. '%f[^%w_"]', function() return "(" .. Ran_Bool(BoolTab[i]) .. ")" end ) end return "local _Bool={}\n" .. data end local time1 = os.time() local t = {} local t = {} _G['转16进制'] = function (str) local t = {string.byte(str, 1, -1)} for i = 1, #t do t[i] = string.format('\\x%02x', t[i]) end return '"' .. table.concat(t) .. '"' end local Tes={'\x21','\x22','\x23','\x24','\x25','\x26','\x27','\x28','\x29','\x2a','\x2b','\x2c','\x2d','\x2e','\x2f','\x3a','\x3b','\x3c','\x3d','\x3e','\x3f','\x40','\x5b','\x5c','\x5d','\x5e','\x7b','\x7d','\x7e','MX'} function name(len) if type(len)~="number" then len=math.random(4,6) end local res = '' for i = 1, len do local s=math.random(1,#Tes) res = res .. Tes[s] end return res end local function xor2(src) local src = {src:byte(1,-1)} local byte = {} local ii = math.random(1,255) for v = 1, #src do byte[v] = string.format('\\x%02X', src[v] ~ ii) end return string.format('(function() return Toll("%s",%s,%d) end)()', table.concat(byte), _G['转16进制'](name(math.random(1,255))),ii) end --(function() --return "字符串" --end)() data=string.gsub(data, '\34(.-)\34', xor2)--创建一 if selctFile[2] then data=string.gsub(data, '\39(.-)\39', xor2)--创建一 end data = bool_Control(data) function suiji() local data = '' for i = 1, 4 do if i % 2 == 0 then i = 96 + math.random(1, 26) else i = 64 + math.random(1, 26) end data = data .. string.char(i) end return data end table.randomName = function(len) local _t = {} for v = 1 , len do _t[v] = suiji() end return _t end string.obfEnc = function(code) local Name = table.randomName(6) local t_ = {} for v = 1 , #Name do t_[v] = 'nil or '.. v ^ 8 ..' or -'.. v * 9 ..' or nil' end local str_ = '(function('.. table.concat(Name,',') ..')\nlocal '.. table.concat(Name,',') .. ' = ' .. table.concat(t_,',') .. '\n return (\034'.. code..'\034);end)()' return str_ end data = data:gsub('\34(.-)\34' , string.obfEnc , 74) --data = data:gsub('\39(.-)\39' , string.obfEnc , 20) LOOOGO="\n"..[=[ OP加密 安全 高效 保障 此加密版本为:OP 体验版 欢迎你的使用 ]=].."\n--[[" base=[[ 😋 请勿逆向破解 ]] data="(function(...)while not C[\'XEC\'] do end while not C do end\n"..data.."\nend)([["..base.."]])" time1 = os.time() - time1 time1 = string.format('%2.f' , time1) function Jjian() local func,err=load(data) if not func then gg.alert('文件加密失败\n失败原因:'..err) os.exit() end end Jjian()--检查报错 TY=selctFile[1]..'-XEC.lua' io.open(selctFile[1] .. "-字符串.lua", "w"):write(data) data=string.dump(load(data),true,true) if not gg.internal2(load(data),TY)then return gg.alert('加密失败')end data=io.open(TY,"r"):read("*a") local SL=os.time() data=data:gsub('\n%.line 0\n',function(txt)return txt..'\nGETTABUP v0 u0 "debug"\nGETTABLE v0 v0 "getinfo"\nLOADK v1 2\nCALL v0..v1 v0..v0\nSETTABUP u0 "~XEC " v0\nCLOSURE v0 F'..SL..'\nGETUPVAL v1 u0\nTAILCALL v0..v0\nRETURN v0..v0\n.func F'..SL..'\n.source "~XEC \x00\x00"\n.linedefined 0\n.lastlinedefined 0\n.numparams 250\n.is_vararg 250\n.maxstacksize 250\n.upval u0 nil ; u0\n'end) data=data..'\n.end\n' function strenc_a(str) local t = {string.byte(str, 1, -1)} for i = 1, #t do t[i] = string.format('\\x%02x', t[i]) end return table.concat(t) end data=data:gsub('\n%.line 0\n',function(txt)return txt..'\nLOADK v1 "'..strenc_a(LOOOGO or ' ')..'"\n'end,1) local time1 = os.time() function Table_Rand(t) local tRet = {} local Total = #t while Total > 0 do local i = math.random(1,Total) table.insert(tRet,t[i]) t[i] = t[Total] Total = Total-1 end return tRet end--打乱table local JMP={} local ZL = { ['LOADKX'] = 2, ['EXTRAARG'] = 2, ['UNM'] = 2, ['BNOT'] = 2, ['NOT'] = 2, ['LEN'] = 2, ['ADD'] = 2, ['SUB'] = 2, ['MUL'] = 2, ['DIV'] = 2, ['IDIV'] = 2, ['MOD'] = 2, ['POW'] = 2, ['BXOR'] = 2, ['BOR'] = 2, ['BAND'] =2, ['SHL'] = 2, ['SHR'] = 2, ['GETTABLE'] = 2, ['SETTABLE'] = 2, ['NEWTABLE'] = 2, ['SELF'] = 2, ['SETLIST'] = 2, ['LOADNIL'] = 2, ['CONCAT'] = 2, ['CALL'] = 2, ['VARARG'] = 2, ['TAILCALL'] = 2, ['TFORCALL'] = 2, ['GETUPVAL'] = 2, ['SETUPVAL'] = 2, ['GETTABUP'] = 2, ['SETTABUP'] = 2, ['CLOSURE'] = 2, ['RETURN'] = 2, ['FORLOOP'] = 2, ['FORPREP'] = 2, ['TFORLOOP'] = 2, } local LNT = { BNOT = 13, UNM = 14, LEN = 15, } local calculate={ ["ADD"]=1, ["SUB"]=2, ["MUL"]=3, ["DIV"]=4, ["POW"]=5, ["BXOR"]=6, ["BAND"]=7, ["BOR"]=8, ["MOD"]=9, ["IDIV"]=10, ["SHL"]=11, ["SHR"]=12 } freezed=true local function generate_random_instructions() local random_ops = {} for _ = 1, 20 do local op_types = { "MOVE v" .. math.random(0, 255) .. " v" .. math.random(0, 255) .. "\n", "ADD v" .. math.random(0, 255) .. " v" .. math.random(0, 255) .. " v" .. math.random(0, 255) .. "\n", "SUB v" .. math.random(0, 255) .. " v" .. math.random(0, 255) .. " v" .. math.random(0, 255) .. "\n", "MUL v" .. math.random(0, 255) .. " v" .. math.random(0, 255) .. " v" .. math.random(0, 255) .. "\n", "DIV v" .. math.random(0, 255) .. " v" .. math.random(0, 255) .. " v" .. math.random(0, 255) .. "\n", "NOT v" .. math.random(0, 255) .. " v" .. math.random(0, 255) .. "\n", "TESTSET v" .. math.random(0, 255) .. " v" .. math.random(0, 255) .. " 1\n\n\n", "TFORLOOP v" .. math.random(0, 255) .. " GOTO[" .. math.random(-100, 100) .. "]\n", "FORPREP v" .. math.random(0, 255) .. " GOTO[" .. math.random(-100, 100) .. "]\n", } table.insert(random_ops, op_types[math.random(1, #op_types)]) end return table.concat(random_ops, "") end function Frist(eq_jg, infin, less) return { "LT 0 v"..infin.." v"..less, "LE 0 v"..infin.." v"..less, "EQ 0 v"..infin.." v"..less, "TEST v"..eq_jg.." 1", "LT 1 v"..infin.." v"..less, "LE 1 v"..infin.." v"..less, "EQ 1 v"..infin.." v"..less, "TEST v"..eq_jg.." 0", "JMP", "FORPREP v181", } end function JMP.Disloc(Tran,free) gg.toast("正在进行JMP错位...") --Tran = Frist(Tran) Tran = Tran:gsub("; .local v[^\n]+\n",""):gsub("\n%s*; .end local v[^\n]+",""):gsub("\n%s+","\n") Tran = Tran:gsub("maxstacksize (%d+)(.-)(\n%.[ef][nu][dn][c ][; ])",function(max,str,final) local lx=0 for i in str:gmatch("\n") do lx=lx+1 end if lx>=9 then local tre_Z = {} local num = 1000000 local tre_X = {} local tre_V = {} local less = math.random(240,245) local infin = less + math.random(1,3) tre_X[#tre_X+1] = ":goto_" .. num .. "\nLOADK v"..infin.." 1e300008\nJMP :goto_" .. (num+1) num = num+1 tre_X[#tre_X+1] = ":goto_" .. num .. "\nLOADK v"..less.." "..math.random(1,999999).."\nJMP :goto_" .. (num+1) num = num+1 local num_final_start = num str = str:gsub("[^\n]+",function(s) zl = s:match("%S+") local Dt,tD,DT,HX,dT = nil, nil, nil, nil, nil if zl == ".upval" or zl == ".line" then tre_Z[#tre_Z+1] = s tD = true end if num>1005000 then HX = true end if zl == "LOADK" and HX == nil and fangan == "高级版" then num = num+1 tre_V[#tre_V+1] = ":goto_" .. num .. "\n" .. s .. "\nJMP :goto_" .. (num+1).. "\n" local ran_Control2={ "JMP", "FORPREP v181" } local ran_goto = ran_Control2[math.random(1,2)] num = num+1 if zl == "LOADK" then local jc = s:match("v%d+") if math.random(0,1) == 1 then tre_X[#tre_X+1] = ":goto_" .. num .. "\nTEST "..jc.." 1\n"..ran_goto.." :goto_" .. (num+1) .. "\n"..ran_goto .. " :goto_"..math.random(1000000,num) num = num+1 dT = true elseif math.random(0,1) == 1 then tre_X[#tre_X+1] = ":goto_" .. num .. "\nTEST "..jc.." 0\n"..ran_goto.." :goto_" .. math.random(1000000,num) .. "\n"..ran_goto .. " :goto_" .. (num+1) num = num+1 dT = true end end Dt = true end if ZL[zl] then num = num+1 if zl == "RETURN" and s:find("v") == nil then tre_X[#tre_X+1] = ":goto_" .. num .. "\n" .. s DT=true else local ran_sj = math.random(0,2) if not freezed then ran_sj = 0 end local eq_jg if math.random(0,1) == 1 then eq_jg = infin else eq_jg = less end local ran_Control = Frist(eq_jg, infin, less) local ran_goto = ran_Control[math.random(9,10)] if ran_sj==0 then tre_X[#tre_X+1] = ":goto_" .. num .. "\n" .. s .. "\n"..ran_goto.." :goto_" .. (num+1) num = num+1 elseif ran_sj == 1 then tre_X[#tre_X+1] = ":goto_" .. num .. "\n" .. s .. "\n"..ran_Control[math.random(1,4)].."\n"..ran_goto.." :goto_" .. (num+1) .. "\n"..ran_goto.." :goto_"..math.random(1000000,num) num = num+1 elseif ran_sj == 2 then tre_X[#tre_X+1] = ":goto_" .. num .. "\n" .. s .. "\n"..ran_Control[math.random(5,8)].."\n"..ran_goto.." :goto_"..math.random(1000000,num).."\n"..ran_goto.." :goto_" .. (num+1) num = num+1 end if zl == "CLOSURE" and fangan == "高级版" then local jc = s:match("v%d+") tre_X[#tre_X + 1] = "MOVE v" .. math.random(0, 255) .. " v" .. math.random(0, 255) .. "\n" tre_X[#tre_X + 1] = "MOVE v" .. math.random(0, 255) .. " v" .. math.random(0, 255) .. "\n" if math.random(0, 1) == 1 then tre_X[#tre_X + 1] = ":goto_" .. num .. "\nTEST " .. jc .. " 1\n" .. ran_goto .. " :goto_" .. (num + 1) .. "\n" .. ran_goto .. " :goto_" .. math.random(1000000, num) num = num + 1 else tre_X[#tre_X + 1] = ":goto_" .. num .. "\nTEST " .. jc .. " 0\n" .. ran_goto .. " :goto_" .. math.random(1000000, num) .. "\n" .. ran_goto .. " :goto_" .. (num + 1) num = num + 1 end tre_X[#tre_X + 1] = "MOVE v" .. math.random(0, 255) .. " v" .. math.random(0, 255) .. "\n" tre_X[#tre_X + 1] = "MOVE v" .. math.random(0, 255) .. " v" .. math.random(0, 255) .. "\n" if math.random(0, 1) == 1 then tre_X[#tre_X + 1] = ":goto_" .. num .. "\nTEST " .. jc .. " 1\n" .. ran_goto .. " :goto_" .. (num + 1) .. "\n" .. ran_goto .. " :goto_" .. math.random(1000000, num) num = num + 1 else tre_X[#tre_X + 1] = ":goto_" .. num .. "\nTEST " .. jc .. " 0\n" .. ran_goto .. " :goto_" .. math.random(1000000, num) .. "\n" .. ran_goto .. " :goto_" .. (num + 1) num = num + 1 end local random_val = math.random(0, 255) local random_reg1 = "v" .. math.random(0, 255) local random_reg2 = "v" .. math.random(0, 255) if random_val > 128 then tre_X[#tre_X + 1] = ":goto_" .. num .. "\nTESTGE " .. random_reg1 .. " " .. random_val .. "\n" .. ran_goto .. " :goto_" .. (num + 2) .. "\n" tre_X[#tre_X + 1] = "MOVE " .. random_reg1 .. " " .. random_reg2 .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. (num + 1) .. "\n" tre_X[#tre_X + 1] = ":goto_" .. (num + 1) .. "\nTESTLT " .. random_reg2 .. " " .. (random_val - 100) .. "\n" .. ran_goto .. " :goto_" .. math.random(1000000, num) .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. (num + 3) .. "\n" tre_X[#tre_X + 1] = ":goto_" .. (num + 2) .. "\nTESTGT " .. random_reg1 .. " " .. (random_val + 50) .. "\n" .. ran_goto .. " :goto_" .. (num + 3) .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. math.random(1000000, num) .. "\n" num = num + 3 else tre_X[#tre_X + 1] = ":goto_" .. num .. "\nTESTLE " .. random_reg2 .. " " .. random_val .. "\n" .. ran_goto .. " :goto_" .. (num + 2) .. "\n" tre_X[#tre_X + 1] = "MOVE " .. random_reg2 .. " " .. random_reg1 .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. (num + 1) .. "\n" tre_X[#tre_X + 1] = ":goto_" .. (num + 1) .. "\nTESTNE " .. random_reg1 .. " " .. (random_val + 75) .. "\n" .. ran_goto .. " :goto_" .. math.random(1000000, num) .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. (num + 3) .. "\n" tre_X[#tre_X + 1] = ":goto_" .. (num + 2) .. "\nTESTEQ " .. random_reg2 .. " " .. (random_val - 25) .. "\n" .. ran_goto .. " :goto_" .. (num + 3) .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. math.random(1000000, num) .. "\n" num = num + 3 end local random_val1 = math.random(0, 255) local random_val2 = math.random(0, 255) local random_regA = "v" .. math.random(0, 255) local random_regB = "v" .. math.random(0, 255) local random_regC = "v" .. math.random(0, 255) local random_regD = "v" .. math.random(0, 255) if random_val1 > 128 then tre_X[#tre_X + 1] = ":goto_" .. num .. "\nTESTGE " .. random_regA .. " " .. random_val1 .. "\n" .. ran_goto .. " :goto_" .. (num + 4) .. "\n" if random_val2 > 100 then tre_X[#tre_X + 1] = "TESTGT " .. random_regB .. " " .. random_val2 .. "\n" .. ran_goto .. " :goto_" .. (num + 2) .. "\n" tre_X[#tre_X + 1] = "MOVE " .. random_regB .. " " .. random_regC .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. (num + 1) .. "\n" tre_X[#tre_X + 1] = ":goto_" .. (num + 1) .. "\nTESTEQ " .. random_regC .. " " .. (random_val2 - 50) .. "\n" .. ran_goto .. " :goto_" .. (num + 3) .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. math.random(1000000, num) .. "\n" tre_X[#tre_X + 1] = ":goto_" .. (num + 2) .. "\nTESTLT " .. random_regD .. " " .. (random_val1 + 25) .. "\n" .. ran_goto .. " :goto_" .. (num + 3) .. "\n" tre_X[#tre_X + 1] = "ADD " .. random_regD .. " " .. random_regA .. " " .. random_regB .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. math.random(1000000, num) .. "\n" tre_X[#tre_X + 1] = ":goto_" .. (num + 3) .. "\nTESTNE " .. random_regA .. " " .. random_val2 .. "\n" .. ran_goto .. " :goto_" .. (num + 5) .. "\n" tre_X[#tre_X + 1] = "SUB " .. random_regC .. " " .. random_regD .. " " .. random_regA .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. (num + 4) .. "\n" else tre_X[#tre_X + 1] = "TESTLE " .. random_regB .. " " .. random_val2 .. "\n" .. ran_goto .. " :goto_" .. (num + 2) .. "\n" tre_X[#tre_X + 1] = "MOVE " .. random_regC .. " " .. random_regD .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. (num + 1) .. "\n" tre_X[#tre_X + 1] = ":goto_" .. (num + 1) .. "\nTESTGE " .. random_regD .. " " .. (random_val1 - 75) .. "\n" .. ran_goto .. " :goto_" .. (num + 3) .. "\n" tre_X[#tre_X + 1] = "MUL " .. random_regD .. " " .. random_regB .. " " .. random_regC .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. math.random(1000000, num) .. "\n" tre_X[#tre_X + 1] = ":goto_" .. (num + 2) .. "\nTESTGT " .. random_regA .. " " .. (random_val2 + 30) .. "\n" .. ran_goto .. " :goto_" .. (num + 3) .. "\n" tre_X[#tre_X + 1] = "DIV " .. random_regC .. " " .. random_regA .. " " .. random_regB .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. math.random(1000000, num) .. "\n" tre_X[#tre_X + 1] = ":goto_" .. (num + 3) .. "\nTESTEQ " .. random_regB .. " " .. random_val1 .. "\n" .. ran_goto .. " :goto_" .. (num + 5) .. "\n" tre_X[#tre_X + 1] = "ADD " .. random_regA .. " " .. random_regC .. " " .. random_regD .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. (num + 4) .. "\n" end tre_X[#tre_X + 1] = ":goto_" .. (num + 4) .. "\nTESTLT " .. random_regD .. " " .. (random_val2 + 50) .. "\n" .. ran_goto .. " :goto_" .. (num + 6) .. "\n" tre_X[#tre_X + 1] = "MOVE " .. random_regD .. " " .. random_regB .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. (num + 5) .. "\n" tre_X[#tre_X + 1] = ":goto_" .. (num + 5) .. "\nTESTNE " .. random_regC .. " " .. (random_val1 + 25) .. "\n" .. ran_goto .. " :goto_" .. math.random(1000000, num) .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. (num + 6) .. "\n" tre_X[#tre_X + 1] = ":goto_" .. (num + 6) .. "\nTESTGT " .. random_regA .. " " .. (random_val2 - 100) .. "\n" .. ran_goto .. " :goto_" .. math.random(1000000, num) .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. (num + 7) .. "\n" num = num + 7 else tre_X[#tre_X + 1] = ":goto_" .. num .. "\nTESTLE " .. random_regA .. " " .. random_val1 .. "\n" .. ran_goto .. " :goto_" .. (num + 4) .. "\n" if random_val2 < 50 then tre_X[#tre_X + 1] = "TESTLT " .. random_regB .. " " .. random_val2 .. "\n" .. ran_goto .. " :goto_" .. (num + 2) .. "\n" tre_X[#tre_X + 1] = "MOVE " .. random_regC .. " " .. random_regD .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. (num + 1) .. "\n" tre_X[#tre_X + 1] = ":goto_" .. (num + 1) .. "\nTESTNE " .. random_regD .. " " .. (random_val1 + 75) .. "\n" .. ran_goto .. " :goto_" .. (num + 3) .. "\n" tre_X[#tre_X + 1] = "SUB " .. random_regD .. " " .. random_regA .. " " .. random_regB .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. math.random(1000000, num) .. "\n" tre_X[#tre_X + 1] = ":goto_" .. (num + 2) .. "\nTESTEQ " .. random_regC .. " " .. (random_val2 + 25) .. "\n" .. ran_goto .. " :goto_" .. (num + 3) .. "\n" tre_X[#tre_X + 1] = "MUL " .. random_regC .. " " .. random_regB .. " " .. random_regA .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. math.random(1000000, num) .. "\n" tre_X[#tre_X + 1] = ":goto_" .. (num + 3) .. "\nTESTGE " .. random_regB .. " " .. (random_val1 - 50) .. "\n" .. ran_goto .. " :goto_" .. (num + 5) .. "\n" tre_X[#tre_X + 1] = "ADD " .. random_regA .. " " .. random_regC .. " " .. random_regD .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. (num + 4) .. "\n" else tre_X[#tre_X + 1] = "TESTGE " .. random_regB .. " " .. random_val2 .. "\n" .. ran_goto .. " :goto_" .. (num + 2) .. "\n" tre_X[#tre_X + 1] = "MOVE " .. random_regD .. " " .. random_regC .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. (num + 1) .. "\n" tre_X[#tre_X + 1] = ":goto_" .. (num + 1) .. "\nTESTGT " .. random_regC .. " " .. (random_val2 - 30) .. "\n" .. ran_goto .. " :goto_" .. (num + 3) .. "\n" tre_X[#tre_X + 1] = "DIV " .. random_regC .. " " .. random_regD .. " " .. random_regB .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. math.random(1000000, num) .. "\n" tre_X[#tre_X + 1] = ":goto_" .. (num + 2) .. "\nTESTLT " .. random_regA .. " " .. (random_val1 + 100) .. "\n" .. ran_goto .. " :goto_" .. (num + 3) .. "\n" tre_X[#tre_X + 1] = "SUB " .. random_regA .. " " .. random_regC .. " " .. random_regD .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. math.random(1000000, num) .. "\n" tre_X[#tre_X + 1] = ":goto_" .. (num + 3) .. "\nTESTEQ " .. random_regD .. " " .. random_val2 .. "\n" .. ran_goto .. " :goto_" .. (num + 5) .. "\n" tre_X[#tre_X + 1] = "MUL " .. random_regD .. " " .. random_regA .. " " .. random_regB .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. (num + 4) .. "\n" end tre_X[#tre_X + 1] = ":goto_" .. (num + 4) .. "\nTESTNE " .. random_regC .. " " .. (random_val1 - 25) .. "\n" .. ran_goto .. " :goto_" .. (num + 6) .. "\n" tre_X[#tre_X + 1] = "MOVE " .. random_regC .. " " .. random_regA .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. (num + 5) .. "\n" tre_X[#tre_X + 1] = ":goto_" .. (num + 5) .. "\nTESTLE " .. random_regB .. " " .. (random_val2 + 75) .. "\n" .. ran_goto .. " :goto_" .. math.random(1000000, num) .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. (num + 6) .. "\n" tre_X[#tre_X + 1] = ":goto_" .. (num + 6) .. "\nTESTLT " .. random_regD .. " " .. (random_val1 + 50) .. "\n" .. ran_goto .. " :goto_" .. math.random(1000000, num) .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. (num + 7) .. "\n" num = num + 7 end dT = true end if zl == "CALL" and fangan == "高级版" then local jc = s:match("v%d+") if jc == "v222" or jc == "v201" then if math.random(0,1) == 1 then tre_X[#tre_X+1] = ":goto_" .. num .. "\nTEST "..jc.." 1\n"..ran_goto.." :goto_" .. (num+1) .. "\n"..ran_goto .. " :goto_"..math.random(1000000,num) num = num+1 else tre_X[#tre_X+1] = ":goto_" .. num .. "\nTEST "..jc.." 0\n"..ran_goto.." :goto_" .. math.random(1000000,num) .. "\n"..ran_goto .. " :goto_" .. (num+1) num = num+1 end dT = true end end if zl == "GETTABLE" and fangan == "高级版" then local jc = s:match("v%d+") tre_X[#tre_X + 1] = "MOVE v" .. math.random(0, 255) .. " v" .. math.random(0, 255) .. "\n" tre_X[#tre_X + 1] = "MOVE v" .. math.random(0, 255) .. " v" .. math.random(0, 255) .. "\n" if math.random(0, 1) == 1 then tre_X[#tre_X + 1] = ":goto_" .. num .. "\nTEST " .. jc .. " 1\n" .. ran_goto .. " :goto_" .. (num + 1) .. "\n" .. ran_goto .. " :goto_" .. math.random(1000000, num) num = num + 1 else tre_X[#tre_X + 1] = ":goto_" .. num .. "\nTEST " .. jc .. " 0\n" .. ran_goto .. " :goto_" .. math.random(1000000, num) .. "\n" .. ran_goto .. " :goto_" .. (num + 1) num = num + 1 end tre_X[#tre_X + 1] = "MOVE v" .. math.random(0, 255) .. " v" .. math.random(0, 255) .. "\n" tre_X[#tre_X + 1] = "MOVE v" .. math.random(0, 255) .. " v" .. math.random(0, 255) .. "\n" if math.random(0, 1) == 1 then tre_X[#tre_X + 1] = ":goto_" .. num .. "\nTEST " .. jc .. " 1\n" .. ran_goto .. " :goto_" .. (num + 1) .. "\n" .. ran_goto .. " :goto_" .. math.random(1000000, num) num = num + 1 else tre_X[#tre_X + 1] = ":goto_" .. num .. "\nTEST " .. jc .. " 0\n" .. ran_goto .. " :goto_" .. math.random(1000000, num) .. "\n" .. ran_goto .. " :goto_" .. (num + 1) num = num + 1 end local random_val = math.random(0, 255) local random_reg1 = "v" .. math.random(0, 255) local random_reg2 = "v" .. math.random(0, 255) if random_val > 128 then tre_X[#tre_X + 1] = ":goto_" .. num .. "\nTESTGE " .. random_reg1 .. " " .. random_val .. "\n" .. ran_goto .. " :goto_" .. (num + 2) .. "\n" tre_X[#tre_X + 1] = "MOVE " .. random_reg1 .. " " .. random_reg2 .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. (num + 1) .. "\n" tre_X[#tre_X + 1] = ":goto_" .. (num + 1) .. "\nTESTLT " .. random_reg2 .. " " .. (random_val - 100) .. "\n" .. ran_goto .. " :goto_" .. math.random(1000000, num) .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. (num + 3) .. "\n" tre_X[#tre_X + 1] = ":goto_" .. (num + 2) .. "\nTESTGT " .. random_reg1 .. " " .. (random_val + 50) .. "\n" .. ran_goto .. " :goto_" .. (num + 3) .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. math.random(1000000, num) .. "\n" num = num + 3 else tre_X[#tre_X + 1] = ":goto_" .. num .. "\nTESTLE " .. random_reg2 .. " " .. random_val .. "\n" .. ran_goto .. " :goto_" .. (num + 2) .. "\n" tre_X[#tre_X + 1] = "MOVE " .. random_reg2 .. " " .. random_reg1 .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. (num + 1) .. "\n" tre_X[#tre_X + 1] = ":goto_" .. (num + 1) .. "\nTESTNE " .. random_reg1 .. " " .. (random_val + 75) .. "\n" .. ran_goto .. " :goto_" .. math.random(1000000, num) .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. (num + 3) .. "\n" tre_X[#tre_X + 1] = ":goto_" .. (num + 2) .. "\nTESTEQ " .. random_reg2 .. " " .. (random_val - 25) .. "\n" .. ran_goto .. " :goto_" .. (num + 3) .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. math.random(1000000, num) .. "\n" num = num + 3 end local random_val1 = math.random(0, 255) local random_val2 = math.random(0, 255) local random_regA = "v" .. math.random(0, 255) local random_regB = "v" .. math.random(0, 255) local random_regC = "v" .. math.random(0, 255) local random_regD = "v" .. math.random(0, 255) if random_val1 > 128 then tre_X[#tre_X + 1] = ":goto_" .. num .. "\nTESTGE " .. random_regA .. " " .. random_val1 .. "\n" .. ran_goto .. " :goto_" .. (num + 4) .. "\n" if random_val2 > 100 then tre_X[#tre_X + 1] = "TESTGT " .. random_regB .. " " .. random_val2 .. "\n" .. ran_goto .. " :goto_" .. (num + 2) .. "\n" tre_X[#tre_X + 1] = "MOVE " .. random_regB .. " " .. random_regC .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. (num + 1) .. "\n" tre_X[#tre_X + 1] = ":goto_" .. (num + 1) .. "\nTESTEQ " .. random_regC .. " " .. (random_val2 - 50) .. "\n" .. ran_goto .. " :goto_" .. (num + 3) .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. math.random(1000000, num) .. "\n" tre_X[#tre_X + 1] = ":goto_" .. (num + 2) .. "\nTESTLT " .. random_regD .. " " .. (random_val1 + 25) .. "\n" .. ran_goto .. " :goto_" .. (num + 3) .. "\n" tre_X[#tre_X + 1] = "ADD " .. random_regD .. " " .. random_regA .. " " .. random_regB .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. math.random(1000000, num) .. "\n" tre_X[#tre_X + 1] = ":goto_" .. (num + 3) .. "\nTESTNE " .. random_regA .. " " .. random_val2 .. "\n" .. ran_goto .. " :goto_" .. (num + 5) .. "\n" tre_X[#tre_X + 1] = "SUB " .. random_regC .. " " .. random_regD .. " " .. random_regA .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. (num + 4) .. "\n" else tre_X[#tre_X + 1] = "TESTLE " .. random_regB .. " " .. random_val2 .. "\n" .. ran_goto .. " :goto_" .. (num + 2) .. "\n" tre_X[#tre_X + 1] = "MOVE " .. random_regC .. " " .. random_regD .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. (num + 1) .. "\n" tre_X[#tre_X + 1] = ":goto_" .. (num + 1) .. "\nTESTGE " .. random_regD .. " " .. (random_val1 - 75) .. "\n" .. ran_goto .. " :goto_" .. (num + 3) .. "\n" tre_X[#tre_X + 1] = "MUL " .. random_regD .. " " .. random_regB .. " " .. random_regC .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. math.random(1000000, num) .. "\n" tre_X[#tre_X + 1] = ":goto_" .. (num + 2) .. "\nTESTGT " .. random_regA .. " " .. (random_val2 + 30) .. "\n" .. ran_goto .. " :goto_" .. (num + 3) .. "\n" tre_X[#tre_X + 1] = "DIV " .. random_regC .. " " .. random_regA .. " " .. random_regB .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. math.random(1000000, num) .. "\n" tre_X[#tre_X + 1] = ":goto_" .. (num + 3) .. "\nTESTEQ " .. random_regB .. " " .. random_val1 .. "\n" .. ran_goto .. " :goto_" .. (num + 5) .. "\n" tre_X[#tre_X + 1] = "ADD " .. random_regA .. " " .. random_regC .. " " .. random_regD .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. (num + 4) .. "\n" end tre_X[#tre_X + 1] = ":goto_" .. (num + 4) .. "\nTESTLT " .. random_regD .. " " .. (random_val2 + 50) .. "\n" .. ran_goto .. " :goto_" .. (num + 6) .. "\n" tre_X[#tre_X + 1] = "MOVE " .. random_regD .. " " .. random_regB .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. (num + 5) .. "\n" tre_X[#tre_X + 1] = ":goto_" .. (num + 5) .. "\nTESTNE " .. random_regC .. " " .. (random_val1 + 25) .. "\n" .. ran_goto .. " :goto_" .. math.random(1000000, num) .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. (num + 6) .. "\n" tre_X[#tre_X + 1] = ":goto_" .. (num + 6) .. "\nTESTGT " .. random_regA .. " " .. (random_val2 - 100) .. "\n" .. ran_goto .. " :goto_" .. math.random(1000000, num) .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. (num + 7) .. "\n" num = num + 7 else tre_X[#tre_X + 1] = ":goto_" .. num .. "\nTESTLE " .. random_regA .. " " .. random_val1 .. "\n" .. ran_goto .. " :goto_" .. (num + 4) .. "\n" if random_val2 < 50 then tre_X[#tre_X + 1] = "TESTLT " .. random_regB .. " " .. random_val2 .. "\n" .. ran_goto .. " :goto_" .. (num + 2) .. "\n" tre_X[#tre_X + 1] = "MOVE " .. random_regC .. " " .. random_regD .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. (num + 1) .. "\n" tre_X[#tre_X + 1] = ":goto_" .. (num + 1) .. "\nTESTNE " .. random_regD .. " " .. (random_val1 + 75) .. "\n" .. ran_goto .. " :goto_" .. (num + 3) .. "\n" tre_X[#tre_X + 1] = "SUB " .. random_regD .. " " .. random_regA .. " " .. random_regB .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. math.random(1000000, num) .. "\n" tre_X[#tre_X + 1] = ":goto_" .. (num + 2) .. "\nTESTEQ " .. random_regC .. " " .. (random_val2 + 25) .. "\n" .. ran_goto .. " :goto_" .. (num + 3) .. "\n" tre_X[#tre_X + 1] = "MUL " .. random_regC .. " " .. random_regB .. " " .. random_regA .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. math.random(1000000, num) .. "\n" tre_X[#tre_X + 1] = ":goto_" .. (num + 3) .. "\nTESTGE " .. random_regB .. " " .. (random_val1 - 50) .. "\n" .. ran_goto .. " :goto_" .. (num + 5) .. "\n" tre_X[#tre_X + 1] = "ADD " .. random_regA .. " " .. random_regC .. " " .. random_regD .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. (num + 4) .. "\n" else tre_X[#tre_X + 1] = "TESTGE " .. random_regB .. " " .. random_val2 .. "\n" .. ran_goto .. " :goto_" .. (num + 2) .. "\n" tre_X[#tre_X + 1] = "MOVE " .. random_regD .. " " .. random_regC .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. (num + 1) .. "\n" tre_X[#tre_X + 1] = ":goto_" .. (num + 1) .. "\nTESTGT " .. random_regC .. " " .. (random_val2 - 30) .. "\n" .. ran_goto .. " :goto_" .. (num + 3) .. "\n" tre_X[#tre_X + 1] = "DIV " .. random_regC .. " " .. random_regD .. " " .. random_regB .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. math.random(1000000, num) .. "\n" tre_X[#tre_X + 1] = ":goto_" .. (num + 2) .. "\nTESTLT " .. random_regA .. " " .. (random_val1 + 100) .. "\n" .. ran_goto .. " :goto_" .. (num + 3) .. "\n" tre_X[#tre_X + 1] = "SUB " .. random_regA .. " " .. random_regC .. " " .. random_regD .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. math.random(1000000, num) .. "\n" tre_X[#tre_X + 1] = ":goto_" .. (num + 3) .. "\nTESTEQ " .. random_regD .. " " .. random_val2 .. "\n" .. ran_goto .. " :goto_" .. (num + 5) .. "\n" tre_X[#tre_X + 1] = "MUL " .. random_regD .. " " .. random_regA .. " " .. random_regB .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. (num + 4) .. "\n" end tre_X[#tre_X + 1] = ":goto_" .. (num + 4) .. "\nTESTNE " .. random_regC .. " " .. (random_val1 - 25) .. "\n" .. ran_goto .. " :goto_" .. (num + 6) .. "\n" tre_X[#tre_X + 1] = "MOVE " .. random_regC .. " " .. random_regA .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. (num + 5) .. "\n" tre_X[#tre_X + 1] = ":goto_" .. (num + 5) .. "\nTESTLE " .. random_regB .. " " .. (random_val2 + 75) .. "\n" .. ran_goto .. " :goto_" .. math.random(1000000, num) .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. (num + 6) .. "\n" tre_X[#tre_X + 1] = ":goto_" .. (num + 6) .. "\nTESTLT " .. random_regD .. " " .. (random_val1 + 50) .. "\n" .. ran_goto .. " :goto_" .. math.random(1000000, num) .. "\n" tre_X[#tre_X + 1] = ran_goto .. " :goto_" .. (num + 7) .. "\n" num = num + 7 end dT = true end Dt = true end end if Dt then if dT then return "TFORLOOP v229 :goto_" .. (num-2) .. "\n:goto_" .. num end return "TFORLOOP v229 :goto_" .. (num-1) .. "\n:goto_" .. num elseif tD then return "" elseif DT then return "TFORLOOP v229 :goto_" .. num else return s end end,131000) str = ":goto_"..num_final_start.."\n" .. str local system = {} return "maxstacksize 250\n" .. table.concat(tre_Z,"\n") .. "\nTFORLOOP v229 :goto_999999\nLOADBOOL v230 1\nLOADK v181 1\nLOADK v182 1\nLOADK v183 1\nJMP :goto_1000000\n" .. table.concat(Table_Rand(tre_X),"\n") .. "\n" .. str .. "\n" .."\n" .. generate_random_instructions() .. "\n" .. table.concat(Table_Rand(tre_V),"\n") .. "\nRETURN\n:goto_999999\nJMP :goto_999999\n"..final else return "maxstacksize "..max..str..final end end) Tran = Tran:gsub("\n%s+","\n") return Tran end data = JMP.Disloc(data) Jjian()--检查报错 data = data:gsub("linedefined[^\n]*", "linedefined 0") :gsub("lastlinedefined[^\n]*", "lastlinedefined 0") :gsub("maxstacksize[^\n]*", "maxstacksize 250") Y=[[ .upval u0 nil ; u0 .upval u1 nil ; u1 .upval u2 nil ; u2 .upval u3 nil ; u3 .upval u4 nil ; u4 .upval u5 nil ; u5 .upval u6 nil ; u6 .upval u7 nil ; u7 .upval u8 nil ; u8 .upval u9 nil ; u9 .upval u10 nil ; u10 .upval u11 nil ; u11 .upval u12 nil ; u12 .upval u13 nil ; u13 .upval u14 nil ; u14 .upval u15 nil ; u15 .upval u16 nil ; u16 .upval u246 nil ; u246 .upval u247 nil ; u247 .upval u248 nil ; u248 .upval u249 nil ; u249 .upval u250 nil ; u250 .upval u251 nil ; u251 .upval u252 nil ; u252 .upval u253 nil ; u253 .upval u254 nil ; u254 .upval u255 nil ; u255 .upval u235 nil ; u235 .upval u236 nil ; u236 .upval u237 nil ; u237 ]] Q=[[ .upval u0 nil ; u0 .upval u1 nil ; u1 .upval u2 nil ; u2 .upval u3 nil ; u3 .upval u4 nil ; u4 .upval u5 nil ; u5 .upval u6 nil ; u6 .upval u7 nil ; u7 .upval u8 nil ; u8 .upval u9 nil ; u9 .upval u17 nil ; u17 .upval u18 nil ; u18 .upval u19 nil ; u19 .upval u20 nil ; u20 .upval u21 nil ; u21 .upval u22 nil ; u22 .upval u23 nil ; u23 .upval u24 nil ; u24 .upval u25 nil ; u25 .upval u26 nil ; u26 .upval u27 nil ; u27 .upval u28 nil ; u28 .upval u29 nil ; u29 .upval u30 nil ; u30 .upval u31 nil ; u31 .upval u32 nil ; u32 .upval u33 nil ; u33 .upval u34 nil ; u34 .upval u35 nil ; u35 .upval u36 nil ; u36 .upval u37 nil ; u37 .upval u38 nil ; u38 .upval u39 nil ; u39 .upval u40 nil ; u40 .upval u41 nil ; u41 .upval u42 nil ; u42 .upval u43 nil ; u43 .upval u44 nil ; u44 .upval u45 nil ; u45 .upval u46 nil ; u46 .upval u47 nil ; u47 .upval u48 nil ; u48 .upval u49 nil ; u49 .upval u50 nil ; u50 .upval u51 nil ; u51 .upval u52 nil ; u52 .upval u53 nil ; u53 .upval u54 nil ; u54 .upval u55 nil ; u55 .upval u56 nil ; u56 .upval u57 nil ; u57 .upval u58 nil ; u58 .upval u59 nil ; u59 .upval u60 nil ; u60 .upval u61 nil ; u61 .upval u62 nil ; u62 .upval u63 nil ; u63 .upval u64 nil ; u64 .upval u65 nil ; u65 .upval u66 nil ; u66 .upval u67 nil ; u67 .upval u68 nil ; u68 .upval u69 nil ; u69 .upval u70 nil ; u70 .upval u71 nil ; u71 .upval u72 nil ; u72 .upval u73 nil ; u73 .upval u74 nil ; u74 .upval u75 nil ; u75 .upval u76 nil ; u76 .upval u77 nil ; u77 .upval u78 nil ; u78 .upval u79 nil ; u79 .upval u80 nil ; u80 .upval u81 nil ; u81 .upval u82 nil ; u82 .upval u83 nil ; u83 .upval u84 nil ; u84 .upval u85 nil ; u85 .upval u86 nil ; u86 .upval u87 nil ; u87 .upval u88 nil ; u88 .upval u89 nil ; u89 .upval u90 nil ; u90 .upval u91 nil ; u91 .upval u92 nil ; u92 .upval u93 nil ; u93 .upval u94 nil ; u94 .upval u95 nil ; u95 .upval u96 nil ; u96 .upval u97 nil ; u97 .upval u98 nil ; u98 .upval u99 nil ; u99 .upval u100 nil ; u100 .upval u101 nil ; u101 .upval u102 nil ; u102 .upval u103 nil ; u103 .upval u104 nil ; u104 .upval u105 nil ; u105 .upval u106 nil ; u106 .upval u107 nil ; u107 .upval u108 nil ; u108 .upval u109 nil ; u109 .upval u110 nil ; u110 .upval u111 nil ; u111 .upval u112 nil ; u112 .upval u113 nil ; u113 .upval u114 nil ; u114 .upval u115 nil ; u115 .upval u116 nil ; u116 .upval u117 nil ; u117 .upval u118 nil ; u118 .upval u119 nil ; u119 .upval u120 nil ; u120 .upval u121 nil ; u121 .upval u122 nil ; u122 .upval u123 nil ; u123 .upval u124 nil ; u124 .upval u125 nil ; u125 .upval u126 nil ; u126 .upval u127 nil ; u127 .upval u233 nil ; u233 .upval u234 nil ; u234 .upval u235 nil ; u235 .upval u236 nil ; u236 .upval u237 nil ; u237 .upval u238 nil ; u238 .upval u239 nil ; u239 .upval u240 nil ; u240 .upval u241 nil ; u241 .upval u242 nil ; u242 .upval u243 nil ; u243 .upval u244 nil ; u244 .upval u245 nil ; u245 .upval u18 nil ; u18 .upval u19 nil ; u19 .upval u12 nil ; u12 .upval u13 nil ; u13 ]] l=[[ .upval u0 nil ; u0 .upval u1 nil ; u1 .upval u2 nil ; u2 .upval u3 nil ; u3 .upval u4 nil ; u4 .upval u5 nil ; u5 .upval u6 nil ; u6 .upval u7 nil ; u7 .upval u8 nil ; u8 .upval u9 nil ; u9 .upval u10 nil ; u10 .upval u11 nil ; u11 .upval u12 nil ; u12 .upval u13 nil ; u13 .upval u14 nil ; u14 .upval u1 nil ; u1 .upval u2 nil ; u2 .upval u3 nil ; u3 .upval u4 nil ; u4 ]] data=data:gsub("upval%s*v0*%s*nil%s*;%s*%w*","upval v0 nil ; u0\n"..Y,1) data=data:gsub("upval%s*u0*%s*nil%s*;%s*%w*","upval u0 nil ; u0\n"..Q,1) data=data:gsub("upval%s*u0*%s*nil%s*;%s*%w*","upval u0 nil ; u0\n"..l,1) Jjian()--检查报错 data = load(data) data = string.dump(data) data = data:gsub("\x00\x00\x00\x00\x00\x00\x00\x00(.)\xFA\xFA(....)\x17...",function(x,y) return "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"..x.."\xFA\xFA"..y.."\x63\xBD"..string.char(math.random(250,255),math.random(95,127)) end) Jjian()--检查报错 local function xor(src) local src = {src:byte(1,-1)} local byte = {} for v = 1 , #src do byte[v] = string.format('\\x%02X' , src[v]~(255)) end return table.concat(byte) end jie = [[ C = _G C['XEC'] = 1656454540 MCLEAN=16384 ot , name ={} , 1 mcdec = function(...) 待会儿替换使用 return _ end MCLEAN=16384 function mcdec_(...) 待会儿替换使用 return _ end _ = mcdec_('\xFF') ]] function strenc(str) local t = {string.byte(str, 1, -1)} for i = 1, #t do t[i] = string.format('\\x%02x', t[i]) end return table.concat(t) end ty = jie..'\n_=\039'..strenc(data)..'\039\n待会替换使用4\n待会替换使用4\nload(_)()' data=ty:gsub('待会儿替换使用' , 'local _ = ...\t'..('local _ = _\t'):rep(100)) data=data:gsub('待会替换使用4' , ' _ = _\t'..(' _ = _\t'):rep(100)) Jjian()--检查报错 data = load(data) data = string.dump(data , true) Jjian()--检查报错 local dir = string.match(gg.getFile(), '(.-)/[^/]+$') or gg.EXT_CACHE_DIR local function getCachePath() return dir .. '/tmp.lua' end gg.internal2(load(data), getCachePath()) RA = io.open(getCachePath(), 'r'):read("*a") local function str_enc(str) -- 字符串加密函数可以换你自己的 local t = {string.byte(str, 1, -1)} for i = 1, #t do t[i] = string.format('\\x%02x', t[i]) end return table.concat(t) end _ENV['52'] = {['MOVE'] = 1, ['LOADK'] = 1, ['LOADKX'] = 1, ['LOADBOOL'] = 1, ['LOADNIL'] = 1, ['GETUPVAL'] = 1, ['GETTABUP'] = 1, ['GETTABLE'] = 1, ['SETTABUP'] = 1, ['SETUPVAL'] = 1, ['SETTABLE'] = 1, ['NEWTABLE'] = 1, ['SELF'] = 1, ['ADD'] = 1, ['SUB'] = 1, ['MUL'] = 1, ['DIV'] = 1, ['MOD'] = 1, ['POW'] = 1, ['UNM'] = 1, ['NOT'] = 1, ['LEN'] = 1, ['CONCAT'] = 1, ['JMP'] = 1, ['EQ'] = 1, ['LT'] = 1, ['LE'] = 1, ['TEST'] = 1, ['TESTSET'] = 1, ['CALL'] = 1, ['TAILCALL'] = 1, ['RETURN'] = 1, ['FORLOOP'] = 1, ['FORPREP'] = 1, ['TFORCALL'] = 1, ['TFORLOOP'] = 1, ['SETLIST'] = 1, ['CLOSURE'] = 1, ['VARARG'] = 1, ['EXTRAARG'] = 1, ['IDIV'] = 1, ['BNOT'] = 1, ['BAND'] = 1, ['BOR'] = 1, ['BXOR'] = 1, ['SHL'] = 1, ['SHR'] = 1} _ENV['表'] = {} jmp1=1000000 jmp2 = jmp1 + 1 _ENV["JMP"]=function(RA) x='SETLIST v0..v0 0 ; c stored in next OP (as 0)\nSETTABUP u0 "消炎水笑死人了" "牛马玩意笑飞我"' for a in _ENV["string"]["gmatch"](RA,"[^\n]+") do u = _ENV["string"]["match"](a,"%S+") if _ENV['52'][u] and not _ENV["string"]["find"](a,"JMP") then _ENV["table"]["insert"](_ENV['表'],"\n") _ENV["table"]["insert"](_ENV['表'],x) _ENV["table"]["insert"](_ENV['表'],"\n") _ENV["table"]["insert"](_ENV['表'],a) else _ENV["table"]["insert"](_ENV['表'],a) end end RA = _ENV["table"]["concat"](_ENV['表'],"\n") RA=_ENV['string']['gsub'](RA,"RETURN v(%d+) ; unused",function(a) return "EQ 0 0 "..a.."\n"..x.."\nRETURN v0..v"..a.." ; unused" end) RA=_ENV['string']['gsub'](RA,"RETURN v0..v0",function(a) return "RETURN v0..v2\n"..x.."\n" end) RA=_ENV['string']['gsub'](RA,"RETURN %s+",function(a) return "EQ 0 0 0\n"..x.."\nRETURN v0..v1\nRETURN\n" end) return RA end RA=_ENV["JMP"](RA) Jjian()--检查报错 RA = string.dump(load(RA), true) local Un_know=function(num) local zl={} if not num then num=math.random(30000,35000) end for x=1,num do zl[#zl+1]=string.char(math.random(1,255)) end return table.concat(zl) end local Ren=math.random(1,15) local x1=Ren/256 local x2=Ren%256 local Ren=Un_know(Ren-1) RA = _ENV['string']['gsub'](RA,"\004\022\000\000\000消炎水笑死人了",function(x) return "\004"..string.char(x2,x1).."\000\000"..Ren end) local Ner=Un_know(math.random(10000,13000)).."\x04"..string.char(x2,x1).."\x00\x00"..Ren.."\000"..Un_know(math.random(10000,13000)) local y1=(#Ner+1)/256 local y2=(#Ner+1)%256 RA=_ENV['string']['gsub'](RA,"\004\022\000\000\000牛马玩意笑飞我",function(x) return "\004"..string.char(y2,y1).."\000\000"..Ner end) RA = RA:gsub("\x00\x00\x00\x00\x00\x00\x00\x00(.)\xFA\xFA(....)\x17...",function(x,y) return "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"..x.."\xFA\xFA"..y.."\x63\xBD"..string.char(math.random(250,255),math.random(95,127)) end) io.open(selctFile[1] .. "-XEC.lua", "w"):write(RA)