-- WIG 网络验证 -- 官方群 61898352 -- 官网 https://www.wigwy.xyz local function i0HXyCSLPhBtTpG() fuhao= '"' local stringsub = string.sub local wytonumber = tonumber local wytostring = tostring local stringbyte = string.byte local mathfloor = math.floor local stringlower = string.lower local mathmodf = math.modf local stringupper = string.upper local stringchar = string.char local wypairs = pairs local stringformat = string.format local stringlen = string.len local wyrequest = gg.makeRequest local function json2true(str,from,to) return true, from+3 end local function json2false(str,from,to) return false, from+4 end local function json2null(str, from, to) return nil, from+3 end local function 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 json2number(str,from,to) local i = from+1 while(i<=to) do local char = stringsub(str, i, i) if not numberchars[char] then break end i = i + 1 end local num = wytonumber(stringsub(str, from, i-1)) if not num then error(_format('json格式错误,不正确的数字, 错误位置:{from}', from)) end return num, i-1 end local function json2string(str,from,to) local ignor = false for i = from+1, to do local char = stringsub(str, i, i) if not ignor then if char == fuhao then return stringsub(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 json2array(str,from,to) local result = {} from = from or 1 local pos = from+1 local to = to or stringlen(str) while(pos<=to) do local char = stringsub(str, pos, pos) if char == fuhao then result[#result+1], pos = json2string(str,pos,to) elseif char == '[' then result[#result+1], pos = json2array(str,pos,to) elseif char == '{' then result[#result+1], pos = json2table(str,pos,to) elseif char == ']' then return result, pos elseif (char=='f' or char=='F') then result[#result+1], pos = json2false(str,pos,to) elseif (char=='t' or char=='T') then result[#result+1], pos = json2true(str,pos,to) elseif (char=='n') then result[#result+1], pos = json2null(str,pos,to) elseif (char=='N') then result[#result+1], pos = json2nan(str,pos,to) elseif numberchars[char] then result[#result+1], pos = json2number(str,pos,to) end pos = pos + 1 end error(_format('json格式错误,表没有找到结尾, 错误位置:{from}', from)) end function _G.json2table(str,from,to) local result = {} from = from or 1 local pos = from+1 local to = to or stringlen(str) local key while(pos<=to) do local char = stringsub(str, pos, pos) if char == fuhao then if not key then key, pos = json2string(str,pos,to) else result[key], pos = json2string(str,pos,to) key = nil end elseif char == '[' then if not key then key, pos = json2array(str,pos,to) else result[key], pos = json2array(str,pos,to) key = nil end elseif char == '{' then if not key then key, pos = json2table(str,pos,to) else result[key], pos = json2table(str,pos,to) key = nil end elseif char == '}' then return result, pos elseif (char=='f' or char=='F') then result[key], pos = json2false(str,pos,to) key = nil elseif (char=='t' or char=='T') then result[key], pos = json2true(str,pos,to) key = nil elseif (char=='n') then result[key], pos = json2null(str,pos,to) key = nil elseif (char=='N') then result[key], pos = json2nan(str,pos,to) key = nil elseif numberchars[char] then if not key then key, pos = json2number(str,pos,to) else result[key], pos = json2number(str,pos,to) key = nil end end pos = pos + 1 end error(_format('格式错误,表没有找到结尾, 错误位置:{from}', from)) end local jsonfuncs={[ fuhao ]=json2string,['[']=json2array,['{']=json2table,['f']=json2false,['F']=json2false,['t']=json2true,['T']=json2true} local function s34KS448lfLQdCR(str) if str==nil then gg.alert('错误json') else local char = stringsub(str, 1, 1) local func=jsonfuncs[char] if func then return func(str, 1, stringlen(str)) end if numberchars[char] then return json2number(str, 1, stringlen(str)) end end end local function md5(code) local code = wytostring(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 = stringlen(s) local mod512 = len * 8 % 512 local fillSize = (448 - mod512) // 8 if mod512 > 448 then fillSize = (960 - mod512) // 8 end local rTab = {} local byteIndex = 1 for i = 1,len do local index = (i - 1) // 4 + 1 rTab[index] = rTab[index] or 0 rTab[index] = rTab[index] | (stringbyte(s,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 = mathfloor(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 stringlower(retStr) end return getmd5(code) end local ZZRc4 = {} local 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 = mathmodf( left / 2) right = mathmodf( right / 2) end return res end function ZZMathBit.xorOp(left, right) return ZZMathBit.__base(left, right, ZZMathBit.__xorBit) end local function HfO1JfRk310pWa7(text,key,kasi) if kasi==false then str = text str=stringupper(str:gsub("[%s%p]","")) local index=1 local ret="" for index=1,stringlen(str),2 do ret=ret..stringchar(wytonumber(stringsub(str,index,index+1),16)) end text=ret end local function KSA(key) local keyLen = stringlen(key) local schedule = {} local keyByte = {} for i = 0, 255 do schedule[i] = i end for i = 1, keyLen do keyByte[i - 1] = stringbyte(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 = stringlen(text) local c = nil local res = {} for i = 1, len do c = stringbyte(text, i,i) res[i] = stringchar(ZZMathBit.xorOp(schedule[i], c)) end j = "" for i,v in wypairs(res) do j = j..v end return j end local textLen = stringlen(text) local schedule = KSA(key) local k = PRGA(schedule, textLen) str=output(k, text) if kasi==true then str = wytostring(str) local index=1 local ret="" for index=1,stringlen(str) do ret=ret..stringformat("%02X",stringbyte(stringsub(str,index))) end return stringlower(ret) else return str end end local function initGG() if getrlyunyz then local URL = luajava.bindClass("java.net.URL") local HttpURLConnection = luajava.bindClass("java.net.HttpURLConnection") local OutputStream = luajava.bindClass("java.io.OutputStream") local InputStreamReader = luajava.bindClass("java.io.InputStreamReader") local BufferedReader = luajava.bindClass("java.io.BufferedReader") local StringBuilder = luajava.bindClass("java.lang.StringBuilder") function performHttpPost(url, postData) local result = "" local connection = nil local success, e = pcall(function() local urlObject = URL(url) connection = urlObject:openConnection() connection:setRequestMethod("POST") connection:setDoOutput(true) local outputStream = connection:getOutputStream() local data = postData:getBytes() outputStream:write(data) outputStream:close() local inputStream = connection:getInputStream() local reader = BufferedReader(InputStreamReader(inputStream)) local line = nil local response = StringBuilder() while (true) do line = reader:readLine() if line == nil then break end response:append(line) end reader:close() connection:disconnect() result = response:toString() end) if not success then return e:toString() end return result end function performHttpGet(url) local result = "" local connection = nil local success, e = pcall(function() local urlObject = URL(url) connection = urlObject:openConnection() connection:setRequestMethod("GET") local responseCode = connection:getResponseCode() if responseCode == 200 then local inputStream = connection:getInputStream() local reader = BufferedReader(InputStreamReader(inputStream)) local line = nil local response = StringBuilder() while (true) do line = reader:readLine() if line == nil then break end response:append(line) end reader:close() inputStream:close() result = response:toString() else result = "HTTP Response Code: " .. responseCode end connection:disconnect() end) if not success then return e:toString() end return result end end end initGG() local function ultra(get,post) if not getrlyunyz then local c=wyrequest(get,nil,post) local d = c.content local f = get.."\n网络异常" if d ~= nil then f=c.code end if d == nil or tonumber(c.code) ~= 200 then gg.alert("请求链接:"..get.."\n网络错误了,请检查你的网络:"..f) os.exit() end return d else if post then return performHttpPost(get,post) else return performHttpGet(get) end end end local domains = { "www.wigwy.xyz", "wig.wigwy.xyz", "wig.xiaoman.top", "wig.luatool.cn", "wig.ggpro.cn", -- "www.wigyyds.com", -- "wigyyds.com" } -- 测试路径 local test_path = "/api/ok" -- 函数:检查域名是否可用 local function is_domain_available(domain) local url = "http://" .. domain .. test_path local response = ultra(url) if response == "Ping" then return true else return false end end -- 遍历域名寻找可用的 local function find_available_domain() for _, domain in ipairs(domains) do if is_domain_available(domain) then return domain end end return nil end -- 主函数 local available_domain = find_available_domain() if not available_domain then gg.alert("未找到可用的域名,请检查网络连接") print("未找到可用的域名,请检查网络连接") os.exit() end local xxxxxxx = "http://"..available_domain.."/api" local xxxxxxx_32665 = '32665' function xxxxxxx_Kami(km) local time = os.time() return xxxxxxx .. "/login/" .. time .. "/" .. xxxxxxx_32665 .. "/" .. km end function xxxxxxx_Notice() return ultra(xxxxxxx .. "/announcement/" .. os.time() .. "/" .. xxxxxxx_32665) end function xxxxxxx_Number_Of() return ultra(xxxxxxx .. "/numberOf/" .. os.time() .. "/" .. xxxxxxx_32665) end local notice = xxxxxxx_Notice() local number_of = xxxxxxx_Number_Of() local xxxxxxx_jieba = xxxxxxx .. "/unbundling/" .. xxxxxxx_32665 .. "/" local xxxbanb = '1.0' AMI_YDO = "/sdcard/Android/" xxxxxxxx = 999 local function uZEhNdDMDh5FlWv() local imei if device and device.getimei then if type(device.getimei) == "function" then imei = device.getimei() else imei = device.getimei end end if not imei then imei_path = AMI_YDO .. '/wig' .. xxxxxxx_32665 .. '.imei' imei = io.open(imei_path, 'r') if not imei or imei:read("*a") == "" then imei = md5((os.time() * 1000 + 611 - 99999)..math.random("1","999999999"))..os.time() io.open(imei_path, 'w+'):write(imei) else imei = io.open(imei_path, 'r'):read("*a") end imei = imei end km_key = io.open(AMI_YDO .. '/km' .. xxxxxxx_32665, 'r') if km_key == nil then else km_key = io.open(AMI_YDO .. '/km' .. xxxxxxx_32665, 'r'):read("*a") end e = io.open(AMI_YDO .. '/e'.. xxxxxxx_32665 ..'.log', 'r') if e == nil or e:read("*a") == "" then e = "1" io.open(AMI_YDO .. '/e'.. xxxxxxx_32665 ..'.log', 'w+'):write(e) else e = io.open(AMI_YDO .. '/e'.. xxxxxxx_32665 ..'.log', 'r'):read("*a") end if e == "1" then e = false else e = true end if km_key and stringlen(km_key) == 0 then e = false end function KM_G(km,imei) HUT = ultra(xxxxxxx_jieba .. km, "imei="..imei) return HUT end local function mtgLfWEIjMuYz8g(km,bool) content = ultra(xxxxxxx_Kami(km,bool), "imei=" .. imei) content = HfO1JfRk310pWa7(content, "urLJVIt5YFJ9S0D", false) while string.find(content,"code") == nil do gg.alert("脚本已更新!","") os.exit() end WgcEaRzcle7WiMw = s34KS448lfLQdCR(content) a5vjZvX6Qe6Gixu = WgcEaRzcle7WiMw.code msg = WgcEaRzcle7WiMw.msg check = WgcEaRzcle7WiMw.check api_time = WgcEaRzcle7WiMw.api_time m4iaYylMuJI69CB = WgcEaRzcle7WiMw.vip oCREswACzjUs0RY = WgcEaRzcle7WiMw.new_code2 user_vip = WgcEaRzcle7WiMw.user_vip -- 永久卡 | 年卡 | 季卡 | 月卡 | 周卡 | 天卡 | 小时卡 | 分钟卡 card_type = WgcEaRzcle7WiMw.card_type -- 假如你想限制卡密类型来使用卡密可以这样使用 --[[ -- 使用例子 仅供参考 if card_type == "永久卡" then -- 代码 else gg.alert("你没有权限使用该功能") end --------------------- if card_type == "永久卡" or card_type == "年卡" then -- 代码 else gg.alert("你没有权限使用该功能") end ]] if check == nil then gg.alert(msg) uZEhNdDMDh5FlWv() end local time = os.time() while WgcEaRzcle7WiMw.imei ~= imei do print("机械码不匹配") os.exit() end while wytonumber(time) < wytonumber(api_time) or ((wytonumber(os.time()) - wytonumber(api_time)) > 30) or ((wytonumber(os.time()) - wytonumber(api_time)) < -30) do print("脚本:数据过期(4.0)\n解决方法:调整手机时间为自动\n北京时间24小时制"..wytonumber(os.time()) - wytonumber(api_time)) os.exit() end if a5vjZvX6Qe6Gixu ~= "20000" then gg.alert(msg) if a5vjZvX6Qe6Gixu ~= "20000" then os.remove(AMI_YDO .. '/km' .. xxxxxxx_32665) io.open(AMI_YDO .. '/e'.. xxxxxxx_32665 ..'.log', 'w+'):write("1") end gg.sleep(1000) while time == os.time() do print("违规操作(Time)") os.exit() end uZEhNdDMDh5FlWv() else checktrue = HfO1JfRk310pWa7(WgcEaRzcle7WiMw.checktrue, "urLJVIt5YFJ9S0D", false) while checktrue ~= (imei .. WgcEaRzcle7WiMw.user_time .. api_time..xxxxxxx_32665..a5vjZvX6Qe6Gixu) do print("脚本:检测到你有非法操作") os.exit() end if card_type == "次数卡" then vip_text = WgcEaRzcle7WiMw.msg else vip_text = os.date( "%Y" .. "年" .. "%m" .. "月" .. "%d" .. "日 %H" .. "时" .. "%M" .. "分" .. "%S" .. "秒", m4iaYylMuJI69CB) if os.date("%Y", m4iaYylMuJI69CB) == "9999" then vip_text = "永久卡" end end if wytostring(oCREswACzjUs0RY) ~= "c694bd6b8c75607624710f826531a934" then gg.alert("检测到您有非法操作2") uZEhNdDMDh5FlWv() end local Mu_wig = gg.alert([[ 到期时间: ]] .. vip_text .. [[ 使用卡密: ]] .. WgcEaRzcle7WiMw.key, "确定","取消自动登录") if Mu_wig==2 then io.open(AMI_YDO .. '/e'.. xxxxxxx_32665 ..'.log', 'w+'):write("1") gg.setVisible(true) else io.open(AMI_YDO .. '/km' .. xxxxxxx_32665, 'w+'):write(WgcEaRzcle7WiMw.key) gg.setVisible(true) loadYunLuaGroup("5C3C4E3813681C4C204C35346F1B4C2F7EFF612D2B221779A4DEA2EE4D5B0D1E6DCD82D1A08DE1") loadYunLuaGroup("5C3C4E3813681C4C204C35346F1B4C2F7EFF612D2B22176DCA84CB8CFE5F350E1D4733067DCC9F")--云模块勿动 ---------------------检测--------------------------- -- 1. 修复文件判断函数(修正拼写+关闭文件,避免误判) function panduan(rec) local file, err = io.open(rec) -- 正确拼写file if file == nil then return false else file:close() -- 打开后必须关闭,防止资源占用导致后续操作异常 return true end end -- 2. 实现ELGG可用的下载函数(调用系统wget/curl,优先用wget适配更多设备) function elggSafeDownload(url, savePath) -- 先创建保存目录,避免路径不存在导致下载后找不到文件 local saveDir = savePath:match("(.*/)") -- 提取如"/sdcard/冷烁/音频/"的目录 os.execute("mkdir -p " .. saveDir) -- 递归创建多层目录 -- 优先用wget下载,若设备没有wget则自动尝试curl(覆盖多数安卓系统) local cmd = string.format('wget -q -O "%s" "%s" || curl -s -o "%s" "%s"', savePath, url, savePath, url) local status = os.execute(cmd) -- 执行系统命令 -- 下载完成后验证文件是否存在,确保下载成功 if panduan(savePath) then return true else gg.toast("下载失败:" .. savePath:match(".*/(.*)")) return false end end -- 3. 主逻辑:判断文件不存在时执行下载 if not panduan("/storage/emulated/0/冷烁/音频/加速开启.mp3") then gg.toast("正在下载资源初始文件\n请耐心等待") -- 调用修复后的下载函数,确保每个文件都能实际保存 elggSafeDownload("https://pan.jl8.top/down.php/c2374e3e6e2403abaa2923277f55097f.mp3", "/sdcard/冷烁/音频/防闪.mp3") file.download("https://pan.jl8.top/down.php/c2374e3e6e2403abaa2923277f55097f.mp3","/sdcard/冷烁/音频/防闪.mp3") file.download("https://pan.jl8.top/down.php/8c90848df8f8c105acf31badd821d312.mp3","/sdcard/冷烁/音频/选择进程.mp3") file.download("https://pan.jl8.top/down.php/4b1304b146fcb9fc0fc574085290629c.mp3","/sdcard/冷烁/音频/关闭.mp3") file.download("https://pan.jl8.top/down.php/ca0db563fd3e445a734b1bb16cda1490.mp3","/sdcard/冷烁/音频/开启.mp3") file.download("https://pan.jl8.top/down.php/a001047c46b8f2353954ae0debbc609e.mp3","/sdcard/冷烁/音频/加速开启.mp3") gg.toast("所有资源下载任务已结束") else gg.toast("资源已存在,无需重复下载") end --[[ gg.playMusic("/storage/emulated/0/冷烁/音频/选择进程.mp3") gg.playMusic("/storage/emulated/0/冷烁/音频/防闪.mp3") gg.playMusic("/storage/emulated/0/冷烁/音频/关闭.mp3") gg.playMusic("/storage/emulated/0/冷烁/音频/开启.mp3") gg.playMusic("/storage/emulated/0/冷烁/音频/加速开启.mp3") --]] ---------------------检测--------------------------- function init() stab = _ENV["分页"] ttitle = _ENV["标题"] xfcpic = _ENV["悬浮窗图标"] end local draw = drawText("TG:HYNP886","#00FFFF",500,40,15) -------------------------配置--------------------------------- function PS() end function setvalue(address,flags,value) PS('修改地址数值(地址,数值类型,要修改的值)') local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end ---静态基址写法配置 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 Unfreeze() local t = gg.getListItems() for k, v in pairs(t) do t[k]["freeze"] = false end return gg.addListItems(t) end function xqmnb(Search,Modification) gg.clearResults() gg.setRanges(Search[1].memory) gg.searchNumber(Search[3].value,Search[3].type,false,536870912,0,-1) if gg.getResultCount()==0 then gg.toast(Search[2].name..'开启失败') return end local Result=gg.getResults(gg.getResultCount()) local sum for index=4,#Search do sum=0 for i=1,#Result do if gg.getValues({{address=Result[i].address+Search[index].offset,flags=Search[index].type}})[1].value~=Search[index].lv then Result[i].Usable=true sum=sum+1 end end if sum==#Result then gg.toast(Search[2].name..'开启失败') return end end local Data,Freeze,Freezes={},{},0 sum=0 for index,value in ipairs(Modification)do for index=1,#Result do if not Result[index].Usable then local Value={address=Result[index].address+value.offset,flags=value.type,value=value.value,freeze=true} if value.freeze then Freeze[#Freeze+1]=Value Freezes=Freezes+1 else Data[#Data+1]=Value end sum=sum+1 end end end gg.addListItems(Data) gg.addListItems(Freeze) if Freezes==0 then gg.toast(Search[2].name..'开启成功,共修改'..sum..'条数据') else gg.toast(Search[2].name..'开启成功,共修改'..sum..'条数据,冻结'..Freezes..'条数据') end gg.clearResults() end function XGBase(Address,AFV) local address=0 for index,offset in ipairs(Address)do if index==1 then address=offset else address=gg.getValues({{address=address+offset,flags=4}})[1].value end end local Value,Freeze={},{} for index,value in ipairs(AFV)do local VALUE={address=address+value[3],flags=value[2],value=value[1],freeze=true} if value[4]then Freeze[#Freeze+1]=VALUE else Value[#Value+1]=VALUE end end gg.addListItems(Value) gg.addListItems(Freeze) end function Format(tab, format, value, type, Function) if format == "查看" then tab[1]["flags"] = type return print(gg.getValues(tab)) elseif format == "修改" then tab[1]["flags"] = type tab[1]["value"] = value return gg.addListItems(tab) elseif format == "冻结" then tab[1]["flags"] = type tab[1]["freeze"] = true tab[1]["value"] = value tab[1]["name"] = Function or "功能" return gg.addListItems(tab) elseif format == "加载" then tab[1]["flags"] = type return gg.loadResults(tab) end end function LSQ_Chain(so, offset, format, value, type, Function)--模块设置, 偏移量, 功能参数, 修改值, 类型, 功能 getRanges = getRanges or (function() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v["type"]:sub(2, 2) == 'w' then--判断so是否可读可写 ranges[#ranges+1] = v end end return ranges end) local rest, ranges, sostart, valtype = {}, getRanges(), nil , gg.TYPE_DWORD if gg.getTargetInfo()["x64"] then--判断应用程序是否为64位 valtype = gg.TYPE_QWORD end for i in pairs(ranges) do local _name = ranges[i]["internalName"]:gsub('^.*/', '') if so[1] == _name and so[2] == ranges[i]["state"] then sostart = ranges[i]["start"] break end end if sostart then if offset[1] then for i = 1, #offset do rest = {{flags = valtype,address = sostart + offset[i]}} rest = gg.getValues(rest) if i == #offset then break end if valtype == gg.TYPE_DWORD then sostart = rest[1].value & 0xFFFFFFFF--对值进行补位操作 else sostart = rest[1].value end end end if #rest == 1 then end return Format(rest, format, value, type, Function) end gg.toast("功能:" .. Function .. "开启失败") print("功能开启失败原因: 未找到基址头") return os.exit() end --指针写法配置 function PS() end function setvalue(address,flags,value) PS('修改地址数值(地址,数值类型,要修改的值)') local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end function setvalue(A0_146, A1_147, A2_148) PS("修改地址数值(地址,数值类型,要修改的值)") local tmp = {} tmp.address = A0_146 tmp.flags = A1_147 tmp.value = A2_148 gg.setValues({ [1] = tmp }) end local function X(address) return gg.getValues({{address = address, flags = gg.TYPE_QWORD}})[1].value 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 local function interruptThread(thread) if thread then pcall(function() thread:interrupt() end) end end function split(szFullString, szSeparator) local nFindStartIndex = 1 local nSplitIndex = 1 local nSplitArray = {} while true do while card_type ~= '次数卡' and m4iaYylMuJI69CB < os.time() do gg.alert('脚本已过期') os.exit() end while oCREswACzjUs0RY ~= 'c694bd6b8c75607624710f826531a934' do os.exit() end while checktrue ~= (imei .. WgcEaRzcle7WiMw.user_time .. api_time..xxxxxxx_32665..a5vjZvX6Qe6Gixu) do os.exit() end 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"] xgdj = qmxg[x]["freeze"] if xgdj == nil or xgdj == "" then gg.setValues({[1] = {address = xgpy, flags = xglx, value = xgsz}}) else gg.addListItems({[1] = {address = xgpy, flags = xglx, freeze = xgdj, value = xgsz}}) end xgsl = xgsl + 1 xgjg = true 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"] .. "开启失败") 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"] .. "开启失败") 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) end end if xgjg == true then gg.toast(qmnb[2]["name"] .. "开启成功,一共修改" .. xgsl .. "条数据") else gg.toast(qmnb[2]["name"] .. "未搜索到数据,开启失败") end 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 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) gg.toast("开启成功,一共修改"..#t.."条数据") gg.addListItems(t) else gg.toast("未搜索到数据,开启失败", false) return false end else gg.toast("Not Found") return false end end function HaoGe(Nc,Type,Search,Write) gg.clearResults() gg.setRanges(Nc) 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 tPUBGMH={} local offset=Search[k][2]-base local num=Search[k][1] for i,v in ipairs(result)do tPUBGMH[#tPUBGMH+1]={} tPUBGMH[#tPUBGMH].address=v.address+offset tPUBGMH[#tPUBGMH].flags=v.flags end tPUBGMH=gg.getValues(tPUBGMH) for i,v in ipairs(tPUBGMH)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={} 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) gg.sleep(400) else return false end else return false end end 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 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 end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end function setvalue(address,flags,value) local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end local function interruptThread(thread) if thread then pcall(function() thread:interrupt() end) end end -- 读取 DWORD 和 FLOAT 的函数 function readD(address) return gg.getValues({{address = address, flags = gg.TYPE_DWORD}})[1].value end function readF(address) return gg.getValues({{address = address, flags = gg.TYPE_FLOAT}})[1].value end -- 设置值的函数 function setvalue(address, flags, value, freeze) local t = {} t[1] = {address = address, flags = flags, value = value, freeze = freeze or false} gg.setValues(t) gg.addListItems(t) end -- 获取指针地址的函数 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 _t = ti_bit and 32 or 4 local _S = nil 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 local t = {{address = _S.start + Offset[1], flags = _t}} for i = 2, #Offset do local S = gg.getValues(t) t = {{address = S[1].value + Offset[i], flags = _t}} end return t[1].address end end return string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) end -- LSQ_Chain 函数 function LSQ_Chain(so, offset, format, value, type, Function) local getRanges = function() 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 rest, ranges, sostart, valtype = {}, getRanges(), nil, gg.TYPE_DWORD if gg.getTargetInfo().x64 then valtype = gg.TYPE_QWORD end for i in pairs(ranges) do local _name = ranges[i].internalName:gsub('^.*/', '') if so[1] == _name and so[2] == ranges[i].state then sostart = ranges[i].start break end end if sostart then if offset[1] then for i = 1, #offset do rest = {{flags = valtype, address = sostart + offset[i]}} rest = gg.getValues(rest) if i == #offset then break end if valtype == gg.TYPE_DWORD then sostart = rest[1].value & 0xFFFFFFFF else sostart = rest[1].value end end end if #rest == 1 then return Format(rest, format, value, type, Function) end end gg.toast("功能:" .. Function .. "开启失败") print("功能开启失败原因: 未找到基址头") return os.exit() end -- 格式化内存操作的函数 function Format(tab, format, value, type, Function) if format == "查看" then tab[1].flags = type return gg.getValues(tab) elseif format == "修改" then tab[1].flags = type tab[1].value = value return gg.setValues(tab) elseif format == "冻结" then tab[1].flags = type tab[1].freeze = true tab[1].value = value tab[1].name = Function or "功能" return gg.addListItems(tab) elseif format == "加载" then tab[1].flags = type return gg.loadResults(tab) end end function gai(addr,type,value) local t={} t[1]={} t[1].address=addr t[1].flags=type t[1].value=value gg.setValues(t) end local function RUI(address) return gg.getValues({{ address = address, flags = gg.TYPE_QWORD }})[1].value end D=gg.TYPE_DWORD F=gg.TYPE_FLOAT local function readD(a) return gg.getValues({{ address=a, flags=gg.TYPE_DWORD }})[1].value end local function readF(a) return gg.getValues({{ address=a, flags=gg.TYPE_FLOAT }})[1].value end 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 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 end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end local function setvalue(address,flags,value,freeze) local t={} t[1]={} t[1].address=address t[1].flags=flags t[1].value=value t[1].freeze=freeze gg.setValues(t) gg.addListItems(t) end local function X(address) return gg.getValues({{address = address, flags = gg.TYPE_QWORD}})[1].value end function getvalue(addr,flags) local asbd={} asbd[1]={} asbd[1].address=addr asbd[1].flags=flags tmp=gg.getValues(asbd) return tmp[1].value end function gai(addr,type,value) local t={} t[1]={} t[1].address=addr t[1].flags=type t[1].value=value gg.setValues(t) end local function X(address) return gg.getValues({{ address = address, flags = gg.TYPE_QWORD }})[1].value end D=gg.TYPE_DWORD F=gg.TYPE_FLOAT -- 定义读取 DWORD 和 FLOAT 的函数 function readD(address) return getvalue(address, gg.TYPE_DWORD) end function readF(address) return getvalue(address, gg.TYPE_FLOAT) end -- 定义 RQI 函数(假设是读取 QWORD 类型的值) function RQI(address) return getvalue(address, gg.TYPE_QWORD) end function setvalue(address,flags,value) local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end function getvalue(addr,flags) local asbd={} asbd[1]={} asbd[1].address=addr asbd[1].flags=flags tmp=gg.getValues(asbd) return tmp[1].value end function GotoPointer(start, offset) local flags = {[true] = 32, [false] = 4} local ti64 = gg.getTargetInfo().x64 local type = flags[ti64] local addr = 0 if start then addr = start + offset[1] for index = 2, #offset do local pointer = gg.getValues({{address = addr, flags = type}}) if not ti64 then pointer[1].value = pointer[1].value & 0xFFFFFFFF end addr = pointer[1].value + offset[index] end end return addr end -- 1. 一次性获取基址,只获取一次 local base = 0 local ranges = gg.getRangesList("libUE4.so") if ranges[1] then base = ranges[1].start end -- 2. 预定义路径,减少重复调用 local path = {"libUE4.so:bss","Cb"} -- 3. 一键写入+冻结(封装成超短函数) local function W(offs,val,flag,freeze) local ptr = S_Pointer(path,offs,true) if ptr ~= 0 then gg.addListItems({{ address = ptr, flags = flag, value = val, freeze = freeze }}) end end local function setvalue(address,flags,value,freeze) local t={} t[1]={} t[1].address=address t[1].flags=flags t[1].value=value t[1].freeze=freeze gg.setValues(t) gg.addListItems(t) end -------------------------上面配置----------------------------- -- 1. 为每个循环定义独立控制变量(关键:避免冲突) --local loop32判断高挑Open = false local loop64判断高挑Open = false --local loop32飞Open = false local loop64飞Open = false --local loop32挥拳Open = false local loop64挥拳Open = false -------------------------多线程------------------------------ function start64飞Loop() if loop64飞Open then return end loop64飞Open = true while loop64飞Open do ff() end end function stop64飞Loop() loop64飞Open = false gg.playMusic("/storage/emulated/0/小鱼/音频/关闭.mp3") end ------- -- function start64判断高挑Loop() if loop64判断高挑Open then return end loop64判断高挑Open = true while loop64判断高挑Open do PN() end end function stop64判断高挑Loop() loop64判断高挑Open = false ty=false ty=false WriteFloat(gx1,0.05) WriteFloat(bs3,1) WriteFloat(bs2,1) WriteFloat(bs4,0.40000000596) WriteFloat(bs1,1) WriteFloat(zl,1) WriteFloat(gt,443) WriteFloat(gx2,0) WriteFloat(bs5,1) gg.playMusic("/storage/emulated/0/冷烁/音频/关闭.mp3") end function start64挥拳Loop() if loop64挥拳Open then return end loop64挥拳Open = true while loop64挥拳Open do HHP() end end function stop64挥拳Loop() loop64挥拳Open = false gg.playMusic("/storage/emulated/0/冷烁/音频/关闭.mp3") end -------------------------多线程----------------------- function PN() UE4bss = gg.getRangesList("libUE4.so:bss")[1].start UE4 = gg.getRangesList("libUE4.so")[1].start zs=getZZ(getZZ(getZZ(UE4bss+0x558cf0)+0x30)+0x4B8) --自身结构 lcld=getZZ(getZZ(UE4bss+0x558cf0)+0x30)+0xE4 x64地皮64=UE4+0xCAC92C4 x78jiasu=UE4+0x6345808 v=zs+0x1168 lh=zs+0xE8 mp1=zs+0x64 mp2=zs+0x68 mp3=zs+0x19A8 bs1=zs+0xE4 gt50=zs+0x2d08 gx=getZZ(zs+0x518)+0x268 KaDun=getZZ(zs+0x518)+0x258 gx1=getZZ(zs+0x518)+0x28c lt=getZZ(zs+0x518)+0x610 zl=getZZ(zs+0x518)+0x214 zigai=getZZ(zs+0x518)+0x250 zigai1=getZZ(zs+0x518)+0x250 gt=getZZ(zs+0x518)+0x21C gx2=getZZ(zs+0x518)+0x238 zbz=getZZ(zs+0x208)+0x228 zby=getZZ(zs+0x208)+0x224 zbx=getZZ(zs+0x208)+0x220 bs999=getZZ(getZZ(getZZ(getZZ(UE4bss+0x558cf0)+0x30)+0x20)+0x400) bs2=bs999+0x758 bs3=bs999+0x75c bs4=bs999+0x770 bs5=getZZ(zs+0x510)+0xc70 local cfg_file = gg.EXT_FILES_DIR.."/"..gg.getFile():match("[^/]+$")..'(自改人物变速配置.).h' local chunk = loadfile(cfg_file) local cfg = nil if chunk ~= nil then cfg = chunk() end if cfg == nil then cfg = {25, 0.73, true} end h= gg.prompt({ "自改空中移速 60帧不要超过25 120最高改50", "变速自改 120帧默认 90帧1 60帧1.3" },cfg,{"text","text"}) if h == nil then else gg.saveVariable(h, cfg_file) if h[1] == true then h1() end if h[2] == true then h2() end time=os.clock() end WriteFloat(bs1,1) WriteFloat(zl,17) WriteFloat(gt,10000) WriteFloat(gx2,999999) WriteFloat(bs5,1.08) WriteFloat(bs3,h[2]) WriteFloat(bs2,187) WriteFloat(bs4,0.00004) UE4bss = gg.getRangesList("libUE4.so:bss")[1].start zs=getZZ(getZZ(getZZ(UE4bss+0x558cf0)+0x30)+0x4B8) --自身结构 zt=getZZ(zs+0x518)+0x22C v=zs+0x1168 gx=getZZ(zs+0x518)+0x268 gx1=getZZ(zs+0x518)+0x298 kj=getZZ(zs+0x1ca0)+0x3C0--100f防卡脚 WriteFloat(gx1,99999) ty=true while ty do gg.sleep(30) if getDword(zt)==3 then WriteFloat(v,h[1]) WriteFloat(gx,999999) WriteFloat(kj,0) end if getDword(zt)~=3 then WriteFloat(v,4) WriteFloat(gx,4000) WriteFloat(kj,100) end end end function ff() --64 QA = gg.prompt({ "5~10", },cfg,{"自改空中移速"}) if QA == nil then else if QA[1] == true then QA1() end LSQ_Chain({'libUE4.so:bss','Cb'},{0x558cf0,0x30,0x4B8,0x1168},"冻结",QA[1],16,"微加速") end LSQ_Chain({'libUE4.so:bss','Cb'},{0x558cf0,0x30,0x4B8,0x518,0x134},"冻结","18",16,"定") LSQ_Chain({'libUE4.so:bss','Cb'},{0x558cf0,0x30,0x4B8,0x518,0x268},"冻结","999999",16,"8192") LSQ_Chain({'libUE4.so:bss','Cb'},{0x558cf0,0x30,0x20,0x400,0x758},"冻结","0.4",16,"变速") LSQ_Chain({'libUE4.so:bss','Cb'},{0x558cf0,0x30,0x20,0x400,0x770},"冻结","0.0001",16,"减速") LSQ_Chain({'libUE4.so:bss','Cb'},{0x558cf0,0x30,0x20,0x400,0x75c},"冻结","90",16,"变速") LSQ_Chain({'libUE4.so:bss','Cb'},{0x558cf0,0x30,0x4B8,0x64},"冻结","0.0001",16,"流畅趴下") LSQ_Chain({'libUE4.so:bss','Cb'},{0x558cf0,0x30,0x4B8,0x518,0x214},"冻结","7",16,"重力") LSQ_Chain({'libUE4.so:bss','Cb'},{0x558cf0,0x30,0x4B8,0x518,0x28c},"冻结","0.4",16,"0.05") LSQ_Chain({'libUE4.so:bss','Cb'},{0x558cf0,0x30,0x4B8,0x68},"冻结","0.0001",16,"流畅趴下") LSQ_Chain({'libUE4.so:bss','Cb'},{0x558cf0,0x30,0x5c},"冻结","999999",16,"流畅落地") LSQ_Chain({'libUE4.so:bss','Cb'},{0x558cf0,0x30,0x4B8,0x518,0x27C},"冻结","99999",16,"2048") LSQ_Chain({'libUE4.so:bss','Cb'},{0x558cf0,0x30,0x4B8,0x518,0x2b8},"冻结","0",16,"13680") LSQ_Chain({"libUE4.so:bss","Cb"},{0x558cf0,0x30,0x4B8,0x518,0x70},"冻结","0.001",16,"卡顿防拉") LSQ_Chain({'libUE4.so:bss','Cb'},{0x558cf0,0x30,0x4B8,0x518,0x268+0x30},"冻结","999",16,"空中急停") so = gg.getRangesList('libUE4.so')[1].start ttAddr = GotoPointer(so,{0x12BF57F0,0x30,0x4B8,0x10B4}) zAddr = GotoPointer(so,{0x12BF57F0,0x30,0x4B8,0x268,0x228}) OP=gg.prompt({'上升速度调节推荐\n60FPS40~50\n90FPS30~40\n120FPS20~30'},{[1]='25'},{[1]='number'}) if OP == nil or OP[1] == '' or OP[1] == '0' then gg.toast("取消") else while true do while card_type ~= '次数卡' and m4iaYylMuJI69CB < os.time() do gg.alert('脚本已过期') os.exit() end while oCREswACzjUs0RY ~= 'c694bd6b8c75607624710f826531a934' do os.exit() end while checktrue ~= (imei .. WgcEaRzcle7WiMw.user_time .. api_time..xxxxxxx_32665..a5vjZvX6Qe6Gixu) do os.exit() end tt = getvalue(ttAddr, 16) if tt == 120 then setvalue(zAddr, gg.TYPE_FLOAT, readF(zAddr) + OP[1], true) else local t = {"libUE4.so:bss", "Cb"} local tt = {0x558cf0,0x30,0x4B8,0x268,0x228} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, freeze = false}}) end end end end function HHP() --64 if MY == nil then MY = {50,4} end M = gg.prompt({ "自改挥拳10-50", "自改正常4-10", },MY,{"text","text"}) if M == nil then else if M[1] == true then M1() end if M[2] == true then M2() end function getPointerAddress(base, offsets) local t = { "libUE4.so:bss", "Cb" } return S_Pointer(t, offsets, true) end function getValue(address, flags) local result = gg.getValues({ { address = address, flags = flags } }) if result and result[1] then return result[1].value end return nil end function setValue(address, flags, value, freeze) gg.addListItems({ { address = address, flags = flags, value = value, freeze = freeze } }) end local baseAddress = 0x558cf0 local checkOffsets = { 0x558cf0,0x30,0x4B8,0xFB8 } local checkAddress = getPointerAddress(baseAddress, checkOffsets) while true do while card_type ~= '次数卡' and m4iaYylMuJI69CB < os.time() do gg.alert('脚本已过期') os.exit() end while oCREswACzjUs0RY ~= 'c694bd6b8c75607624710f826531a934' do os.exit() end while checktrue ~= (imei .. WgcEaRzcle7WiMw.user_time .. api_time..xxxxxxx_32665..a5vjZvX6Qe6Gixu) do os.exit() end local checkValue = getValue(checkAddress, 4) if checkValue == 8200 or checkValue == 8203 then LSQ_Chain({'libUE4.so:bss','Cb'},{0x558cf0,0x30,0x4B8,0x1168},"冻结",M[1],16,"微加速") gg.sleep(2000) LSQ_Chain({'libUE4.so:bss','Cb'},{0x558cf0,0x30,0x4B8,0x1168},"冻结",M[2],16,"微加速") end end end end ----------------------------------------------------- _ENV["悬浮窗图标"] = "https://xuanmo.xyz/f/d/ZdLKh7/Image_1776570912619_358.jpg" --写图片文件直链 _ENV["标题"] = "ELGG - UI" _ENV["分页"] = { --导航栏分页名字和图标,添加表即可加页数,需要与功能配置页面数量对应 "公告", "范围区", --'设置',--这样添加新页面 } function a() gg.setProcessX() gg.playMusic("/storage/emulated/0/冷烁/音频/选择进程.mp3") end function b() draw.remove() -- 删除 end function c() local t = {"libanogs.so:bss", "Cb"} local tt = {0x3F50} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = 64, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x3F58} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = 64, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x4368} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = 64, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x3F48} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = 64, freeze = true}}) gg.playMusic("/storage/emulated/0/冷烁/音频/防闪.mp3") end function d() local t = {"libanogs.so:bss", "Cb"} local tt = {0x610} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 64, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x5D8} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 64, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x300} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 64, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x3F8} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 64, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x430} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 64, freeze = true}}) gg.playMusic("/storage/emulated/0/冷烁/音频/防闪.mp3") end init() uistart({ --每一个功能页面需要有上边分页名字对应,多出来的不显示,少了需要补充 { --1 CAtext("嘉豪范围特别版欢迎您使用", "#005BFF", "14sp"), CAtext("记得反馈 作者 小鱼"), CAtext("官方频道HYNP886", "#000000", "12sp", true), CAbutton("选择游戏进程", function() a() end), CAbutton("隐藏水印", function() b() end), CAbutton("防闪", function() if gg.getRangesList("libanogs.so")[1] then local t = {} t[1] = gg.getRangesList("libanogs.so")[1]["start"] + 0x51FA80; -- 数值地址:0x78F1749A80 t[2] = gg.getRangesList("libanogs.so")[1]["start"] + 0x51FA84; -- 数值地址:0x78F1749A84 t[3] = gg.getRangesList("libanogs.so")[1]["start"] + 0x5201F0; -- 数值地址:0x78F174A1F0 t[4] = gg.getRangesList("libanogs.so")[1]["start"] + 0x5201F4; -- 数值地址:0x78F174A1F4 gg.setValues({ [1] = { address = t[1], flags = 4, value = -698416192, }, [2] = { address = t[2], flags = 4, value = -698416192, }, [3] = { address = t[3], flags = 4, value = -698416192, }, [4] = { address = t[4], flags = 4, value = -698416192, }, }) gg.toast("开启成功") end ----防闪 DM="成功" gg.playMusic("https://fanyi.baidu.com/gettts?lan=zh&text="..DM.."&spd=5&source=wise") c() end), CAswitch("退出", function() Lock.unUi() end, function() end), CAline("听点音乐吧"), CAcheck({ { "假话叫爹", function() gg.playMusic("https://www.mpimg.cn/down.php/4b8d476715f868baa2af79b6cb42048a.mp3") end, function() gg.playMusic("https://www.mpimg.cn/down.php/4b8d476715f868baa2af79b6cb42048a.mp3") end, }, { "冷烁叫妈妈", function() gg.playMusic("https://www.mpimg.cn/down.php/d27c63a3b35daf51000e3fe7ad4aca2a.mp3") end, function() gg.playMusic("https://www.mpimg.cn/down.php/d27c63a3b35daf51000e3fe7ad4aca2a.mp3") end, }, { "预防几个", function() gg.playMusic("https://www.mpimg.cn/down.php/647ff5a94b4e11148d0e719938da6354.mp3") end, function() gg.playMusic("https://www.mpimg.cn/down.php/647ff5a94b4e11148d0e719938da6354.mp3") end, }, { "涵开叫爹", function() gg.playMusic("https://www.mpimg.cn/down.php/52d258ae02a95d8e11eb3147ad590d94.mp3") end, function() gg.playMusic("https://www.mpimg.cn/down.php/52d258ae02a95d8e11eb3147ad590d94.mp3") end, }, }), }, { --2 CAswitch("防止卡伤(防无伤)", function() function getRanges() local ranges = {} local tt = {} local t = gg.getRangesList('^/data/*.so*$') for i in pairs(t) do if t[i].type:sub(2, 2) == 'w' or t[i].type == "r-xp" then if not tt[t[i].internalName] then tt[t[i].internalName] = {} end if not tt[t[i].internalName][t[i].state] then tt[t[i].internalName][t[i].state] = 0 end tt[t[i].internalName][t[i].state] = tt[t[i].internalName][t[i].state] + 1 t[i].count = tt[t[i].internalName][t[i].state] table.insert(ranges, t[i]) end end return ranges end function Base_Address(N_So) local S_list = getRanges() local _S = {} 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 and N_So[3] == S_list[i].count then _S = S_list[i] break end end return _S.start end function Get_Address(Address, Offset) local flags_bit = {[true] = 32, [false] = 4} local ti64 = gg.getTargetInfo().x64 local Type = flags_bit[ti64] local addr = 0 if Address then addr = Address + Offset[1] for _ = 2, #Offset do local pointer = gg.getValues({{address = addr, flags = Type}}) if not ti64 then pointer[1].value = pointer[1].value & 0xFFFFFFFF end addr = pointer[1].value + Offset[_] end end return addr end gg.toast("修复卡伤") local t = Base_Address({"libUE4.so:bss", "Cb", 1}) local tt = {0x1FE76C, 0x60, 0xEC, 0x60} local ttt = Get_Address(t, tt) gg.setValues({{address = ttt, flags = 16, value = 1.24}}) gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("0.00009203507", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1, 0) gg.getResults(10) gg.editAll("0", gg.TYPE_FLOAT)--浮点数防卡 gg.toast("开启成功") DM="开启成功" gg.playMusic("https://fanyi.baidu.com/gettts?lan=zh&text="..DM.."&spd=5&source=wise") end, function() end,"一把一开"), CAswitch( "乱射范围", function() function IsInHitbox(me, target, hitPos) if not target or not target:IsAlive() then return false, 0 end local head = target:GetBonePos(6) local neck = target:GetBonePos(5) local chest = target:GetBonePos(4) local pelvis = target:GetBonePos(2) local l_thigh = target:GetBonePos(36) local r_thigh = target:GetBonePos(37) local dist_head = hitPos:Distance(head) local dist_neck = hitPos:Distance(neck) local dist_chest = hitPos:Distance(chest) if dist_head < 0.25 then return true, 6 end if dist_neck < 0.2 then return true, 5 end if dist_chest < 0.4 then return true, 1 end local dist_l_thigh = hitPos:Distance(l_thigh) local dist_r_thigh = hitPos:Distance(r_thigh) if dist_l_thigh < 0.35 or dist_r_thigh < 0.35 then return true, 2 end return true, 3 end gg.clearResults() py4=0X223D3FC py5=0X26F1A38 py6=0X26F1A3C py7=0X2A48B3C py8=0X2A48B40 py9=0X2A48BF0 py10=0X2739E68 py11=0X2739E34 py12=0X2739E68 gg.clearResults() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("10;46", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) -- gg.editAll("688", gg.TYPE_FLOAT) gg.alert("开启成功") end), CAswitch("HOOK范围", function() function setvalue(address,flags,value) local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end --静态 function split(szFullString, szSeparator) local nFindStartIndex = 1 local nSplitIndex = 1 local nSplitArray = {} while true do while card_type ~= '次数卡' and m4iaYylMuJI69CB < os.time() do gg.alert('脚本已过期') os.exit() end while oCREswACzjUs0RY ~= 'c694bd6b8c75607624710f826531a934' do os.exit() end while checktrue ~= (imei .. WgcEaRzcle7WiMw.user_time .. api_time..xxxxxxx_32665..a5vjZvX6Qe6Gixu) do os.exit() end 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"] xgdj = qmxg[x]["freeze"] if xgdj == nil or xgdj == "" then gg.setValues({[1] = {address = xgpy, flags = xglx, value = xgsz}}) else gg.addListItems({[1] = {address = xgpy, flags = xglx, freeze = xgdj, value = xgsz}}) end xgsl = xgsl + 1 xgjg = true 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"] .. "开启失败") 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"] .. "开启失败") 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) end end if xgjg == true then gg.toast(qmnb[2]["name"] .. "开启成功,一共修改" .. xgsl .. "条数据") else gg.toast(qmnb[2]["name"] .. "未搜索到数据,开启失败") end end end end function Fxs(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 print([[Telegram:-Zxbyyds]]) tg=(tg_) and "\n修改"..tg_.."数据" or "" th=(th_) and "" or "" gg.setValues(t) t_=gg.getValues(t_) gg.loadResults(t_) gg.toast("\n"..Name..tg) tg_,th_=nil,nil else gg.toast("搜索不到",false) return false end else gg.toast("开启失败") return false 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("found "..#data.." 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("啦啦啦啦", false) return false end else gg.toast("啦啦啦啦") return false end end Fxs({{false,-1359975840,0,4,nil,nil}},{{-1228926273201366,-12,32,false}},4,16384,"移动修") qmnb = { {["memory"] = 44}, {["name"] = "减伤修"}, {["value"] = 4740038608910024704, ["type"] = 44}, {["lv"] = 4752423507886342144, ["offset"] = 4, ["type"] = 44}, {["lv"] = 1106509824, ["offset"] = 8, ["type"] = 44}, }qmxg = {{["value"] = 100, ["offset"] = 0, ["type"] = 16}, {["value"] = 100, ["offset"] = 4, ["type"] = 16}, {["value"] = 100, ["offset"] = 8, ["type"] = 16}, } xqmnb(qmnb) gg.setRanges(32) local dataType = 16 local search = {{9.20161819458,0},{25.0,28},{30.5,32},} local modify = {{90000,24},{90000,28},{90000,32},} SearchWrite(search,modify,dataType) gg.clearResults() gg.setRanges(32) local dataType = 16 local search = {{-88.73961639404,0},{18,4},{90.48510742188,4},} local modify = {{210,4},} SearchWrite(search,modify,dataType)--倒地 gg.clearResults() gg.setRanges(gg.REGION_CODE_APP) gg.searchNumber("-1,883,348,481,058,764,210", gg.TYPE_QWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("-1,883,348,481,058,764,210", gg.TYPE_QWORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("-1,883,348,485,055,444,540", gg.TYPE_QWORD) gg.clearResults() gg.setRanges(gg.REGION_C_DATA | gg.REGION_CODE_APP) gg.searchNumber("-298284466;-1.304566e23F", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("-298284466", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(99) gg.editAll("0", gg.TYPE_DWORD) gg.clearResults()--瞬击 local Nc = 16384 local Lx = 16 local Sz1 = {{-1.42781105e28, 0}} local Sz2 = {{0, 0}} function PS() end -- 2CF09F8 2CF09D4 2CF09E8 function setvalue(address,flags,value) PS('修改地址数值(地址,数值类型,要修改的值)') local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end so=gg.getRangesList("libUE4.so")[1].start--头部 py=0xDc7580 setvalue(so+py,4,0) py=0xDC760C setvalue(so+py,4,0) py=0xDC7778 setvalue(so+py,4,0) so=gg.getRangesList('libUE4.so')[1].start py=0X194AC5C setvalue(so+py,4,0) so=gg.getRangesList('libUE4.so')[1].start py=0X30278C8 setvalue(so+py,4,0) so=gg.getRangesList('libUE4.so')[1].start py=0X320DDE8 setvalue(so+py,4,0) so=gg.getRangesList('libUE4.so')[1].start py=0X326F680 setvalue(so+py,4,0) so=gg.getRangesList('libUE4.so')[1].start py=0X330FF18 setvalue(so+py,4,0) so=gg.getRangesList('libUE4.so')[1].start py=0X3B301FC setvalue(so+py,4,0) so=gg.getRangesList("libUE4.so")[1].start--头 py=0x2739E34--爆头 gg.toast("kc小鱼") so=gg.getRangesList('libUE4.so')[1].start py=0x47A999C setvalue(so+py,16,0) py=0x53D88DC setvalue(so+py,16,0) py=0x3912D54 setvalue(so+py,16,0) gg.toast(" kc小鱼 ") gg.clearResults() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("25;23;30.5", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(3) gg.editAll("110", gg.TYPE_FLOAT) gg.clearResults() gg.setRanges(32) gg.searchNumber("25;30.5", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(999) gg.editAll("66;110", gg.TYPE_FLOAT) gg.alert("KS小鱼") gg.setRanges(gg.REGION_CODE_APP) gg.searchNumber("-298284466", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(15) gg.editAll("0", gg.TYPE_DWORD) gg.clearResults() gg.toast("瞬击") local DM="开启成功" gg.playMusic("https://fanyi.baidu.com/gettts?lan=zh&text="..DM.."&spd=5&source=wise") end, function() end, "局内开"), CAswitch("头部范围", function() if gg.getRangesList("libUE4.so")[1] then local t = {} t[1] = gg.getRangesList("libUE4.so")[1]["start"] + 0xC08A09C; -- 数值地址:0x71DF4AC09C t[2] = gg.getRangesList("libUE4.so")[1]["start"] + 0xC4900CC; -- 数值地址:0x71DF8B20CC t[3] = gg.getRangesList("libUE4.so")[1]["start"] + 0xC4902D0; -- 数值地址:0x71DF8B22D0 t[4] = gg.getRangesList("libUE4.so")[1]["start"] + 0xC54E2D0; -- 数值地址:0x71DF9702D0 gg.addListItems({ [1] = { address = t[1], flags = 4, value = -721215457, freeze = true, }, [2] = { address = t[2], flags = 4, value = -721215457, freeze = true, }, [3] = { address = t[3], flags = 4, value = 335544446, freeze = true, }, [4] = { address = t[4], flags = 4, value = -721215457, freeze = true, }, }) gg.toast("开启成功") gg.clearResults() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber('10;46',gg.TYPE_FLOAT,false,gg.SIGN_EQUAL,0, -1) gg.searchNumber('',gg.TYPE_FLOAT,false,gg.SIGN_EQUAL,0, -1) gg.getResults(100) gg.editAll('999',gg.TYPE_FLOAT) gg.clearResults() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("15;22.5;45", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(6) gg.editAll("120", gg.TYPE_FLOAT) gg.toast("开启成功") DM="开启成功" gg.playMusic("https://fanyi.baidu.com/gettts?lan=zh&text="..DM.."&spd=5&source=wise") end end, function() end,"一把一开"), CAswitch("大特效", function() 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 PS() end function setvalue(address,flags,value) PS('修改地址数值(地址,数值类型,要修改的值)') local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end local gurenya=gg.setValues--静态 local t = {"libUE4.so:bss", "Cb"} local tt = {0x558CF0,0x30,0x540,0x618,0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 9999, freeze = true}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x558CF0,0x30,0x540,0x618,0x50} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 9999, freeze = true}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x558CF0,0x30,0x540,0x618,0x90} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 9999, freeze = true}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x558CF0,0x30,0x540,0x618,0xD0} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 9999, freeze = true}}) gg.toast("成功") DM="开启成功" gg.playMusic("https://fanyi.baidu.com/gettts?lan=zh&text="..DM.."&spd=5&source=wise") end, function() end,"全局"), } }) Lock.Ui(invoke, nil, function(err) print(err) end) end end end if km_key == nil then else if km_key ~= "" then if e == true then mtgLfWEIjMuYz8g(km_key) end end end hak = gg.prompt({"输入卡密\n输入1解绑卡密" .. "\n公告:" .. notice .. "\n脚本启动次数:" .. number_of, "是否自动登入","退出登录"}, {km_key, e,false}, {'text', 'checkbox',"checkbox"}) if hak == nil then elseif hak[3] == true then while (true) do os.exit(print("您取消了输入卡密")) end elseif hak[2] == true then io.open(AMI_YDO .. '/e'.. xxxxxxx_32665 ..'.log', 'w+'):write("2") elseif hak[2] == false then io.open(AMI_YDO .. '/e'.. xxxxxxx_32665 ..'.log', 'w+'):write("1") end if hak == nil then gg.setVisible(false) xxxxxxxx = nil elseif hak[1] == "1" then G_B = gg.prompt({"输入要解绑的卡密"}, {}, {"text"}) if G_B[1] == "" then gg.alert("空,请填写卡密") else KM_G = s34KS448lfLQdCR(KM_G(G_B[1],imei)) gg.alert(KM_G.msg) end elseif hak[1] == "" then gg.alert("空,请填写卡密") else mtgLfWEIjMuYz8g(hak[1]) end end uZEhNdDMDh5FlWv() end while (true) do if gg.isVisible(true) then gg.setVisible(false) i0HXyCSLPhBtTpG() else if xxxxxxxx == 999 then gg.setVisible(true) else end end end