---绘制需要全部写在这里否 --不是我泛滥的 我只是修复报错而已--倾城 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 --指针写法配置↓ 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(""..yeqiu.."修改成功,共修改"..#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(""..yeqiu.."搜索0条数据,修改失败", false) return false end else gg.toast(""..yeqiu.."搜索0条数据,修改失败") return false end end --so写法配置↓ 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 gg.edits(addr, Table, name) local Table1 = {{}, {}} for k, v in ipairs(Table) do local value = {address = addr+v[3], value = v[1], flags = v[2], freeze = v[4]} if v[4] then Table1[2][#Table1[2]+1] = value else Table1[1][#Table1[1]+1] = value end end gg.addListItems(Table1[2]) gg.setValues(Table1[1]) gg.toast((name or "") .. "开启成功, 共修改"..#Table.."个值") end function xqmnb(Search,Modification) gg.clearResults() gg.setRanges(Search[1].memory) gg.searchNumber(Search[3].value,Search[3].type,false,536870912,0,-1) if gg.getResultCount()==0 then gg.toast(Search[2].name..'开启失败') return end local Result=gg.getResults(gg.getResultCount()) local sum for index=4,#Search do sum=0 for i=1,#Result do if gg.getValues({{address=Result[i].address+Search[index].offset,flags=Search[index].type}})[1].value~=Search[index].lv then Result[i].Usable=true sum=sum+1 end end if sum==#Result then gg.toast(Search[2].name..'开启失败') return end end local Data,Freeze,Freezes={},{},0 sum=0 for index,value in ipairs(Modification)do for index=1,#Result do if not Result[index].Usable then local Value={address=Result[index].address+value.offset,flags=value.type,value=value.value,freeze=true} if value.freeze then Freeze[#Freeze+1]=Value Freezes=Freezes+1 else Data[#Data+1]=Value end sum=sum+1 end end end gg.setValues(Data) gg.addListItems(Freeze) if Freezes==0 then gg.toast(Search[2].name..'开启成功,共修改'..sum..'条数据') else gg.toast(Search[2].name..'开启成功,共修改'..sum..'条数据,冻结'..Freezes..'条数据') end gg.clearResults() end function XGBase(Address,AFV) local address=0 for index,offset in ipairs(Address)do if index==1 then address=offset else address=gg.getValues({{address=address+offset,flags=4}})[1].value end end local Value,Freeze={},{} for index,value in ipairs(AFV)do local VALUE={address=address+value[3],flags=value[2],value=value[1],freeze=true} if value[4]then Freeze[#Freeze+1]=VALUE else Value[#Value+1]=VALUE end end gg.setValues(Value) gg.addListItems(Freeze) end function Format(tab, format, value, type, Function) if format == "查看" then tab[1]["flags"] = type return print(gg.getValues(tab)) elseif format == "修改" then tab[1]["flags"] = type tab[1]["value"] = value return gg.setValues(tab) elseif format == "冻结" then tab[1]["flags"] = type tab[1]["freeze"] = true tab[1]["name"] = Function or "功能" return gg.addListItems(tab) elseif format == "加载" then tab[1]["flags"] = type return gg.loadResults(tab) end end local ALL = [==[ v1.0 -> 优化指针链条判断 v1.1 -> 添加多功能模板,可查看,修改,冻结,载入 v1.3 -> 修复了同一个so名称下有多个基址头,而只判断第一个基址头偏移的问题点 v1.4 -> 修复了在64位环境下偏移异常的问题 ]==] function LSQ_Chain(so, offset, format, value, type, Function)--模块设置, 偏移量, 功能参数, 修改值, 类型, 功能 getRanges = getRanges or (function() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v["type"]:sub(2, 2) == 'w' then--判断so是否可读可写 ranges[#ranges+1] = v end end return ranges end) local rest, ranges, sostart, valtype = {}, getRanges(), nil , gg.TYPE_DWORD if gg.getTargetInfo()["x64"] then--判断应用程序是否为64位 valtype = gg.TYPE_QWORD end for i in pairs(ranges) do local _name = ranges[i]["internalName"]:gsub('^.*/', '') if so[1] == _name and so[2] == ranges[i]["state"] then sostart = ranges[i]["start"] break end end if sostart then if offset[1] then for i = 1, #offset do rest = {{flags = valtype,address = sostart + offset[i]}} rest = gg.getValues(rest) if i == #offset then break end if valtype == gg.TYPE_DWORD then sostart = rest[1].value & 0xFFFFFFFF--对值进行补位操作 else sostart = rest[1].value end end end print(rest) if #rest == 1 then end return Format(rest, format, value, type, Function) end gg.toast("功能:" .. Function .. "开启失败") print("功能开启失败原因: 未找到基址头") return os.exit() 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 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 gg.edits(addr, Table, name) local Table1 = {{}, {}} for k, v in ipairs(Table) do local value = {address = addr+v[3], value = v[1], flags = v[2], freeze = v[4]} if v[4] then Table1[2][#Table1[2]+1] = value else Table1[1][#Table1[1]+1] = value end end gg.addListItems(Table1[2]) gg.setValues(Table1[1]) gg.toast((name or "") .. "开启成功, 共修改"..#Table.."个值") end 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 function readD ( a ) return gg.getValues ( { { address = a , flags = 4 } } ) [ 1 ].value 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 addListltems(address,flags,value,freeze) t={} t[1]={} t[1].address=address t[1].flags=flags t[1].value=value t[1].freeze=freeze gg.addListItems(t) end function xfnb(add,lx) return gg.getValues({ { address=add,flags = lx } })[1].value end local function RUI(address) return gg.getValues({{address = address, flags = gg.TYPE_QWORD}})[1].value 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 addListltems(address,flags,value,freeze) t={} t[1]={} t[1].address=address t[1].flags=flags t[1].value=value t[1].freeze=freeze gg.addListItems(t) end local function RUI(address) return gg.getValues({{address = address, flags = gg.TYPE_QWORD}})[1].value 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 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 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 readPointer(name, offset, i)--读取内存函数 local re = gg.getRangesList(name) local x64 = gg.getTargetInfo().x64 local va = {[true]=32, [false]=4} if re[i or 1] then local addr = re[i or 1].start + offset[1] for i = 2, #offset do addr = gg.getValues({{address=addr, flags=va[x64]}}) if not x64 then addr[1].value = addr[1].value & 0xFFFFFFFF end addr = addr[1].value + offset[i] end return addr end end -- local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() local _Q = tonumber(0x269CDB36) 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("音乐配置"..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 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 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 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 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 string.toMusic('欢迎使用陆某某全防 注意看公告 祝用户稳定奔放') check字体颜色=0xff000000 switch颜色=0xff0062FF 按钮颜色=0xffefefef vibra = context:getSystemService(Context.VIBRATOR_SERVICE) changan = {} local changan = changan local android = import('android.*') function write(fileName, content) file.write(fileName, content) end function panduan(rec) fille,err = io.open(rec) if fille == nil then return false else return true end end function checkimg(tmp) if panduan("/sdcard/陆某某/图片/"..tmp) ~= true then gg.toast("正在下载资源"..tmp.."\n请耐心等待") download("http://yz.79ynb.xyz/"..tmp,"/sdcard/陆某某/图片/"..tmp) else if file.length("/sdcard/陆某某/图片/"..tmp) <= 1 then gg.toast("正在下载资源"..jindu.."/"..#ckimg.."\n请耐心等待") download("http://yz.79ynb.xyz/"..tmp,"/sdcard/陆某某/图片/"..tmp) end end end ckimg = { "bm_launch", "bm_ff", "bm_gn", "bm_mh", "bm_sz", "bm_music", "quarkx", "quarkconfb", 'sj','hsj', } for i = 1,#ckimg do jindu = i checkimg(ckimg[i]) end YoYoImpl = luajava.getYoYoImpl() file.getdirs("/sdcard/陆某某/zip/") gg.checkimg=function(tmp) for i=1,#tmp do jd=i.."/"..#tmp file.getdirs("/sdcard/陆某某/图片/zip/"..tmp[i][1].."/") local url = 'https://chuxinya.top/f/'..tmp[i][2].."/"..tmp[i][1] local path = "/sdcard/陆某某/zip/"..tmp[i][1] local msg = '正在下载'..tmp[i][2]..',请稍后...' .. '\n目标路径->' .. path if panduan(path) ~= true then local ok, err = luajava.download(url, path, msg) else end gg.toast("正在加载"..tmp[i][1].."资源\n目标进度:"..jd) unzip("/sdcard/陆某某/zip/"..tmp[i][1],"/sdcard/陆某某/图片/"..tmp[i][1].."/") gg.sleep(1000) gg.toast(tmp[i][1].."资源已下载完成\n目标进度:"..jd) end end tmp={ {"cow","jNJtR"--[[解压码必填下面的都一样]]}, {"king","gNMsG"}, {"JW2","kNju5"}, {"iOSPro","80BtY"}, {"opo","BjZh8"} } gg.checkimg(tmp) function 获取图片(txt) txt = string.url(txt,"de") ntxt = string.sub(string.gsub(txt,"/","-"),-10,-1) if string.find(tostring(txt),"http") ~= nil then if panduan("/sdcard/长安/图片/"..ntxt) == false then file.download(txt,"/sdcard/长安/图片/"..ntxt) else if file.length("/sdcard/长安/图片/"..ntxt) <= 1 then file.download(txt,"/sdcard/长安/图片/"..ntxt) end end txt = "/sdcard/长安/图片/"..ntxt end return luajava.getBitmapDrawable(txt) end function getRes(x) return 获取图片("/sdcard/长安/图片/"..x) end function getVerticalBG(gtvb1,gtvb3,gtvb4,gtvb5) if not gtvb4 then gtvb4 = 0 gtvb5 = 0xff000000 end local jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(gtvb3) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors(gtvb1) jianbians:setStroke(gtvb4,gtvb5) return jianbians end function getHorizontalBG(gtvb1,gtvb3,gtvb4,gtvb5) if not gtvb4 then gtvb4 = 0 gtvb5 = 0xff000000 end local jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(gtvb3) jianbians:setOrientation(GradientDrawable.Orientation.LEFT_RIGHT) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors(gtvb1) jianbians:setStroke(gtvb4,gtvb5)--边框宽度和颜色 return jianbians end context = app.context window = context:getSystemService("window") -- 获取窗口管理器 function getLayoutParams() LayoutParams = WindowManager.LayoutParams layoutParams = luajava.new(LayoutParams) if (Build.VERSION.SDK_INT >= 26) then -- 设置悬浮窗方式 layoutParams.type = LayoutParams.TYPE_APPLICATION_OVERLAY else layoutParams.type = LayoutParams.TYPE_PHONE end layoutParams.format = PixelFormat.RGBA_8888 -- 设置背景 layoutParams.flags = LayoutParams.FLAG_NOT_FOCUSABLE -- 焦点设置Finish layoutParams.gravity = Gravity.TOP|Gravity.LEFT -- 重力设置 layoutParams.width = LayoutParams.WRAP_CONTENT -- 布局宽度 layoutParams.height = LayoutParams.WRAP_CONTENT -- 布局高度 return layoutParams end function getj7() jianbian6 = luajava.new(GradientDrawable) jianbian6:setCornerRadius(20) jianbian6:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbian6:setColors({ 0x002F3032,0x002F3032 }) jianbian6:setStroke(3,"0xff0091FE")--边框宽度和颜色 return jianbian6 end slctb = getVerticalBG({0xffefefef,0xffefefef},10) slcta = getHorizontalBG({0xff0077ff,0xff975DFF},10) slctc = luajava.loadlayout { GradientDrawable, color = "#11ffffff", cornerRadius = 8 } slctd = luajava.loadlayout { GradientDrawable, color = "#55ffffff", cornerRadius = 8 } slcte = luajava.loadlayout { GradientDrawable, color = "#11ffffff", cornerRadius = 12 } slctf = luajava.loadlayout { GradientDrawable, color = "#aa1E1C27", cornerRadius = 12 } function getButtonBG() local selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, getVerticalBG({0xffd7d7d7,0xffd7d7d7},15)) selector:addState({ -android.R.attr.state_pressed }, getVerticalBG({按钮颜色,按钮颜色},15)) return selector end function getSelector3() selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, luajava.loadlayout { GradientDrawable, color = "#b9b9b9", cornerRadius = 10 }) -- 点击时候的背景 selector:addState({ -android.R.attr.state_pressed }, luajava.loadlayout { GradientDrawable, color = "#ffffff", cornerRadius = 10 }) -- 没点击的背景 return selector end function getSelector() selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, slcta) -- 点击时候的背景 selector:addState({ -android.R.attr.state_pressed }, slctb) -- 没点击的背景 return selector end hanshu = function(v, event) local Action = event:getAction() if Action == MotionEvent.ACTION_DOWN then isMove = false RawX = event:getRawX() RawY = event:getRawY() x = mainLayoutParams.x y = mainLayoutParams.y elseif Action == MotionEvent.ACTION_MOVE then isMove = true mainLayoutParams.x = tonumber(x) + (event:getRawX() - RawX) mainLayoutParams.y = tonumber(y) + (event:getRawY() - RawY) window:updateViewLayout(floatWindow, mainLayoutParams) end end function getSelector2() selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, slctd) -- 点击时候的背景 selector:addState({ -android.R.attr.state_pressed }, slctc) -- 没点击的背景 return selector end jianbian = luajava.new(GradientDrawable) jianbian:setCornerRadius(30) jianbian:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbian2 = luajava.new(GradientDrawable) jianbian2:setCornerRadius(30) jianbian2:setGradientType(GradientDrawable.LINEAR_GRADIENT) function 获取图片(txt) --gg.toast("正在加载资源...") txt = file.checkUrl(txt) return luajava.getBitmapDrawable(txt) end local isswitch YoYoImpl = luajava.getYoYoImpl() changan.menu = function(sview) if isswitch then return false end beij=bglist[1] isswitch = true cebian = { LinearLayout, layout_height = "match_parent", layout_width = "wrap_content", orientation = "horizontal", gravity = "center", orientation='vertical', } for i = 1,#stab do cebian[#cebian+1] = { LinearLayout, id = "jm"..i, gravity="center", layout_height = "wrap_content", layout_width = "wrap_content", layout_marginTop = "3dp", layout_marginBottom = "6dp", layout_marginRight = "3dp", layout_marginLeft = "3dp", elevation='2dp', onClick = function() 切换(i) end, orientation='vertical', {ImageView, id="jmp"..i, layout_height='20dp', layout_width='20dp', src=获取图片(stab[i][2]), colorFilter=0xffd7d7d7, }, { TextView, text = stab[i][1], id="jmt"..i, gravity = "center", textSize = "12sp", textColor = "#"..颜色2, layout_height = "wrap_content", layout_width = "68dp", }} end cebian = luajava.loadlayout( { ScrollView, layout_height = "wrap_content", layout_width = "wrap_content", cebian }) for i = 1,#stab do _ENV["layout"..i] = luajava.loadlayout({ LinearLayout, layout_width = "fill_parent", layout_height = "200dp", visibility = "gone", orientation = "vertical", background={ GradientDrawable, color = "#33ffffff", cornerRadius = 20 }, { ScrollView, fillViewport = "true", --padding = "10dp", gravity = "center", layout_width = "250dp", layout_height = "200dp", orientation = "horizontal", { LinearLayout, id = "layoutm"..i, layout_marginRight = "5dp", layout_marginLeft = "5dp", layout_width = "240dp", orientation = "vertical", gravity = "center_horizontal", } }}) end ckou = { LinearLayout, layout_width = "wrap_content", layout_height = "wrap_content", cebian, { LinearLayout, layout_marginBottom = "1dp", layout_marginTop = "1dp", layout_width = "2dp", layout_height = "match_parent", background = "#D7D7D7" } } for i = 1,#stab do ckou[#ckou+1] = _ENV["layout"..i] end ckou = luajava.loadlayout(ckou) floatWindow = { FrameLayout, id = "motion", elevation = "10dp", onTouch = hanshu, onClick = function() end, layout_width = "wrap_content", orientation = "vertical", gravity = "center_vertical", layout_height = "wrap_content", {LinearLayout, orientation='vertical', id='chuangk', visibility='gone', {--顶部栏 FrameLayout, orientation = "horizontal", padding = "2dp", layout_width="fill_parent", { ImageView, layout_gravity="center_vertical|left", src = 获取图片(xfcpic), id = "titlebar", layout_marginLeft='2dp', elevation='2dp', layout_marginRight='2dp', layout_marginTop='2dp', layout_marginBottom='2dp', background=getVerticalBG({0xffefefef,0xffefefef},12), padding="2dp", --visibility = "gone", layout_width = "24dp", layout_height = "24dp", gravity = "center", onClick = 隐藏, onTouch = hanshu, },{TextView, textSize="14sp", text=titlet, textColor="#323232", gravity="center", layout_marginLeft='20dp', layout_gravity="center", layout_width="match_parent", layout_height="match_parent", },{ImageView, layout_width='24dp', layout_height='24dp', layout_gravity='center_vertical', src=getRes('skin'), padding='5dp', layout_marginLeft='44dp', onClick=changebg, layout_marginRight='2dp', layout_marginTop='2dp', layout_marginBottom='2dp', background=getVerticalBG({0xffefefef,0xffefefef},12), elevation='2dp' },{ LinearLayout, layout_gravity="center_vertical|right", padding={"2dp","2dp","8dp","2dp"}, layout_marginLeft='2dp', layout_marginRight='2dp', layout_marginTop='2dp', layout_marginBottom='2dp', layout_width = "40dp", layout_height = "24dp", gravity = "center", onClick = 隐藏, onTouch = hanshu, {LinearLayout, layout_width='6dp', layout_height='6dp', background=getVerticalBG({0xffFFC03C,0xffFFC03C},360), layout_marginLeft='2dp', layout_marginRight='2dp' },{LinearLayout, layout_width='6dp', layout_height='6dp', background=getVerticalBG({0xff36CC56,0xff36CC56},360), layout_marginLeft='2dp', layout_marginRight='2dp' },{LinearLayout, layout_width='6dp', layout_height='6dp', background=getVerticalBG({0xffFF3E44,0xffFF3E44},360), layout_marginLeft='2dp', layout_marginRight='2dp' }, } }, ckou, },{ScrollView, id='ggscro', layout_marginTop='236dp', layout_marginLeft='82dp', layout_height='60dp', layout_width='235dp', layout_margin='3dp', elevation='2dp', padding='4dp', background=getVerticalBG({0xffefefef,0xffefefef},12), {LinearLayout, id='gggscro', orientation='vertical', layout_width='match_parent', layout_height='wrap_content', } },{ ImageView, id = "control", background = 获取图片(xfcpic), layout_width = "40dp", layout_height = "40dp", onTouch = hanshu, onClick = 隐藏, } } local function invoke() local ok local RawX, RawY, x, y mainLayoutParams = getLayoutParams() floatWindow = luajava.loadlayout(floatWindow) local function invoke2() for k = 1,#stab do for i = 1,#sview[k] do _ENV["layoutm"..k]:addView(sview[k][i]) end end window:addView(floatWindow, mainLayoutParams) block('end') end 切换(1) local runnable = luajava.getRunnable(invoke2) local handler = luajava.getHandler() handler:post(runnable) block('join') local isMove end invoke(swib1,swib2) 隐藏() gg.setVisible(false) luajava.setFloatingWindowHide(true) qhkai = 0 qiehuan = function() if qhkai == 0 then qhkai = 1 draw.remove() luajava.runUiThread(function() changan.controlSmall(floatWindow,400) end) gg.sleep(400) luajava.runUiThread(function() floatWindow:setVisibility(View.GONE) end) else qhkai = 0 huiz() draw.text('.', -9200,-9200) luajava.runUiThread(function() floatWindow:setVisibility(View.VISIBLE) end) luajava.runUiThread(function() changan.controlBig(floatWindow,400) end) end end huiz() draw.text('.', -9200,-9200) 隐藏()隐藏() while true do if tuichu == 1 then break end jianting3(qiehuan) gg.sleep(300) end luajava.setFloatingWindowHide(false) end changan.controlRotation9 = function(control, time,t) luajava.runUiThread(function() import "android.view.animation.Animation" import "android.animation.ObjectAnimator" xuanzhuandonghua = ObjectAnimator:ofFloat(control, "rotation", { time,t }) xuanzhuandonghua:setRepeatCount(0) xuanzhuandonghua:setRepeatMode(Animation.RESTART) xuanzhuandonghua:setDuration(400) xuanzhuandonghua:start() end) end function uiadtext(txt,color,size) if not txt then txt = "" end if not color then color = "#000000" end if not size then size = "10sp" end local tmp=luajava.loadlayout( { TextView, text = string.fromHtml(" "..getTimeStamp(os.time()).." "..txt..""), textSize = size, --textColor = color, gravity="left", layout_width = "wrap_content", }) luajava.post(function() gggscro:addView(tmp) end) luajava.newThread(function() gg.sleep(100) luajava.post(function() ggscro:fullScroll(View.FOCUS_DOWN) end) end):start() end function getTimeStamp(t) local str = os.date("%m-%d %H:%M:%S",t) return str end function addadView(tmp) local function invoke() parentv:addView(tmp) end luajava.post(invoke) end function rmdadView(tmp) local function invoke() parentv:removeView(tmp) end luajava.post(invoke) end function visi (tid , ttid) vibra:vibrate(4) local tview = luajava.getIdValue (tid) local ttview = luajava.getIdValue (ttid) if not tview then return 0 end if tonumber (tostring (tview : getVisibility ())) == 8.0 then tview : setVisibility (View.VISIBLE) YoYoImpl:with("FadeIn"):duration(200):playOn(boxes[tid]) changan.controlRotation9(boxpic[tid],0,90) else tview : setVisibility (View.GONE) changan.controlWater (_ENV [tid.."6"] , 200) changan.controlRotation9(boxpic[tid],90,0) end end boxes = {} boxpic = {} function changan.box (views) local tid = "box"..guid () boxpic[tid] = luajava.loadlayout { ImageView , background = getRes("hei_right"), layout_width = "24dp" , layout_height = "24dp" , } local ttid = tid.."6" local t1id = guid () firadio = { LinearLayout , layout_width = 'fill_parent' , layout_height = "wrap_content" , layout_marginTop = "2dp" , layout_marginBottom = "2dp" , orientation = "vertical" , } if type (views [1]) == "string" or type (views [1]) == "number" then firadio [# firadio + 1] = { LinearLayout , layout_width = 'fill_parent' , layout_height = "40dp" , gravity = "center_vertical" , layout_marginTop = "2dp" , layout_marginLeft='2dp', layout_marginRight='2dp', elevation='2dp', layout_marginBottom = "4dp" , onClick = function () visi (tid , ttid) end , background = getButtonBG(), { TextView , text = views [1] , textSize = "13sp" , layout_marginLeft = "15dp" , layout_width = "match_parent" , layout_weight=1, textColor = "#000000" , gravity = "left" , },{ LinearLayout , padding={"0dp","0dp","10dp","0dp"}, layout_width = "30dp" , layout_height = "30dp" , gravity = "center", boxpic[tid], } } else gg.alert ("changan.box的table内第一个元素必须是string") os.exit () end radios = { LinearLayout , layout_marginLeft = "0dp" , layout_marginRight = "0dp" , orientation = "vertical" , visibility = "gone" , id = luajava.newId (tid) , padding = "0dp" , layout_width = 'fill_parent' , } for i = 2 , # views do radios [# radios + 1] = views [i] end boxes[tid] = luajava.loadlayout(radios) firadio [# firadio + 1] = boxes[tid] _ENV [t1id] = luajava.loadlayout (firadio) return _ENV [t1id] end corbk = true 当前ui = 1 function 切换(x) 当前ui = x luajava.runUiThread(function() for i = 1,#stab do _ENV["jmt"..i]:setTextColor(0xff000000) _ENV["jmp"..i]:setColorFilter(0xffd7d7d7) _ENV["layout"..i]:setVisibility(View.GONE) end _ENV["jmt"..当前ui]:setTextColor(0xff0062FF) _ENV["jmp"..当前ui]:setColorFilter(0xff0062FF) _ENV["layout"..当前ui]:setVisibility(View.VISIBLE) --YoYoImpl:with("FadeIn"):duration(800):playOn(_ENV["layout"..当前ui]) end) end 显示 = 0 beij2 = luajava.loadlayout({ GradientDrawable, color = "#001E1C27", cornerRadius = 10 }) nowbg=1 function changebg() luajava.runUiThread(function() if nowbg<#bglist then nowbg=nowbg+1 else nowbg=1 end beij=bglist[nowbg] floatWindow:setBackground(beij) YoYoImpl:with("FadeIn"):duration(600):playOn(floatWindow) end) end function getcolor(cl) cl[1] = tonumber(math.ceil(cl[1]*2.6,0,5)) if cl[1] > 255 then cl[1] = "0xff" else cl[1] = "0x"..string.format("%x",cl[1]) end for i = 1,3 do cl[i+1] = string.format("%x",cl[i+1]) if string.len(cl[i+1]) == 1 then cl[i+1] = "0"..cl[i+1] end end cl = cl[1]..cl[2]..cl[3]..cl[4] return cl end function getrgb(cl) if string.sub(cl,1,1) == "#" then cl = "0x"..string.sub(cl,2,-1) end cl = { tonumber(string.sub(cl,0,4)),tonumber("0x"..string.sub(cl,5,6)),tonumber("0x"..string.sub(cl,7,8))} return cl end 显示 = 0 function 隐藏() luajava.runUiThread(function() if tonumber(tostring(chuangk:getVisibility())) == 8.0 then control:setVisibility(View.GONE) 显示 = 1 ggscro:setVisibility(View.VISIBLE) chuangk:setVisibility(View.VISIBLE) _ENV["layout"..当前ui]:setVisibility(View.VISIBLE) changan.controlBig(floatWindow,500) floatWindow:setBackground(beij) else ggscro:setVisibility(View.GONE) chuangk:setVisibility(View.GONE) floatWindow:setBackground(beij2) control:setVisibility(View.VISIBLE) 显示 = 0 _ENV["layout"..当前ui]:setVisibility(View.GONE) end end) end import("android.media.AudioManager") audi = context:getSystemService("audio") audiotype = { AudioManager.STREAM_ALARM, --手机闹铃的声音 AudioManager.STREAM_MUSIC, --手机音乐的声音 AudioManager.STREAM_NOTIFICATION, --系统提示的通知 AudioManager.STREAM_RING, --电话铃声的声音 AudioManager.STREAM_SYSTEM, --手机系统的声音 AudioManager.STREAM_VOICE_CALL, --语音电话的声音 AudioManager.STREAM_DTMF, --DTMF音调的声音 } yinl = {} for i = 1,#audiotype do yinl[i] = {} yinl[i].type = audiotype[i] yinl[i].min = audi:getStreamMinVolume(audiotype[i]) yinl[i].max = audi:getStreamMaxVolume(audiotype[i]) yinl[i].now = audi:getStreamVolume(audiotype[i]) end function jianting2() yinln = {} for i = 1,#audiotype do yinln[i] = {} yinln[i].type = audiotype[i] yinln[i].min = audi:getStreamMinVolume(audiotype[i]) yinln[i].max = audi:getStreamMaxVolume(audiotype[i]) yinln[i].now = audi:getStreamVolume(audiotype[i]) if yinln[i].now > yinl[i].now then audi:adjustStreamVolume(yinln[i].type,AudioManager.ADJUST_LOWER,0) gg.alert("up") elseif yinln[i].now < yinl[i].now then audi:adjustStreamVolume(yinln[i].type,AudioManager.ADJUST_RAISE,0) gg.alert("down\n"..yinln[i].now.."\n"..yinl[i].now) end end end yltype = 0 function jianting3(func) yinln = {} for i = 1,#audiotype do yinln[i] = {} yinln[i].type = audiotype[i] yinln[i].now = audi:getStreamVolume(audiotype[i]) if yinln[i].now > yinl[i].now then yinl[i].now = yinln[i].now if yltype == 1 then yltype = 0 func() end elseif yinln[i].now < yinl[i].now then yinl[i].now = yinln[i].now if yltype == 0 then yltype = 1 func() end end end end function jianting(func) yinln = {} for i = 1,#audiotype do yinln[i] = {} yinln[i].type = audiotype[i] yinln[i].now = audi:getStreamVolume(audiotype[i]) if yinln[i].now >= yinl[i].max then audi:adjustStreamVolume(yinln[i].type,AudioManager.ADJUST_LOWER,0) end if yinln[i].now > yinl[i].now then audi:setStreamVolume(yinln[i].type,yinl[i].now,0) func() 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 exit() tuichu = 1 luajava.setFloatingWindowHide(false) luajava.post(function() window:removeView(floatWindow) end) end setExitEvent(exit) changan.controlWater = function(control,time) luajava.runUiThread(function() import "android.animation.ObjectAnimator" ObjectAnimator():ofFloat(control,"scaleX", { 1, 0.8, 0.9, 1 }):setDuration(time):start() ObjectAnimator():ofFloat(control,"scaleY", { 1,0.8,0.9,1 }):setDuration(time):start() end) end changan.controlSmall = function(control,time) luajava.runUiThread(function() import "android.animation.ObjectAnimator" ObjectAnimator():ofFloat(control,"scaleX", { 1, 0.7, 0.4, 0 }):setDuration(time):start() ObjectAnimator():ofFloat(control,"scaleY", { 1, 0.7, 0.4, 0 }):setDuration(time):start() end) end changan.controlBig = function(control,time) luajava.runUiThread(function() import "android.animation.ObjectAnimator" ObjectAnimator():ofFloat(control,"scaleX", { 0, 0.4, 0.7, 1 }):setDuration(time):start() ObjectAnimator():ofFloat(control,"scaleY", { 0, 0.4, 0.7, 1 }):setDuration(time):start() end) end function 开关3(name,func1,func2,nid) local localname=name name = name..guid() _ENV[name] = "关" if func1 == nil then func1 = function() end end if func2 == nil then func2 = function() end end if type(func1) == "function" then return function() namers = _ENV[name] if namers ~= "开" then luajava.runUiThread(function() changan.controlWater(_ENV[nid],200) luajava.getIdValue(nid):setBackground(check2) luajava.getIdValue(nid.."k"):setVisibility(View.GONE) luajava.getIdValue(nid.."g"):setVisibility(View.VISIBLE) end) _ENV[name] = "开" vibra:vibrate(6) pcall(func1) uiadtext(localname.." 已开启.","#161616") else luajava.runUiThread(function() changan.controlWater(_ENV[nid],200) luajava.getIdValue(nid):setBackground(check1) luajava.getIdValue(nid.."g"):setVisibility(View.GONE) luajava.getIdValue(nid.."k"):setVisibility(View.VISIBLE) end) _ENV[name] = "关" vibra:vibrate(6) pcall(func2) uiadtext(localname.." 已关闭.","#545454") end end end end function getShape3() jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(20) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({ 0x55FF9DBC,0x55FF9DBC }) jianbians:setOrientation(GradientDrawable.Orientation.LEFT_RIGHT) jianbians:setStroke(8,0xaa80C3F9)--边框宽度和颜色 return jianbians end function getShape(tmp0,tmp1,tmp2,tmp3) jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(tmp0) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors(tmp1) jianbians:setOrientation(GradientDrawable.Orientation.LEFT_RIGHT) jianbians:setStroke(8,tmp3)--边框宽度和颜色 return jianbians end function getShape2(tmp0,tmp1,tmp2,tmp3) jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(tmp0) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors(tmp1) jianbians:setOrientation(GradientDrawable.Orientation.LEFT_RIGHT) jianbians:setStroke(15,tmp3)--边框宽度和颜色 return jianbians end function getShape0(tmp0,tmp1,tmp2,tmp3) jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(tmp0) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors(tmp1) jianbians:setOrientation(GradientDrawable.Orientation.LEFT_RIGHT) jianbians:setStroke(30,tmp3)--边框宽度和颜色 return jianbians end checkbg1 = getRes("quarkcheckoff") checkbg2 = getRes("quarkcheckon") switchs={} function changan.intcheck(name,func1,func2) nid = name..guid() local func = 开关5(name,func1,func2,nid) if not name then name = "未设置" end switchs[nid] = { LinearLayout, layout_width = 'match_parent', layout_weight=1, layout_height = "42dp", layout_marginTop = "1dp", layout_marginBottom = "1dp", padding = "1dp", { LinearLayout, padding="3dp", onClick = function() luajava.newThread(function() func() end):start() end, layout_width = 'fill_parent', layout_height = "wrap_content", gravity = "center_vertical", --background=getVerticalBG({0xffFFFDF2,0xddffffff,0xffFFFDF2},15,8,0xffFFDA71), { FrameLayout, id = luajava.newId(nid), background = checkbg1, layout_width = '32dp', layout_height = '32dp', padding = "0dp", },{ TextView, id=luajava.newId(nid.."t"), gravity = "left", text = name, textColor=check字体颜色, textSize = "14sp", --layout_marginLeft="8dp", layout_width = 'match_parent', layout_weight=1, }, } } return switchs[nid] end function 开关5(name,func1,func2,nid) local sname = nid local localname=name name = name..guid() _ENV[name] = "关" 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 vibra:vibrate(9) luajava.runUiThread(function() luajava.getIdValue(nid):setBackground(checkbg2) luajava.getIdValue(nid.."t"):setTextColor(switch颜色) --changan.controlWater(switchs[nid],300) end) _ENV[name] = "开" pcall(func1) uiadtext(localname.." 已开启.","#161616") else vibra:vibrate(9) luajava.runUiThread(function() luajava.getIdValue(nid):setBackground(checkbg1) luajava.getIdValue(nid.."t"):setTextColor(0xff232323) --changan.controlWater(switchs[nid],300) end) _ENV[name] = "关" pcall(func2) uiadtext(localname.." 已关闭.","#545454") end end end end function changan.check(cklist) if #cklist==0 then return nil end local rest = { LinearLayout, layout_width = 'fill_parent', layout_height = "wrap_content", gravity = "center", orientation="vertical", } for i = 1, #cklist,2 do local tempTable = {LinearLayout, layout_width = 'fill_parent', layout_height = "wrap_content", gravity = "left", orientation="horizontal" } for j = 0, 1 do if cklist[i + j] ~= nil then local name = cklist[i + j][1] local func1 = cklist[i + j][2] local func2 = cklist[i + j][3] if not name then name = "未设置" end rstt = changan.intcheck(name,func1,func2) table.insert(tempTable, rstt) else table.insert(tempTable, {LinearLayout, layout_width = 'match_parent', layout_weight=1,}) end end table.insert(rest, tempTable) end return luajava.loadlayout(rest) end switches = {} function 开关3(name,func1,func2,nid) local sname = nid local localname=name name = name..guid() _ENV[name] = "关" if func1 == nil then func1 = "" end if func2 == nil then func2 = "" end if type(func1) == "function" then local outfunc=function() namers = _ENV[name] if namers ~= "开" then vibra:vibrate(9) luajava.runUiThread(function() luajava.getIdValue(nid.."k"):setVisibility(View.GONE) YoYoImpl:with("ZoomInLeft"):duration(600):playOn(switches["2s"..sname]) luajava.getIdValue(nid.."g"):setVisibility(View.VISIBLE) luajava.getIdValue(nid):setBackground(checkbg) end) _ENV[name] = "开" pcall(func1) uiadtext(localname.." 已开启.","#161616") else vibra:vibrate(9) luajava.runUiThread(function() luajava.getIdValue(nid.."g"):setVisibility(View.GONE) YoYoImpl:with("ZoomInRight"):duration(600):playOn(switches["1s"..sname]) luajava.getIdValue(nid.."k"):setVisibility(View.VISIBLE) luajava.getIdValue(nid):setBackground(checkbga) end) _ENV[name] = "关" pcall(func2) uiadtext(localname.." 已关闭.","#545454") end end if localname=="摇一摇隐藏UI" then yyfunc=outfunc end if localname=="音量键隐藏UI" then ylfunc=outfunc end return outfunc end end function changan.switch(name,func1,func2,miaoshu) if not checkbg then checkbg = getShape2( 45, { switch颜色,switch颜色 }, 4,switch颜色) checkbg0 = getShape2( 45, { 0xff232323,0xff232323 }, 4,0x00ffffff) checkbga = getShape2( 45, { 0xffE6E6E6,0xffE6E6E6 }, 4,0xffE6E6E6) switchbg1 = getShape( 45, { 0xffffffff,0xffffffff }, 4,0xffffffff) switchbg2 = luajava.loadlayout { GradientDrawable , color = "#ffffff" , cornerRadius = 360 } end nid = name..guid() local func = 开关3(name,func1,func2,nid) if not name then name = "未设置" end switches["1s"..nid] = luajava.loadlayout { FrameLayout, layout_width = '40dp', layout_height = '20dp', gravity = "center_vertical", padding = { "1dp","0dp","1dp","0dp" }, { LinearLayout, layout_gravity = "left|center_vertical", id = luajava.newId(nid.."k"), background = switchbg1, onClick = function() luajava.newThread(function() func() end):start() end, layout_width = '17dp', layout_height = '17dp', }, } switches["2s"..nid] = luajava.loadlayout { FrameLayout, onClick = function() luajava.newThread(function() func() end):start() end, layout_width = '40dp', layout_height = '20dp', gravity = "center_vertical", padding = { "1dp","0dp","1dp","0dp" } , { LinearLayout, visibility = "gone", layout_gravity = "right|center_vertical", id = luajava.newId(nid.."g"), background = switchbg2, onClick = function() luajava.newThread(function() func() end):start() end, layout_width = '17dp', layout_height = '17dp', } } rest = luajava.loadlayout({ LinearLayout, layout_width = 'fill_parent', layout_height = "wrap_content", gravity = "center_vertical", { LinearLayout, layout_width = 'fill_parent', layout_height = "40dp", gravity = "center_vertical", layout_marginLeft='2dp', layout_marginRight='2dp', layout_marginTop='2dp', layout_marginBottom='2dp', elevation='2dp', background = luajava.loadlayout { GradientDrawable , color = 按钮颜色 , cornerRadius = 12 } ,padding = { "0dp","0dp","6dp","0dp" }, { TextView, gravity = "top", text = name, textColor = "#000000", textSize = "13sp", layout_weight = 1, layout_width = '80dp', layout_marginLeft = "10dp", layout_marginRight = "20dp", }, { TextView, gravity = "center", layout_height = "match_parent", text = miaoshu, textSize = "11sp", layout_width = "wrap_content", layout_marginLeft = "-50dp", layout_weight = 1, textColor = "#A5A5A5", }, { FrameLayout, id=luajava.newId(nid), background = checkbga, elevation = "1dp", onClick = function() luajava.newThread(function() func() end):start() end, layout_width = 'wrap_content', layout_height = 'wrap_content', gravity = "left", padding="1dp", switches["1s"..nid],switches["2s"..nid] }} }) return rest end function initbg() jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(10) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({ --0x00444444,0x00ffffff 0xffffffff,0xffffffff }) jianbians:setOrientation(GradientDrawable.Orientation.LEFT_RIGHT) jianbians:setStroke(0,0xff000000)--边框宽度和颜色 return jianbians end buts={} heir=getRes("heir") function changan.button(txt,func,txtc) if not txt then txt = "未设置" end if not txtc then txtc="#000000" end local tid="Cbutton"..guid() buts[tid]=luajava.loadlayout( { LinearLayout, layout_width = 'match_parent', layout_height = "wrap_content", { LinearLayout, layout_width = "fill_parent", gravity = "center_vertical", layout_marginTop = "5dp", layout_marginBottom = "5dp", layout_marginLeft='3dp', layout_marginRight='3dp', elevation='2dp', background = getButtonBG(), padding="10dp", onClick = function() changan.controlWater(buts[tid],300) uiadtext('执行 '..txt,"#161616") luajava.newThread(func):start() end, { TextView, --id = luajava.newId(tid), textColor = txtc, text = txt, textSize = "13sp", layout_height = "wrap_content", layout_width = "fill_parent", layout_weight=1, },{ImageView, src=heir, layout_height="14dp", layout_width="14dp", } }}) return buts[tid] end function changan.text(txt,color,size) if not txt then txt = "未设置文字" end if not color then color = "#"..颜色2 end if not size then size = "18sp" end return luajava.loadlayout( { TextView, text = txt, textSize = size, textColor = color, layout_width = "wrap_content", }) end function 开关(name,func1,func2) if func1 == nil then func1 = function() end end if func2 == nil then func2 = function() end end if type(func1) == "function" then return function() namers = _ENV[name] if namers ~= "开" then _ENV[name] = "开" pcall(func1) uiadtext(name.." 已开启.","#161616") else _ENV[name] = "关" pcall(func2) uiadtext(name.." 已关闭.","#545454") end end end end 颜色1 = "80C3F9" 颜色2 = "545454" function 开关2(name,func1,func2,nid) 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 luajava.runUiThread(function() luajava.getIdValue(nid):setBackground(luajava.getBitmapDrawable("/sdcard/长安/图片/check2")) end) _ENV[name] = "开" func1() uiadtext(name.." 已开启.","#161616") else luajava.runUiThread(function() luajava.getIdValue(nid):setBackground(luajava.getBitmapDrawable("/sdcard/长安/图片/check1")) end) _ENV[name] = "关" func2() uiadtext(name.." 已关闭.","#545454") end end end 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 local function readD (a) return gg.getValues ( { { address = a , flags = 4 } }) [1].value 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 addListltems(address,flags,value,freeze) t = {} t[1] = {} t[1].address = address t[1].flags = flags t[1].value = value t[1].freeze = freeze gg.addListItems(t) end ------------------------------ ------------------------------ function xfnb(add,lx) return gg.getValues({ { address = add,flags = lx } })[1].value end ------------------------------ ------------------------------ local function RUI(address) return gg.getValues({{ address = address, flags = gg.TYPE_QWORD }})[1].value 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 addListltems(address,flags,value,freeze) t = {} t[1] = {} t[1].address = address t[1].flags = flags t[1].value = value t[1].freeze = freeze gg.addListItems(t) end local function RUI(address) return gg.getValues({{ address = address, flags = gg.TYPE_QWORD }})[1].value end function readPointer(name, offset, i) local re = gg.getRangesList(name) local x64 = gg.getTargetInfo().x64 local va = {[true] = 32, [false] = 4 } if re[i or 1] then local addr = re[i or 1].start + offset[1] for i = 2, #offset do addr = gg.getValues({{ address = addr, flags = va[x64]}}) if not x64 then addr[1].value = addr[1].value & 0xBAE0FFFF end addr = addr[1].value + offset[i] end return addr end end ------------------------------ ------------------------------ function gg.edits(addr, Table, name) local Table1 = {{}, {}} for k, v in ipairs(Table) do local value = { address = addr + v[3], value = v[1], flags = v[2], freeze = v[4]} if v[4] then Table1[2][#Table1[2] + 1] = value else Table1[1][#Table1[1] + 1] = value end end gg.addListItems(Table1[2]) gg.setValues(Table1[1]) gg.toast((name or "") .. "开启成功, 共修改" .. #Table .. "个值") end function LSQ_Chain(so, offset, format, value, type, Function)--模块设置, 偏移量, 功能参数, 修改值, 类型, 功能 getRanges = getRanges or (function() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v["type"]:sub(2, 2) == 'w' then--判断so是否可读可写 ranges[#ranges+1] = v end end return ranges end) local rest, ranges, sostart, valtype = {}, getRanges(), nil , gg.TYPE_DWORD if gg.getTargetInfo()["x64"] then--判断应用程序是否为64位 valtype = gg.TYPE_QWORD end ------------------------------ ------------------------------ for i in pairs(ranges) do local _name = ranges[i]["internalName"]:gsub('^.*/', '') if so[1] == _name and so[2] == ranges[i]["state"] then sostart = ranges[i]["start"] break end end ------------------------------ ------------------------------ if sostart then if offset[1] then for i = 1, #offset do rest = {{ flags = valtype,address = sostart + offset[i]}} rest = gg.getValues(rest) if i == #offset then break end if valtype == gg.TYPE_DWORD then sostart = rest[1].value & 0xBAE0FFFF--对值进行补位操作 else sostart = rest[1].value end end end print(rest) if #rest == 1 then end return Format(rest, format, value, type, Function) end gg.toast("功能:" .. Function .. "开启失败") print("功能开启失败原因: 未找到静态头") return os.exit() end ------------------------------ ------------------------------ function Format(tab, format, value, type, Function) if format == "查看" then tab[1]["flags"] = type return print(gg.getValues(tab)) elseif format == "修改" then tab[1]["flags"] = type tab[1]["value"] = value return gg.setValues(tab) elseif format == "冻结" then tab[1]["flags"] = type tab[1]["freeze"] = true tab[1]["name"] = Function or "功能" return gg.addListItems(tab) elseif format == "加载" then tab[1]["flags"] = type return gg.loadResults(tab) 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 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(address, flags) local tt = {} tt[1] = {} tt[1].address = address tt[1].flags = flags filzer = gg.getValues(tt)[1].value return filzer end function getbase(address) local tt = {} tt[1] = {} tt[1].address = address tt[1].flags = 32 filzer = gg.getValues(tt)[1].value return filzer 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("音乐配置"..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 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.toast("提示:\n\n音乐已成功下载位置:\n\n"..XEY1) end XGCK=-1 end end function zjson(jsonr) local str = jsonr 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 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(0x2C4D6BCE) 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 & 0xBAE0FFFF 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 PS() end function setvalue(address,flags,value) PS('修改地址数值(地址,数值类型,要65536)') 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 ------------------------------ ------------------------------ --仿SX写法配置 ------------------------------ ------------------------------ function xqmnb(Search,Modification) gg.clearResults() gg.setRanges(Search[1].memory) gg.searchNumber(Search[3].value,Search[3].type,false,536870912,0,-1) if gg.getResultCount() == 0 then gg.toast(Search[2].name..'开启失败') return end local Result = gg.getResults(gg.getResultCount()) local sum for index = 4,#Search do sum = 0 for i = 1,#Result do if gg.getValues({{ address = Result[i].address+Search[index].offset,flags = Search[index].type }})[1].value ~= Search[index].lv then Result[i].Usable = true sum = sum+1 end end if sum==#Result then gg.toast(Search[2].name..'开启失败') return end end local Data,Freeze,Freezes = {}, {},0 sum = 0 for index,value in ipairs(Modification)do for index = 1,#Result do if not Result[index].Usable then local Value = { address = Result[index].address+value.offset,flags = value.type,value = value.value,freeze = true } if value.freeze then Freeze[#Freeze+1] = Value Freezes = Freezes+1 else Data[#Data+1] = Value end sum = sum+1 end end end gg.setValues(Data) gg.addListItems(Freeze) if Freezes == 0 then gg.toast(Search[2].name..'开启成功,共修改'..sum..'条数据') else gg.toast(Search[2].name..'开启成功,共修改'..sum..'条数据,冻结'..Freezes..'条数据') end gg.clearResults() end -- 读取内存地址的函数 function 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 & 0xBAE0FFFF end addr = addr[1].value + offset[i] end return addr end end -- 修改内存地址的函数 function gg.edits(addr, Table, name) local Table1 = {{}, {}} for k, v in ipairs(Table) do local value = { address = addr+v[3], value = v[1], flags = v[2], freeze = v[4]} if v[4] then Table1[2][#Table1[2]+1] = value else Table1[1][#Table1[1]+1] = value end end gg.addListItems(Table1[2]) gg.setValues(Table1[1]) gg.toast((name or "") .. "开启成功, 共修改"..#Table.."个值") end local 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 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 gg.edits(addr, Table, name) local Table1 = {{}, {}} for k, v in ipairs(Table) do local value = {address = addr+v[3], value = v[1], flags = v[2], freeze = v[4]} if v[4] then Table1[2][#Table1[2]+1] = value else Table1[1][#Table1[1]+1] = value end end gg.addListItems(Table1[2]) gg.setValues(Table1[1]) end function getRanges() local ranges = {} local t = gg.getRangesList('^/dev/kgsl-3d0*$') for i, v in pairs(t) do if v.type:sub(4, 4) == 's' then table.insert(ranges, v) end end return ranges end local function readD(a) return gg.getValues({{ address = a, flags = gg.TYPE_DWORD }})[1].value end local function readF(a) return gg.getValues({{ address = a, flags = gg.TYPE_FLOAT }})[1].value end ------------------------------ ------------------------------ function setvalue(address,flags,value) local t = {} t[1] = {} t[1].address = address t[1].flags = flags t[1].value = value gg.setValues(t) gg.addListItems(t) end ------------------------------ ------------------------------ function _V(add,value1,flag,value2) local num = 0;ednum = 0 if flag == gg.TYPE_DWORD then readV = readD elseif flag == gg.TYPE_FLOAT then readV = readF else os.exit("不支持的类型") end local S_list = getRanges() for i in pairs(S_list) do num = num+1 addr = S_list[i].start+add if readV(addr) == value1 then setvalue(addr,flag,value2) ednum = ednum+1 end end return "遍历了"..num.."个地址\n".."修改了"..ednum.."个地址" 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 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 gg.edits(addr, Table, name) local Table1 = {{}, {}} for k, v in ipairs(Table) do local value = {address = addr + v[3], value = v[1], flags = v[2], freeze = v[4]} if v[4] then Table1[2][#Table1[2] + 1] = value else Table1[1][#Table1[1] + 1] = value end end gg.addListItems(Table1[2]) gg.setValues(Table1[1]) end bglist={ getHorizontalBG({0xffe9e9e9,0xffe9e9e9},12), getHorizontalBG({0xff7F58FF,0xff2964FF,0xff5399FF},12), getHorizontalBG({0xaaffffff,0xaaffffff},12,3,0xaa232323), } function huiz()---绘制必须放在这里面 draw.text('陆某某全防',200,275)draw.setColor('#00ffff') draw.setSize(45)draw.setStyle('描边并填充') end titlet="陆某某全防" stitle = "陆某某" stab={ {"公告","/sdcard/陆某某/图片/bm_launch"}, {"防封","/sdcard/陆某某/图片/bm_ff"}, {"功能","/sdcard/陆某某/图片/bm_gn"}, {"美化","/sdcard/陆某某/图片/bm_mh"}, {"音乐","/sdcard/陆某某/图片/bm_music"}, {"设置","/sdcard/陆某某/图片/bm_sz"}, } xfcpic = "https://cccimg.com/down.php/ee349817e3052d8a03d50b4d97435c91.jpg" --悬浮窗链接或路径 ---公告 changan.menu( { {--1 changan.button("公告", function() string.toMusic("注意上分要演戏 功能少开 尽量少开危险功能 防封可单开或者尝试搭配 自行拿小白号测试 每台机型不一样 所以稳定性也不一样 高风险和安全期与防封无关 祝你稳定奔放 ") gg.alert("注意上分要演戏 功能少开 尽量少开危险功能 防封可单开或者尝试搭配 自行拿小白号测试 每台机型不一样 所以稳定性也不一样 高风险和安全期与防封无关 祝你稳定奔放") end), changan.button("每日语录",function() Y=gg.makeRequest("https://v1.hitokoto.cn/").content --获取云端数据 Q=string.match(Y,'hitokoto(.+)type') --模式匹配他们中的一切字符 F=string.gsub(Q,'":"',"") K=string.gsub(F,'","',"") --删除多余垃圾 string.toMusic("\n\n"..""..K.."") QD = gg.alert("今日语录:\n\n"..""..K.."") if QD == 1 then end if QD == 3 then end end), changan.button("选择进程",gg.setProcessX), changan.text("公告","#A11322","20sp"), changan.text("使用陆某某全防请注意演戏尽量少开危险功能注意防闪可能会导致禁网官方频道","#545454","10sp"), }, { --2功能 changan.button("选择进程",gg.setProcessX), --changan.text("文字演示","#0077FF","20sp"), --changan.text("文字演示文字演示文字演示","#545454","10sp"), changan.switch( " 防闪", function() function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() local _Q = tonumber(0x167ba0fe) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address print(string.char(231,190,164,58).._Q) end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end local t = {"libanogs.so:bss", "Cb"} local tt = {0x6F0} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 64, freeze = true}}) string.toMusic("开启成功") end ), changan.switch( "过搜索检测", function() local t = {"libanogs.so:bss", "Cb"} local tt = {0x1D88, 0x8} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 131328, freeze = true}}) string.toMusic("开启成功") end ), -- changan.switch( -- "大厅①", -- function() -- local t = {"libUE4.so:bss", "Cb"} -- local tt = {0x6F3300} -- local ttt = S_Pointer(t, tt, true) -- gg.addListItems({{address = ttt, flags = 4, value = 0, freeze = true}}) -- local t = {"libUE4.so:bss", "Cb"} -- local tt = {0x6F3460} -- local ttt = S_Pointer(t, tt, true) -- gg.addListItems({{address = ttt, flags = 4, value = 0, freeze = true}}) -- local t = {"libUE4.so:bss", "Cb"} -- local tt = {0x6F35C0} -- local ttt = S_Pointer(t, tt, true) -- gg.addListItems({{address = ttt, flags = 4, value = 0, freeze = true}}) -- string.toMusic("开启成功") -- end -- ), changan.switch( "大厅①", function() function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() local _Q = tonumber(0x167ba0fe) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address print(string.char(231,190,164,58).._Q) end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end string.toMusic("开启成功") end ), changan.switch( "大厅②", function() function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() local _Q = tonumber(0x167ba0fe) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address print(string.char(231,190,164,58).._Q) end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end string.toMusic("开启成功") end ), }, { --3 changan.check({ { "人物广角", function() OP=gg.prompt({'1至10'},{[1]='3'},{[1]='number'}) if OP == nil or OP[1] == '' or OP[1] == '0' then gg.toast("取消") else so=gg.getRangesList('libUE4.so')[1].start py=0x2BD8898 setvalue(so+py,16, 2)--功能:广角 string.toMusic("开启成功") end end }, { "动态广角", function() local t = {"libUE4.so:bss", "Cb"} local tt = {0x6D1820,0x30,0x448,0x2F8,0x180,0x33C} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 120, freeze = true}}) string.toMusic("开启成功") end }, { "枪械聚点", function() so=gg.getRangesList('libUE4.so')[1].start py=0x4E480DA setvalue(so+py,1, -32) string.toMusic("开启成功") end }, { "无后", function() so=gg.getRangesList('libUE4.so')[1].start py=0x4E4CED8 setvalue(so+py,1, 67) string.toMusic("开启成功") end },{ "ios上色红", function() so=gg.getRangesList('libUE4.so')[1].start py=0x8FFC77C setvalue(so+py,16, 8.47963525e-21) string.toMusic("开启成功") end },{ "除雾", function() so=gg.getRangesList('libUE4.so')[1].start py=0x7D1DFC0 setvalue(so+py,16, 8.95671814e-21)--功能:除雾 string.toMusic("开启成功") end },{ "锁帧", function() OP=gg.prompt({'1至10'},{[1]='3'},{[1]='number'}) if OP == nil or OP[1] == '' or OP[1] == '0' then gg.toast("取消") else so=gg.getRangesList('')[1].start py=0x7AEC40C8B4 setvalue(so+py,16,120) so=gg.getRangesList('')[1].start py=0x7AEC40C8B8 setvalue(so+py,16,120)--锁帧 string.toMusic("开启成功") end end },{ "打击特效", function() local t = {"libUE4.so:bss", "Cb"} local tt = {0x6D1820,0x30,0x4C0,0x598,0x14} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 999, freeze = true}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x6D1820,0x30,0x4C0,0x598,0xD4} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 999, freeze = true}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x6D1820,0x30,0x4C0,0x598,0x54} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 999, freeze = true}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x6D1820,0x30,0x4C0,0x598,0x94} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 999, freeze = true}}) string.toMusic("开启成功") end },{ "大头", function() local t = {"libUE4.so:bss", "Cb"} local tt = {0x2C9158,0x110,0xD88,0x18,0x2F0} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 2, freeze = true}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x2C9158,0x110,0xD88,0x18,0x2F8} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 2, freeze = true}}) string.toMusic("开启成功") end },{ "攀爬穿墙", function() local t = {"libUE4.so:bss", "Cb"} local tt = {0x6D1820,0x30,0x438,0x398,0x58,0x2CC} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 9999, freeze = true}}) string.toMusic("开启成功") end},{ "自动攀爬", function() local t = {"libUE4.so:bss", "Cb"} local tt = {0x6D1820,0x30,0x4A8,0x498,0x1F4-0x3C} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 2000, freeze = true}}) string.toMusic("开启成功") end},{ "微加速", function() 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 = {0x7510E8,0x8,0x48,0x20,0x1060} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 7, freeze = true}}) string.toMusic("开启成功") end end },{ "枪械大小", function() 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 = {0x6BDAE8,0x78,0x438,0x1A0,0x0,0x5c0} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 2, freeze = true}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x6BDAE8,0x78,0x438,0x1A0,0x0,0x5c4} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 2, freeze = true}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x6BDAE8,0x78,0x438,0x1A0,0x0,0x5c8} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 2, freeze = true}}) string.toMusic("开启成功") end end },{ "人物大小", function() 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 = {0x6BDAE8,0x448,0x490,0x19C} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 2, freeze = true}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x6BDAE8,0x448,0x490,0x1A0} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 2, freeze = true}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x6BDAE8,0x448,0x490,0x1A4} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 2, freeze = true}}) string.toMusic("开启成功") end end }, }), }, { --第四页音乐 changan.check({ { "丧尸动作", function() end, function() end }, { "自改衣服", function() local cfg_file = "/sdcard/衣服1.txt" local chunk = loadfile(cfg_file) local cfg = nil if chunk ~= nil then cfg = chunk() end if cfg == nil then cfg = {1403119,40604012,1404207,1404160,405000,1501002009,0,true} end SX = gg.prompt({ "面部修改:",--1 "头发修改:",--2 "衣服修改",--3 "裤子修改:",--4 "鞋子修改:",--5 "背包修改:\n改0不显示",--6 "头盔修改:\n改0不显示",--7 },cfg,{"text","text","text","text","text","text","text"}) if SX == nil then else gg.saveVariable(SX, cfg_file) if SX[1] == true then SX1() end if SX[2] == true then SX2() end if SX[3] == true then SX3() end if SX[4] == true then SX4() end if SX[5] == true then SX5() end if SX[6] == true then SX6() end if SX[7] == true then SX7() end local t = {"libUE4.so:bss", "Cb"} local tt = {0x6B7E60, 0x630, 0x670, 0x140} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = SX[1]}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x3AD38,0x0,0x340,0x30,0x388,0x70} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value =SX[2]}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x3AD38, 0x0, 0x2F0, 0x280, 0x388, 0x118} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value =SX[3]}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x3AD38,0x0,0x340,0x30,0x388,0x150} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = SX[4]}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x3AD38,0x0,0x340,0x30,0x388,0x188} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = SX[5]}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x3AD38,0x0,0x340,0x30,0x388,0x1C0} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = SX[6]}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x3AD38,0x0,0x340,0x30,0x388,0x1F8} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = SX[7]}}) gg.toast('开启成功') end end, function() end }, { "自改枪械", function() local cfg_file = "/sdcard/息白/枪械美化配置.ini" local chunk = loadfile(cfg_file) local cfg = nil if chunk ~= nil then cfg = chunk() end if cfg == nil then cfg = { 1101001213--ak , 1101002029--m16 , 1101003146--sc , 1101004046--m416 , 1101005055--GROZA , 1101006033--AUG , 10100700--QBZ , 1101008081--M762 , 1101009011--mk47 , 1101010012--g36c , 10101200--蜜罐11 , 1102001024--UZI12 , 1102002061--UMP45 , 1102003080--Vector , 1102004018--汤姆逊 , 1102005007--野牛 , 10200600--MP5K , 1102105002--P90 , 1103001154--98K , 1103002018--m24 , 1103003022--awm , 1103004037--sks22 , 1103005024--vss23 , 10300600--mini14 , 1103007020--mk1425 , 1103008014--win94 , 10300900--slr27 , 10301000--QBU , 1103011001--莫辛纳甘 , 1103012010--amr , 10301300--m417 , 1104001027--s686 , 1104002022--s189 , 1104003031--s12k , 1104004021--dbs , 1105001020--m249 , 1105002035--大盘鸡 , 1105010008--mg3 , 1108001057--大砍刀 , 1108002046--撬棍 , 1108003001--镰刀 , 1108004009--平底锅 , 1010042029--红点 , 1010042028--全息瞄准键 , 1010042027--2倍镜 , 1010042026--3倍镜 , 1010042025--4倍镜 , 1010042024--6被 , 1030020242--八倍 , 1010040462--m4苗具 , 1010040461--m4枪托 , 1010040463--m4弹夹 , true} end QiuCi = gg.prompt({ "AKM美化代码:",--1 "M16A4美化代码:",--2 "SCAR-L美化代码:",--3 "M416美化代码:",--4 "GROZA美化代码:",--5 "AUG美化代码:",--6 "QBZ美化代码:",--7 "M762美化代码:",--8 "MK47美化代码:",--9 "G36C美化代码:",--10 "蜜罐美化代码:",--11 "UZI美化代码:",--12 "UMP45美化代码:",--13 "Vector美化代码:",--14 "汤姆逊美化代码:",--15 "野牛美化代码:",--16 "MP5K美化代码:",--17 "P90美化代码:",--18 "98K美化代码:",--19 "M24美化代码:",--20 "AWM美化代码:",--21 "SKS美化代码:",--22 "VSS美化代码:",--23 "Mini14美化代码:",--24 "Mk14美化代码:",--25 "Win94美化代码:",--26 "SLR美化代码:",--27 "QBU美化代码:",--28- "莫辛纳甘美化代码:",--29 "AMR美化代码:",--30 "M417美化代码:",--31 "S686美化代码:",--32 "S1897代码:",--33 "S12K美化代码:",--34 "DBS美化代码:",--35 "M249美化代码:",--36 "大盘鸡美化代码:",--37 "MG3美化代码:",--38 "大砍刀美化代码:",--39 "撬棍美化代码:",--40 "镰刀美化代码:",--41 "平底锅美化代码:",--42 "红点瞄准镜美化代码:",--43 "全息瞄准镜美化代码:",--44 "二倍瞄准镜美化代码:",--45 "三倍瞄准镜美化代码:",--46 "四倍瞄准镜美化代码:",--47 "六倍瞄准镜美化代码:",--48 "八倍瞄准镜美化代码:",--49 "M4瞄具美化代码:",--50 "M4枪托美化代码:",--51 "M4弹夹美化代码:",--52 },cfg,{ "text",--1 "text",--2 "text",--3 "text",--4 "text",--5 "text",--6 "text",--7 "text",--8 "text",--9 "text",--10 "text",--11 "text",--12 "text",--13 "text",--14 "text",--15 "text",--16 "text",--17 "text",--18 "text",--19 "text",--20 "text",--21 "text",--22 "text",--23 "text",--24 "text",--25 "text",--26 "text",--27 "text",--28 "text",--29 "text",--30 "text",--31 "text",--32 "text",--33 "text",--34 "text",--35 "text",--36 "text",--37 "text",--38 "text",--39 "text",--40 "text",--41 "text",--42 "text",--43 "text",--44 "text",--45 "text",--46 "text",--47 "text",--48 "text",--49 "text",--50 "text",--52 "text"--53 }) if QiuCi == nil then else gg.saveVariable(QiuCi, cfg_file) if QiuCi[1] == true then QiuCi1() end if QiuCi[2] == true then QiuCi2() end if QiuCi[3] == true then QiuCi3() end if QiuCi[4] == true then QiuCi4() end if QiuCi[5] == true then QiuCi5() end if QiuCi[6] == true then QiuCi6() end if QiuCi[7] == true then QiuCi7() end if QiuCi[8] == true then QiuCi8() end if QiuCi[9] == true then QiuCi9() end if QiuCi[10] == true then QiuCi10() end if QiuCi[11] == true then QiuCi11() end if QiuCi[12] == true then QiuCi12() end if QiuCi[13] == true then QiuCi13() end if QiuCi[14] == true then QiuCi14() end if QiuCi[15] == true then QiuCi15() end if QiuCi[16] == true then QiuCi16() end if QiuCi[17] == true then QiuCi17() end if QiuCi[18] == true then QiuCi18() end if QiuCi[19] == true then QiuCi19() end if QiuCi[20] == true then QiuCi20() end if QiuCi[21] == true then QiuCi21() end if QiuCi[22] == true then QiuCi22() end if QiuCi[23] == true then QiuCi23() end if QiuCi[24] == true then QiuCi24() end if QiuCi[25] == true then QiuCi25() end if QiuCi[26] == true then QiuCi26() end if QiuCi[27] == true then QiuCi27() end if QiuCi[28] == true then QiuCi28() end if QiuCi[29] == true then QiuCi29() end if QiuCi[30] == true then QiuCi30() end if QiuCi[31] == true then QiuCi31() end if QiuCi[32] == true then QiuCi32() end if QiuCi[33] == true then QiuCi33() end if QiuCi[34] == true then QiuCi34() end if QiuCi[35] == true then QiuCi35() end if QiuCi[36] == true then QiuCi36() end if QiuCi[37] == true then QiuCi37() end if QiuCi[38] == true then QiuCi38() end if QiuCi[39] == true then QiuCi39() end if QiuCi[40] == true then QiuCi40() end if QiuCi[41] == true then QiuCi41() end if QiuCi[42] == true then QiuCi42() end if QiuCi[43] == true then QiuCi43() end if QiuCi[44] == true then QiuCi44() end if QiuCi[45] == true then QiuCi45() end if QiuCi[46] == true then QiuCi46() end if QiuCi[47] == true then QiuCi47() end if QiuCi[48] == true then QiuCi48() end if QiuCi[49] == true then QiuCi49() end if QiuCi[50] == true then QiuCi50() end if QiuCi[51] == true then QiuCi51() end if QiuCi[52] == true then QiuCi52() end a=0x0 while(a <=0xAF0) do a=a+0x10 mk=gg.getRangesList('libUE4.so')[1].start add = RUI(RUI(RUI(RUI(RUI(mk + 0xC516A80) + 0x558) + a) + 0x30) + 0x38)--动态DD900 adpd = RUI(RUI(RUI(RUI(RUI(mk + 0xC516A80) + 0x558) + a) + 0x30) + 0x30) +0x18 if readD(adpd) == 1000 then --5x3000 --2.9 101001锁链0xDD900+0x558+0x10+0x30+0x30+0x0(0x18就直接到101,001,100) break add=add end end nmsl=0x4148--0x3FF8初始 0x5000 0x4148 0x7500 while(nmsl <=0x866E218)--10850最大 do nmsl=nmsl+0x18 addr=RUI(add+nmsl) if readD(addr+0x58) == 101001 then--AKM setvalue(addr+0x18,4,QiuCi[1]) gg.toast("修改目标:AKM") end if readD(addr+0x58) == 101002 then--M16A4 setvalue(addr+0x18,4,QiuCi[2]) gg.toast("修改目标:M16A4") end if readD(addr+0x58) == 101003 then--SCAR setvalue(addr+0x18,4,QiuCi[3]) gg.toast("修改目标:SCAR") end if readD(addr+0x58) == 101004 then--M416 setvalue(addr+0x18,4,QiuCi[4]) gg.toast("修改目标:M416") end if readD(addr+0x58) == 101005 then --GROZA setvalue(addr+0x18,4,QiuCi[5]) gg.toast("修改目标:GROZA") end if readD(addr+0x58) == 101006 then --AUG setvalue(addr+0x18,4,QiuCi[6]) gg.toast("修改目标:AUG") end if readD(addr+0x58) == 101007 then--QBZ setvalue(addr+0x18,4,QiuCi[7]) gg.toast("修改目标:QBZ") end if readD(addr+0x58) == 101008 then--M762 setvalue(addr+0x18,4,QiuCi[8]) gg.toast("修改目标:M762") end if readD(addr+0x58) == 101009 then--MK47 setvalue(addr+0x18,4,QiuCi[9]) gg.toast("修改目标:MK47") end if readD(addr+0x58) == 101010 then--G36C setvalue(addr+0x18,4,QiuCi[10]) gg.toast("修改目标:G36C") end if readD(addr+0x58) == 101012 then--蜜罐 setvalue(addr+0x18,4,QiuCi[11]) gg.toast("修改目标:蜜罐") end if readD(addr+0x58) == 102001 then--UZI setvalue(addr+0x18,4,QiuCi[12]) gg.toast("修改目标:UZI") end if readD(addr+0x58) == 102002 then--UMP45 setvalue(addr+0x18,4,QiuCi[13]) gg.toast("修改目标:UMP45") end if readD(addr+0x58) == 102003 then--Vector setvalue(addr+0x18,4,QiuCi[14]) gg.toast("修改目标:Vector") end if readD(addr+0x58) == 102004 then--汤姆逊 setvalue(addr+0x18,4,QiuCi[15]) gg.toast("修改目标:汤姆逊") end if readD(addr+0x58) == 102005 then--野牛 setvalue(addr+0x18,4,QiuCi[16]) gg.toast("修改目标:野牛") end if readD(addr+0x58) == 102006 then--MP5K setvalue(addr+0x18,4,QiuCi[17]) gg.toast("修改目标:MP5K") end if readD(addr+0x58) == 102007 then--P90 setvalue(addr+0x18,4,QiuCi[18]) gg.toast("修改目标:P90") end if readD(addr+0x58) == 103001 then--98K setvalue(addr+0x18,4,QiuCi[19]) gg.toast("修改目标:98K") end if readD(addr+0x58) == 103002 then--M24 setvalue(addr+0x18,4,QiuCi[20]) gg.toast("修改目标:M24") end if readD(addr+0x58) == 103003 then--awm setvalue(addr+0x18,4,QiuCi[21]) gg.toast("修改目标:AWM") end if readD(addr+0x58) == 103004 then--SKS setvalue(addr+0x18,4,QiuCi[22]) gg.toast("修改目标:SKS") end if readD(addr+0x58) == 103005 then--VSS setvalue(addr+0x18,4,QiuCi[23]) gg.toast("修改目标:VSS") end if readD(addr+0x58) == 103006 then--Mini14 setvalue(addr+0x18,4,QiuCi[24]) gg.toast("修改目标:MINI14") end if readD(addr+0x58) == 103007 then--MK14 setvalue(addr+0x18,4,QiuCi[25]) gg.toast("修改目标:MK14") end if readD(addr+0x58) == 103008 then--Win94 setvalue(addr+0x18,4,QiuCi[26]) gg.toast("修改目标:Win94") end if readD(addr+0x58) == 103009 then--SLR setvalue(addr+0x18,4,QiuCi[27]) gg.toast("修改目标:SLR") end if readD(addr+0x58) == 103010 then--QBU setvalue(addr+0x18,4,QiuCi[28]) gg.toast("修改目标:QBU") end if readD(addr+0x58) == 103011 then--莫辛纳甘 setvalue(addr+0x18,4,QiuCi[29]) gg.toast("修改目标:莫辛纳甘") end if readD(addr+0x58) == 103012 then--AMR setvalue(addr+0x18,4,QiuCi[30]) gg.toast("修改目标:AMR") end if readD(addr+0x58) == 103013 then--M417 setvalue(addr+0x18,4,QiuCi[31]) gg.toast("修改目标:M417") end if readD(addr+0x58) == 104001 then--S686 setvalue(addr+0x18,4,QiuCi[32]) gg.toast("修改目标:S686") end if readD(addr+0x58) == 104002 then--S1897 setvalue(addr+0x18,4,QiuCi[33]) gg.toast("修改目标:S1897") end if readD(addr+0x58) == 104003 then--S12K setvalue(addr+0x18,4,QiuCi[34]) gg.toast("修改目标:S12K") end if readD(addr+0x58) == 104004 then--DBS setvalue(addr+0x18,4,QiuCi[35]) gg.toast("修改目标:DBS") end if readD(addr+0x58) == 105001 then--M249 setvalue(addr+0x18,4,QiuCi[36]) gg.toast("修改目标:M249") end if readD(addr+0x58) == 105002 then--大盘鸡 setvalue(addr+0x18,4,QiuCi[37]) gg.toast("修改目标:大盘鸡") end if readD(addr+0x58) == 105010 then--MG3 setvalue(addr+0x18,4,QiuCi[38]) gg.toast("修改目标:MG3") end if readD(addr+0x58) == 108001 then--大砍刀 setvalue(addr+0x18,4,QiuCi[39]) gg.toast("修改目标:砍刀") end if readD(addr+0x58) == 108002 then--撬棍 setvalue(addr+0x18,4,QiuCi[40]) gg.toast("修改目标:撬棍") end if readD(addr+0x58) == 108003 then--镰刀 setvalue(addr+0x18,4,QiuCi[41]) gg.toast("修改目标:镰刀") end if readD(addr+0x58) == 108004 then--平底锅 setvalue(addr+0x18,4,QiuCi[42]) gg.toast("修改目标:平底锅") end if readD(addr+0x58) == 203001 then--红点 setvalue(addr+0x18,4,QiuCi[43]) gg.toast("修改目标:红点瞄准器") end if readD(addr+0x58) == 203002 then--全息 setvalue(addr+0x18,4,QiuCi[44]) gg.toast("修改目标:全息瞄准器") end if readD(addr+0x58) == 203003 then--二倍 setvalue(addr+0x18,4,QiuCi[45]) gg.toast("修改目标:二倍瞄准器") end if readD(addr+0x58) == 203006 then--三倍 setvalue(addr+0x18,4,QiuCi[46]) gg.toast("修改目标:三倍瞄准器") end if readD(addr+0x58) == 203004 then--四倍 setvalue(addr+0x18,4,QiuCi[47]) gg.toast("修改目标:四倍瞄准器") end if readD(addr+0x58) == 203007 then--六倍 setvalue(addr+0x18,4,QiuCi[48]) gg.toast("修改目标:六倍瞄准器") end if readD(addr+0x58) == 203005 then--八倍 setvalue(addr+0x18,4,QiuCi[49]) gg.toast("修改目标:8倍瞄准器") end if readD(addr+0x58) == 203008 then--m4瞄具 setvalue(addr+0x18,4,QiuCi[50]) gg.toast("修改目标M416鸡苗:") end if readD(addr+0x58) == 205005 then--m4张托 setvalue(addr+0x18,4,QiuCi[51]) gg.toast("修改目标:M416枪托") end if readD(addr+0x58) == 291004 then --m4弹夹 setvalue(addr+0x18,4,QiuCi[52]) gg.toast("修改目标:M416弹夹") string.toMusic('开启成功') break end end end end, function() end },{ "自改特效", function() gg.setConfig("冻结间隔", 0) gg.setConfig("快速冻结", 1) local cfg_file = gg.EXT_FILES_DIR.."/"..gg.getFile():match("[^/]+$").."(特效).lua" local chunk = loadfile(cfg_file) local cfg = nil if chunk ~= nil then cfg = chunk() end if cfg == nil then cfg = {1101004046,true} end wannian=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俏皮兔宝 1101001231 \nM16A4血骸风暴 1101002029 M16A4极光脉冲 1101002056 M16A4缤纷利刃 1101002068 M16A4猩红血月 1101002081 M16A4古堡龙卫 1101002103 \n死噶梦幻水枪 1101003057 死噶魔法南瓜 1101003070 死噶翌日行动 1101003080 死噶诡秘之夜 1101003099 死噶魔力结晶 1101003119 死噶邪能植物 1101003146 死噶血魂魔皇 1101003167 \nM416冰霜核心 1101004046 M416愚人小丑 1101004062 M416异域游荡者 1101004078 M416萌龙咆哮 1101004086 M416野性呼唤 1101004098 M416科技核心 1101004138 M416潮鸣宫廷 1101004163 M416庇护之潮 1101004209 \nGroza幻夜音乐 1101005025 Groza绚烂之战 1101005043 Groza冥河烈焰 1101005052 \nAUG流浪马戏团 1101006033 AUG第四使徒 1101006044 QBZ极致绝杀 1101007036 QBZ瑰绮灵姬 1101007046 M762比特宝莉 1101008026 \n妹控星云力量", },cfg,{"text"}) if wannian == nil then else gg.saveVariable(wannian, cfg_file) local t = {"libUE4.so:bss", "Cb"} local tt = {0x3AD38,0x0,0x1A0,0x0,0x6A8,0x300,0x8,0x108,0x8C} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = wannian[1], freeze = true}}) end end, function() end },{ "自改播报", function() 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 = {0x391E0,0x0,0x90,0x1618} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = jr[1], freeze = true}}) end string.toMusic('开启成功') end, function() end },{ "自改倍镜", function() local cfg_file = "/sdcard/配件美化配置/.txt" local chunk = loadfile(cfg_file) local cfg = nil if chunk ~= nil then cfg = chunk() end if cfg == nil then cfg = { 1030020812, 1010081218, 1010040466, 1010040467, 1010040468, 1010040469, 1010040470, 1010040471, 1010040472, 1010040473, 1010040474, 1010040475, 1010040476, 1010040477, 1010040478, 1010040479, 1010040480, true} end qing = gg.prompt({ "8倍瞄准镜", "6倍瞄准镜", "4倍瞄准镜", "3倍瞄准镜", "2倍瞄准镜", "全息瞄准镜", "红点瞄准镜", "扩容弹夹", "快速弹夹", "快速扩容弹夹", "消焰器", "枪口补偿器", "消音器", "直角前握把", "拇指握把", "垂直握把", "战术枪托", },cfg,{ "text", "text", "text", "text", "text", "text", "text", "text", "text", "text", "text", "text", "text", "text", "text", "text", "text"}) if qing == nil then else gg.saveVariable(qing, cfg_file) if qing[1] == true then qing1() end if qing[2] == true then qing2() end if qing[3] == true then qing3() end if qing[4] == true then qing4() end if qing[5] == true then qing5() end if qing[6] == true then qing6() end if qing[7] == true then qing7() end if qing[8] == true then qing8() end if qing[9] == true then qing9() end if qing[10] == true then qing10() end if qing[11] == true then qing11() end if qing[12] == true then qing12() end if qing[13] == true then qing13() end if qing[14] == true then qing14() end if qing[15] == true then qing15() end if qing[16] == true then qing16() end if qing[17] == true then qing17() end a=0x0 while(a <=0xAF0) do a=a+0x10 mk=gg.getRangesList('libUE4.so')[1].start add = RUI(RUI(RUI(RUI(RUI(mk + 0xC516A80) + 0x558) + a) + 0x30) + 0x38)--动态DD900 adpd = RUI(RUI(RUI(RUI(RUI(mk + 0xC516A80) + 0x558) + a) + 0x30) + 0x30) +0x18 if readD(adpd) == 1000 then --5x3000 --2.9 101001锁链0xDD900+0x558+0x10+0x30+0x30+0x0(0x18就直接到101,001,100) break add=add end end nmsl=0x4148--3FF8初始 while(nmsl <=0x866E218)--10850最大 do nmsl=nmsl+0x18 addr=RUI(add+nmsl) if readD(addr+0x58) == 203005 then --AKM setvalue(addr+0x18,4,qing[1]) end if readD(addr+0x58) == 203015 then --AKM setvalue(addr+0x18,4,qing[2]) end if readD(addr+0x58) == 203004 then --AKM setvalue(addr+0x18,4,qing[3]) end if readD(addr+0x58) == 203014 then --AKM setvalue(addr+0x18,4,qing[4]) end if readD(addr+0x58) == 203003 then --AKM setvalue(addr+0x18,4,qing[5]) end if readD(addr+0x58) == 203002 then --AKM setvalue(addr+0x18,4,qing[6]) end if readD(addr+0x58) == 203001 then --AKM setvalue(addr+0x18,4,qing[7]) end if readD(addr+0x58) == 204011 then --AKM1 setvalue(addr+0x18,4,qing[8]) end if readD(addr+0x58) == 204012 then --AKM setvalue(addr+0x18,4,qing[9]) end if readD(addr+0x58) == 204013 then --AKM setvalue(addr+0x18,4,qing[10]) end if readD(addr+0x58) == 201010 then --AKM setvalue(addr+0x18,4,qing[11]) end if readD(addr+0x58) == 201009 then --AKM setvalue(addr+0x18,4,qing[12]) end if readD(addr+0x58) == 201011 then --AKMM416突击步枪默认弹匣 291004M416机械瞄具 203008M416默认枪托 205005 setvalue(addr+0x18,4,qing[13]) end if readD(addr+0x58) == 202001 then --AKM setvalue(addr+0x18,4,qing[14]) end if readD(addr+0x58) == 202006 then setvalue(addr+0x18,4,qing[15]) end if readD(addr+0x58) == 202002 then --AKM setvalue(addr+0x18,4,qing[16]) end if readD(addr+0x58) == 205002 then setvalue(addr+0x18,4,qing[17]) gg.alert("遍历完毕") break end end end end, function() end },{ "自改配件", function() local cfg_file = "/sdcard/配件美化配置/.txt" local chunk = loadfile(cfg_file) local cfg = nil if chunk ~= nil then cfg = chunk() end if cfg == nil then cfg = { 1010040471, 1010040472, 1010040473, 1010040474, 1010040475, 1010040476, 1010040477, 1010040478, 1010040479, 1010040480, true} end qing = gg.prompt({ "扩容弹夹", "快速弹夹", "快速扩容弹夹", "消焰器", "枪口补偿器", "消音器", "直角前握把", "拇指握把", "垂直握把", "战术枪托", },cfg,{ "text", "text", "text", "text", "text", "text", "text", "text", "text", "text"}) if qing == nil then else gg.saveVariable(qing, cfg_file) if qing[1] == true then qing1() end if qing[2] == true then qing2() end if qing[3] == true then qing3() end if qing[4] == true then qing4() end if qing[5] == true then qing5() end if qing[6] == true then qing6() end if qing[7] == true then qing7() end if qing[8] == true then qing8() end if qing[9] == true then qing9() end if qing[10] == true then qing10() end a=0x0 while(a <=0xAF0) do a=a+0x10 mk=gg.getRangesList('libUE4.so')[1].start add = RUI(RUI(RUI(RUI(RUI(mk + 0xC516A80) + 0x558) + a) + 0x30) + 0x38)--动态DD900 adpd = RUI(RUI(RUI(RUI(RUI(mk + 0xC516A80) + 0x558) + a) + 0x30) + 0x30) +0x18 if readD(adpd) == 1000 then --5x3000 --2.9 101001锁链0xDD900+0x558+0x10+0x30+0x30+0x0(0x18就直接到101,001,100) break add=add end end nmsl=0x4148--3FF8初始 while(nmsl <=0x866E218)--10850最大 do nmsl=nmsl+0x18 addr=RUI(add+nmsl) if readD(addr+0x58) == 204011 then --AKM1 setvalue(addr+0x18,4,qing[1]) end if readD(addr+0x58) == 204012 then --AKM setvalue(addr+0x18,4,qing[2]) end if readD(addr+0x58) == 204013 then --AKM setvalue(addr+0x18,4,qing[3]) end if readD(addr+0x58) == 201010 then --AKM setvalue(addr+0x18,4,qing[4]) end if readD(addr+0x58) == 201009 then --AKM setvalue(addr+0x18,4,qing[5]) end if readD(addr+0x58) == 201011 then --AKM setvalue(addr+0x18,4,qing[6]) end if readD(addr+0x58) == 202001 then --AKM setvalue(addr+0x18,4,qing[7]) end if readD(addr+0x58) == 202006 then setvalue(addr+0x18,4,qing[8]) end if readD(addr+0x58) == 202002 then --AKM setvalue(addr+0x18,4,qing[9]) end if readD(addr+0x58) == 205002 then setvalue(addr+0x18,4,qing[10]) gg.alert("遍历完毕") break end end end end, function() end }, }), }, { --第五页,没有写菜单标题所以不显示 changan.button("搜索音乐",function() 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), changan.button("暂停音乐",function() gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end), },{ --changan.switch("6"), changan.button("退出脚本",function() luajava.setFloatingWindowHide(false) tuichu=1 end), changan.button("清理冻结",function() gg.clearList() gg.alert("修改成功") end), },{ },{ },{ },{ },{ },{ } }) --配置表添加表即可加页数,只需要与上边菜单标题数对应