do if type(getrlyunyz) ~= 'function' then gg.alert('请使用RLGG执行') os.exit() return end local info = { example_version = '1.0.3', name = '冬月', appid = '26567', appkey = 'e7MGG6q2MMXF6MxA', rc4key = 'P55Sa5prbRYSdhD1', version = '1.0', mi_type = '3' } local rlyunyz = getrlyunyz(info) local ret = rlyunyz.start() if not ret or not isTable(ret) or ret.sign ~= '021dccbe9bcbdbb97b2ba4358971940d' then os.exit() return end end -- 把以上代码复制到你脚本最前面即可 gg.alert('解绑寻找作者') local is64 = gg.getTargetInfo().x64 if is64 ~=true then gg.alert("检测当前游戏不是脚本支持的64位游戏请下载或者转化为64位的游戏,否则后果自负\n您当前的进程:\n"..gg.getTargetInfo()['label'].."\n包名:"..gg.getTargetPackage().."\n版本:"..gg.getTargetInfo()['versionName']) end if debug.getinfo(gg.makeRequest).isvararg ~= false then print("安全") else gg.alert("你个SB") os.exit() end if string.gsub(string.gsub(io.open("/data/user/0/"..string.match(gg.EXT_FILES_DIR,"data/(.-)/").."/shared_prefs/"..string.match(gg.EXT_FILES_DIR,"data/(.-)/").."_preferences.xml"):read("*a") , "-", "") , tostring(string.char(34)), ""):match("history-sticked") ~=nil then gg.alert("\n请勿使用拦截器拦截此脚本") os.exit() end function Judge_Game_Ban_Anti() --local r = gg.getListItems() ---状态检查 勿动 if game_banAnti_op == true then return "已开启" else return "未开启" end end function ChuShiHua() DiaoYong = nil -- CdData = [[ -- ]] Files = io.open("/sdcard/Cddata.ini","w") Files:write(CdData) Files:close() gg.toast("已写出文件") DiaoYong = true return DiaoYong end -----------------------防脚本反编译----------------------- function Sots_searchNumber(n, type, ft, sign, r, s) local waring = "\nFmc" gg.setVisible(false) gg.searchNumber(n, type, ft, sign, r, s) if gg.isVisible(true) then gg.setVisible(false) gg.processKill() print(waring) while true do gg.setVisible(false) while true do end end 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"] 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"] .. "Operation failed") 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"] .. "Operation failed") 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"] .. "Opened, value is modified" .. xgsl .."Article data") else gg.toast(qmnb[2]["name"] .. "Opened, value is modified") 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("Opened, value is modified"..#t.."Article data") gg.addListItems(t) else gg.toast("Opened, value is modified", false) return false end else gg.toast("Not Found") 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"] 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.setVisible(false) gg.setRanges(qmnb[1]["memory"]) gg.searchNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. " Failed") 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"]) xxx=gg.getResultCount() if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. " Failed") 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"] .. "\nFound: "..xxx.." Edited: " .. xgsl .. "") else gg.toast(qmnb[2]["name"] .. " Failed") end end end gg.clearResults() 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 hex = {} function patch(lib,offset,edit,type) local ranges = gg.getRangesList(lib) local xy = {} xy[1] = {} xy[1].address = ranges[1].start + offset xy[1].flags = type xy[1].value = edit gg.setValues(xy) 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(Name.." modify"..#data.."Article 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(Name.."Failed to open", false) return false end else gg.toast(Name.."Failed to open") 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"] .. "Failed to open") 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) xgjg = true end end if xgjg == true then gg.toast(qmnb[2]["name"] .. "Smile reminder: open successfully, modify a total" .. xgsl .. "ArticleΔΘ") else gg.toast(qmnb[2]["name"] .. "Smile reminder: failed to open") end end end end function PS() end function setvalue(address,flags,value) PS('Modify address value (address, value type, value to be modified)') local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end function SearchWrite(Search, Write, Type, Name) 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.."Code 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) gg.toast(Name.."Successfully opened! already"..#t.."Code Data") gg.addListItems(t) else gg.toast(Name.."Failed to open", false) return false end else gg.toast(Name.."Failed to open") return false end end function Fxs(Search, Write,Neicun,Mingcg,Shuzhiliang) gg.clearResults() gg.setRanges(Neicun) gg.setVisible(false) gg.searchNumber(Search[1][1], Search[1][3]) 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 = Search[k][3] 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(Mingcg.."????"..#data.."") local t = {} local base = Search[1][2] if Shuzhiliang == "" and Shuzhiliang > 0 and Shuzhiliang < #data then Shuzhiliang=Shuzhiliang else Shuzhiliang=#data end for i=1, Shuzhiliang do for k, w in ipairs(Write) do offset = w[2] - base t[#t+1] = {} t[#t].address = data[i] + offset t[#t].flags = w[3] t[#t].value = w[1] if (w[4] == true) then local item = {} item[#item+1] = t[#t] item[#item].freeze = true gg.addListItems(item) end end end gg.setValues(t) gg.toast(Mingcg.."????"..#t.."") gg.addListItems(t) else gg.toast(Mingcg.."????", false) return false end else gg.toast("????") 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"] 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"] .. "Failed to open") 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"] .. "Failed to open") 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"] .. "Successfully opened, modified in total" .. xgsl .. "Article data") else gg.toast(qmnb[2]["name"] .. "No data found, failed to open") 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("Successfully opened, modified in total"..#t.."Article data") gg.addListItems(t) else gg.toast("No data found, failed to open", false) return false end else gg.toast("Not Found") return false end end local memFrom, memTo, lib, num, lim, results, src, ok = 0, -1, nil, 0, 32, {}, nil, false function name(n) if lib ~= n then lib = n local ranges = gg.getRangesList(lib) if #ranges == 0 then print('⚠️ ᴇʀʀᴏʀ : ' .. lib .. ' ⚠️') gg.alert('ᴇʀʀᴏʀ : ' .. lib .. '\n ᴘʟᴇᴀꜱᴇ ꜱᴇʟᴇᴄᴛ ᴄᴀʟʟ ᴏꜰ ᴅᴜᴛʏ ᴘʀᴏᴄᴇꜱꜱ') gg.toast('ᴇʀʀᴏʀ : ' .. lib .. '\n ᴘʟᴇᴀꜱᴇ ꜱᴇʟᴇᴄᴛ ᴄᴀʟʟ ᴏꜰ ᴅᴜᴛʏ ᴘʀᴏᴄᴇꜱꜱ ') os.exit() else memFrom = ranges[1].start memTo = ranges[#ranges]['end'] end end end function hex2tbl(hex) local ret = {} hex:gsub('%S%S', function(ch) ret[#ret + 1] = ch return '' end) return ret end function original(orig) local tbl = hex2tbl(orig) local len = #tbl if len == 0 then return end local used = len if len > lim then used = lim end local s = '' for i = 1, used do if i ~= 1 then s = s .. ';' end local v = tbl[i] if v == '??' or v == '**' then v = '0~~0' end s = s .. v .. 'r' end s = s .. '::' .. used gg.searchNumber(s, gg.TYPE_BYTE, false, gg.SIGN_EQUAL, memFrom, memTo) if len > used then for i = used + 1, len do local v = tbl[i] if v == '??' or v == '**' then v = 256 else v = ('0x' .. v) + 0 if v > 127 then v = v - 256 end end tbl[i] = v end end local found = gg.getResultCount() results = {} local count = 0 local checked = 0 while not (found <= checked) do local all = gg.getResults(8) local total = #all local start = checked if total < checked + used then break end for i, v in ipairs(all) do v.address = v.address + myoffset end gg.loadResults(all) while total > start do local good = true local offset = all[1 + start].address - 1 if len > used then local get = {} for i = lim + 1, len do get[i - lim] = { address = offset + i, flags = gg.TYPE_BYTE, value = 0 } end get = gg.getValues(get) for i = lim + 1, len do local ch = tbl[i] if ch ~= 256 and get[i - lim].value ~= ch then good = false break end end end if good then count = count + 1 results[count] = offset checked = checked + used else local del = {} for i = 1, used do del[i] = all[i + start] end gg.removeResults(del) end start = start + used end end end function replaced(repl) num = num + 1 local tbl = hex2tbl(repl) if src ~= nil then local source = hex2tbl(src) for i, v in ipairs(tbl) do if v ~= '??' and v ~= '**' and v == source[i] then tbl[i] = '**' end end src = nil end local cnt = #tbl local set = {} local s = 0 for _, addr in ipairs(results) do for i, v in ipairs(tbl) do if v ~= '??' and v ~= '**' then s = s + 1 set[s] = { address = addr + i, value = v .. 'r', flags = gg.TYPE_BYTE } end end end if s ~= 0 then gg.setValues(set) end ok = true 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 read_file(path) local file = io.open(path, "rb") if not file then return nil end local content = file:read("*a") file:close() return content end local HexPatches = {} function HexPatches.MemoryPatch(Lib,Offset,Edit,Type) local Ranges = gg.getRangesList(Lib) local v = {} v[1] = {} v[1].address = Ranges[1].start + Offset v[1].flags = Type v[1].value = Edit.."r" v[1].freeze = true gg.setValues(v) 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 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(address,flags,value) local CatWill={} CatWill[1]={} CatWill[1].address=address CatWill[1].flags=flags CatWill[1].value=value gg.setValues(CatWill) 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 local json =json 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("-- WSG PRO 1.0.9(109)\n"..g.config) if g.data ~= nil then g.sel = g.data() g.data = nil end if g.sel == nil then g.sel = {"请输入歌曲名","10"} 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 sn=gg.choice({"播放歌曲","播放并下载"},nil,"歌曲:"..gqlb[SN]) if sn == nil then end if sn == 1 then play(idb[SN],gqlb[SN]) end if sn == 2 then local XEY=gg.makeRequest("http://music.163.com/song/media/outer/url?id="..idb[SN]..".mp3").content local XEY1=gg.getFile():gsub("[^/]+$","")..gqlb[SN]..".mp3" io.open(XEY1,"w"):write(XEY) gg.alert("提示:\n\n音乐已成功下载位置:\n\n"..XEY1) end XGCK=-1 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 = "-- WSG PRO 1.0.9(109)\nreturn " .. 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 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 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..'开启失败telegram@BYYXnb') 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.setValues(Data) gg.addListItems(Freeze) if Freezes==0 then gg.toast(Search[2].name..'开启成功,共修改'..sum..'条数据telegram@BYYXnb') else gg.toast(Search[2].name..'开启成功,共修改'..sum..'条数据,冻结'..Freezes..'条数据') end gg.clearResults() 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("修改"..#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(":搜索0条数据.修改失败", false) return false end else gg.toast("搜索0条数据.修改失败") return false end end -- 中断线程 local function interruptThread(thread) if thread then pcall(function() thread:interrupt() end) end end -- 获取异步线程回调 local function getASyncThreadCallbak(func) return function() luajava.startThread(function() return pcall(func) end) end end -- 工厂方式创建复用 GradientDrawable layout local function newGradientDrawableLayout(layout) local baseLayout = { GradientDrawable, cornerRadius = '15dp', color = 0x20000000 } return table.copy(baseLayout, layout) end -- 获取同步线程回调, 涉及gg类库的回调只能使用这种,否则可能不稳定 local task local function getSyncThreadCallbak(func) return function() if task then gg.toast('正在运行其它任务,再稍后!') return end luajava.startThread(function() task = true pcall(func) task = nil end) end end -- 获取同步线程回调并执行 local function callSyncThreadCallbak(func) return getSyncThreadCallbak(func)() end -- 通过功能名称找 function 并获取同步线程回调 local function findFunctionByName(name) local func = _ENV[name] if not isFunction(func) then gg.alert(string.format('不存在 %q 功能', name)) return nil end return getSyncThreadCallbak(func) end -- 按钮布局 local function newButtonLayout(name) if not isString(name) then return end local layout = { Button, background = floatingWindowManager:getStateListDrawable(), layout_width = 'match_parent', layout_margin = '2dp', text = name, textSize = '16sp', onClick = findFunctionByName(name) } return layout end -- 开关布局 local function newSwitchLayout(openName, closeName) if not isString(openName) then return end local layout = { Switch, layout_width = 'match_parent', text = openName, onCheckedChange = function(CompoundButton, state) local func local cacheName = '多线程' if state then -- 设置开关文本为“关闭”的文本 if isString(closeName) then CompoundButton:setText(closeName) end -- 找“打开”的功能函数 func = findFunctionByName(openName) else -- 设置开关文本为“打开”的文本 CompoundButton:setText(openName) if isString(closeName) then -- 找“关闭”的功能函数 func = findFunctionByName(closeName) end end if isFunction(func) then -- 通过 findFunctionByName 获取的函数已经是被多线程包裹的,所以直接执行就可以了 func() end end } return layout end --多选布局 local function newCheckBoxLayout(openName, closeName) if not isString(openName) then return end local layout = { CheckBox, layout_width = 'match_parent', text = openName, onCheckedChange = function(CompoundButton, state) local func local cacheName = '多线程' if state then -- 设置开关文本为“关闭”的文本 if isString(closeName) then CompoundButton:setText(closeName) end -- 找“打开”的功能函数 func = findFunctionByName(openName) else -- 设置开关文本为“打开”的文本 CompoundButton:setText(openName) if isString(closeName) then -- 找“关闭”的功能函数 func = findFunctionByName(closeName) end end if isFunction(func) then -- 通过 findFunctionByName 获取的函数已经是被多线程包裹的,所以直接执行就可以了 func() end end } return layout end function newcheck(radio) firadio={LinearLayout,layout_width = 'match_parent',layout_height = "match_parent",orientation="vertical"} if type(radio[1])=="string" or type(radio[1])=="number" then firadio[#firadio+1]={TextView,text=radio[1],textColor="#ffffff",} end radios={LinearLayout,orientation="horizontal",gravity="center",background="#00C92E37",layout_width = 'match_parent',} for i=2,#radio do local name = radio[i][1] local func1 = radio[i][2] local func2 = radio[i][3] local nid = radio[i][4] if not name then name = "未设置" end nid = name..guid() local func = 开关(nid,func1,func2) radios[#radios+1]={CheckBox, text=radio[i][1], textSize="9sp", textColor="#ffffff", onClick=function() luajava.newThread(function() pcall(func) end):start() end, } end firadio[#firadio+1]=radios return luajava.loadlayout(firadio) end function newradio(radio) firadio={LinearLayout, layout_width = 'match_parent', layout_height = "match_parent", orientation="horizontal" } if type(radio[1])=="string" or type(radio[1])=="number" then --firadio[#firadio+1]={TextView,text=radio[1],textColor="#ffffff",} end radios={RadioGroup,orientation="horizontal",gravity="center",background="#00C92E37",layout_width = 'match_parent',} for i=2,#radio do radios[#radios+1]={ RadioButton, text=radio[i][1], textColor="#ffffff", textSize="11sp", onClick=function() luajava.newThread(function() pcall(radio[i][2]) end):start() end, } end firadio[#firadio+1]=radios return luajava.loadlayout(firadio) end function 开关(name,func1,func2) if func1 == nil then func1 = "" end if func2 == nil then func2 = "" end if type(func1) == "function" then return function() namers = _ENV[name] if namers ~= "开" then _ENV[name] = "开" func1() else _ENV[name] = "关" func2() end end end end function guid() seed = { 'e','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f' } tb = {} for i = 1,32 do table.insert(tb,seed[math.random(1,16)]) end sid = table.concat(tb) return string.format('%s%s%s%s%s', string.sub(sid,1,8), string.sub(sid,10,12), string.sub(sid,21,22)) ..string.format('%s%s%s%s%s', string.sub(sid,1,6), string.sub(sid,21,25) ) end local function getASyncThreadCallbak(func) return function() luajava.startThread(function() return pcall(func) end) end end -- 应用在101行 local task local function getSyncThreadCallbak(func) return function() if task then gg.toast('正在运行其它任务,再稍后!') return end luajava.startThread(function() task=true pcall(func) task=nil end) end end local Ranges=gg.getRangesList('/') local function Read(module,type) for k,v in pairs(Ranges) do if v['internalName']:match('[^/]*$')==module and v['type']==type then return v['start'] end end end local Table={} local function Modify(address,value,flags) Table[#Table+1]={address=address,value=value,flags=flags} 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 gg = gg --优化gg.getValues搜索列表值过多时,导致gg卡死 function Get_value() local result = {} local Table = {} while true do local get = gg.getResults(100000) result[#result + 1] = get gg.removeResults(get)--然后移除列表,避免gg卡死 if not get or #get == 0 then break end end for k = 1, #result do for k, v in pairs(result[k]) do Table[#Table + 1] = v end end return Table end function LSQ_pointer(search, write) if search[5] or search[6] then local region_start = search[5] local region_end = search[6] else local region_start = 0 local region_end = -1 end gg.clearResults() gg.setRanges(search[1][3]) gg.searchNumber(search[1][1], search[1][2], false, gg.SIGN_EQUAL, region_start, region_end) gg.refineNumber(search[1][1], search[1][2], false, gg.SIGN_EQUAL, region_start, region_end)--优化搜索的数据 if gg.getResultsCount() == 0 then gg.toast("没有搜索到指针数据") return false else local result = Get_value()--获取搜索到的所有数据 gg.clearResults() for i = 2, #search do--遍历副特征码数据 local offset_array = {}--存放偏移数组的表 for k, v in ipairs(result) do offset_array[#offset_array + 1] = { ["address"] = v["address"] + search[i][2],--把所有搜索出来的结果, 加上偏移量 ["flags"] = search[i][3] } end offset_array = gg.getValues(offset_array)--获取所有副特征数据 local verify_array = {}--验证数组表 for k, v in ipairs(offset_array) do--遍历偏移后的数据 if v["value"] == search[i][1] then--如果值等于主特征 verify_array[#verify_array + 1] = result[k] end end result = verify_array end if #result > 0 then local Table = { {}, {} } for k, v in ipairs(result) do for kk, vv in ipairs(write) do local Modifythe_array = { ["address"] = v["address"] + vv[2], ["flags"] = vv[3], ["value"] = vv[1], ["freeze"] = vv[4] } if vv[4] then Table[2][#Table[2] + 1] = Modifythe_array else Table[1][#Table[1] + 1] = Modifythe_array end end end gg.addListItems(Table[2]) gg.setValues(Table[1]) gg.toast("功能: [" .. search[1][4] .. "]开启成功共修改" .. (#Table[1] + #Table[2]) .. "条数据") else gg.toast("未找到偏移数据") end end 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 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"] 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 local Offset_Yx = function(Tab,KT) gg.setVisible(false) gg.clearResults() gg.setRanges(Tab["内存"]) gg.searchNumber(Tab["主特征码"][1], Tab["主特征码"][2], false, gg.SIGN_EQUAL, 0, -1, 0) local results = gg.getResults(gg.getResultsCount()) if not results then return gg.toast("未搜到结果") end gg.clearResults() local Ton = tonumber local Tsr = tonumber if KT then Tsr = tostring end for index, value in pairs(Tab["副特征码"]) do for i = 1, #results do results[i].address = results[i].address + value[3] results[i].flags = value[2] end local _ofResults, Final = gg.getValues(results), {} for i = 1, #_ofResults do if type(value[1]) == "table" then for ind, key in pairs(value[1]) do local __npt = string.find(key, "~") local Min, Max, Length if __npt then Min = Ton(string.sub(key, 0, (__npt-1))) Max = Ton(string.sub(key, (__npt+1), -1)) if _ofResults[i].value >= Min and _ofResults[i].value <= Max then Length = #Final + 1 Final[Length] = {} Final[Length].address = _ofResults[i].address - value[3] Final[Length].flags = value[2] end elseif Tsr(_ofResults[i].value) == Tsr(key) then Length = #Final + 1 Final[Length] = {} Final[Length].address = _ofResults[i].address - value[3] Final[Length].flags = value[2] end end else local __npt = string.find(value[1], "~") local Min, Max, Length if __npt then Min = Ton(string.sub(value[1], 0, (__npt-1))) Max = Ton(string.sub(value[1], (__npt+1), -1)) if _ofResults[i].value >= Min and _ofResults[i].value <= Max then Length = #Final + 1 Final[Length] = {} Final[Length].address = _ofResults[i].address - value[3] Final[Length].flags = value[2] end elseif Tsr(_ofResults[i].value) == Tsr(value[1]) then Length = #Final + 1 Final[Length] = {} Final[Length].address = _ofResults[i].address - value[3] Final[Length].flags = value[2] end end end if #Final == 0 then return gg.toast("未偏移到结果") end results = gg.getValues(Final) end for index, value in pairs(Tab["修改"]) do local EditAll = {} for i = 1, #results do EditAll[i] = {} EditAll[i].address = results[i].address + value[3] EditAll[i].flags = value[2] EditAll[i].value = value[1] if value[4] or Tab["是否全部冻结"] then EditAll[i].freeze = true end end if value[4] or Tab["是否全部冻结"] then gg.addListItems(EditAll) else gg.setValues(EditAll) end end return gg.toast(Tab["功能名字"] .. "开启成功 共修改" .. (#results * #Tab["修改"]) .."条数据") 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(123456) 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 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(address,flags,value) local CatWill={} CatWill[1]={} CatWill[1].address=address CatWill[1].flags=flags CatWill[1].value=value gg.setValues(CatWill) 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 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 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 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("搜索η"..#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("Not Found") 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"] .. "开启失败") 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) xgjg = true 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, Write,Neicun,Mingcg,Shuzhiliang) gg.clearResults() gg.setRanges(Neicun) gg.setVisible(false) gg.searchNumber(Search[1][1], Search[1][3]) 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 = Search[k][3] 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(Mingcg.."搜索到"..#data.."条数据") local t = {} local base = Search[1][2] if Shuzhiliang == "" and Shuzhiliang > 0 and Shuzhiliang < #data then Shuzhiliang=Shuzhiliang else Shuzhiliang=#data end for i=1, Shuzhiliang do for k, w in ipairs(Write) do offset = w[2] - base t[#t+1] = {} t[#t].address = data[i] + offset t[#t].flags = w[3] t[#t].value = w[1] if (w[4] == true) then local item = {} item[#item+1] = t[#t] item[#item].freeze = true gg.addListItems(item) end end end gg.setValues(t) gg.toast(Mingcg.."已修改"..#t.."条数据") gg.addListItems(t) else gg.toast(Mingcg.."开启失败", false) return false end else gg.toast("搜索失败") return false end end function js(address,flags,value) local jz={} jz[1]={} jz[1].address=address jz[1].flags=flags jz[1].value=value gg.setValues(jz) end function jz(py,xl,xgsz) flags=xl value=xgsz so=gg.getRangesList(''..name..'')[1].start js(so+py,xl,xgsz) 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"] .. "开启失败") 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) xgjg = true 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, Write,Neicun,Mingcg,Shuzhiliang) gg.clearResults() gg.setRanges(Neicun) gg.setVisible(false) gg.searchNumber(Search[1][1], Search[1][3]) 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 = Search[k][3] 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(Mingcg.."搜索到"..#data.."条数据") local t = {} local base = Search[1][2] if Shuzhiliang == "" and Shuzhiliang > 0 and Shuzhiliang < #data then Shuzhiliang=Shuzhiliang else Shuzhiliang=#data end for i=1, Shuzhiliang do for k, w in ipairs(Write) do offset = w[2] - base t[#t+1] = {} t[#t].address = data[i] + offset t[#t].flags = w[3] t[#t].value = w[1] if (w[4] == true) then local item = {} item[#item+1] = t[#t] item[#item].freeze = true gg.addListItems(item) end end end gg.setValues(t) gg.toast(Mingcg.."已修改"..#t.."条数据") gg.addListItems(t) else gg.toast(Mingcg.."开启失败", false) return false end else gg.toast("搜索失败") return false end end function js(address,flags,value) local jz={} jz[1]={} jz[1].address=address jz[1].flags=flags jz[1].value=value gg.setValues(jz) end function jz(py,xl,xgsz) flags=xl value=xgsz so=gg.getRangesList(''..name..'')[1].start js(so+py,xl,xgsz) 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 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"] 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 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 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("Not Found") 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("Not Found") end end end function PS() 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 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 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("not found", false) return false end else gg.toast("Not Found") return false end 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 getFloat(addr) local tt={} tt[1]={} tt[1].address=addr tt[1].flags=16 return gg.getValues(tt)[1].value end function getZZ(addr) local tt={} tt[1]={} tt[1].address=addr tt[1].flags=4 return gg.getValues(tt)[1].value end function writeFloat(addr,value) local tt={} tt[1]={} tt[1].address=addr tt[1].flags=16 tt[1].value=value gg.setValues(tt) 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 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 found"..#data.."data\n Start offset") 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) gg.toast("\n"..Name.."success\n Altogether"..#t.."data") else gg.toast("\n"..Name.."failure") return false end else gg.toast("\n"..Name.."failure") 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"] .. "开启失败") 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) xgjg = true 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) else return false end else return false end end function Fxs(Search, Write,Neicun,Mingcg,Shuzhiliang) gg.clearResults() gg.setRanges(Neicun) gg.setVisible(false) gg.searchNumber(Search[1][1], Search[1][3]) 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 = Search[k][3] 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(Mingcg.."搜索到"..#data.."条数据") local t = {} local base = Search[1][2] if Shuzhiliang == "" and Shuzhiliang > 0 and Shuzhiliang < #data then Shuzhiliang=Shuzhiliang else Shuzhiliang=#data end for i=1, Shuzhiliang do for k, w in ipairs(Write) do offset = w[2] - base t[#t+1] = {} t[#t].address = data[i] + offset t[#t].flags = w[3] t[#t].value = w[1] if (w[4] == true) then local item = {} item[#item+1] = t[#t] item[#item].freeze = true gg.addListItems(item) end end end gg.setValues(t) gg.toast(Mingcg.."已修改"..#t.."条数据") gg.addListItems(t) else gg.toast(Mingcg.."开启失败", false) return false end else gg.toast("搜索失败") 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"] 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 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 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("Not Found") 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("Not Found") end end end function PS() 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 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 ----------------------------------南鸢NB 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 wd() local kh = readPointer('libUE4.so:bss', {0x3A1D8,0x0,0x1560}, 1) --开火据点 local dx = readPointer('libUE4.so:bss', {0x3A1D8,0x0,0x390,0x8,0x3D8}, 1) --蹲下范围 local px = readPointer('libUE4.so:bss', {0x3A1D8,0x0,0xFDC}, 1) --趴下加速 local kz = readPointer('libUE4.so:bss', {0x3A1D8,0x0,0x48,0x8,0x194}, 1) --跳伞加速 local lb = readPointer('libUE4.so:bss', {0x291BF0,0xAA0,0x418,0xF0,0x188}, 1) --喇叭飞天 ttlf={} ttlf[1]={} ttlf[1].address=kh ttlf[1].flags=16--类型 ttlf[2]={} ttlf[2].address=dx ttlf[2].flags=16--类型 ttlf[3]={} ttlf[3].address=px ttlf[3].flags=16--类型 ttlf[4]={} ttlf[4].address=kz ttlf[4].flags=16--类型 ttlf[5]={} ttlf[5].address=lb ttlf[5].flags=16--类型 gg.toast("开启") while true do--开始循环 tt=gg.getValues(ttlf)[1].value--读取 if tt == 1 then so=gg.getRangesList('libUE4.so')[1].start--开启 py=0x517815C setvalue(so+py,16,8.47963525e-21) end if tt == 0 then so=gg.getRangesList('libUE4.so')[1].start--关闭 py=0x517815C setvalue(so+py,16,8.52492339e-21) end tt=gg.getValues(ttlf)[2].value--读取 if tt == 1 then so=gg.getRangesList('libUE4.so')[1].start--开启 py=0X31415e0 setvalue(so+py,16,90) end if tt == 0 then so=gg.getRangesList('libUE4.so')[1].start--关闭 py=0X31415e0 setvalue(so+py,16,0.10000000149) end tt=gg.getValues(ttlf)[3].value--读取 if tt == 120 then local addr=readPointer('libUE4.so:bss', {0x3A1D8,0x0,0xFD8}, 1) gg.edits(addr, {{10, 16, 0, false}})--开启 end if tt == 479.5 then local addr=readPointer('libUE4.so:bss', {0x3A1D8,0x0,0xFD8}, 1) gg.edits(addr, {{1, 16, 0, false}})--关闭 end tt=gg.getValues(ttlf)[4].value--读取 if tt == 5 then local addr=readPointer('libUE4.so:bss', {0x3A1D8,0x0,0x84}, 1) gg.edits(addr, {{3, 16, 0, false}})--开启 end if tt == 1 then local addr=readPointer('libUE4.so:bss', {0x3A1D8,0x0,0x84}, 1) gg.edits(addr, {{1, 16, 0, false}})--关闭 end tt=gg.getValues(ttlf)[5].value--读取 if tt == 1 then local addr=readPointer('libUE4.so:bss', {0x49C918, 0xF8, 0x38}, 1) gg.edits(addr, {{3000, 16, 0, false}})--开启 end if tt == 0 then local addr=readPointer('libUE4.so:bss', {0x49C918, 0xF8, 0x38}, 1) gg.edits(addr, {{-980, 16, 0, false}})--关闭 end if gg.isVisible(true) then Yk = gg.alert("检测循环时打开修改器 是否退出?","退出功能","继续执行") gg.sleep(150) if Yk~=1 and CB~=2 then gg.setVisible(false) else end if Yk== 1 then Exit() end end end end function hq() while true do--//循环 function zhi(a, b)--a是地址,b是类型,c是返回值 local c = gg.getValues({{address = a, flags = b}})[1].value return c end local t = {"libUE4.so:bss", "Cb"} local tt = {0x3A1D8, 0x0, 0xE68, 0x8A8} local ttt = S_Pointer(t, tt, true) r={} r[1] = {} r[1].address = ttt r[1].name = "判断" r[1].flags = 4 gg.addListItems(r) -- 获取地址值并返回 while true do gg.sleep(100) if zhi(ttt,4)>0 then so=gg.getRangesList('libUE4.so')[1].start py=0x84A77F8 setvalue(so+py,16,-3.4564993e10) end if zhi(ttt,4)==0 then so=gg.getRangesList('libUE4.so')[1].start py=0x84A77F8 setvalue(so+py,16,8.50279631e-21) end if gg.isVisible(true) then Yk = gg.alert("检测循环时打开修改器 是否退出?","退出功能","继续执行") gg.sleep(150) if Yk~=1 and CB~=2 then gg.setVisible(false) else end if Yk== 1 then Exit() end end end end end floatingWindowManager = require('floatingWindowManager') floatingWindowManager:init() QQ=gg.alert([[ 脚本 已搭配国际服2.7.0版本 📂Mero全防 📂更新内容: 1.适配国体2.7.5 2.适配国际服2.7 基址功能全部可以使用(自测) 更新过检1如不相信本辅助过检请自行搭配 📂支持设备: 安卓9~13 ROOT/框架/虚拟机√ 更新版本:2023.7.18 14:03 ]],"进入脚本","","复制QQ群") if QQ == 3 then gg.copyText("782736095") gg.toast("复制成功") end -- 把以上代码复制到你脚本最前面即可 draw.setSize(49) draw.setStyle('填充') draw3 = require('draw3') text1 = draw3.text('☘️总代[博]副代[无]☘️',40,120) text2 = draw3.text('☘️Mero全防☘️',40,180) text3 = draw3.text('☘️QQ群782736095☘️',40,240) text4 = draw3.text(os.date'登录时间:%Y年%m月%d日%H时%M分%S秒', 100,700) draw.setColor('#FFFFFF00') gg.alert("💝Mero全防已经全新更新V3.0\n🌐支持PUBG2.7.0🌐\nMero全防官方QQ群782736095\n作者:祁芈\n","💓确定💓","🚬祁芈牛逼🚬") gg.toast('当前登录卡密时间为:\n%Y年%m月%d日%H时%M分%S秒') string.toMusic('欢迎 使用 Mero脚本 为您 保架 护航 支持国际服最新版2.7.0') for i = 1, 5 do--这里改太大可能造成悬浮窗不出来 gg.sleep(50) -- 设置随机颜色 local color = math.random(000000, 0xffffff) text1.setColor(color) local colo = math.random(000000, 0xffffff) text2.setColor(color) local color = math.random(000000, 0xffffff) text3.setColor(color) local colo = math.random(000000, 0xffffff) text4.setColor(color) local colo = math.random(000000, 0xffffff) -- 更新文本 text1.update(i) text2.update(i) text3.update(i) text4.update(i) end local floatingWindowManager = require('floatingWindowManager') floatingWindowManager:init() floatingWindowManager:newWindow(('Mero-国际'):format(floatingWindowManager.version), { onCreate = function(floatingWindow) floatingWindow:addlayout({ ScrollView, layout_margin = '10dp', layout_width = 'match_parent', layout_height = 'match_parent', { LinearLayout, background = floatingWindowManager:getStateListDrawable(), background = "https://out.zxglife.top/view.php/d17b2e02fbccd07799e900d7e04f2085.jpg", layout_width = 'match_parent', layout_height = 'match_parent', orientation = 'vertical', padding = '5dp', { Button, background = floatingWindowManager:getStateListDrawable(), background = "https://out.zxglife.top/view.php/0cceb6f5d2ab35d7b2f67134156cf2bb.png", layout_width = 'match_parent', layout_margin = '2dp', text = '[选进程]', textSize = '16sp', textColor="0xFF00FF00", onClick = function() string.toMusic('选进程') gg.setProcessX() string.toMusic('已配置修改器 请选择游戏进程') gg.setProcessX() gg.setConfig("隐藏辅助", 23) gg.setConfig("运行守护", 3) gg.setConfig("冻结间隔", 33000) end }, { Button, background = floatingWindowManager:getStateListDrawable(), background = "https://out.zxglife.top/view.php/9f0682115acf9d7a4b0b508130ab2a11.png", layout_width = 'match_parent', layout_margin = '2dp', text = '[国际服]', textColor="0xFF00FF00", textSize = '16sp', onClick = function() floatingWindowManager:start('Mero[国际服]') end }, { Button, background = floatingWindowManager:getStateListDrawable(), background = "https://out.zxglife.top/view.php/0606a13afe43b38f71f3367a860ce3b9.png", layout_width = 'match_parent', layout_margin = '2dp', text = '[印度服]', textSize = '16sp', textColor="0xFF00FF00", onClick = function() floatingWindowManager:start('Mero[印度服]') end }, { Button, background = floatingWindowManager:getStateListDrawable(), background = "https://out.zxglife.top/view.php/8ff98b6d4164beff0677cce77cdce416.png", layout_width = 'match_parent', layout_margin = '2dp', text = '[体验服]', textSize = '16sp', textColor="0xFF00FF00", onClick = function() floatingWindowManager:start('Mero[体验服]') end }, { Button, background = floatingWindowManager:getStateListDrawable(), background = "https://out.zxglife.top/view.php/9f0682115acf9d7a4b0b508130ab2a11.png", layout_width = 'match_parent', layout_margin = '2dp', text = '[破解]', textColor="0xFF00FF00", textSize = '16sp', onClick = function() floatingWindowManager:start('Mero[破解]') end }, } }) end, onDestroy = function() end }) floatingWindowManager:newWindow('Mero[国际服]', { onCreate = function(floatingWindow) floatingWindow:addlayout({ ScrollView, layout_width = 'match_parent', layout_height = 'match_parent', { LinearLayout, background = floatingWindowManager:getStateListDrawable(), layout_width = 'match_parent', layout_height = 'match_parent', orientation = 'vertical', padding = '5dp', { Button, background = { GradientDrawable, cornerRadius='10dp', color='0xff9cdaff', }, layout_width = 'match_parent', layout_margin = '2dp', text = '选择进程', textColor="0xFF00FFFF", onClick = function() gg.toast("选择进程") string.toMusic('已配置修改器 请选择游戏进程') gg.setProcessX() gg.setConfig("隐藏辅助", 23) gg.setConfig("运行守护", 3) gg.setConfig("冻结间隔", 33000) end }, { Button, background = { GradientDrawable, cornerRadius='10dp', color='0xff9cdaff', }, layout_width = 'match_parent', layout_margin = '2dp', text = '[基址功能]', textColor="0xFF00FF00", textSize = '16sp', onClick = function() floatingWindowManager:start('Mero[基址]') end }, { Button, background = { GradientDrawable, cornerRadius='10dp', color='0xff9cdaff', }, layout_width = 'match_parent', layout_margin = '2dp', text = '[无敌过检]', textColor="0xFFFF0000", textSize = '16sp', onClick = function() floatingWindowManager:start('Mero[过检]') end }, { Button, background = { GradientDrawable, cornerRadius='10dp', color='0xff9cdaff', }, layout_width = 'match_parent', layout_margin = '2dp', text = '[全火区]', textColor="0xFF38B0DE", textSize = '16sp', onClick = function() floatingWindowManager:start('Mero[全火]') end }, { Button, background = { GradientDrawable, cornerRadius='10dp', color='0xff9cdaff', }, layout_width = 'match_parent', layout_margin = '2dp', text = '[美化区]', textColor="0xFFFF1CAE", textSize = '16sp', onClick = function() floatingWindowManager:start('Mero[美化]') end }, { Button, background = { GradientDrawable, cornerRadius='10dp', color='0xff9cdaff', }, layout_width = 'match_parent', layout_margin = '2dp', text = '[循环区]', textColor="0xFFFF7F00", textSize = '16sp', onClick = function() floatingWindowManager:start('Mero[循环]') end }, { Button, background = { GradientDrawable, cornerRadius='10dp', color='0xff9cdaff', }, layout_width = 'match_parent', layout_margin = '2dp', text = '[音乐区]', textColor="0xFF00FFFF", textSize = '16sp', onClick = function() floatingWindowManager:start('Mero[音乐]') end }, } }) end }) floatingWindowManager:newWindow('Mero[基址]', { onCreate = function(floatingWindow) floatingWindow:addlayout({ ScrollView, layout_width = 'match_parent', layout_height = 'match_parent', { LinearLayout, background = floatingWindowManager:getStateListDrawable(), background = "https://out.zxglife.top/view.php/85eae163af81ea0d7665d9f8b2701d84.jpg", layout_width = 'match_parent', layout_height = 'match_parent', orientation = 'vertical', padding = '5dp', { TextView, layout_marginLeft = '0dp',--间距 text="基址功能", textColor= "0xFF00FFFF",--文字颜色代码 gravity="center", layout_height="25dp",--长度 layout_width="match_parent",--宽度 background= luajava.loadlayout { GradientDrawable, color = "",--背景颜色代码 cornerRadius = 38--背景圆角 }, }, {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, layout_marginTop = '5dp',--间距 { Switch, layout_marginLeft = '0dp',--间距 text="一键基址", textColor= "0xFF00FFFF",--文字颜色代码 gravity="center", layout_height="30dp",--长度 layout_width="110dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "",--背景颜色代码 cornerRadius = 38--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程1' if state then gg.alert("因为一键全火有防抖所以不能和地震不能一起开哦🙄") so=gg.getRangesList('libUE4.so')[1].start--无后座 py=0x517CB58 setvalue(so+py,16,8.8411673e-21) local t = {"libUE4.so:bss", "Cb"}--防抖 local tt = {0x3A1D8, 0x0, 0xD90, 0x50, 0x7B8, 0xC04} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 0}}) so=gg.getRangesList('libUE4.so')[1].start py=0x8399960 setvalue(so+py,16,8.8411673e-21) so=gg.getRangesList('libUE4.so')[1].start--瞬🐔 py=0x84E8E20 setvalue(so+py,16,8.95671814e-21) so=gg.getRangesList('libUE4.so')[1].start--聚点 py=0x517815C setvalue(so+py,16,8.47963525e-21) gg.toast("开启成功") else gg.toast("不可关闭") string.toMusic("不可关闭") end end }, { Switch, layout_marginLeft = '0dp',--间距 text="无后", textColor= "0xFF00FFFF",--文字颜色代码 gravity="center", layout_height="30dp",--长度 layout_width="110dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "",--背景颜色代码 cornerRadius = 38--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程2' if state then so=gg.getRangesList('libUE4.so')[1].start--无后座 py=0x517CB58 setvalue(so+py,16,8.8411673e-21) so=gg.getRangesList('libUE4.so')[1].start--无后座 py=0x517CC4C setvalue(so+py,16,8.8411673e-21) so=gg.getRangesList('libUE4.so')[1].start--无后座 py=0x517CCBC setvalue(so+py,16,8.8411673e-21) gg.toast("开启成功") else gg.toast("不可关闭") string.toMusic("不可关闭") end end }, }, {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, layout_marginTop = '5dp',--间距 { Switch, layout_marginLeft = '0dp',--间距 text="防抖", textColor= "0xFF00FFFF",--文字颜色代码 gravity="center", layout_height="30dp",--长度 layout_width="110dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "",--背景颜色代码 cornerRadius = 38--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程3' if state then gg.alert("防抖和地震不能一起开哦🙄") local t = {"libUE4.so:bss", "Cb"} local tt = {0x3A1D8, 0x0, 0xD90, 0x50, 0x7B8, 0xC04} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 0}}) so=gg.getRangesList('libUE4.so')[1].start py=0x8399960 setvalue(so+py,16,8.8411673e-21) gg.toast("开启成功") string.toMusic("开启成功") end end }, { Switch, layout_marginLeft = '0dp',--间距 text="据点", textColor= "0xFF00FFFF",--文字颜色代码 gravity="center", layout_height="30dp",--长度 layout_width="110dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "",--背景颜色代码 cornerRadius = 38--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程4' if state then so=gg.getRangesList('libUE4.so')[1].start--聚点 py=0x517815C setvalue(so+py,16,8.47963525e-21) else gg.toast("不可关闭") end end }, }, {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, layout_marginTop = '5dp',--间距 { Switch, layout_marginLeft = '0dp',--间距 text="除雾", textColor= "0xFF00FFFF",--文字颜色代码 gravity="center", layout_height="30dp",--长度 layout_width="110dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "",--背景颜色代码 cornerRadius = 38--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程5' if state then so=gg.getRangesList('libUE4.so')[1].start py=0X759BDF4 setvalue(so+py,16,8.95671814e-21) so=gg.getRangesList('libUE4.so')[1].start py=0X759D864 setvalue(so+py,16,8.95671814e-21) so=gg.getRangesList('libUE4.so')[1].start py=0X7A6E088 setvalue(so+py,16,8.95671814e-21) gg.toast("开启成功除雾") end end }, { Switch, layout_marginLeft = '5dp',--间距 text="范围", textColor= "0xFF00FFFF",--文字颜色代码 gravity="center", layout_height="30dp",--长度 layout_width="110dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "",--背景颜色代码 cornerRadius = 38--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程6' if state then so=gg.getRangesList('libUE4.so')[1].start--范围开 py=0x31415E0 setvalue(so+py,16,70) else so=gg.getRangesList('libUE4.so')[1].start--范围关 py=0x31415E0 setvalue(so+py,16,0.10000000149) gg.toast("关闭成功") end end }, }, {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, layout_marginTop = '5dp',--间距 { Switch, layout_marginLeft = '0dp',--间距 text="瞬鸡", textColor= "0xFF00FFFF",--文字颜色代码 gravity="center", layout_height="30dp",--长度 layout_width="110dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "",--背景颜色代码 cornerRadius = 38--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程7' if state then so=gg.getRangesList('libUE4.so')[1].start--瞬🐔 py=0x84E8E20 setvalue(so+py,16,8.95671814e-21) else gg.toast("不可关闭") string.toMusic("不可关闭") end end }, { Switch, layout_marginLeft = '5dp',--间距 text="自改广角", textColor= "0xFF00FFFF",--文字颜色代码 gravity="center", layout_height="30dp",--长度 layout_width="110dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "",--背景颜色代码 cornerRadius = 38--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程8' if state then OP=gg.prompt({'1到3'},{[1]='2'},{[1]='number'}) if OP == nil or OP[1] == '' or OP[1] == '0' then gg.toast("取消") else so=gg.getRangesList('libUE4.so')[1].start--广角 py=0x3142EB8 setvalue(so+py,16,OP[1]) gg.toast("广角开启成功") end end end }, }, {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, layout_marginTop = '5dp',--间距 { Switch, layout_marginLeft = '0dp',--间距 text="爆炸音效", textColor= "0xFF00FFFF",--文字颜色代码 gravity="center", layout_height="30dp",--长度 layout_width="110dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "",--背景颜色代码 cornerRadius = 38--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程9' if state then local t = {"libUE4.so:bss", "Cb"} local tt = {0x4DCE38, 0x8, 0x28, 0xC4} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 1000, freeze = true}}) else gg.toast("不可关闭") string.toMusic("不可关闭") end end }, { Switch, layout_marginLeft = '5dp',--间距 text="X特效", textColor= "0xFF00FFFF",--文字颜色代码 gravity="center", layout_height="30dp",--长度 layout_width="110dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "",--背景颜色代码 cornerRadius = 38--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程10' if state then local t = {"libUE4.so:bss", "Cb"} local tt = {0x44CB40, 0x488, 0x568, 0x50} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 999}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x44CB40, 0x488, 0x568, 0x10} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 999}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x44CB40, 0x488, 0x568, 0x90} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 999}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x44CB40, 0x488, 0x568, 0xD0} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 999}}) gg.toast("开启成功") end end }, }, { TextView, layout_marginLeft = '0dp',--间距 text="莓国🇺🇸专区", textColor= "0xFFEAADEA",--文字颜色代码 gravity="center", layout_height="25dp",--长度 layout_width="match_parent",--宽度 background= luajava.loadlayout { GradientDrawable, color = "",--背景颜色代码 cornerRadius = 38--背景圆角 }, }, {LinearLayout,--同排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, gravity="center_vertical", layout_marginTop = '5dp',--间距 { Switch, layout_marginLeft = '65dp', text="莓国体质", textColor= "0xFF00FFFF", gravity="center", layout_height="35dp", layout_width="80dp", background= luajava.loadlayout { GradientDrawable, color = "", cornerRadius = 25 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程1' if state then OP=gg.prompt({'1到1.5'},{[1]='1.2'},{[1]='number'}) if OP == nil or OP[1] == '' or OP[1] == '0' then gg.toast("取消") else local t = {"libUE4.so:bss", "Cb"} local tt = {0x3A1D8, 0x0, 0x1B0, 0x194} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = OP[1]}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x3A1D8, 0x0, 0x1B0, 0x198} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = OP[1]}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x3A1D8, 0x0, 0x1B0, 0x19c} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = OP[1]}}) gg.alert("开启成功") end end end }, }, {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, layout_marginTop = '5dp',--间距 { Switch, layout_marginLeft = '65dp',--间距 text="莓国枪械", textColor= "0xFF00FFFF",--文字颜色代码 gravity="center", layout_height="35dp",--长度 layout_width="80dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "",--背景颜色代码 cornerRadius = 38--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程2' if state then OP=gg.prompt({'1到10'},{[1]='3'},{[1]='number'}) if OP == nil or OP[1] == '' or OP[1] == '0' then gg.toast("取消") else local t = {"libUE4.so:bss", "Cb"} local tt = {0x3A1D8, 0x0, 0x1A0, 0x8, 0x580} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = OP[1]}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x3A1D8, 0x0, 0x1A0, 0x8, 0x584} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = OP[1]}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x3A1D8, 0x0, 0x1A0, 0x8, 0x588} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = OP[1]}}) gg.alert("开启成功") end end end }, }, {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, layout_marginTop = '5dp',--间距 { Switch, layout_marginLeft = '65dp',--间距 text="莓国子弹", textColor= "0xFF00FFFF",--文字颜色代码 gravity="center", layout_height="35dp",--长度 layout_width="80dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "",--背景颜色代码 cornerRadius = 38--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程3' if state then OP=gg.prompt({'10到100'},{[1]='15'},{[1]='number'}) if OP == nil or OP[1] == '' or OP[1] == '0' then gg.toast("取消") else local t = {"libUE4.so:bss", "Cb"} local tt = {0x3A1D8, 0x0, 0x1A0, 0x8, 0xF78} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = OP[1]}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x3A1D8, 0x0, 0x1A0, 0x8, 0xF7C} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = OP[1]}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x3A1D8, 0x0, 0x1A0, 0x8, 0xF80} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = OP[1]}}) gg.alert("开启成功") end end end }, }, {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, layout_marginTop = '5dp',--间距 { Switch, layout_marginLeft = '65dp',--间距 text="莓国地震", textColor= "0xFF00FFFF",--文字颜色代码 gravity="center", layout_height="35dp",--长度 layout_width="80dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "",--背景颜色代码 cornerRadius = 38--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程5' if state then gg.alert("防抖和地震不能一起开哦🙄") OP=gg.prompt({'10到100'},{[1]='50'},{[1]='number'}) if OP == nil or OP[1] == '' or OP[1] == '0' then gg.toast("取消") else local t = {"libUE4.so:bss", "Cb"} local tt = {0x3A1D8, 0x0, 0xD90, 0x50, 0x7B8, 0xC04} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = OP[1]}}) gg.alert("开启成功") end end end }, }, {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, layout_marginTop = '5dp',--间距 { Switch, layout_marginLeft = '65dp',--间距 text="莓国射速", textColor= "0xFF00FFFF",--文字颜色代码 gravity="center", layout_height="35dp",--长度 layout_width="80dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "",--背景颜色代码 cornerRadius = 38--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程6' if state then OP=gg.prompt({'0.01到0.05'},{[1]='0.05'},{[1]='number'}) if OP == nil or OP[1] == '' or OP[1] == '0' then gg.toast("取消") else local t = {"libUE4.so:bss", "Cb"} local tt = {0x3A1D8, 0x0, 0xD90, 0x50, 0x7B8, 0x518} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = OP[1]}}) gg.alert("开启成功") end end end }, }, } }) end }) floatingWindowManager:newWindow('Mero[过检]', { onCreate = function(floatingWindow) floatingWindow:addlayout({ ScrollView, layout_width = 'match_parent', layout_height = 'match_parent', { LinearLayout, background = floatingWindowManager:getStateListDrawable(), background = "https://out.zxglife.top/view.php/a89c1128cca50a1dbf42e73dc871e4da.jpg", layout_width = 'match_parent', layout_height = 'match_parent', orientation = 'vertical', padding = '5dp', { TextView, layout_marginLeft = '0dp',--间距 text="建议自己另外搭配", textColor= "#ddffffff",--文字颜色代码 gravity="center", layout_height="25dp",--长度 layout_width="match_parent",--宽度 background= luajava.loadlayout { GradientDrawable, color = "",--背景颜色代码 cornerRadius = 38--背景圆角 }, }, {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, layout_marginTop = '5dp',--间距 { Switch, layout_marginLeft = '50dp',--间距 text="CD过检[大厅]", textColor= "#ddffffff",--文字颜色代码 gravity="center", layout_height="30dp",--长度 layout_width="110dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "1",--背景颜色代码 cornerRadius = 38--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程1' if state then local t = {"libUE4.so", "Cd"} local tt = {0x207BE8} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 256, freeze = true}}) local t = {"libUE4.so", "Cd"} local tt = {0x207E40, 0x68} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 256, freeze = true}}) local t = {"libUE4.so", "Cd"} local tt = {0x208098, 0x61} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 256, freeze = true}}) local t = {"libUE4.so", "Cd"} local tt = {0x2080F8} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 256, freeze = true}}) local t = {"libUE4.so", "Cd"} local tt = {0x208158, 0x8} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 256, freeze = true}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x442A60, 0xF8, 0xF8} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 256, freeze = true}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x51C5E8, 0x58, 0xE0, 0x8} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 256, freeze = true}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x51C618, 0xA8, 0xE0, 0x8} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 256, freeze = true}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x51C648, 0xF8, 0xE0, 0x8} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 256, freeze = true}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x51D528, 0x8, 0xE0, 0x8} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 256, freeze = true}}) string.toMusic("开启成功") end end }, }, {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, layout_marginTop = '5dp',--间距 { Switch, layout_marginLeft = '50dp',--间距 text="CB过检[大厅]", textColor= "#ddffffff",--文字颜色代码 gravity="center", layout_height="30dp",--长度 layout_width="110dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "1",--背景颜色代码 cornerRadius = 38--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程2' if state then local t = {"libanogs.so:bss", "Cb"} local tt = {0x52F0} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 70012, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x5350} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 70012, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x5380} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 70012, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x5400} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 70012, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x553C} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 70012, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x5AF8} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 70012, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x5B38} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 70012, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x5FF8} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 70012, freeze = true}}) end end }, }, {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, layout_marginTop = '5dp',--间距 { Switch, layout_marginLeft = '50dp',--间距 text="登录", textColor= "#ddffffff",--文字颜色代码 gravity="center", layout_height="30dp",--长度 layout_width="110dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "1",--背景颜色代码 cornerRadius = 38--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程3' if state then gg.setRanges(gg.REGION_CODE_APP) gg.clearResults() gg.setRanges(gg.REGION_CODE_APP) gg.searchNumber('65793',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1) gg.searchNumber('',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1) gg.getResults(1) gg.editAll('0',gg.TYPE_DWORD) end end }, }, {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, layout_marginTop = '5dp',--间距 { Switch, layout_marginLeft = '50dp',--间距 text="大厅[杂牌防封]", textColor= "#ddffffff",--文字颜色代码 gravity="center", layout_height="30dp",--长度 layout_width="110dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "1",--背景颜色代码 cornerRadius = 38--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程4' if state then Modify(Read('libanogs.so','r-xp')+0x1276a8,-698416192,4) Modify(Read('libanogs.so','r-xp')+0x133180,-698416192,4) Modify(Read('libanogs.so','r-xp')+0x3a8080,-698416192) Modify(Read('libanogs.so:bss','rw-p')+0x1cbc,58888,4) Modify(Read('libanogs.so:bss','rw-p')+0x2480,58888,4) Modify(Read('libgcloud.so','r-xp')+0x1c1fa0,-763363328,4) Modify(Read('libgcloud.so','r-xp')+0x43536c,-1073730007,4) Modify(Read('libgcloud.so','r-xp')+0x435370,14049027,4) gg.setValues(Table) end end }, }, } }) end }) floatingWindowManager:newWindow('Mero[全火]', { onCreate = function(floatingWindow) floatingWindow:addlayout({ ScrollView, layout_width = 'match_parent', layout_height = 'match_parent', { LinearLayout, background = floatingWindowManager:getStateListDrawable(), background = "https://out.zxglife.top/view.php/277157e44478558cfd2c2a81f219b603.jpg", layout_width = 'match_parent', layout_height = 'match_parent', orientation = 'vertical', padding = '5dp', { TextView, layout_marginLeft = '0dp',--间距 text="加速只能开一个🙄", textColor= "#ddffffff",--文字颜色代码 gravity="center", layout_height="25dp",--长度 layout_width="match_parent",--宽度 background= luajava.loadlayout { GradientDrawable, color = "1",--背景颜色代码 cornerRadius = 38--背景圆角 }, }, {LinearLayout,--同排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, gravity="center_vertical", layout_marginTop = '5dp',--间距 { Switch, layout_marginLeft = '30dp', text="人物加速", textColor= "#ddffffff", gravity="center", layout_height="35dp", layout_width="80dp", background= luajava.loadlayout { GradientDrawable, color = "", cornerRadius = 25 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程1' if state then so=gg.getRangesList('libUE4.so')[1].start py=0x84A77F8 setvalue(so+py,16,-3.4564993e10) local t = {"libUE4.so:bss", "Cb"} local tt = {0x3A1D8, 0x0, 0x271C} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 6}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x3A1D8, 0x0, 0x84} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 0.95}}) else gg.alert("人物加速关闭成功") end end }, }, {LinearLayout,--同排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, gravity="center_vertical", layout_marginTop = '5dp',--间距 { Switch, layout_marginLeft = '30dp', text="微加速", textColor= "#ddffffff", gravity="center", layout_height="35dp", layout_width="80dp", background= luajava.loadlayout { GradientDrawable, color = "", cornerRadius = 25 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程2' if state then OP=gg.prompt({'1~1.9之间'},{[1]='1.2'},{[1]='number'}) if OP == nil or OP[1] == '' or OP[1] == '0' then gg.toast("取消") else local t = {"libUE4.so:bss", "Cb"} local tt = {0x3A1D8, 0x0, 0x84} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = OP[1]}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x4D8E68, 0x308, 0x2CC} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 520}}) end end end }, }, {LinearLayout,--同排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, gravity="center_vertical", layout_marginTop = '5dp',--间距 { Switch, layout_marginLeft = '30dp', text="高跳", textColor= "#ddffffff", gravity="center", layout_height="35dp", layout_width="80dp", background= luajava.loadlayout { GradientDrawable, color = "", cornerRadius = 25 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程3' if state then OP=gg.prompt({'443[正常]到4000'},{[1]='2600'},{[1]='number'}) if OP == nil or OP[1] == '' or OP[1] == '0' then gg.toast("取消") local t = {"libUE4.so:bss", "Cb"} local tt = {0x3A1D8, 0x0, 0x48, 0x8, 0x17c} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 6}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x3A1D8, 0x0, 0x48, 0x8, 0x184} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = OP[1]}}) else local t = {"libUE4.so:bss", "Cb"} local tt = {0x3A1D8, 0x0, 0x48, 0x8, 0x17c} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 1}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x3A1D8, 0x0, 0x48, 0x8, 0x184} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 443}}) end end end }, }, {LinearLayout,--同排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, gravity="center_vertical", layout_marginTop = '5dp',--间距 { Switch, layout_marginLeft = '30dp', text="定点飞天", textColor= "#ddffffff", gravity="center", layout_height="35dp", layout_width="80dp", background= luajava.loadlayout { GradientDrawable, color = "", cornerRadius = 25 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程4' if state then local t = {"libUE4.so:bss", "Cb"} local tt = {0x3A1D8, 0x0, 0x48, 0x8, 0x17c} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 0}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x3A1D8, 0x0, 0x48, 0x8, 0x184} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 0}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x3A1D8, 0x0, 0x48, 0x8, 0x1D8} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 99999}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x3A1D8, 0x0, 0xE70, 0x160, 0x148, 0x0} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 1.5}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x3A1D8, 0x0, 0x84} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 0.15}}) so=gg.getRangesList('libUE4.so')[1].start py=0x84A77F8 setvalue(so+py,16,-3.4564993e10) else local t = {"libUE4.so:bss", "Cb"} local tt = {0x3A1D8, 0x0, 0x48, 0x8, 0x17c} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 1}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x3A1D8, 0x0, 0x48, 0x8, 0x184} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 443}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x3A1D8, 0x0, 0x48, 0x8, 0x1D8} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 8192}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x3A1D8, 0x0, 0xE70, 0x160, 0x148, 0x0} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 1}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x3A1D8, 0x0, 0x84} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 1}}) so=gg.getRangesList('libUE4.so')[1].start py=0x84A77F8 setvalue(so+py,16,8.50279631e-21) end end }, }, {LinearLayout,--同排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, gravity="center_vertical", layout_marginTop = '5dp',--间距 { Switch, layout_marginLeft = '30dp', text="人物踏空", textColor= "#ddffffff", gravity="center", layout_height="35dp", layout_width="80dp", background= luajava.loadlayout { GradientDrawable, color = "", cornerRadius = 25 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程5' if state then local t = {"libUE4.so:bss", "Cb"} local tt = {0x3A1D8, 0x0, 0x48, 0x8, 0x1D8} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 99999}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x3A1D8, 0x0, 0x48, 0x8, 0x184} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 800}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x3A1D8, 0x0, 0x528} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 999}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x3A1D8, 0x0, 0x84} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 0.1}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x3A1D8, 0x0, 0xE70, 0x160, 0x148, 0x0} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 4}}) so=gg.getRangesList('libUE4.so')[1].start py=0x84A77F8 setvalue(so+py,16,-3.4564993e10) else local t = {"libUE4.so:bss", "Cb"} local tt = {0x3A1D8, 0x0, 0x48, 0x8, 0x1D8} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 8192}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x3A1D8, 0x0, 0x48, 0x8, 0x184} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 443}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x3A1D8, 0x0, 0x528} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 1.40129846e-45}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x3A1D8, 0x0, 0x84} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 1}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x3A1D8, 0x0, 0xE70, 0x160, 0x148, 0x0} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 1}}) so=gg.getRangesList('libUE4.so')[1].start py=0x84A77F8 setvalue(so+py,16,8.50279631e-21) end end }, }, {LinearLayout,--同排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, gravity="center_vertical", layout_marginTop = '5dp',--间距 { Switch, layout_marginLeft = '30dp', text="远跳", textColor= "#ddffffff", gravity="center", layout_height="35dp", layout_width="80dp", background= luajava.loadlayout { GradientDrawable, color = "", cornerRadius = 25 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程6' if state then local t = {"libUE4.so:bss", "Cb"} local tt = {0x3A1D8, 0x0, 0x84} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 0.8}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x3A1D8, 0x0, 0x48, 0x8, 0x1D8} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 99999}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x3A1D8, 0x0, 0xE70, 0x160, 0x148, 0x0} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 5}}) gg.toast("开启成功") else local t = {"libUE4.so:bss", "Cb"} local tt = {0x3A1D8, 0x0, 0x84} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 1}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x3A1D8, 0x0, 0x48, 0x8, 0x1D8} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 8192}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x3A1D8, 0x0, 0xE70, 0x160, 0x148, 0x0} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 1}}) gg.toast("关闭成功") end end }, }, } }) end }) floatingWindowManager:newWindow('Mero[美化]', { onCreate = function(floatingWindow) floatingWindow:addlayout({ ScrollView, layout_width = 'match_parent', layout_height = 'match_parent', { LinearLayout, background = floatingWindowManager:getStateListDrawable(), background = "https://out.zxglife.top/view.php/b66490963fbcd14b9e16f6fa52341ee2.jpg", layout_width = 'match_parent', layout_height = 'match_parent', orientation = 'vertical', padding = '5dp', { TextView, layout_marginLeft = '0dp',--间距 text="美化代码自行查找", textColor= "0xFF6B8E23",--文字颜色代码 gravity="center", layout_height="25dp",--长度 layout_width="match_parent",--宽度 background= luajava.loadlayout { GradientDrawable, color = "",--背景颜色代码 cornerRadius = 38--背景圆角 }, }, {LinearLayout,--同排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, gravity="center_vertical", layout_marginTop = '5dp',--间距 { Switch, layout_marginLeft = '40dp', text="美化", textColor= "0xFFFF1CAE", gravity="center", layout_height="35dp", layout_width="80dp", background= luajava.loadlayout { GradientDrawable, color = "", cornerRadius = 25 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程4' jr = gg.prompt({"AKM华丽浮雕击杀播报 1101001042 AKM怒海争锋击杀播报1101001063 AKM白虎咆哮击杀播报 1101001068 AKM冰霜核心击杀播报 1101001089 AKM积木龙骨击杀播报1101001103 AKM奇异之夜击杀播报 1101001116 AKM金牌海盗击杀播报 1101001143 AKM吉利龙王击杀播报 1101001128 AKM奇幻工坊击杀播报 1101001154 AKM部落之王击杀播报1101001174 AKM星海提督击杀播报 1101001213 AKM俏皮兔宝击杀播报 1101001231M16A4血风暴击杀播报1101002029 M16A4极光脉冲击杀播报 1101002056 M16A4缤纷利刃击杀播报 1101002068 M16A4猩红血月击杀播报 1101002081M16A4古堡龙卫击杀播报1101002103死噶梦幻水枪击杀播报 1101003057死噶魔法南瓜击杀播报1101003070死噶翌日行动击杀播报 1101003080 死噶诡秘之夜击杀播报 1101003099 死噶魔力结晶击杀播报 1101003119死噶邪能植物击杀播报 1101003146 死噶血魂魔皇击杀播报 1101003167M416冰霜核心击杀播报1101004046 M416愚人小丑击杀播报 1101004062M416异域游者击杀播报 1101004078 M416萌龙咆哮击杀播报1101004086M416野性呼唤击杀播报 1101004098 M416科技核心击杀播报 1101004138 M416潮鸣宫廷击杀播报 1101004163 M416庇护之潮击杀播报1101004209Groza幻夜音乐击杀播报1101005025 Groza绚烂之战1101005043 Groza冥河烈焰1101005052AUG流浪马戏团 1101006033 AUG第四使徒 1101006044 QBZ极致绝杀 1101007036 QBZ瑰绮灵姬1101007046 M762比特宝莉 1101008026妹控星云力量"},nil,{"number"}) if jr ~= nil then local t = {"libUE4.so:bss", "Cb"} local tt = {0x3A1D8,0x0,0x418,0x90,0x15B0} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = jr[1], freeze = true}}) end end }, }, } }) end }) floatingWindowManager:newWindow('Mero[循环]', { onCreate = function(floatingWindow) floatingWindow:addlayout({ ScrollView, layout_width = 'match_parent', layout_height = 'match_parent', { LinearLayout, background = floatingWindowManager:getStateListDrawable(), background = "https://out.zxglife.top/view.php/1c049407655f6dce170605a7c1992aed.jpg", layout_width = 'match_parent', layout_height = 'match_parent', orientation = 'vertical', padding = '5dp', { TextView, layout_marginLeft = '0dp',--间距 text="循环功能专区", textColor= "0xFFEAADEA",--文字颜色代码 gravity="center", layout_height="25dp",--长度 layout_width="match_parent",--宽度 background= luajava.loadlayout { GradientDrawable, color = "",--背景颜色代码 cornerRadius = 38--背景圆角 }, }, {LinearLayout,--同排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, gravity="center_vertical", layout_marginTop = '5dp',--间距 { Switch, layout_marginLeft = '35dp', text="挥拳加速", textColor= "0xFF00FFFF", gravity="center", layout_height="35dp", layout_width="80dp", background= luajava.loadlayout { GradientDrawable, color = "", cornerRadius = 25 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程1' if state then local thread1 = luajava.startThread(hq) floatingWindow:setCache(cacheName, thread1) function hq() end end end }, }, {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, layout_marginTop = '5dp',--间距 { Switch, layout_marginLeft = '35dp',--间距 text="祁芈无敌", textColor= "0xFF00FFFF",--文字颜色代码 gravity="center", layout_height="35dp",--长度 layout_width="80dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "",--背景颜色代码 cornerRadius = 38--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程2' if state then gg.alert("此功能包含开火据点,蹲下范围,趴下加速,跳伞加速,趴下飞天\n作者:祁芈\n","💓确定💓","🚬祁芈牛逼🚬") local thread2 = luajava.startThread(wd) floatingWindow:setCache(cacheName, thread2) function wd() end end end }, }, } }) end }) floatingWindowManager:newWindow('Mero[音乐]', { onCreate = function(floatingWindow) floatingWindow:addlayout({ ScrollView, layout_width = 'match_parent', layout_height = 'match_parent', { LinearLayout, background = floatingWindowManager:getStateListDrawable(), background = "https://out.zxglife.top/view.php/b3a741df8047e01dde344b40de51cb17.jpg", layout_width = 'match_parent', layout_height = 'match_parent', orientation = 'vertical', padding = '5dp', { TextView, layout_marginLeft = '0dp',--间距 text="阴乐顾名思义", textColor= "0xFF7FFFFF",--文字颜色代码 gravity="center", layout_height="25dp",--长度 layout_width="match_parent",--宽度 background= luajava.loadlayout { GradientDrawable, color = "",--背景颜色代码 cornerRadius = 38--背景圆角 }, }, { Switch, layout_width = 'match_parent', text = '搜索音乐', textColor="0xFF7FFFFF", onCheckedChange = function(CompoundButton, state) if state then h1() search = gg.prompt({ "输入要搜索的歌,部分音乐可能需要VIP听不全\n可加上歌手名字", "设置显示数量(数字)", },g.sel,{ "text", }) if not search then return 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 end }; { TextView, layout_marginLeft = '0dp',--间距 text="以下是本地音乐", textColor= "0xFF7FFFFF",--文字颜色代码 gravity="center", layout_height="25dp",--长度 layout_width="match_parent",--宽度 background= luajava.loadlayout { GradientDrawable, color = "",--背景颜色代码 cornerRadius = 38--背景圆角 }, }, { Switch, layout_width = 'match_parent', text = '好きだから。没版权', textColor="0xFF7FFFFF", onCheckedChange = function(CompoundButton, state) if state then h3() else string.toMusic("已关闭") gg.alert('已关闭') end end }; { Switch, layout_width = 'match_parent', text = 'The Best Of Me', textColor="0xFF7FFFFF", onCheckedChange = function(CompoundButton, state) if state then h4() else string.toMusic("已关闭") gg.alert('已关闭') end end }; { Switch, layout_width = 'match_parent', text = '南鸢专属战歌', textColor="0xFF7FFFFF", onCheckedChange = function(CompoundButton, state) if state then h5() else string.toMusic("已关闭") gg.alert('已关闭') end end }; { Switch, layout_width = 'match_parent', text = '心做', textColor="0xFF7FFFFF", onCheckedChange = function(CompoundButton, state) if state then h6() else string.toMusic("已关闭") gg.alert('已关闭') end end }; { Switch, layout_width = 'match_parent', text = '起风了', textColor="0xFF7FFFFF", onCheckedChange = function(CompoundButton, state) if state then h7() else string.toMusic("已关闭") gg.alert('已关闭') end end }; { Button, background = floatingWindowManager:getStateListDrawable(), layout_width = 'match_parent', layout_margin = '5dp', text = '初次加载比较慢请耐心等待', textColor="0xFF7FFFFF", textSize = '16sp', onClick = function() floatingWindowManager:start('音乐') end }; } }) end }) function h1() gg.playMusic("") end function h2() gg.playMusic("http://music.163.com/song/media/outer/url?id=&uct2.mp3") end function h3() gg.playMusic("http://music.163.com/song/media/outer/url?id=&uct2.mp3") end function h4() gg.playMusic("http://music.163.com/song/media/outer/url?id=&uct2.mp3") end function h5() gg.playMusic("https://cccimg.com/view.php/64627e799cd8ab934fb5fe2de5ebcc60.mp3") end function h6() gg.playMusic("https://cccimg.com/view.php/829cc3150d1cc4b62f4ca1e06ca74f75.mp3") end function h7() gg.playMusic("https://out.zxglife.top/view.php/c39f4e87d52f6b48a5837f60d84f2a38.mp3") end floatingWindowManager:newWindow('Mero[印度服]', { onCreate = function(floatingWindow) floatingWindow:addlayout({ ScrollView, layout_width = 'match_parent', layout_height = 'match_parent', { LinearLayout, background = floatingWindowManager:getStateListDrawable(), layout_width = 'match_parent', layout_height = 'match_parent', orientation = 'vertical', padding = '5dp', { Button, background = { GradientDrawable, cornerRadius='10dp', color='0x80b5dbff', }, layout_width = 'match_parent', layout_margin = '2dp', text = '选择进程', textColor="0xFF00FFFF", onClick = function() gg.toast("选择进程") string.toMusic('已配置修改器 请选择游戏进程') gg.setProcessX() gg.setConfig("隐藏辅助", 23) gg.setConfig("运行守护", 3) gg.setConfig("冻结间隔", 33000) end }, { Button, background = { GradientDrawable, cornerRadius='10dp', color='0x80b5dbff', }, layout_width = 'match_parent', layout_margin = '2dp', text = '[功能区]', textColor="0xFF00FF00", textSize = '16sp', onClick = function() floatingWindowManager:start('Mero[功能]') end }, } }) end }) floatingWindowManager:newWindow('Mero[功能]', { onCreate = function(floatingWindow) floatingWindow:addlayout({ ScrollView, layout_width = 'match_parent', layout_height = 'match_parent', { LinearLayout, background = floatingWindowManager:getStateListDrawable(), background = "https://out.zxglife.top/view.php/eff67cd7578ea16a91843d6fa4745248.jpg", layout_width = 'match_parent', layout_height = 'match_parent', orientation = 'vertical', padding = '5dp', { TextView, layout_marginLeft = '0dp',--间距 text="印度战神胜过婆罗门", textColor= "0xFF00FFFF",--文字颜色代码 gravity="center", layout_height="25dp",--长度 layout_width="match_parent",--宽度 background= luajava.loadlayout { GradientDrawable, color = "",--背景颜色代码 cornerRadius = 38--背景圆角 }, }, {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, layout_marginTop = '75dp',--间距 { Switch, layout_marginLeft = '30dp',--间距 text="一键全火", textColor= "0xFF00FFFF",--文字颜色代码 gravity="center", layout_height="30dp",--长度 layout_width="110dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "",--背景颜色代码 cornerRadius = 38--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程1' if state then else gg.toast("不可关闭") string.toMusic("不可关闭") end end }, }, {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, layout_marginTop = '5dp',--间距 { Switch, layout_marginLeft = '30dp',--间距 text="范围", textColor= "0xFF00FFFF",--文字颜色代码 gravity="center", layout_height="30dp",--长度 layout_width="110dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "",--背景颜色代码 cornerRadius = 38--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程2' if state then end end }, }, {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, layout_marginTop = '5dp',--间距 { Switch, layout_marginLeft = '30dp',--间距 text="广角", textColor= "0xFF00FFFF",--文字颜色代码 gravity="center", layout_height="30dp",--长度 layout_width="110dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "",--背景颜色代码 cornerRadius = 38--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程3' if state then local r = gg.prompt({'自改视角[太低会黑屏]'}, {'230'}, {'text'}) if r then gg.toast("开启成功广角") end end end }, }, {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, layout_marginTop = '5dp',--间距 { Switch, layout_marginLeft = '30dp',--间距 text="踏空", textColor= "0xFF00FFFF",--文字颜色代码 gravity="center", layout_height="30dp",--长度 layout_width="110dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "",--背景颜色代码 cornerRadius = 38--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程4' if state then local t = {"libUE4.so:bss", "Cb"} local tt = {0x39C20,0x0,0x428,0x22C} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 999999}})--拐弯 local t = {"libUE4.so:bss", "Cb"} local tt = {0x39C20,0x0,0xF88} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 3}})--速度 local t = {"libUE4.so:bss", "Cb"} local tt = {0x39C20,0x0,0x78,0x84} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 0.1}})--减速 local t = {"libUE4.so:bss", "Cb"} local tt = {0x479130,0xF8,0x38} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = -3200}})--下降 local t = {"libUE4.so:bss", "Cb"} local tt = {0x39C20,0x0,0x428,0x1B4} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 2500}})--上升 local t = {"libUE4.so:bss", "Cb"} local tt = {0x39C20,0x0,0x78,0x4F8} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 1.40115833e-41}})--踏空 local t = {"libUE4.so:bss", "Cb"} local tt = {0xCFF90,0x1E70,0x5D0,0x38} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = 1000000}})--防拉 if gg.getRangesList("libUE4.so")[1] then local t = {} t[1] = gg.getRangesList("libUE4.so")[1]["start"] + 0x7D85EB0; -- 数值地址:0x780DB8DEB0 gg.addListItems({ [1] = { address = t[1], flags = 4, value = 505453850, freeze = true, }, }) gg.toast("人物加速") end end end }, }, } }) end }) floatingWindowManager:newWindow('Mero[体验服]', { onCreate = function(floatingWindow) floatingWindow:addlayout({ ScrollView, layout_width = 'match_parent', layout_height = 'match_parent', { LinearLayout, background = floatingWindowManager:getStateListDrawable(), layout_width = 'match_parent', layout_height = 'match_parent', orientation = 'vertical', padding = '5dp', { Button, background = { GradientDrawable, cornerRadius='10dp', color='0x80b5dbff', }, layout_width = 'match_parent', layout_margin = '2dp', text = '选择进程', textColor="0xFF00FFFF", onClick = function() gg.toast("选择进程") string.toMusic('已配置修改器 请选择游戏进程') gg.setProcessX() gg.setConfig("隐藏辅助", 23) gg.setConfig("运行守护", 3) gg.setConfig("冻结间隔", 33000) end }, { Button, background = { GradientDrawable, cornerRadius='10dp', color='0x80b5dbff', }, layout_width = 'match_parent', layout_margin = '2dp', text = '[加速功能]', textColor="0xFF00FF00", textSize = '16sp', onClick = function() floatingWindowManager:start('Mero[体验服加速]') end }, { Button, background = { GradientDrawable, cornerRadius='10dp', color='0x80b5dbff', }, layout_width = 'match_parent', layout_margin = '2dp', text = '[实用功能]', textColor="0xFF00FF00", textSize = '16sp', onClick = function() floatingWindowManager:start('Mero[体验服功能]') end }, } }) end }) floatingWindowManager:newWindow('Mero[体验服加速]', { onCreate = function(floatingWindow) floatingWindow:addlayout({ ScrollView, layout_width = 'match_parent', layout_height = 'match_parent', { LinearLayout, background = floatingWindowManager:getStateListDrawable(), background = "https://out.zxglife.top/view.php/1a988b0566a3719642a15faa6744f4ae.jpg", layout_width = 'match_parent', layout_height = 'match_parent', orientation = 'vertical', padding = '5dp', { TextView, layout_marginLeft = '0dp',--间距 text="加速均为开源代码", textColor= "0xFF00FFFF",--文字颜色代码 gravity="center", layout_height="25dp",--长度 layout_width="match_parent",--宽度 background= luajava.loadlayout { GradientDrawable, color = "",--背景颜色代码 cornerRadius = 38--背景圆角 }, }, {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, layout_marginTop = '75dp',--间距 { Switch, layout_marginLeft = '30dp',--间距 text="固定移速", textColor= "0xFF00FFFF",--文字颜色代码 gravity="center", layout_height="30dp",--长度 layout_width="110dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "",--背景颜色代码 cornerRadius = 38--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程1' if state then so=gg.getRangesList('libUE4.so')[1].start py=0x54C664C setvalue(so+py,16,0)--慢动作 so=gg.getRangesList('libUE4.so')[1].start py=0x54F3EF8 setvalue(so+py,16,0)--移速1 else gg.toast("不可关闭") string.toMusic("不可关闭") end end }, }, {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, layout_marginTop = '5dp',--间距 { Switch, layout_marginLeft = '30dp',--间距 text="固定翻倍", textColor= "0xFF00FFFF",--文字颜色代码 gravity="center", layout_height="30dp",--长度 layout_width="110dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "",--背景颜色代码 cornerRadius = 38--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程2' if state then so=gg.getRangesList('libUE4.so')[1].start py=0x54E66A8 setvalue(so+py,16,0)--翻倍1 end end }, }, {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, layout_marginTop = '5dp',--间距 { Switch, layout_marginLeft = '30dp',--间距 text="慢动作", textColor= "0xFF00FFFF",--文字颜色代码 gravity="center", layout_height="30dp",--长度 layout_width="110dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "",--背景颜色代码 cornerRadius = 38--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程3' if state then end end }, }, {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, layout_marginTop = '5dp',--间距 { Switch, layout_marginLeft = '30dp',--间距 text="自改全局", textColor= "0xFF00FFFF",--文字颜色代码 gravity="center", layout_height="30dp",--长度 layout_width="110dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "",--背景颜色代码 cornerRadius = 38--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程4' if state then local a = gg.prompt({'自改全局'}, {'22'}, {'text'}) if a then so=gg.getRangesList('libUE4.so')[1].start py=0x5B6FF74 setvalue(so+py,16,a[1])--全局 end end end }, }, } }) end }) floatingWindowManager:newWindow('Mero[体验服功能]', { onCreate = function(floatingWindow) floatingWindow:addlayout({ ScrollView, layout_width = 'match_parent', layout_height = 'match_parent', { LinearLayout, background = floatingWindowManager:getStateListDrawable(), background = "https://cccimg.com/view.php/db47a36ade89cb26683d9d916fdbf4a8.jpg", layout_width = 'match_parent', layout_height = 'match_parent', orientation = 'vertical', padding = '5dp', { TextView, layout_marginLeft = '0dp',--间距 text="效果自行测试", textColor= "0xFF00FFFF",--文字颜色代码 gravity="center", layout_height="25dp",--长度 layout_width="match_parent",--宽度 background= luajava.loadlayout { GradientDrawable, color = "",--背景颜色代码 cornerRadius = 38--背景圆角 }, }, {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, layout_marginTop = '75dp',--间距 { Switch, layout_marginLeft = '30dp',--间距 text="一键基址", textColor= "0xFF00FFFF",--文字颜色代码 gravity="center", layout_height="30dp",--长度 layout_width="110dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "",--背景颜色代码 cornerRadius = 38--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程1' if state then so=gg.getRangesList('libUE4.so')[1].start py=0x27645CC setvalue(so+py,16,0)--无后 so=gg.getRangesList('libUE4.so')[1].start py=0x2769A30 setvalue(so+py,16,0)--据点 so=gg.getRangesList('libUE4.so')[1].start py=0x2FA7644 setvalue(so+py,16,0)--防抖 so=gg.getRangesList('libUE4.so')[1].start py=0x33C6728 setvalue(so+py,16,0)--瞬鸡 else gg.toast("不可关闭") string.toMusic("不可关闭") end end }, }, {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, layout_marginTop = '5dp',--间距 { Switch, layout_marginLeft = '30dp',--间距 text="高跳", textColor= "0xFF00FFFF",--文字颜色代码 gravity="center", layout_height="30dp",--长度 layout_width="110dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "",--背景颜色代码 cornerRadius = 38--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程2' if state then OP=gg.prompt({'默认4000即可'},{[1]='4000'},{[1]='number'}) if OP == nil or OP[1] == '' or OP[1] == '0' then gg.toast("取消") else local addr = readPointer("libUE4.so:bss", {0x1B8A30+0xB8+0x6D0+0xB4+0x350+0x1AC}, 1) gg.edits(addr, {{OP[1], 16, 4000, false}}) end end end }, }, {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, layout_marginTop = '5dp',--间距 { Switch, layout_marginLeft = '30dp',--间距 text="飞天", textColor= "0xFF00FFFF",--文字颜色代码 gravity="center", layout_height="30dp",--长度 layout_width="110dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "",--背景颜色代码 cornerRadius = 38--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程3' if state then OP=gg.prompt({'默认即可'},{[1]='3500'},{[1]='number'}) if OP == nil or OP[1] == '' or OP[1] == '0' then gg.toast("取消") else local addr = readPointer("libUE4.so:bss", {0x1B8A30+0xB8+0x3A0+0x350+0x4B0+0x13C}, 1) gg.edits(addr, {{OP[1], 16, 3500, false}}) end end end }, }, {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, layout_marginTop = '5dp',--间距 { Switch, layout_marginLeft = '30dp',--间距 text="去除惯性", textColor= "0xFF00FFFF",--文字颜色代码 gravity="center", layout_height="30dp",--长度 layout_width="110dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "",--背景颜色代码 cornerRadius = 38--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程4' if state then local a = gg.prompt({'自改全局'}, {'22'}, {'text'}) if a then OP=gg.prompt({'默认即可'},{[1]='999'},{[1]='number'}) if OP == nil or OP[1] == '' or OP[1] == '0' then gg.toast("取消") else local addr = readPointer("libUE4.so:bss", {0x1B8A30+0xB8+0x6D0+0xB4+0x350+0x1AC}, 1) gg.edits(addr, {{OP[1], 16, 999, false}}) end end end end }, }, } }) end }) floatingWindowManager:newWindow('Mero[破解]', { onCreate = function(floatingWindow) floatingWindow:addlayout({ ScrollView, layout_width = 'match_parent', layout_height = 'match_parent', { LinearLayout, background = floatingWindowManager:getStateListDrawable(), background = "https://out.zxglife.top/view.php/85eae163af81ea0d7665d9f8b2701d84.jpg", layout_width = 'match_parent', layout_height = 'match_parent', orientation = 'vertical', padding = '5dp', { TextView, layout_marginLeft = '0dp',--间距 text="破解功能", textColor= "0xFF00FFFF",--文字颜色代码 gravity="center", layout_height="25dp",--长度 layout_width="match_parent",--宽度 background= luajava.loadlayout { GradientDrawable, color = "",--背景颜色代码 cornerRadius = 38--背景圆角 }, }, {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, layout_marginTop = '5dp',--间距 { Switch, layout_marginLeft = '0dp',--间距 text="破解xdz", textColor= "0xFF00FFFF",--文字颜色代码 gravity="center", layout_height="30dp",--长度 layout_width="110dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "",--背景颜色代码 cornerRadius = 38--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程1' if state then gg.alert("请选择进程后再开") local t = {"libzoel-native.so", "Cd"} local tt = {0xD400} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = 6}}) local t = {"libzoel-native.so", "Cd"} local tt = {0xD404} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = 6}}) local t = {"libzoel-native.so", "Cd"} local tt = {0xD408} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = 6}}) gg.toast("破解成功") string.toMusic("破解成功") end end }, }, } }) end }) floatingWindowManager:run()