DM="欢迎使用羽辞范围 牢记女帝乞丐狗 "--语音播报内容自己改 gg.playMusic("https://fanyi.baidu.com/gettts?lan=zh&text="..DM.."&spd=5&source=wise") --百度翻译 gg.playVideo("https://wlwp.xcyun.asia/view.php/c00586781965de28bfac8ba78f6c38a7.mp4") draw.setStyle("描边") draw3 = require("draw3") draw.text("羽辞@YZFWNB66", 300, 250) draw.setColor("#ffffff") draw.setSize(50) draw.setStyle("描边并填充") function LSQ_Chain(so, offset, format, value, type, Function)--模块设置, 偏移量, 功能参数, 冻结值, 类型, 功能 getRanges = getRanges or (function() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v["type"]:sub(2, 2) == 'w' then--判断so是否可读可写 ranges[#ranges+1] = v end end return ranges end) local rest, ranges, sostart, valtype = {}, getRanges(), nil , gg.TYPE_DWORD if gg.getTargetInfo()["x64"] then--判断应用程序是否为64位 valtype = gg.TYPE_QWORD end for i in pairs(ranges) do local _name = ranges[i]["internalName"]:gsub('^.*/', '') if so[1] == _name and so[2] == ranges[i]["state"] then sostart = ranges[i]["start"] break end end if sostart then if offset[1] then for i = 1, #offset do rest = {{flags = valtype,address = sostart + offset[i]}} rest = gg.getValues(rest) if i == #offset then break end if valtype == gg.TYPE_DWORD then sostart = rest[1].value & 0xFFFFFFFF--对值进行补位操作 else sostart = rest[1].value end end end if #rest == 1 then end return Format(rest, format, value, type, Function) end gg.toast("功能:" .. Function .. "开启失败") print("功能开启失败原因: 未找到基址头") return os.exit() end function 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 local t = {} local base = Search[1][2] for i=1, #data do for k, w in ipairs(Write) do offset = w[2] - base t[#t+1] = {} t[#t].address = data[i] + offset t[#t].flags = Type t[#t].value = w[1] if (w[3] == true) then local item = {} item[#item+1] = t[#t] item[#item].freeze = true gg.addListItems(item) end end end gg.setValues(t) gg.toast("开启成功,一共修改"..#t.."条数据") gg.addListItems(t) else gg.toast("未搜索到数据,开启失败", false) return false end else gg.toast("Not Found") return false end end function HaoGe(Nc,Type,Search,Write) gg.clearResults() gg.setRanges(Nc) gg.setVisible(false) gg.searchNumber(Search[1][1],Type) local count=gg.getResultCount() local result=gg.getResults(count) gg.clearResults() local data={} local base=Search[1][2] if(count>0)then for i,v in ipairs(result)do v.isUseful=true end for k=2,#Search do local tPUBGMH={} local offset=Search[k][2]-base local num=Search[k][1] for i,v in ipairs(result)do tPUBGMH[#tPUBGMH+1]={} tPUBGMH[#tPUBGMH].address=v.address+offset tPUBGMH[#tPUBGMH].flags=v.flags end tPUBGMH=gg.getValues(tPUBGMH) for i,v in ipairs(tPUBGMH)do if(tostring(v.value)~=tostring(num))then result[i].isUseful=false end end end for i,v in ipairs(result)do if(v.isUseful)then data[#data+1]=v.address end end if(#data>0)then local t={} local base=Search[1][2] for i=1,#data do for k,w in ipairs(Write)do offset=w[2]-base t[#t+1]={} t[#t].address=data[i]+offset t[#t].flags=Type t[#t].value=w[1] if(w[3]==true)then local item={} item[#item+1]=t[#t] item[#item].freeze=true gg.addListItems(item) end end end gg.setValues(t) gg.sleep(400) else return false end else return false end end function 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 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]["value"] = value tab[1]["name"] = Function or "功能" return gg.addListItems(tab) elseif format == "加载" then tab[1]["flags"] = type return gg.loadResults(tab) end end function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() local _Q = tonumber(0x167ba0fe) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address print(string.char(231,190,164,58).._Q) end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end function PS() end function setvalue(address,flags,value) PS('修改地址数值(地址,数值类型,要修改的值)') local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end local function interruptThread(thread) if thread then pcall(function() thread:interrupt() end) end end local function getASyncThreadCallbak(func) return function() luajava.startThread(function() return pcall(func) end) end end local function newGradientDrawableLayout(layout) local baseLayout = { GradientDrawable, cornerRadius = '15dp', color = 0x20000000 } return table.copy(baseLayout, layout) end local task local function getSyncThreadCallbak(func) return function() if task then gg.toast('正在运行其它任务,再稍后!') return end luajava.startThread(function() task = true pcall(func) task = nil end) end end local function callSyncThreadCallbak(func) return getSyncThreadCallbak(func)() end local function findFunctionByName(name) local func = _ENV[name] if not isFunction(func) then gg.alert(string.format('不存在 %q 功能', name)) return nil end return getSyncThreadCallbak(func) end local function newButtonLayout(name) if not isString(name) then return end local layout = { Button, background = floatingWindowManager:getStateListDrawable(), layout_width = 'match_parent', layout_margin = '2dp', text = name, textSize = '16sp', onClick = findFunctionByName(name) } return layout end local function newSwitchLayout(openName, closeName) if not isString(openName) then return end local layout = { Switch, layout_width = 'match_parent', text = openName, onCheckedChange = function(CompoundButton, state) local func local cacheName = '多线程' if state then if isString(closeName) then CompoundButton:setText(closeName) end func = findFunctionByName(openName) else CompoundButton:setText(openName) if isString(closeName) then func = findFunctionByName(closeName) end end if isFunction(func) then func() end end } return layout end local function newCheckBoxLayout(openName, closeName) if not isString(openName) then return end local layout = { CheckBox, layout_width = 'match_parent', text = openName, onCheckedChange = function(CompoundButton, state) local func local cacheName = '多线程' if state then if isString(closeName) then CompoundButton:setText(closeName) end func = findFunctionByName(openName) else CompoundButton:setText(openName) if isString(closeName) then func = findFunctionByName(closeName) end end if isFunction(func) then func() end end } return layout end function newcheck(radio) firadio={LinearLayout,layout_width = 'match_parent',layout_height = "match_parent",orientation="vertical"} if type(radio[1])=="string" or type(radio[1])=="number" then firadio[#firadio+1]={TextView,text=radio[1],textColor="#ffffff",} end radios={LinearLayout,orientation="horizontal",gravity="center",background="#00C92E37",layout_width = 'match_parent',} for i=2,#radio do local name = radio[i][1] local func1 = radio[i][2] local func2 = radio[i][3] local nid = radio[i][4] if not name then name = "未设置" end nid = name..guid() local func = 开关(nid,func1,func2) radios[#radios+1]={CheckBox, text=radio[i][1], textSize="9sp", textColor="#ffffff", onClick=function() luajava.newThread(function() pcall(func) end):start() end, } end firadio[#firadio+1]=radios return luajava.loadlayout(firadio) end function newradio(radio) firadio={LinearLayout, layout_width = 'match_parent', layout_height = "match_parent", orientation="horizontal" } if type(radio[1])=="string" or type(radio[1])=="number" then end radios={RadioGroup,orientation="horizontal",gravity="center",background="#00C92E37",layout_width = 'match_parent',} for i=2,#radio do radios[#radios+1]={ RadioButton, text=radio[i][1], textColor="#ffffff", textSize="11sp", onClick=function() luajava.newThread(function() pcall(radio[i][2]) end):start() end, } end firadio[#firadio+1]=radios return luajava.loadlayout(firadio) end function 开关(name,func1,func2) if func1 == nil then func1 = "" end if func2 == nil then func2 = "" end if type(func1) == "function" then return function() namers = _ENV[name] if namers ~= "开" then _ENV[name] = "开" func1() else _ENV[name] = "关" func2() end end end end function guid() seed = { 'e','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f' } tb = {} for i = 1,32 do table.insert(tb,seed[math.random(1,16)]) end sid = table.concat(tb) return string.format('%s%s%s%s%s', string.sub(sid,1,8), string.sub(sid,10,12), string.sub(sid,21,22)) ..string.format('%s%s%s%s%s', string.sub(sid,1,6), string.sub(sid,21,25) ) end local function getASyncThreadCallbak(func) return function() luajava.startThread(function() return pcall(func) end) end end local task local function getSyncThreadCallbak(func) return function() if task then gg.toast('正在运行其它任务,再稍后!') return end luajava.startThread(function() task=true pcall(func) task=nil end) end end function fwwww() local cacheName = '多线程-13jhds,ri0' if state then local scriptName = [=====[开启成功]=====] local scriptVersion = '独家头部' local scriptAuthor = 'HOOK' local startToast = '' -- 0 - no check; 1 - check package only, 2 - check package and build local checkTarget = 0 local targetName = [=====[BETA PUBG MOBILE]=====] local targetPkg = 'com.tencent.igce' local targetVersion = [=====[4.5.2]=====] local targetBuild = 21055 -- functions -- init gg.require('96.0', 15993) if startToast ~= '' then startToast = '\n'..startToast end gg.toast(scriptName..' v'..scriptVersion..' by '..scriptAuthor..startToast) if checkTarget ~= 0 then local info = gg.getTargetInfo() local check = false local current = false if checkTarget >= 1 then check = targetPkg current = info.packageName end if checkTarget >= 2 then check = check..' '..targetVersion..' ('..targetBuild..')' current = current..' '..info.versionName..' ('..info.versionCode..')' end if check ~= current then gg.alert('This script for "'..targetName..'" ['..check..'].\nYou select "'..info.label..'" ['..current..'].\nNow script exit.') os.exit() end end local revert = nil -- main code gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("15.75", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) revert = gg.getResults(100000, nil, nil, nil, nil, nil, nil, nil, nil) gg.editAll("78", gg.TYPE_FLOAT) end DM="1范围开启成功"--语音播报内容自己改 gg.playMusic("https://fanyi.baidu.com/gettts?lan=zh&text="..DM.."&spd=5&source=wise") --百度翻译 end function BZTX() local cacheName = '多线程-13jhds,ri0' if state then local scriptName = [=====[开启成功]=====] local scriptVersion = '踏空' local scriptAuthor = 'HOOK' local startToast = '' -- 0 - no check; 1 - check package only, 2 - check package and build local checkTarget = 0 local targetName = [=====[BETA PUBG MOBILE]=====] local targetPkg = 'com.tencent.igce' local targetVersion = [=====[4.5.2]=====] local targetBuild = 21055 -- functions -- init gg.require('96.0', 15993) if startToast ~= '' then startToast = '\n'..startToast end gg.toast(scriptName..' v'..scriptVersion..' by '..scriptAuthor..startToast) if checkTarget ~= 0 then local info = gg.getTargetInfo() local check = false local current = false if checkTarget >= 1 then check = targetPkg current = info.packageName end if checkTarget >= 2 then check = check..' '..targetVersion..' ('..targetBuild..')' current = current..' '..info.versionName..' ('..info.versionCode..')' end if check ~= current then gg.alert('This script for "'..targetName..'" ['..check..'].\nYou select "'..info.label..'" ['..current..'].\nNow script exit.') os.exit() end end local revert = nil -- main code gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("15.75", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) revert = gg.getResults(100000, nil, nil, nil, nil, nil, nil, nil, nil) gg.editAll("85", gg.TYPE_FLOAT) end DM="踏空范围开启成功"--语音播报内容自己改 gg.playMusic("https://fanyi.baidu.com/gettts?lan=zh&text="..DM.."&spd=5&source=wise") end function D1() end local floatingWindowManager = require('floatingWindowManager') floatingWindowManager:init() floatingWindowManager:newWindow(('羽辞'):format(floatingWindowManager.version), { onCreate = function(floatingWindow) floatingWindow:addlayout({ ScrollView, layout_margin = '0dp', layout_width = 'match_parent', layout_height = 'match_parent', { LinearLayout, background = floatingWindowManager:getStateListDrawable(), layout_width = 'match_parent', layout_height = 'match_parent', orientation = 'vertical', padding = '5dp', { Button, background = { GradientDrawable, cornerRadius='10dp', color='#5000000', }, layout_width = 'match_parent', layout_margin = '1dp', text = '选择进程', textColor= "#FFFFFFFF", textSize = '16sp', onClick = function() XZ="选择进程"--语音播报内容自己改 gg.playMusic("https://fanyi.baidu.com/gettts?lan=zh&text="..XZ.."&spd=5&source=wise") --百度翻译 gg.setProcessX() end }, { Button, background = { GradientDrawable, cornerRadius='10dp', color='#5000000', }, layout_width = 'match_parent', layout_margin = '1dp', text = '范围区域', textColor= "#FFFFFFFF", textSize = '16sp', onClick = function() floatingWindowManager:start('羽辞[范围]') end }, { Button, background = { GradientDrawable, cornerRadius='10dp', color='#5000000', }, layout_width = 'match_parent', layout_margin = '1dp', text = '水印设置', textColor= "#FFFFFFFF", textSize = '16sp', onClick = function() floatingWindowManager:start('羽辞[工具]') end }, } }) end, onDestroy = function() end }) floatingWindowManager:newWindow('羽辞[工具]', { onCreate = function(floatingWindow) floatingWindow:addlayout({ ScrollView, layout_width = 'match_parent', layout_height = 'match_parent', { LinearLayout, background = floatingWindowManager:getStateListDrawable(), layout_width = 'match_parent', layout_height = 'match_parent', orientation = 'vertical', padding = '5dp', {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '1dp'}, layout_marginTop = '1dp',--间距 { Switch, layout_marginLeft = '0dp',--间距王 text="水印开关", textColor= "#ffffff", layout_height="30dp",--长度 layout_width="200dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "#00000000",--背景颜色代码 cornerRadius = 28--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程-13jhds,ri0' if state then draw.setStyle("描边") draw3 = require("draw3") draw.text("羽辞@YZFWNB66", 300, 250) draw.setColor("#ffffff") draw.setSize(50) draw.setStyle("描边并填充") DM="开启成功"--语音播报内容自己改 gg.playMusic("https://fanyi.baidu.com/gettts?lan=zh&text="..DM.."&spd=5&source=wise") --百度翻译 else draw.remove() DM="关闭成功"--语音播报内容自己改 gg.playMusic("https://fanyi.baidu.com/gettts?lan=zh&text="..DM.."&spd=5&source=wise") --百度翻译 end end }, }, } }) end }) floatingWindowManager:newWindow('羽辞[范围]', { onCreate = function(floatingWindow) floatingWindow:addlayout({ ScrollView, layout_width = 'match_parent', layout_height = 'match_parent', { LinearLayout, background = floatingWindowManager:getStateListDrawable(), layout_width = 'match_parent', layout_height = 'match_parent', orientation = 'vertical', padding = '0dp', {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '1dp'}, layout_marginTop = '1dp',--间距 { Switch, layout_marginLeft = '0dp',--间距王 text="防闪退", textColor= "#ffffff", layout_height="30dp",--长度 layout_width="200dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "#00000000",--背景颜色代码 cornerRadius = 28--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程-13jhds,ri0' if state then so=gg.getRangesList('libanogs.so')[1].start--防闪退 py=0x4b3548 setvalue(so+py,4,-698416192) DM="开启成功"--语音播报内容自己改 gg.playMusic("https://fanyi.baidu.com/gettts?lan=zh&text="..DM.."&spd=5&source=wise") --百度翻译 end end }, }, { TextView, text = "hook防卡伤", textSize = "12sp", textColor = "#FFFFFF" }, {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '1dp'}, layout_marginTop = '1dp',--间距 { Switch, layout_marginLeft = '0dp',--间距王 text="独家防卡伤", textColor= "#FFFFFF", layout_height="30dp",--长度 layout_width="200dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "#00000000",--背景颜色代码 cornerRadius = 28--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程-13jhds,ri0' if state then local items, count = {}, 0 local liblist = { {"libanogs.so", { {0x001D7970, -698416192, 4}, {0x001D56A8, -698416192, 4}, {0x001D7998, -698416192, 4}, {0x001D5684, -698416192, 4}, {0x001D5614, -698416192, 4}, {0x001D5660, -698416192, 4}, {0x001D5630, -698416192, 4}, {0x001D5668, -698416192, 4}, {0x001C26A0, -698416192, 4}, {0x001C2740, -698416192, 4}, {0x001D62B8, -698416192, 4}, {0x001D6584, -698416192, 4}, {0x001D62D0, -698416192, 4}, {0x001D6700, -698416192, 4}, {0x001D66CC, -698416192, 4}, {0x001D62A0, -698416192, 4}, {0x001D62F8, -698416192, 4}, {0x001D6710, -698416192, 4}, {0x001D66B8, -698416192, 4}, {0x001D6688, -698416192, 4}, {0x001D66E8, -698416192, 4}, }}, } for i=1,#liblist do local r=gg.getRangesList(liblist[i][1])[1] if r then local base=r.start for j=1,#liblist[i][2] do count=count+1 items[count]={ address=base+liblist[i][2][j][1], flags=liblist[i][2][j][3], value=liblist[i][2][j][2], freeze=true } end end end if count>0 then gg.addListItems(items) end --TDM local items, count = {}, 0 local liblist = { {"libTDataMaster.so", { { 0x004BEEC, 1384120320, 4}, { 0x00EB1D8, -698416192, 4}, { 0x0090D10, -698416192, 4}, { 0x0090BAC, -698416192, 4}, { 0x0092770, -698416192, 4} }}, } for i=1,#liblist do local r=gg.getRangesList(liblist[i][1])[1] if r then local base=r.start for j=1,#liblist[i][2] do count=count+1 items[count]={ address=base+liblist[i][2][j][1], flags=liblist[i][2][j][3], value=liblist[i][2][j][2], freeze=true } end end end if count>0 then gg.addListItems(items) end gg.sleep(2000) local items, count = {}, 0 local liblist = { {"libanogs.so", { {0x001D4510, -698416192, 4}, {0x001D4540, -698416192, 4}, {0x001D4070, -698416192, 4}, {0x001D455C, -698416192, 4}, {0x001D4578, -698416192, 4}, {0x001D4524, -698416192, 4}, {0x001D4568, -698416192, 4} }}, } for i=1,#liblist do local r=gg.getRangesList(liblist[i][1])[1] if r then local base=r.start for j=1,#liblist[i][2] do count=count+1 items[count]={ address=base+liblist[i][2][j][1], flags=liblist[i][2][j][3], value=liblist[i][2][j][2], freeze=true } end end end if count>0 then gg.addListItems(items) end DM="防卡伤开启成功"--语音播报内容自己改 gg.playMusic("https://fanyi.baidu.com/gettts?lan=zh&text="..DM.."&spd=5&source=wise") --百度翻译 end end }, }, { TextView, text = "范围区", textSize = "12sp", textColor = "#FFFFFF" }, {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '1dp'}, layout_marginTop = '1dp',--间距 { Switch, layout_marginLeft = '0dp',--间距王 text="HOOK爆头范围", textColor= "#FFFFFF", layout_height="30dp",--长度 layout_width="200dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "#00000000",--背景颜色代码 cornerRadius = 28--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程-13jhds,ri0' if state then local thread1 = luajava.startThread(fwwww) floatingWindow:setCache(cacheName, thread1) end end }, }, {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '1dp'}, layout_marginTop = '1dp',--间距 { Switch, layout_marginLeft = '0dp',--间距王 text="踏空范围", textColor= "#FFFFFF", layout_height="30dp",--长度 layout_width="200dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "#00000000",--背景颜色代码 cornerRadius = 28--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程-13jhds,ri0' if state then local thread1 = luajava.startThread(BZTX) floatingWindow:setCache(cacheName, thread1) end end }, }, { TextView, layout_width = 'match_parent', layout_margin = '0dp', gravity="center", text = '✶ Telegram:@YZFWNB66 ✶', textSize = '12sp', textColor = '#FFFFFFFF' -- 只设置文字颜色,没有点击事件 } } }) end }) floatingWindowManager:run()