@pwpad string.toMusic('欢迎使用旋晓内部') 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 ----更多源码认准QQ群699462859 ----更多源码认准QQ群699462859 ----更多源码认准QQ群699462859 ----更多源码认准QQ群699462859 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 ----更多源码认准QQ群699462859 ----更多源码认准QQ群699462859 ----更多源码认准QQ群699462859 ----更多源码认准QQ群699462859 ---- 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 --主页 ----更多源码认准QQ群699462859 ----更多源码认准QQ群699462859 ----更多源码认准QQ群699462859 ----更多源码认准QQ群699462859 ----更多源码认准QQ群699462859 ----更多源码认准QQ群699462859 ----更多源码认准QQ群699462859 ----更多源码认准QQ群699462859 ----更多源码认准QQ群699462859 ----更多源码认准QQ群699462859 ----更多源码认准QQ群699462859 ----更多源码认准QQ群699462859 do local ok, err = pcall(require, '中文模块') if not ok then error('中文模块加载失败,请确保是使用RLGG执行,或者尝试重启RLGG') end end -- 查看映射关系请看 https://gitee.com/rlyun/rlgg/tree/master/%E4%B8%AD%E6%96%87%E6%A8%A1%E5%9D%97 print(中文函数()) --创建自定义中文函数 中文函数({ 自定义1=print, 自定义2=gg.alert, }) 打印('自定义1==print',自定义1==print) 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 end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end function setvalue(address,flags,value) local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end 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 gg.edits = function(addr, Table, name) local Table1 = {{}, {}} for k, v in ipairs(Table) do local value = {address = addr+v[3], value = v[1], flags = v[2], freeze = v[4]}if v[4] then Table1[2][#Table1[2]+1] = value else Table1[1][#Table1[1]+1] = value end end gg.addListItems(Table1[2])gg.setValues(Table1[1]) gg.toast((name or "") .. "开启成功, 共修改"..#Table.."个值") end function 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 ----------------------------------破解by:无情 AS防封项目电报主频道:@asnbyyds 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 jianbian2 = luajava.new(GradientDrawable) jianbian2:setCornerRadius(30) jianbian2:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbian2:setColors({0xffFF3044,0xff7137FF})--渐变颜色 draw.setColor('#f7acbc')--文字颜色 local function switch2(...) local menus = {...} local block = luajava.getBlock() local context = app.context local window = context:getSystemService("window") -- 获取窗口管理器 local function getWindowManagerParams() local params = luajava.new(WindowManager.LayoutParams) params.type = (Build.VERSION.SDK_INT >= 26 and 2038 or 2002) params.format = PixelFormat.RGBA_8888 -- 设置背景 params.flags = params.FLAG_NOT_FOCUSABLE -- 焦点设置Finish params.width = params.WRAP_CONTENT -- 布局宽度 params.height = params.WRAP_CONTENT -- 布局高度 params.gravity = Gravity.LEFT | Gravity.TOP -- 重力设置 return params end local mainLayout = { LinearLayout, background=jianbian2, orientation = 'vertical', layout_width = 'wrap_content', padding = {'5dp', '5dp', '5dp', '5dp'} } local function exit() window:removeView(mainLayout) block('end') end setExitEvent(exit) local hideLayout = { LinearLayout, orientation = 'horizontal', layout_width = 'fill_parent', gravity = 'center_horizontal', { ImageView, src = 0x7F02000C, padding = {'10dp', '10dp', '10dp', '10dp'}, onClick = function() local gridLayout = luajava.getIdView('功能界面') if not gridLayout then return end local VISIBLE = GridLayout.VISIBLE local GONE = GridLayout.GONE local visibility = gridLayout:getVisibility() > VISIBLE and VISIBLE or GONE gridLayout:setVisibility(visibility) end } } ----更多源码认准QQ群699462859 ----更多源码认准QQ群699462859 ----更多源码认准QQ群699462859 ----更多源码认准QQ群699462859 ----更多源码认准QQ群699462859 ----更多源码认准QQ群699462859 ----更多源码认准QQ群699462859 ----更多源码认准QQ群699462859 ----更多源码认准QQ群699462859 ----更多源码认准QQ群699462859 ----更多源码认准QQ群699462859 ----更多源码认准QQ群699462859 mainLayout[#mainLayout + 1] = hideLayout local main2Layout = { LinearLayout, id = luajava.newId('功能界面'), orientation = 'vertical', layout_width = 'wrap_content', gravity = 'center_horizontal' } mainLayout[#mainLayout + 1] = main2Layout local function formatList(list) local gridLayout = { GridLayout, orientation = 'horizontal', columnCount = '2', layout_width = 'wrap_content', } list[#list + 1] = { setText = '退出', onCheckedChanged = function(buttonView) return exit() end } for i, value in ipairs(list) do local name do local names = {'name', 'text', 'setText'} for i, key in ipairs(names) do name = value[key] if name then break end end if not name then name = string.format('功能%d', i) end for i, key in ipairs(names) do value[key] = name end end local switchLayout = { Switch, text = name } local onCheckedChanged = value.onCheckedChanged if not isFunction(onCheckedChanged) then onCheckedChanged = function(switch, isChecked) if not isSurvive() then gg.toast('脚本已结束') return exit() end local mode = isChecked and 'open' or 'close' local func = value[mode] if not isFunction(func) then switch:setChecked(not isChecked) func = function(self) gg.alert(string.format('%s缺少%s函数,该属性必须为function类型', value.name, mode)) end end luajava.startThread(function(...) pcall(func, ...) end, name, value, switch) end end if isFunction(onCheckedChanged) then onCheckedChanged = luajava.createProxy('android.widget.CompoundButton$OnCheckedChangeListener', { onCheckedChanged = onCheckedChanged }) end switchLayout.onCheckedChangeListener = onCheckedChanged gridLayout[#gridLayout + 1] = switchLayout end return gridLayout end local navigate2 = { LinearLayout, orientation = 'horizontal', layout_width = 'match_parent', gravity = 'center_horizontal' } local ids = {} local views = {} for i, menu in ipairs(menus) do local name = menu.name if not name then name = ('菜单%s'):format(i) menu.name = name end ids[i] = string.format('%s-%s', i, name) local menuLayout = { Button, text = name, background = '#CCOOFF', layout_width = 'wrap_content', textColor = '#4F86C6', onClick = function() for i2, id in ipairs(ids) do local view = views[i2] if not view then view = luajava.getIdView(id) if view then views[i2] = view end end if view then local VISIBLE = view.VISIBLE local GONE = view.GONE local state = i == i2 and VISIBLE or GONE view:setVisibility(state) end end end } navigate2[#navigate2 + 1] = menuLayout end main2Layout[#main2Layout + 1] = navigate2 local main3Layout = { LinearLayout, layout_width = 'match_parent', gravity = 'center_horizontal' } for i, menu in ipairs(menus) do local gridLayout = formatList(menu) gridLayout.id = luajava.newId(ids[i]) gridLayout.visibility = i == 1 and GridLayout.VISIBLE or GridLayout.GONE main3Layout[#main3Layout + 1] = gridLayout end main2Layout[#main2Layout + 1] = main3Layout local function setOnTouchListener(move, layout, params) local RawX, RawY, x, y local ACTION_DOWN = MotionEvent.ACTION_DOWN local ACTION_MOVE = MotionEvent.ACTION_MOVE local tonumber = tonumber move:setOnTouchListener(luajava.createProxy("android.view.View$OnTouchListener", { onTouch = function(v, event) local Action = event:getAction() if Action == ACTION_DOWN then -- 点击时的XY坐标 RawX = event:getRawX() -- 获取X坐标 RawY = event:getRawY() -- 获取Y坐标 x = params.x -- 申明变量xmX为原X坐标 y = params.y -- 申明变量xmY为原Y坐标 elseif Action == ACTION_MOVE then -- 移动时的XY坐标 params.x = tonumber(x) + (event:getRawX() - RawX) params.y = tonumber(y) + (event:getRawY() - RawY) window:updateViewLayout(layout, params) end end })) end local params = getWindowManagerParams() mainLayout = luajava.loadlayout(mainLayout) setOnTouchListener(mainLayout, mainLayout, params) local function invoke() window:addView(mainLayout, params) end gg.setVisible(false) luajava.post(invoke) block('join') gg.setVisible(true) end _ENV['菜单1'] = { name = '功能界面', [1] = { name = '基址防抖', open = function(self) o=gg.getRangesList('libUE4.so')[1].start--防抖 py=0x5BC1C0C setvalue(so+py,16,2.19933704e12) so=gg.getRangesList('libUE4.so')[1].start py=0x80E99F0 setvalue(so+py,16,8.8411673e-21) string.toMusic('防抖开启成功') end, close = function(self) string.toMusic('无法关闭') gg.alert("无法关闭") end }, [2] = { name = '基址跳高', open = function(self) local t = {"libUE4.so:bss", "Cb"} local tt = {0x3AC08, 0x0, 0x458, 0x1B4} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 4000}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x3AC08, 0x0, 0x458, 0x1AC} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 6}}) string.toMusic('高挑开启成功') end, close = function(self) string.toMusic('无法关闭') gg.alert("无法关闭") end }, [3] = { name = '基址聚点', open = function(self) so=gg.getRangesList('libUE4.so')[1].start--聚点 py=0x4FB21E8 setvalue(so+py,16,8.47963525e-21) 语音("枪械聚点开启成功") gg.toast("枪械聚点开启成功") end, close = function(self) gg.alert("无法关闭") string.toMusic('无法关闭') end }, [4] = { name = '基址范围', open = function(self) so=gg.getRangesList('libUE4.so')[1].start--范围开 py=0x301829C setvalue(so+py,16,60) string.toMusic("稳定范围开启成功") end, close = function(self) gg.alert("无法关闭") string.toMusic('无法关闭') end }, [5] = { name = '基址广角', open = function(self) so=gg.getRangesList('libUE4.so') [1].start py=0x3019B78 setvalue(so+py,16,2) string.toMusic('广角开启成功') end, close = function(self) gg.alert("无法关闭") string.toMusic('无法关闭') end }, [6] = { name = '破解绿AR', open = function(self) so = gg.getRangesList("libnative.so")[1].start setvalue(so+"0x2F5434", 4,"1") setvalue(so+"0x2F5438", 4,"1") string.toMusic('破解成功') end, close = function(self) gg.alert("无法关闭") string.toMusic('无法关闭') end }, [7] = { name = '美化', open = function(self) local UE4 = gg.getRangesList("libUE4.so") if not UE4 or #UE4 == 0 then os.exit() end local base_pointer = readPointer('libUE4.so', {0xBEA1400,0x30,0x24A0,0x62D0,0x390,0x0}, 1) local pointers = { [1] = {pointer = base_pointer + 0x11C, name = "服装"}, } local config_path = gg.EXT_FILES_DIR:gsub("%lua$", "") .. "/PUBG配置.ini" local config_data = loadfile(config_path) local config = config_data and config_data() if not config or #config == 0 then config = {} end local values = {} local names = {} for i, p in ipairs(pointers) do table.insert(names, p.name.."代码:木乃伊1400687\n深渊皇后1406140\n猴子1406327\n黄金木乃伊1405623\n满级艳后1406475\n满级法老1406469\n满级血鸦1405870\n满级海王1405983\n满级精灵王1406311\n满级冰王1406152\n次黑诡皇1406641\n白诡皇1406638\n血渊圣王1406872\n裁决冥王1406569\n至尊银龙1400779") table.insert(values, config[i]) end local options = gg.prompt(names, values, {"number", "checkbox"}) if options then gg.saveVariable(options, config_path) for i, p in ipairs(pointers) do if i==6 or i==7 or options[i]==""then else gg.edits(p.pointer-4, {{options[i], 4, 0}}, p.name) end end if options[8] then if options[6]==""then else gg.edits(pointers[6].pointer-4, {{options[6], 4, 0}}, pointers[6].name) end if options[7]==""then else gg.edits(pointers[7].pointer-4, {{options[7], 4, 0}}, pointers[7].name) end end end gg.alert("修改成功") end, close = function(self) gg.alert("无法关闭") string.toMusic('无法关闭') end }, } _ENV['菜单2'] = { name = '防封界面', [2] = { name = 'LOGO', open = function(self) gg.clearResults() gg.setRanges(gg.REGION_JAVA_HEAP) gg.searchNumber("1,919,243,117", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1, 0) gg.refineNumber("1,919,243,117", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1, 0) revert = gg.getResults(100000, nil, nil, nil, nil, nil, nil, nil, nil) gg.editAll("256", gg.TYPE_DWORD) gg.clearResults() gg.clearResults() gg.setRanges(gg.REGION_JAVA_HEAP) gg.searchNumber("1,936,020,069", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1, 0) gg.refineNumber("", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1, 0) revert = gg.getResults(100000, nil, nil, nil, nil, nil, nil, nil, nil) gg.editAll("256", gg.TYPE_DWORD) gg.clearResults() gg.toast("LOGO过检测开启成功") string.toMusic('LOGO过检测开启成功') end, close = function(self) end }, [1] = { name = '选择进程', open = function(self) string.toMusic('已配置修改器 请选择游戏进程') gg.setProcessX() gg.setConfig("隐藏辅助", 23) gg.setConfig("运行守护", 0) gg.setConfig("冻结间隔", 33000) end, close = function(self) string.toMusic('已配置修改器 请选择游戏进程') gg.setProcessX() gg.setConfig("隐藏辅助", 23) gg.setConfig("运行守护", 0) gg.setConfig("冻结间隔", 33000) end }, [3] = { name = '大厅1', open = function(self) gg.toast("大厅1开启成功") string.toMusic('开启成功') end, close = function(self) gg.alert("无法关闭") string.toMusic('无法关闭') end }, [4] = { name = '大厅2', open = function(self) string.toMusic('大厅2开启成功该防可防子弹追踪') end, close = function(self) gg.alert("无法关闭") string.toMusic('无法关闭') end }, [5] = { name = '大厅3', open = function(self) string.toMusic('大厅3开启成功') end, close = function(self) gg.alert("无法关闭") string.toMusic('无法关闭') end }, [6] = { name = '大厅4', open = function(self) string.toMusic('大厅4开启成功大厅4防该防只适合基址上分') end, close = function(self) gg.alert("无法关闭") string.toMusic('无法关闭') end }, [7] = { name = '全局离线', open = function(self) gg.clearResults() gg.setRanges(16384) gg.searchNumber("328,671,808", gg.TYPE_DWORD) gg.getResults(100000) gg.editAll("10000001", gg.TYPE_DWORD) gg.clearResults() gg.clearResults() gg.setRanges(16384) gg.searchNumber("328,671,808", gg.TYPE_DWORD) gg.getResults(100000) gg.editAll("10000001", gg.TYPE_DWORD) gg.clearResults() gg.clearResults() gg.setRanges(16384) gg.searchNumber("328,671,808", gg.TYPE_DWORD) gg.getResults(100000) gg.editAll("10000001", gg.TYPE_DWORD) gg.clearResults() gg.clearResults() gg.setRanges(16384) gg.searchNumber("328,671,808", gg.TYPE_DWORD) gg.getResults(100000) gg.editAll("10000001", gg.TYPE_DWORD) gg.clearResults() gg.alert("全局离线开启成功") string.toMusic('全局离线开启成功') end, close = function(self) gg.setRanges(16384) gg.searchNumber("10000001", gg.TYPE_DWORD) gg.getResults(100000) gg.editAll("328,671,808", gg.TYPE_DWORD) gg.clearResults() gg.setRanges(16384) gg.searchNumber("10000001", gg.TYPE_DWORD) gg.getResults(100000) gg.editAll("328,671,808", gg.TYPE_DWORD) gg.clearResults() gg.setRanges(16384) gg.searchNumber("10000001", gg.TYPE_DWORD) gg.getResults(100000) gg.editAll("328,671,808", gg.TYPE_DWORD) gg.clearResults() gg.setRanges(16384) gg.searchNumber("10000001", gg.TYPE_DWORD) gg.getResults(100000) gg.editAll("328,671,808", gg.TYPE_DWORD) gg.alert("全局离线关闭成功") string.toMusic('全局离线关闭成功') end }, } _ENV['菜单3'] = { name = '音乐', [1] = { name = '搜索音乐',---8391694libil2cpp.so:bss+0x2E268+0xBB0+0x200+0x798+0x1A60 open = function(self) search = gg.prompt({ "输入要搜索的歌曲\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, close = function(self) gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end }, } gg.setVisible(false) luajava.setFloatingWindowHide(true) switch2(_ENV['菜单2'], _ENV['菜单1'], _ENV['菜单3'])