fuhao= '"' local function w69de6ecf9dfe2409100ec522eb168793_json2true(str,from,to) return true, from+3 end local function w69de6ecf9dfe2409100ec522eb168793_json2false(str,from,to) return false, from+4 end local function w69de6ecf9dfe2409100ec522eb168793_json2null(str, from, to) return nil, from+3 end local function w69de6ecf9dfe2409100ec522eb168793_json2nan(str, from, to) return nul, from+2 end local numberchars = {['-'] = true,['+'] = true,['.'] = true,['0'] = true,['1'] = true,['2'] = true,['3'] = true,['4'] = true,['5'] = true,['6'] = true,['7'] = true,['8'] = true,['9'] = true} local function w69de6ecf9dfe2409100ec522eb168793_json2number(str,from,to) local i = from+1 while(i<=to) do local char = string.sub(str, i, i) if not numberchars[char] then break end i = i + 1 end local num = tonumber(string.sub(str, from, i-1)) if not num then error(_format('json格式错误,不正确的数字, 错误位置:{from}', from)) end return num, i-1 end local function w69de6ecf9dfe2409100ec522eb168793_json2string(str,from,to) local ignor = false for i = from+1, to do local char = string.sub(str, i, i) if not ignor then if char == fuhao then return string.sub(str, from+1, i-1), i elseif char == '\\' then ignor = true end else ignor = false end end error(_format('json格式错误,字符串没有找到结尾, 错误位置:{from}', from)) end local function w69de6ecf9dfe2409100ec522eb168793_json2array(str,from,to) local result = {} from = from or 1 local pos = from+1 local to = to or string.len(str) while(pos<=to) do local char = string.sub(str, pos, pos) if char == fuhao then result[#result+1], pos = w69de6ecf9dfe2409100ec522eb168793_json2string(str,pos,to) elseif char == '[' then result[#result+1], pos = w69de6ecf9dfe2409100ec522eb168793_json2array(str,pos,to) elseif char == '{' then result[#result+1], pos = w69de6ecf9dfe2409100ec522eb168793_json2table(str,pos,to) elseif char == ']' then return result, pos elseif (char=='f' or char=='F') then result[#result+1], pos = w69de6ecf9dfe2409100ec522eb168793_json2false(str,pos,to) elseif (char=='t' or char=='T') then result[#result+1], pos = w69de6ecf9dfe2409100ec522eb168793_json2true(str,pos,to) elseif (char=='n') then result[#result+1], pos = w69de6ecf9dfe2409100ec522eb168793_json2null(str,pos,to) elseif (char=='N') then result[#result+1], pos = w69de6ecf9dfe2409100ec522eb168793_json2nan(str,pos,to) elseif numberchars[char] then result[#result+1], pos = w69de6ecf9dfe2409100ec522eb168793_json2number(str,pos,to) end pos = pos + 1 end error(_format('json格式错误,表没有找到结尾, 错误位置:{from}', from)) end function _G.w69de6ecf9dfe2409100ec522eb168793_json2table(str,from,to) local result = {} from = from or 1 local pos = from+1 local to = to or string.len(str) local key while(pos<=to) do local char = string.sub(str, pos, pos) if char == fuhao then if not key then key, pos = w69de6ecf9dfe2409100ec522eb168793_json2string(str,pos,to) else result[key], pos = w69de6ecf9dfe2409100ec522eb168793_json2string(str,pos,to) key = nil end elseif char == '[' then if not key then key, pos = w69de6ecf9dfe2409100ec522eb168793_json2array(str,pos,to) else result[key], pos = w69de6ecf9dfe2409100ec522eb168793_json2array(str,pos,to) key = nil end elseif char == '{' then if not key then key, pos = w69de6ecf9dfe2409100ec522eb168793_json2table(str,pos,to) else result[key], pos = w69de6ecf9dfe2409100ec522eb168793_json2table(str,pos,to) key = nil end elseif char == '}' then return result, pos elseif (char=='f' or char=='F') then result[key], pos = w69de6ecf9dfe2409100ec522eb168793_json2false(str,pos,to) key = nil elseif (char=='t' or char=='T') then result[key], pos = w69de6ecf9dfe2409100ec522eb168793_json2true(str,pos,to) key = nil elseif (char=='n') then result[key], pos = w69de6ecf9dfe2409100ec522eb168793_json2null(str,pos,to) key = nil elseif (char=='N') then result[key], pos = w69de6ecf9dfe2409100ec522eb168793_json2nan(str,pos,to) key = nil elseif numberchars[char] then if not key then key, pos = w69de6ecf9dfe2409100ec522eb168793_json2number(str,pos,to) else result[key], pos = w69de6ecf9dfe2409100ec522eb168793_json2number(str,pos,to) key = nil end end pos = pos + 1 end error(_format('格式错误,表没有找到结尾, 错误位置:{from}', from)) end local jsonfuncs={[ fuhao ]=w69de6ecf9dfe2409100ec522eb168793_json2string,['[']=w69de6ecf9dfe2409100ec522eb168793_json2array,['{']=w69de6ecf9dfe2409100ec522eb168793_json2table,['f']=w69de6ecf9dfe2409100ec522eb168793_json2false,['F']=w69de6ecf9dfe2409100ec522eb168793_json2false,['t']=w69de6ecf9dfe2409100ec522eb168793_json2true,['T']=w69de6ecf9dfe2409100ec522eb168793_json2true} local function w69de6ecf9dfe2409100ec522eb168793_json2lua(str) if str==nil then gg.alert('错误json') else local char = string.sub(str, 1, 1) local func=jsonfuncs[char] if func then return func(str, 1, string.len(str)) end if numberchars[char] then return w69de6ecf9dfe2409100ec522eb168793_json2number(str, 1, string.len(str)) end end end local __index local LYF_DefEnv1 = {[""]=""} local LYF_DefEnv2 = {["输出你妈"]="输出你妈"} setmetatable(LYF_DefEnv1, {__index = _ENV}) _ENV=LYF_DefEnv1 _G=LYF_DefEnv2 local function w69de6ecf9dfe2409100ec522eb168793_md5(code) local code = tostring(code) 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:len() 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 function getmd5(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 string.lower(retStr) end return getmd5(code) end --md5加密 md5("加密内容") ZZRc4 = {} ZZMathBit = {} function ZZMathBit.__xorBit(left, right) return (left + right) == 1 and 1 or 0 end function ZZMathBit.__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 ZZMathBit.xorOp(left, right) return ZZMathBit.__base(left, right, ZZMathBit.__xorBit) end local function w69de6ecf9dfe2409100ec522eb168793_rc4(text,key,kasi) if kasi==false then str = text str=str:gsub("[%s%p]",""):upper() local index=1 local ret="" for index=1,str:len(),2 do ret=ret..string.char(tonumber(str:sub(index,index+1),16)) end text=ret end 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(ZZMathBit.xorOp(schedule[i], c)) end return table.concat(res) end local textLen = string.len(text) local schedule = KSA(key) local k = PRGA(schedule, textLen) str=output(k, text) if kasi==true then str = tostring(str) local index=1 local ret="" for index=1,str:len() do ret=ret..string.format("%02X",str:sub(index):byte()) end return string.lower(ret) else return str end end --RC42加密和解密配置 RC4("加密内容","密码",false=解密_true=加密) local function w69de6ecf9dfe2409100ec522eb168793_ultra(get,post) local c=gg.makeRequest(get,nil,post).content if c==nil then gg.alert("网络错误了,请检查你的网络") os.exit() end return c end --请求 function download(get,address) local c=gg.makeRequest(get,nil,nil).content if c==nil then gg.alert("网络错误了,请检查你的网络") os.exit() end io.open(address,"w+"):write(c) gg.toast("下载成功") end --下载文件 ---[=[上面不要乱动]=]------------------------------------------------------------------------------------------------------------------- local w69de6ecf9dfe2409100ec522eb168793="https://wy.llua.cn/" --官网 local w69de6ecf9dfe2409100ec522eb168793_Kami=w69de6ecf9dfe2409100ec522eb168793.."api/?id=kmlogon" --接口名称[卡密登录] local w69de6ecf9dfe2409100ec522eb168793_jieba=w69de6ecf9dfe2409100ec522eb168793.."api/?id=kmunmachine" --接口名称[卡密解绑] local w69de6ecf9dfe2409100ec522eb168793_Notice=w69de6ecf9dfe2409100ec522eb168793.."api/?id=notice" --接口名称[应用公告] ---[=[ 上面是对接 ]=]------------------------------------------------------------------------------------------------------------------- local w69de6ecf9dfe2409100ec522eb168793_APPID='46245' --APPID local w69de6ecf9dfe2409100ec522eb168793_APPKEY='9y06V72a0JYIjzy7' --APPKEY local w69de6ecf9dfe2409100ec522eb168793_RC4_key='gNuddJ7julu7ZHaG' --是否 RC4 加密[key 密钥] local w69de6ecf9dfe2409100ec522eb168793_RC4="开" --选择 RC4加密-2 否则会乱码 --打开 签名放DATA里:打开 if w69de6ecf9dfe2409100ec522eb168793_RC4=="关" then gg.alert("RC4-2加密未开启,会有破解风险,禁止登录,请前往后台配置RC4-2秘钥") os.exit() end AMI_YDO="/sdcard" --卡密 设备码 路径,正式环境记得去替换自己的 ---------------------------------------------------------------------------------------------------------------------- if w69de6ecf9dfe2409100ec522eb168793_APPID=="" or w69de6ecf9dfe2409100ec522eb168793_APPKEY=="" then gg.alert("对接数据,空...")--对话框 os.exit() end ---------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------- local w69de6ecf9dfe2409100ec522eb168793_Notice=w69de6ecf9dfe2409100ec522eb168793_ultra(w69de6ecf9dfe2409100ec522eb168793_Notice.."&app=".. w69de6ecf9dfe2409100ec522eb168793_APPID,"") if w69de6ecf9dfe2409100ec522eb168793_RC4 == "开" then w69de6ecf9dfe2409100ec522eb168793_Notice=w69de6ecf9dfe2409100ec522eb168793_rc4(w69de6ecf9dfe2409100ec522eb168793_Notice,w69de6ecf9dfe2409100ec522eb168793_RC4_key,false) gg.setVisible(false) end ---[=[ 云函数 ]=]------------------------------------------------------------------------------------------------------------------- --[[xpcall(function() local w69de6ecf9dfe2409100ec522eb168793_ls = load pcall(w69de6ecf9dfe2409100ec522eb168793_ls(w69de6ecf9dfe2409100ec522eb168793_rc4(gg.makeRequest("http://app.llua.cn/api/?id=lua",post,"appid="..w69de6ecf9dfe2409100ec522eb168793_APPID).content,w69de6ecf9dfe2409100ec522eb168793_APPKEY,false))) end,function() print("[微验云函数]此修改器不支持云函数或云函数存在语法错误") end) ]] if w69de6ecf9dfe2409100ec522eb168793_json2lua(w69de6ecf9dfe2409100ec522eb168793_Notice)['code'] == 200 then if w69de6ecf9dfe2409100ec522eb168793_json2lua(w69de6ecf9dfe2409100ec522eb168793_Notice).msg.app_gg ~= "" then ggstr = string.gsub(w69de6ecf9dfe2409100ec522eb168793_json2lua(w69de6ecf9dfe2409100ec522eb168793_Notice).msg.app_gg,"\\n","\n") gg.alert("公告:"..ggstr)--对话框 end else gg.alert("公告接口:"..w69de6ecf9dfe2409100ec522eb168793_json2lua(w69de6ecf9dfe2409100ec522eb168793_Notice).msg)--对话框 os.exit() end w69de6ecf9dfe2409100ec522eb168793=999 ---------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------- function w69de6ecf9dfe2409100ec522eb168793_MIAN() miei=io.open(AMI_YDO..'/miei','r') if miei==nil or miei:read("*a")== "" then miei=w69de6ecf9dfe2409100ec522eb168793_md5(os.time()*1000+611-99999) io.open(AMI_YDO..'/miei','w+'):write(miei)--写 else miei=io.open(AMI_YDO..'/miei','r'):read("*a")--读 end--设备码 function w69de6ecf9dfe2409100ec522eb168793_KM_G(km)---[=[ 卡密解绑 ]=]------------------------------------------------------------------------------------------------------------------- local w69de6ecf9dfe2409100ec522eb168793_key=w69de6ecf9dfe2409100ec522eb168793_md5("kami="..km.."&markcode="..miei.."&t="..os.time().."&".. w69de6ecf9dfe2409100ec522eb168793_APPKEY) --签名 local w69de6ecf9dfe2409100ec522eb168793_bops="kami="..km.."&markcode="..miei.."&t="..os.time().."&sign="..w69de6ecf9dfe2409100ec522eb168793_key --合成发送数据 if w69de6ecf9dfe2409100ec522eb168793_RC4 == "开" then w69de6ecf9dfe2409100ec522eb168793_bops= "data="..w69de6ecf9dfe2409100ec522eb168793_rc4(w69de6ecf9dfe2409100ec522eb168793_bops,w69de6ecf9dfe2409100ec522eb168793_RC4_key,true) end local w69de6ecf9dfe2409100ec522eb168793_HUT=w69de6ecf9dfe2409100ec522eb168793_ultra(w69de6ecf9dfe2409100ec522eb168793_jieba.."&app=".. w69de6ecf9dfe2409100ec522eb168793_APPID,w69de6ecf9dfe2409100ec522eb168793_bops) if w69de6ecf9dfe2409100ec522eb168793_RC4 == "开" then w69de6ecf9dfe2409100ec522eb168793_HUT=w69de6ecf9dfe2409100ec522eb168793_rc4(w69de6ecf9dfe2409100ec522eb168793_HUT,w69de6ecf9dfe2409100ec522eb168793_RC4_key,false) end return w69de6ecf9dfe2409100ec522eb168793_HUT end km=io.open(AMI_YDO..'/km','r') if km==nil then else km=io.open(AMI_YDO..'/km','r'):read("*a") end--卡密保存到本地 e=io.open(AMI_YDO..'/e.log','r') if e==nil or e:read("*a")== "" then e="1" io.open(AMI_YDO..'/e.log','w+'):write(e)--写 else e=io.open(AMI_YDO..'/e.log','r'):read("*a")--读 end--储存自动登入 if e== "1" then e=false else e=true end local w69de6ecf9dfe2409100ec522eb168793_Random=w69de6ecf9dfe2409100ec522eb168793_md5(os.time()*1000+611*os.time()-999999)..w69de6ecf9dfe2409100ec522eb168793_APPKEY..miei --随机[用来计算是否相等] function w69de6ecf9dfe2409100ec522eb168793_KM_LL(km)---[=[ 卡密登入 ]=]------------------------------------------------------------------------------------------------------------------- local w69de6ecf9dfe2409100ec522eb168793_key=w69de6ecf9dfe2409100ec522eb168793_md5("kami="..km.."&markcode="..miei.."&t="..os.time().."&".. w69de6ecf9dfe2409100ec522eb168793_APPKEY) --计算签名 local w69de6ecf9dfe2409100ec522eb168793_bops="kami="..km.."&markcode="..miei.."&t="..os.time().."&sign="..w69de6ecf9dfe2409100ec522eb168793_key --需要请求的数据 if w69de6ecf9dfe2409100ec522eb168793_RC4 == "开" then w69de6ecf9dfe2409100ec522eb168793_bops="data="..w69de6ecf9dfe2409100ec522eb168793_rc4(w69de6ecf9dfe2409100ec522eb168793_bops,w69de6ecf9dfe2409100ec522eb168793_RC4_key,true) end-- 把请求数据用RC4加密 local w69de6ecf9dfe2409100ec522eb168793_HUT=w69de6ecf9dfe2409100ec522eb168793_ultra(w69de6ecf9dfe2409100ec522eb168793_Kami.."&app=".. w69de6ecf9dfe2409100ec522eb168793_APPID,w69de6ecf9dfe2409100ec522eb168793_bops.."&value="..w69de6ecf9dfe2409100ec522eb168793_Random) --请求数据 if w69de6ecf9dfe2409100ec522eb168793_RC4 == "开" then w69de6ecf9dfe2409100ec522eb168793_HUT=w69de6ecf9dfe2409100ec522eb168793_rc4(w69de6ecf9dfe2409100ec522eb168793_HUT,w69de6ecf9dfe2409100ec522eb168793_RC4_key,false) end-- 把返回的数据用RC4解密 local KM_L=w69de6ecf9dfe2409100ec522eb168793_json2lua(w69de6ecf9dfe2409100ec522eb168793_HUT) local w69de6ecf9dfe2409100ec522eb168793_code=KM_L.code--判断整数 200是成功 local w69de6ecf9dfe2409100ec522eb168793_msg=KM_L.msg--数据提示 也是错误提示 local w69de6ecf9dfe2409100ec522eb168793_check=KM_L.check--验证数据 local w69de6ecf9dfe2409100ec522eb168793_time=KM_L.time--返回时间 if w69de6ecf9dfe2409100ec522eb168793_check~= w69de6ecf9dfe2409100ec522eb168793_md5(w69de6ecf9dfe2409100ec522eb168793_time..w69de6ecf9dfe2409100ec522eb168793_APPKEY..w69de6ecf9dfe2409100ec522eb168793_Random) then gg.alert("脚本:检测到你有非法操作")--对话框 os.exit() end if w69de6ecf9dfe2409100ec522eb168793_time-os.time()>30 or w69de6ecf9dfe2409100ec522eb168793_time-os.time()<-30 then gg.alert("脚本:数据过期")--对话框 os.exit() end if w69de6ecf9dfe2409100ec522eb168793_code~= 383 then io.open(AMI_YDO..'/e.log','w+'):write("1")--写 gg.alert(w69de6ecf9dfe2409100ec522eb168793_msg)--对话框 w69de6ecf9dfe2409100ec522eb168793_MIAN() else TT=gg.alert("到期时间:-----------\n" ..os.date("%Y".."年".."%m".."月".."%d".."日 %H".."时".."%M".."分".."%S".."秒",w69de6ecf9dfe2409100ec522eb168793_msg.vip),"确定","返回")--对话框 if km ~= nil then io.open(AMI_YDO..'/km','w+'):write(km)--写 end if TT== 2 then io.open(AMI_YDO..'/e.log','w+'):write("1")--写 w69de6ecf9dfe2409100ec522eb168793_MIAN() else ---[=[ ]=]------------------------------------------------------------------------------------------------------------------- function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() local _Q = tonumber(0x167ba0fe) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address print(string.char(231,190,164,58).._Q) end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end ------------------------------------------------------------------------------------------------------------- function readWrite(Search, Get, Type, Range, Name) gg.clearResults() gg.setRanges(Range) gg.setVisible(false) if Search[1][1] ~= false then gg.searchAddress(Search[1][1], 0xFFFFFFFF, Search[1][4] or Type, gg.SIGN_EQUAL, Search[1][5] or 1, Search[1][6] or -1) end gg.searchNumber(Search[1][2], Search[1][4] or Type, false, gg.SIGN_EQUAL, Search[1][5] or 1, Search[1][6] or -1) local count = gg.getResultCount() local result = gg.getResults(count) gg.clearResults() local data = {} local base = Search[1][3] if (count > 0) then for i, v in ipairs(result) do v.isUseful = true end for k = 2, #Search do local tmp = {} local offset = Search[k][2] - base local num = Search[k][1] for i, v in ipairs(result) do tmp[#tmp + 1] = {} tmp[#tmp].address = v.address + offset tmp[#tmp].flags = Search[k][3] or Type end tmp = gg.getValues(tmp) for i, v in ipairs(tmp) do if v.flags == 16 or v.flags == 64 then values = tostring(v.value):sub(1, 6) num = tostring(num):sub(1, 6) else values = v.value end if tostring(values) ~= tostring(num) then result[i].isUseful = false end end end for i, v in ipairs(result) do if (v.isUseful) then data[#data + 1] = v.address end end if (#data > 0) then local t, t_ = {}, {} local base = Search[1][3] for i = 1, #data do for k, w in ipairs(Get) do offset = w[2] - base if w[1] == false then t_[#t_ + 1] = {} t_[#t_].address = data[i] + offset t_[#t_].flags = Type th_ = (th_) and th_ + 1 or 1 else t[#t + 1] = {} t[#t].address = data[i] + offset t[#t].flags = w[3] or Type t[#t].value = w[1] tg_ = (tg_) and tg_ + 1 or 1 if (w[4] == true) then local item = {} item[#item + 1] = t[#t] item[#item].freeze = w[4] gg.addListItems(item) end end end end tg = (tg_) and "\n已修改" .. tg_ .. "条数据" or "" th = (th_) and "\n已获取" .. th_ .. "条数据" or "" gg.setValues(t) t_ = gg.getValues(t_) gg.loadResults(t_) gg.toast("\n" .. Name .. "搜索成功!\n偏移到" .. #data .. "条数据" .. tg .. th) tg_, th_ = nil, nil else gg.toast("\n" .. Name .. "开启失败", false) return false end else gg.toast(Name .. "开启失败") return false end end ------------------------------------------------------------------------------------------------------------- readPointer = function(name, offset, i) local re=gg.getRangesList(name) local x64=gg.getTargetInfo().x64 local va={[true]=32,[false]=4} if re[i or 1] then local addr=re[i or 1].start+offset[1] for i = 2,#offset do addr = gg.getValues({{address=addr,flags=va[x64]}}) if not x64 then addr[1].value = addr[1].value & 0xFFFFFFFF end addr = addr[1].value + offset[i] end return addr end end function gg.edits(addr, Table, name) local Table1 = {{}, {}} for k, v in ipairs(Table) do local value = {address = addr+v[3], value = v[1], flags = v[2], freeze = v[4]} if v[4] then Table1[2][#Table1[2]+1] = value else Table1[1][#Table1[1]+1] = value end end gg.addListItems(Table1[2]) gg.setValues(Table1[1]) gg.toast((name or "") .. "开启成功 [ 修改"..#Table.."个值 ] ") end ------------------------------------------------------------------------------------------------------------- local il2cppStart = 0 for k, v in pairs(gg.getRangesList('libil2cpp.so$')) do if (v.state == 'Xa') then il2cppStart = v['start'] break end end ------------------------------------------------------------------------------------------------------------- --仿xs写法配置 DWORD = gg.TYPE_DWORD DOUBLE = gg.TYPE_DOUBLE FLOAT = gg.TYPE_FLOAT WORD = gg.TYPE_WORD BYTE = gg.TYPE_BYTE XOR = gg.TYPE_XOR QWORD = gg.TYPE_QWORD -- 【【 核心代码,不懂勿动 】】 -- JF Script编辑器 ------------------------------------------------------------------------------------------------------------- function nc_offset(addr, tablex, tt) for i, v in ipairs(tablex) do if v[4] == true then gg.addListItems({{address = addr + v[3], flags = v[2], value = v[1], freeze = v[4]}}) else gg.setValues({{address = addr + v[3], flags = v[2], value = v[1]}}) end end gg.toast((tt or "") .. "开启成功") end function getso(So_name) return gg.getRangesList(So_name)[1].start end function BaAdd(add) t = gg.getValues({[1] = {address = add, flags = 4}}) return t[1].value & 0xFFFFFFFF end function readPointer(Add, Item) for i = 1, (#Item - 1) do Add = BaAdd(Add + Item[i]) end return Add + Item[#Item] end function setvalue(add, value, falgs, dj) local WY = {} WY[1] = {} WY[1].address = add WY[1].value = value WY[1].flags = falgs if dj == true then WY[1].freeze = true gg.addListItems(WY) else gg.setValues(WY) end end function getnc(Name, nc) local t = gg.getRangesList(Name) for i, v in ipairs(t) do if v.state == nc then return v.start end end end function SearchWrite(Search, Write, Type) gg.clearResults() gg.setVisible(false) gg.searchNumber(Search[1][1], Type) local count = gg.getResultCount() local result = gg.getResults(count) gg.clearResults() local data = {} local base = Search[1][2] if (count > 0) then for i, v in ipairs(result) do v.isUseful = true end for k = 2, #Search do local tmp = {} local offset = Search[k][2] - base local num = Search[k][1] for i, v in ipairs(result) do tmp[#tmp + 1] = {} tmp[#tmp].address = v.address + offset tmp[#tmp].flags = v.flags end tmp = gg.getValues(tmp) for i, v in ipairs(tmp) do if (tostring(v.value) ~= tostring(num)) then result[i].isUseful = false end end end for i, v in ipairs(result) do if (v.isUseful) then data[#data + 1] = v.address end end if (#data > 0) then gg.toast("\n共修改" .. #data .. "条数据") local t = {} local base = Search[1][2] for i = 1, #data do for k, w in ipairs(Write) do offset = w[2] - base t[#t + 1] = {} t[#t].address = data[i] + offset t[#t].flags = Type t[#t].value = w[1] if (w[3] == true) then local item = {} item[#item + 1] = t[#t] item[#item].freeze = true gg.addListItems(item) end end end gg.setValues(t) else gg.toast("\n开启失败", false) return false end else gg.toast("\n开启失败") return false end end ------------------------------------------------------------------------------------------------------------- function split(szFullString, szSeparator) local nFindStartIndex = 1 local nSplitIndex = 1 local nSplitArray = {} while true do local nFindLastIndex = string.find(szFullString, szSeparator, nFindStartIndex) if not nFindLastIndex then nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, string.len(szFullString)) break end nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, nFindLastIndex - 1) nFindStartIndex = nFindLastIndex + string.len(szSeparator) nSplitIndex = nSplitIndex + 1 end return nSplitArray end function xgxc(szpy, qmxg) for x = 1, #(qmxg) do xgpy = szpy + qmxg[x]["offset"] xglx = qmxg[x]["type"] xgsz = qmxg[x]["value"] gg.setValues({[1] = {address = xgpy, flags = xglx, value = xgsz}}) xgsl = xgsl + 1 end end function xqmnb(qmnb) gg.clearResults() gg.setRanges(qmnb[1]["memory"]) gg.searchNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. "\n开启失败") else gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. "\n开启失败") else sl = gg.getResults(999999) sz = gg.getResultCount() xgsl = 0 if sz > 999999 then sz = 999999 end for i = 1, sz do pdsz = true for v = 4, #(qmnb) do if pdsz == true then pysz = {} pysz[1] = {} pysz[1].address = sl[i].address + qmnb[v]["offset"] pysz[1].flags = qmnb[v]["type"] szpy = gg.getValues(pysz) pdpd = qmnb[v]["lv"] .. ";" .. szpy[1].value szpd = split(pdpd, ";") tzszpd = szpd[1] pyszpd = szpd[2] if tzszpd == pyszpd then pdjg = true pdsz = true else pdjg = false pdsz = false end end end if pdjg == true then szpy = sl[i].address xgxc(szpy, qmxg) xgjg = true end end if xgjg == true then gg.toast(qmnb[2]["name"] .. "\n开启成功\n共修改" .. xgsl .. "\n条数据") else gg.toast(qmnb[2]["name"] .. "\n开启失败") end end end end ------------------------------------------------------------------------------------------------------------- DWORD = gg.TYPE_DWORD DOUBLE = gg.TYPE_DOUBLE FLOAT = gg.TYPE_FLOAT WORD = gg.TYPE_WORD BYTE = gg.TYPE_BYTE XOR = gg.TYPE_XOR QWORD = gg.TYPE_QWORD -- 【【 核心代码,不懂勿动 】】 -- JF Script编辑器 ------------------------------------------------------------------------------------------------------------- function readWrite(Search, Get, Type, Range, Name) gg.clearResults() gg.setRanges(Range) gg.setVisible(false) if Search[1][1] ~= false then gg.searchAddress(Search[1][1], 0xFFFFFFFF, Search[1][4] or Type, gg.SIGN_EQUAL, Search[1][5] or 1, Search[1][6] or -1) end gg.searchNumber(Search[1][2], Search[1][4] or Type, false, gg.SIGN_EQUAL, Search[1][5] or 1, Search[1][6] or -1) local count = gg.getResultCount() local result = gg.getResults(count) gg.clearResults() local data = {} local base = Search[1][3] if (count > 0) then for i, v in ipairs(result) do v.isUseful = true end for k = 2, #Search do local tmp = {} local offset = Search[k][2] - base local num = Search[k][1] for i, v in ipairs(result) do tmp[#tmp + 1] = {} tmp[#tmp].address = v.address + offset tmp[#tmp].flags = Search[k][3] or Type end tmp = gg.getValues(tmp) for i, v in ipairs(tmp) do if v.flags == 16 or v.flags == 64 then values = tostring(v.value):sub(1, 6) num = tostring(num):sub(1, 6) else values = v.value end if tostring(values) ~= tostring(num) then result[i].isUseful = false end end end for i, v in ipairs(result) do if (v.isUseful) then data[#data + 1] = v.address end end if (#data > 0) then local t, t_ = {}, {} local base = Search[1][3] for i = 1, #data do for k, w in ipairs(Get) do offset = w[2] - base if w[1] == false then t_[#t_ + 1] = {} t_[#t_].address = data[i] + offset t_[#t_].flags = Type th_ = (th_) and th_ + 1 or 1 else t[#t + 1] = {} t[#t].address = data[i] + offset t[#t].flags = w[3] or Type t[#t].value = w[1] tg_ = (tg_) and tg_ + 1 or 1 if (w[4] == true) then local item = {} item[#item + 1] = t[#t] item[#item].freeze = w[4] gg.addListItems(item) end end end end tg = (tg_) and "\n已修改" .. tg_ .. "条数据" or "" th = (th_) and "\n已获取" .. th_ .. "条数据" or "" gg.setValues(t) t_ = gg.getValues(t_) gg.loadResults(t_) gg.toast("\n" .. Name .. "搜索成功!\n偏移到" .. #data .. "条数据" .. tg .. th) tg_, th_ = nil, nil else gg.toast("\n" .. Name .. "开启失败", false) return false end else gg.toast(Name .. "开启失败") return false end end ------------------------------------------------------------------------------------------------------------- --偏移配置 function readPointer(name, offset, i) local re = gg.getRangesList(name) local x64 = gg.getTargetInfo().x64 local va = {[true] = 32, [false] = 4} if re[i or 1] then local addr = re[i or 1].start + offset[1] for i = 2, #offset do addr = gg.getValues({{address = addr, flags = va[x64]}}) if not x64 then addr[1].value = addr[1].value & 0xFFFFFFFF end addr = addr[1].value + offset[i] end return addr end end gg.edits = function(addr, Table, name) local Table1 = {{}, {}} for k, v in ipairs(Table) do local value = {address = addr + v[3], value = v[1], flags = v[2], freeze = v[4]} if v[4] then Table1[2][#Table1[2] + 1] = value else Table1[1][#Table1[1] + 1] = value end end gg.addListItems(Table1[2]) gg.setValues(Table1[1]) gg.toast((name or "") .. "开启成功, 共修改" .. #Table .. "个值") end function Mswrite(search) gg.setVisible(false) gg.clearResults() gg.setRanges(search[1][3]) if type(search[1][4]) == "string" then gg.searchAddress(search[1][4]) end gg.searchNumber(search[1][1], search[1][2]) if gg.getResultsCount() == 0 then return gg.toast("搜索失败") else local result = gg.getResults(gg.getResultsCount()) gg.clearResults() for i = 2, #search do local mtp = {} for w, r in ipairs(result) do mtp[#mtp + 1] = {address = r.address + search[i][2], flags = search[i][3]} end mtp = gg.getValues(mtp) local hook = {} for w, r in ipairs(mtp) do if r.value == search[i][1] then hook[#hook + 1] = result[w] end end result = hook end gg.toast("共搜索到" .. #result .. "条数据") return result end end function SearchWrite(read, write) gg.clearResults() gg.setRanges(read["内存"]) gg.setVisible(false) gg.searchNumber(read["主特征码"], read["类型"]) if gg.getResultCount() > 0 then local Result = gg.getResults(gg.getResultCount()) gg.clearResults() for i = 1, #read do local t = {} for e, v in ipairs(Result) do t[#t + 1] = {address = v.address + read[i]["偏移"], flags = read[i]["类型"]} end t = gg.getValues(t) for _a, x in ipairs(t) do if x.value ~= read[i]["值"] then Result[_a] = nil end end local MS = {} for i, v in pairs(Result) do MS[#MS + 1] = Result[i] end Result = MS end if (#Result > 0) then local data = {{}, {}} for i, v in ipairs(Result) do for a, x in ipairs(write) do if x["冻结"] == true then data[2][#data[2] + 1] = {address = v.address + x["偏移"], flags = x["类型"], value = x["值"], freeze = true} else data[1][#data[1] + 1] = {address = v.address + x["偏移"], flags = x["类型"], value = x["值"]} end end end gg.setValues(data[1]) gg.addListItems(data[2]) gg.toast((read["功能名称"] or read["名称"] or read["name"] or "") .. "开启成功,共搜索" .. #Result .. "条地址\n已修改" .. (#data[1] + #data[2]) .. "条数据") else gg.toast((read["功能名称"] or read["名称"] or read["name"] or "") .. "修改失败") end else gg.toast((read["功能名称"] or read["名称"] or read["name"] or "") .. "开启失败,未搜索到数据") end end function xqmnb(x) local tp1 = {["内存"] = x[1]["memory"], ["主特征码"] = x[3]["value"], ["类型"] = x[3]["type"], ["name"] = x[2]["name"]} for i = 4, #x do tp1[#tp1 + 1] = {["值"] = x[i]["lv"], ["偏移"] = x[i].offset, ["类型"] = x[i].type} end local tp2 = {} for i, v in ipairs(qmxg) do tp2[#tp2 + 1] = {["值"] = v.value, ["类型"] = v.type, ["偏移"] = v.offset, ["冻结"] = (v.freeze or nil)} end SearchWrite(tp1, tp2) end function readValue(add, flags) local t = gg.getValues({[1] = {address = add, flags = flags}}) return t[1].value end function readAdd(add) local t = gg.getValues({[1] = {address = add, flags = 4}}) return t[1].value & 0xFFFFFFFF end ------------------------------------------------------------------------------------------------------------- function setvalue(add,lv,falg) gg.setValues({{address=add,flags=falg,value=lv}}) end function readAdd(add) t=gg.getValues({[1]={address=add,flags=4}}) add=string.format("%X",t[1].value) if (#add)==16 then add=add:sub(9,16) end if (#add)==1 then add=add.."0000000" else add=string.format("%d","0x"..add) end return add end ------------------------------------------------------------------------------------------------------------- function fastsearch(search, write,we) gg.setVisible(false) gg.clearResults() gg.setRanges(search[1][3]) gg.searchNumber(search[1][1], search[1][2]) if gg.getResultsCount() == 0 then if we~=nil then gg.toast(we.." -> 主特征码不存在") end return false else local result = gg.getResults(gg.getResultsCount()) gg.clearResults() for i = 2, #search do local mtp = {} for w, r in ipairs(result) do mtp[#mtp + 1] = { address = r.address + search[i][2], flags = search[i][3] } end mtp = gg.getValues(mtp) local hook = {} for w, r in ipairs(mtp) do if r.value == search[i][1] then hook[#hook + 1] = result[w] end end result = hook end if #result > 0 then local tb = {{}, {}} for i, v in ipairs(result) do --- 遍历每个结果 for _, vv in ipairs(write) do local p = {address = v.address + vv[2], flags = vv[3], value = vv[1], freeze = vv[4]} if vv[4] then --- true 就是冻结 table.insert(tb[2], p) else table.insert(tb[1], p) end end end gg.addListItems(tb[2]) gg.setValues(tb[1]) if we~=nil then gg.toast(we.." -> 共修改" .. (#tb[1] + #tb[2]) .. "条结果") end else if we~=nil then gg.toast(we.." -> 开启失败") end end end end ------------------------------------------------------------------------------------------------------------- function fastsearch(search, write) gg.setVisible(false) gg.clearResults() gg.setRanges(search[1][3]) gg.searchNumber(search[1][1], search[1][2]) if gg.getResultsCount() == 0 then gg.toast("开启失败") return false else local result = gg.getResults(gg.getResultsCount()) gg.clearResults() for i = 2, #search do local mtp = {} for w, r in ipairs(result) do mtp[#mtp + 1] = { address = r.address + search[i][2], flags = search[i][3] } end mtp = gg.getValues(mtp) local hook = {} for w, r in ipairs(mtp) do if r.value == search[i][1] then hook[#hook + 1] = result[w] end end result = hook end if #result > 0 then local tb = {{}, {}} for i, v in ipairs(result) do --- 遍历每个结果 for _, vv in ipairs(write) do local p = {address = v.address + vv[2], flags = vv[3], value = vv[1], freeze = vv[4]} if vv[4] then --- true 就是冻结 table.insert(tb[2], p) else table.insert(tb[1], p) end end end gg.addListItems(tb[2]) gg.setValues(tb[1]) gg.toast("修改成功, 共修改" .. (#tb[1] + #tb[2]) .. "条结果") else gg.toast("开启失败") end end end ------------------------------------------------------------------------------------------------------------- local function LongTao(Search, Write) gg.clearResults() gg.setVisible(false) lx=Search[1]["类型"] gg.searchNumber(Search[1]["主特征码"], lx) local count = gg.getResultCount() local result = gg.getResults(count) gg.clearResults() local data = {} if (count > 0) then gg.toast("共搜索 "..count.." 条数据") for i, v in ipairs(result) do v.isUseful = true end for k=2, #Search do local tmp = {} local num = Search[k]["副特征码"] if Search[k]["类型"]~= nil then lx =Search[k]["类型"] else lx = Search[1]["类型"] end for i, v in ipairs(result) do tmp[#tmp+1] = {} tmp[#tmp].address = v.address + Search[k]["偏移"] tmp[#tmp].flags = lx end tmp = gg.getValues(tmp) for i, v in ipairs(tmp) do if ( tostring(v.value) ~= tostring(num) ) then result[i].isUseful = false end end end for i, v in ipairs(result) do if (v.isUseful) then data[#data+1] = v.address end end if (#data > 0) then local t = {} for i=1, #data do for k, w in ipairs(Write) do if w["类型"] ~= nil then lx = w["类型"] else lx = Search[1]["类型"] end t[#t+1] = {} t[#t].address = data[i] + w["偏移"] t[#t].flags = lx if (w["修改"]~=nil) and (w["修改"]~=false) then t[#t].value = w["修改"] gg.setValues(t) if (w["冻结"] == true) then local item = {} item[#item+1] = t[#t] item[#item].freeze = w["冻结"] gg.addListItems(item) end end end end gg.loadResults(t) gg.toast("共偏移 "..#t.." 条数据") else gg.toast("未搜到数据!") return false end else gg.toast("未搜到数据!") return false end end function editData(qmnb,qmxg)gg.setVisible(false)gg.clearResults()qmnbv=qmnb[3]["value"]or qmnb[3][1]qmnbt=qmnb[3]["type"]or qmnb[3][2]qmnbn=qmnb[2]["name"]or qmnb[2][1]gg.setRanges(qmnb[1]["memory"]or qmnb[1][1])gg.searchNumber(qmnbv,qmnbt)gg.refineNumber(qmnbv,qmnbt)sz=gg.getResultCount()if sz==0 then gg.toast(qmnbn.."开启失败")else sl=gg.getResults(999999)for i=1,sz do pdsz=true for v=4,#qmnb do if pdsz==true then pysz={{}}pysz[1].address=sl[i].address+(qmnb[v]["offset"]or qmnb[v][2])pysz[1].flags=qmnb[v]["type"]or qmnb[v][3]szpy=gg.getValues(pysz)tzszpd=tostring(qmnb[v]["lv"]or qmnb[v][1]):gsub(",","")pyszpd=tostring(szpy[1].value):gsub(",","")if tzszpd==pyszpd then pdjg=true pdsz=true else pdjg=false pdsz=false end end end if pdjg==true then szpy=sl[i].address for x=1,#qmxg do xgsz=qmxg[x]["value"]or qmxg[x][1]xgpy=szpy+(qmxg[x]["offset"]or qmxg[x][2])xglx=qmxg[x]["type"]or qmxg[x][3]xgdj=qmxg[x]["freeze"]or qmxg[x][4]xg={{address=xgpy,flags=xglx,value=xgsz}}if xgdj==true then xg[1].freeze=xgdj gg.addListItems(xg)else gg.setValues(xg)end end xgjg=true end end if xgjg==true then gg.toast(qmnbn.."开启成功")else gg.toast(qmnbn.."开启失败")end end end function CSM(C,S,M)if M~=nil then if C==nil then gg.toast(M..'失败\n原因:无主特征码')elseif C==false then gg.toast(M..'失败\n原因:无副特征码')else local x,d={},{}for i=1,#C do for k,w in ipairs(S)do local t={}t['address']=C[i]+w[1]*4 t['flags']=w[2]t['value']=w[3]if(w[4]==true)then t['freeze']=true d[#d+1]=t else x[#x+1]=t end end end gg.setValues(x)gg.addListItems(d)gg.toast(M..'\n成功')end elseif S~=nil then gg.clearResults()gg.setRanges(C[1])gg.searchNumber(C[2],C[3],false,gg.SIGN_EQUAL,C[4],C[5],C[6])local SL=gg.getResultCount()local SS=gg.getResults(SL)gg.clearResults()local DZ={}if(SL>0)then for i,v in ipairs(SS)do v.isUseful=true end for k=1,#S do local tmp={}local num=S[k][2]for i,v in ipairs(SS)do tmp[#tmp+1]={}tmp[#tmp].address=v.address+S[k][1]*4 tmp[#tmp].flags=v.flags end tmp=gg.getValues(tmp)for i,v in ipairs(tmp)do if (v.value~=num)then SS[i].isUseful=false end end end for i,v in ipairs(SS)do if(v.isUseful)then DZ[#DZ+1]=v.address end end if DZ[1]==nil then return false else return DZ end else return nil end end end local function hqsj(dz,sj)local t={}for i,v in ipairs(sj)do t[i]={}t[i].address=dz+sj[i][1]*4 t[i].flags=sj[i][2]end local ss=gg.getValues(t)local s={}for i,v in ipairs(ss)do s[i]=ss[i]['value']end return s end local function DXWJ(l,m,n) if m==1 then local c=io.open(l,'r') if c==nil then return c else local c=io.open(l,'r') g=c:read('*a') c:close() end return g elseif m==2 then local file=io.open(l,'w') file:write(n) file:close() end end x1="" x2="" gg.alert(os.date("感谢你对辅支持 现在启用时间:%Y年%m月%d日%H时%M分%S秒\n是否注入启动辅助....."),"是"," 否") uper ='服务器启动'i='' gg.toast("服务器启动:15%...") gg.sleep(320) gg.toast("服务器启动:30%...") gg.sleep(320) print(i)print(i)print(i)print(i)print(i)print(i)print(i)print(i)print(i)print(i) gg.toast("服务器启动:45%...") gg.sleep(320) gg.toast("服务器启动:60%...") gg.sleep(360) gg.toast("服务器启动:75%...") gg.sleep(360) gg.toast("服务器启动:90%...") gg.sleep(460) gg.toast("服务器启动:100%...") gg.sleep(100) gg.alert(":((\n正在访问服务器\n请保持网络流畅\n网络问题请重新登录\n正在加载区块中........") gg.alert("载入成功,欢迎使用脚本") -- 【【 核心代码,不懂勿动 】】 -- JF Script编辑器 D=gg.TYPE_DWORD E=gg.TYPE_DOUBLE F=gg.TYPE_FLOAT W=gg.TYPE_WORD B=gg.TYPE_BYTE X=gg.TYPE_XOR Q=gg.TYPE_QWORD function Main0() SN = gg.choice({ "游戏加速",--1 "芦荟增伤(1~4)"..x1, "改等级属性区",--3 "未更新",--4 "播放音乐",--5 "未更新",--6 "未更新",--7 "未更新",--8 "退出",--9 },nil, os.date("\n奔放:%Y年/️%m月/%d日%H:%M:%S")) if SN==1 then JJ1() end if SN==2 then JJ2() end if SN==3 then JJ3() end if SN==4 then JJ4() end if SN==5 then JJ5() end if SN==6 then JJ6() end if SN==7 then JJ7() end if SN==8 then JJ8() end if SN==9 then print("欢迎再次使用") os.exit() end FX1=0 end function JJ1() local fy=gg.prompt({"加速[自调]"}, {[1] = 10}, {[1] = "text"}) if fy==nil then os.exit(print("亲~你点击了取消哦")) end qmnb = { {["memory"] = 4}, {["name"] = "游戏加速"}, {["value"] = 1,["type"] = 16}, {["lv"] = 15,["offset"] =36, ["type"] = 16}, } qmxg = { {["value"] =fy[1],["offset"] =0, ["type"] = 16}, } xqmnb(qmnb) end function JJ2() local dz=CSM({4,4489188110512422912,32},{{1,4525216907486088397},}) if type(dz)=="table"then x1="[状态:开启]" CSM(dz,{{1,32,4525216907736824864}},"芦荟医师百万增伤开启") else local dz=CSM({4,5566093036192006144,32},{{1,4525216907736824864},}) CSM(dz,{{1,32,4525216907486088397}},"芦荟医师百万增伤关闭") x1="[状态:关闭]" end end function JJ3() menu1 = gg.multiChoice({ "家族加强", "仙人掌自选", "原始豌豆自选", "芦荟五级增强"..x1, "能量豆自选", "原始豌豆加强(4)", "猕猴桃自选", "无限阳光(150开)", "未更新", "未更新", "未更新", "未更新", "未更新", "️返回主页️", }, nil, os.date("输入当前字体数量即可")) if menu1 == nil then else if menu1[1] == true then e1() end if menu1[2] == true then e2() end if menu1[3] == true then e3() end if menu1[4] == true then e4() end if menu1[5] == true then e5() end if menu1[6] == true then e6() end if menu1[7] == true then e7() end if menu1[8] == true then e8() end if menu1[9] == true then e9() end if menu1[10] == true then e10() end if menu1[11] == true then e11() end if menu1[12] == true then e12() end if menu1[13] == true then e13() end if menu1[14] == true then Main0() end end GLWW=-1 end function e1() local fy=gg.prompt({"家族[自调]"}, {[1] = 0.02}, {[1] = "text"}) if fy==nil then os.exit(print("亲~你点击了取消哦")) end qmnb = { {["memory"] = 4}, {["name"] = "家族加强"}, {["value"] = fy[1], ["type"] = 16}, } qmxg = { {["value"] = 999999,["offset"] =0, ["type"] = 16}, } xqmnb(qmnb) end function e2() local fy=gg.prompt({"仙人掌[自调]"}, {[1] = 1}, {[1] = "text"}) if fy==nil then os.exit(print("亲~你点击了取消哦")) end qmnb = { {["memory"] = 4}, {["name"] = "仙人掌加强"}, {["value"] = 108, ["type"] = 4}, {["lv"] = fy[1],["offset"] =4, ["type"] = 4}, {["lv"] = 129,["offset"] =8, ["type"] = 4}, } qmxg = { {["value"] = 5,["offset"] =4, ["type"] = 4}, } xqmnb(qmnb) end function e3() local fy=gg.prompt({"原神[自调]"}, {[1] = 1}, {[1] = "text"}) if fy==nil then os.exit(print("亲~你点击了取消哦")) end qmnb = { {["memory"] = 4}, {["name"] = "原始豌豆加强"}, {["value"] = 109, ["type"] = 4}, {["lv"] = fy[1],["offset"] =4, ["type"] = 4}, {["lv"] = 18,["offset"] =8, ["type"] = 4}, } qmxg = { {["value"] = 5,["offset"] =4, ["type"] = 4}, } xqmnb(qmnb) end function e4() local dz=CSM({4,4525216907531386880,32},{{1,4525216907494477005},}) if type(dz)=="table"then x2="[状态:开启]" CSM(dz,{{1,32,4525216907745213472}},"芦荟医师百万增伤开启") else local dz=CSM({4,5602121833210970112,32},{{1,4525216907745213472},}) CSM(dz,{{1,32,4525216907494477005}},"芦荟医师百万增伤关闭") x2="[状态:关闭]" end end function e5() local fy=gg.prompt({"无限能量豆[自调]"}, {[1] = 1}, {[1] = "text"}) if fy==nil then os.exit(print("亲~你点击了取消哦")) end qmnb = { {["memory"] = 4}, {["name"] = "能量豆无限"}, {["value"] = 256, ["type"] = 4}, {["lv"] = fy[1],["offset"] =-4, ["type"] = 4}, {["lv"] =-1,["offset"] =-8, ["type"] = 4}, } qmxg = { {["value"] = 5, ["offset"] = -4, ["type"] = 4, ["freeze"] = true}, } xqmnb(qmnb) end function s1() end function e6() local fy=gg.prompt({"猴王[自调]"}, {[1] = 1}, {[1] = "text"}) if fy==nil then os.exit(print("亲~你点击了取消哦")) end qmnb = { {["memory"] = 4}, {["name"] = "猕猴桃加强"}, {["value"] = 314, ["type"] = 4}, {["lv"] = fy[1],["offset"] =4, ["type"] = 4}, {["lv"] = 112,["offset"] =8, ["type"] = 4}, } qmxg = { {["value"] = 5,["offset"] =4, ["type"] = 4}, } xqmnb(qmnb) end function e8() gg.clearResults() gg.setRanges(4) gg.searchNumber("65,536D;13D;1,269,760D::", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("1,269,760", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) jg=gg.getResults(100) sl=gg.getResultCount() for i = 1, sl do dzy=jg[i].address gg.addListItems({[1] = {address = dzy,flags = gg.TYPE_DWORD,freeze = true,value = 99}}) end gg.toast("开启成功") gg.clearResults() xqmnb(qmnb) end function e9() xqmnb(qmnb) end function e10() xqmnb(qmnb) end function e11() xqmnb(qmnb) end function e12() xqmnb(qmnb) end function e13() xqmnb(qmnb) end function JJ4() SN = gg.choice({ "未更新",--1 "未更新",--2 "未更新",--3 "未更新",--4 "未更新",--5 "返回主页",--6 }, nil, os.date"无") if SN==1 then C1() end if SN==2 then C2() end if SN==3 then C3() end if SN==4 then C4() end if SN==5 then C5() end if SN==6 then gg.toast("您选择了返回主页") Main0() end FX1=0 end function C1() xqmnb(qmnb) end function C2() xqmnb(qmnb) end function C3() xqmnb(qmnb) end function C4() xqmnb(qmnb) end function C5() xqmnb(qmnb) end function JJ5() SN = gg.choice({ "点击启动",--1 "返回主页",--2 }, nil, os.date"无") if SN==1 then D1() end if SN==2 then gg.toast("您选择了返回主页") Main0() end FX1=0 end function D1() local g = {} g.file = gg.getFile() g.sel = nil gqlb={"请先搜索歌曲",} idb={"1010"} SN,gc=1,nil g.config = gg.getFile():gsub("%lua$", "").."cfg" function bei() g.data = loadfile(g.config) if g.data ~= nil then g.sel = g.data() g.data = nil end if g.sel == nil then g.sel = {"star unkind","50"} end end bei() ------ --搜索歌曲 function start(name,sl) fw=gg.makeRequest("http://music.163.com/api/search/get?s="..name.."&type=1&offset=0&total=true&limit="..sl) return fw end ----- --歌词 --播放音乐 function play(id,name) gg.toast("正在播放音乐:"..name,true) gg.playMusic("http://music.163.com/song/media/outer/url?id="..id..".mp3") end --停止播放 function stop() gg.toast("正在停止音乐") for i=1,100 do gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end end ---- function Play(gqlb,idb) SN = gg.choice(gqlb,nil,ts) if SN == nil then XGCK =-1 else gg.toast("歌曲:"..gqlb[SN]) play(idb[SN],gqlb[SN]) Main() end end function zjson(jsonr) local str = jsonr -- 匹配Json Key的正则表达式 local pattern = "\"[%w]+\":" string.gsub(str, pattern, function(v) if string.find(str, v) then str = string.gsub(str, v, string.gsub(v, "\"", "")) end end) str = string.gsub(str, ":", "=") str = string.gsub(str, "%[", "{") str = string.gsub(str, "%]", "}") local data = "return " .. str local res = load(data)() return res end function json(con) res=zjson(con) zd=res.result.songCount pd=go3-zd if pd <= 0 then else go3=zd end ts="《"..go1.."》找到"..zd.."首歌曲,当前显示"..go3.."首" gqlb={} idb={} for i=1,go3 do gqlb[i]=res.result.songs[i].name idb[i]=res.result.songs[i].id end --print(idb) end function YY998() Obtain=gg.makeRequest("https://api.uomg.com/api/rand.music?sort=热歌榜&format=json").content muchen=Obtain:match('url":"(.-)","picurl') gg.playMusic(muchen) end --主页 function Main() SN = gg.choice({ "搜索歌曲", "搜索列表", "播放热歌", "停止播放"}) if SN==1 then s1() end if SN==2 then Play(gqlb,idb) end if SN==3 then YY998() end if SN==4 then stop() end XGCK=-7 end --- function s1() search = gg.prompt({ "输入要搜索的歌曲\n可加上歌手名字", "设置显示数量(数字)", },g.sel,{ "text", }) if search == nil then Main6() end gg.saveVariable(search,g.config) bei() go1=search[1] go3=search[2] jg=start(go1,go3) if jg.code == 200 then fh=jg.content fh=json(fh) --print(fh) Play(gqlb,idb) else function inspect() gg.alert("访问网络异常,错误代码:\n\n"..jg.code) end if not pcall(inspect) then print("网络异常,请先连接上网络") os.exit() end end XGCK=-1 end Main() end function JJ6() SN = gg.multiChoice({ "未更新", "未更新", "未更新", "未更新", "️返回主页", }, nil, "无") if SN == nil then else if SN[1] == true then c1() end if SN[2] == true then c2() end if SN[3] == true then c3() end if SN[4] == true then c4() end if SN[5] == true then Main0() end end GLWW=-1 end function c1() xqmnb(qmnb) end function c2() xqmnb(qmnb) end function c3() xqmnb(qmnb) end function c4() xqmnb(qmnb) end function JJ7() menu1 = gg.multiChoice({ "功能", "功能", "功能", "功能", "功能", "功能", "功能", "功能", "功能", "功能", "功能", "功能", "功能", "功能", "功能", "功能", "功能", "功能", "功能", "返回大厅", }, nil, os.date("无")) if menu1 == nil then else if menu1[1] == true then F11()end if menu1[2] == true then F22()end if menu1[3] == true then F33()end if menu1[4] == true then F44() end if menu1[5] == true then F55() end if menu1[6] == true then F66() end if menu1[7] == true then F77() end if menu1[8] == true then F88() end if menu1[9] == true then F99() end if menu1[10] == true then F100() end if menu1[11] == true then F110() end if menu1[12] == true then F111() end if menu1[13] == true then F112() end if menu1[14] == true then F113() end if menu1[15] == true then F114() end if menu1[12] == true then F120() end if menu1[13] == true then F130() end if menu1[14] == true then F140() end if menu1[15] == true then F150() end if menu1[16] == true then Main0()end end GLWW=-1 end function F11() xqmnb(qmnb) end function F22() end function F33() end function F44() end function F55() end function F66() end function F77() end function F88() end function F99() end function F100() end function F110() end function F120() end function F130() end function F140() end function F150() end function JJ8() SN = gg.choice({ "功能", "功能", "功能", "功能️", "功能", "功能", "功能", "功能", "返回主页", }, nil, "无") if SN==1 then fHS1() end if SN==2 then fHS2() end if SN==3 then fHS3() end if SN==4 then fHS4() end if SN==5 then fHS5() end if SN==6 then fHS6() end if SN==7 then fHS7() end if SN==8 then fHS8() end if SN==9 then fHS9() end FX1=0 end function fHS9() Main0() end function fHS1() end function fHS2() end function fHS3() end function fHS4() end function fHS5() end function fHS6() end function fHS7() end function fHS8() end while true do if gg.isVisible(true) then FX1 = nil gg.setVisible(false) end if FX1 == nil then Main0() end end ---[=[ ]=]------------------------------------------------------------------------------------------------------------------- end end end if km == nil then else if km ~="" then if e==true then w69de6ecf9dfe2409100ec522eb168793_KM_LL(km) end end end local w69de6ecf9dfe2409100ec522eb168793_hak=gg.prompt({ "输入你的卡密", "下次自动登入", "卡密解绑模式", },{ km, e, jb },{ 'text',--文字 'checkbox',--多选 'checkbox',--多选 })--文本功能 if w69de6ecf9dfe2409100ec522eb168793_hak==nil then elseif w69de6ecf9dfe2409100ec522eb168793_hak[2]==true then io.open(AMI_YDO..'/e.log','w+'):write("2")--写 elseif w69de6ecf9dfe2409100ec522eb168793_hak[2]==false then io.open(AMI_YDO..'/e.log','w+'):write("1")--写 end if w69de6ecf9dfe2409100ec522eb168793_hak==nil then gg.setVisible(false) w69de6ecf9dfe2409100ec522eb168793=nil elseif w69de6ecf9dfe2409100ec522eb168793_hak[3]==true then if w69de6ecf9dfe2409100ec522eb168793_hak[1]== "" then gg.alert("空,请填写卡密")--对话框 else local w69de6ecf9dfe2409100ec522eb168793_KM_G=w69de6ecf9dfe2409100ec522eb168793_json2lua(w69de6ecf9dfe2409100ec522eb168793_KM_G(w69de6ecf9dfe2409100ec522eb168793_hak[1])) if w69de6ecf9dfe2409100ec522eb168793_KM_G.code== 200 then gg.alert("解绑成功")--对话框 else gg.alert(w69de6ecf9dfe2409100ec522eb168793_KM_G.msg)--对话框 end end elseif w69de6ecf9dfe2409100ec522eb168793_hak[1]== "" then gg.alert("空,请填写卡密")--对话框 io.open(AMI_YDO..'/e.log','w+'):write("1")--写 else w69de6ecf9dfe2409100ec522eb168793_KM_LL(w69de6ecf9dfe2409100ec522eb168793_hak[1]) end end while true do if gg.isVisible(true) then gg.setVisible(false) w69de6ecf9dfe2409100ec522eb168793_MIAN() else if w69de6ecf9dfe2409100ec522eb168793== 999 then gg.setVisible(true) else end end end