string.toMusic('欢迎使用失散内测范围') draw.setSize(60) draw.setStyle("描边") draw3 = require("draw3") draw.text("失散[范围]", 250, 400) draw.setColor("#00ffff") draw.setSize(50) draw.setStyle("描边并填充") function BC(address) return gg.getValues({{address = address, flags = gg.TYPE_QWORD}})[1].value end function getvalue(address, flags) return gg.getValues({{address = address, flags = flags}})[1].value end function WBC(addr, types, i, freeze) if i then gg.setValues({{address = addr, flags = types, value = i}}) end if freeze then gg.addListItems({{ address = addr, flags = types, value = i or getvalue(addr, types), freeze = true }}) elseif freeze == false then gg.addListItems({{address = addr, flags = types, freeze = false}}) end end function Unfreeze() local t = gg.getListItems() for k, v in pairs(t) do t[k].freeze = false end gg.addListItems(t) 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 -- 悬浮窗模块 local floatingWindowManager = require('floatingWindowManager') floatingWindowManager:init() -- ==========【新版主UI 侧边菜单大厅】========== floatingWindowManager:newWindow(('失散范围'):format(floatingWindowManager.version), { onCreate = function(floatingWindow) floatingWindow:addlayout({ ScrollView, layout_margin = '10dp', layout_width = 'match_parent', layout_height = 'match_parent', { LinearLayout, background = floatingWindowManager:getStateListDrawable(), layout_width = 'match_parent', layout_height = 'match_parent', orientation = 'horizontal', -- 横向布局(左右分栏) padding = '10dp', -- 左侧侧边栏 { LinearLayout, layout_width = '120dp', layout_height = 'match_parent', orientation = 'vertical', padding = '5dp', -- 头像区域 { TextView, text = "失散内测", textSize = "18sp", textColor = "#00FFFF", layout_gravity = "center" }, {View,layout_height="10dp"}, --侧边按钮列表 { Button, background = { GradientDrawable, cornerRadius='10dp', color='#5000000', }, layout_width = 'match_parent', layout_margin = '1dp', text = '配置进程', textColor= "#FF14DAFF", textSize = '14sp', onClick = function() gg.setProcessX() string.toMusic("选择进程") end }, { Button, background = { GradientDrawable, cornerRadius='10dp', color='#5000000', }, layout_width = 'match_parent', layout_margin = '1dp', text = '防闪', textColor= "#FF14DAFF", textSize = '14sp', onClick = getSyncThreadCallbak(function() local 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 = {0x9E60} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 4096, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x9ED0} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 4096, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x9F80} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 4096, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x9FB0} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 4096, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x9E18} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 4096, freeze = true}}) string.toMusic("防闪开启成功") gg.toast("开启成功") end) }, { Button, background = { GradientDrawable, cornerRadius='10dp', color='#5000000', }, layout_width = 'match_parent', layout_margin = '1dp', text = '范围区', textColor= "#FF14DAFF", textSize = '14sp', onClick = function() floatingWindowManager:start('[失散范围]') string.toMusic("范围区") end }, { Button, background = { GradientDrawable, cornerRadius='10dp', color='#5000000', }, layout_width = 'match_parent', layout_margin = '1dp', text = '工具区', textColor= "#FF14DAFF", textSize = '14sp', onClick = function() floatingWindowManager:start('[工具区]') string.toMusic("工具区") end }, }, -- 右侧内容卡片区域 { LinearLayout, layout_width = '0dp', layout_weight = 1, layout_height = 'match_parent', orientation = 'vertical', padding = '8dp', { TextView, text = "✅ 失散内测大厅", textSize = "20sp", textColor = "#FF14DAFF", layout_gravity = "center" }, {View,layout_height="15dp"}, { TextView, text = "选择左侧功能按钮使用", textSize = "14sp", textColor = "#AAAAAA", layout_gravity = "center" }, {View,layout_height="10dp"}, { TextView, text = "版本: 内测版", textSize = "12sp", textColor = "#00FFFF", layout_gravity = "center" }, } } }) end }) floatingWindowManager:newWindow('[失散范围]', { onCreate = function(floatingWindow) floatingWindow:addlayout({ ScrollView, layout_width = 'match_parent', layout_height = 'match_parent', { LinearLayout, layout_width = 'match_parent', layout_height = 'match_parent', orientation = 'vertical', padding = '10dp', { TextView, text = "独家防卡伤:", textSize = "12sp", textColor = "#FF69B4" }, {LinearLayout, padding = {'0dp', '0dp', '0dp', '1dp'}, layout_marginTop = '1dp', { Switch, layout_marginLeft = '0dp', text="防卡伤", textColor= "#01FFFF", layout_height="30dp", layout_width="200dp", background= luajava.loadlayout { GradientDrawable, color = "#00000000", cornerRadius = 28 }, onCheckedChange = function(CompoundButton, state) if state then if gg.getRangesList("libanogs.so")[1] then local t = {} t[1] = gg.getRangesList("libanogs.so")[1]["start"] + 0x5109F8; gg.setValues({ [1] = { address = t[1], flags = 4, value = -698416192, }, }) gg.toast("开启成功") end end end }, }, { TextView, text = "局内范围[一把一开]:", textSize = "12sp", textColor = "#FF69B4" }, {LinearLayout, padding = {'0dp', '0dp', '0dp', '1dp'}, layout_marginTop = '1dp', { Switch, layout_marginLeft = '0dp', text="爆头范围", textColor= "#01FFFF", layout_height="30dp", layout_width="200dp", background= luajava.loadlayout { GradientDrawable, color = "#00000000", cornerRadius = 28 }, onCheckedChange = function(CompoundButton, state) if state then 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 local qmnb= { {['memory']=32}, {['name']='修改头部'}, {['value']=15.75, ['type']=16}, {['lv']=15.75,['offset']=0, ['type']=16}, } local qmxg= { {['value']=57,['offset']=0,['type']=16}, } xqmnb(qmnb,qmxg) UE4 = gg.getRangesList("libUE4.so")[1].start UE4bss = gg.getRangesList("libUE4.so:bss")[1].start kzq = BC(BC(UE4bss+0x570E70)+0x30) ys = BC(kzq+0x540)--颜色 WBC(ys+0x64c,16,1) WBC(ys+0x650,16,0) WBC(ys+0x654,16,0) gg.toast("爆头范围开启成功") string.toMusic("爆头范围开启成功") end end }, }, {LinearLayout, padding = {'0dp', '0dp', '0dp', '1dp'}, layout_marginTop = '1dp', { Switch, layout_marginLeft = '0dp', text="踏空范围", textColor= "#01FFFF", layout_height="30dp", layout_width="200dp", background= luajava.loadlayout { GradientDrawable, color = "#00000000", cornerRadius = 28 }, onCheckedChange = function(CompoundButton, state) if state then 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 local qmnb= { {['memory']=32}, {['name']='修改头部'}, {['value']=15.75, ['type']=16}, {['lv']=15.75,['offset']=0, ['type']=16}, } local qmxg= { {['value']=62,['offset']=0,['type']=16}, } xqmnb(qmnb,qmxg) UE4 = gg.getRangesList("libUE4.so")[1].start UE4bss = gg.getRangesList("libUE4.so:bss")[1].start kzq = BC(BC(UE4bss+0x570E70)+0x30) ys = BC(kzq+0x540)--颜色 WBC(ys+0x64c,16,1) WBC(ys+0x650,16,0) WBC(ys+0x654,16,0) string.toMusic("开启成功") else gg.clearResults() end end }, }, { TextView, text = "特效一把一开:", textSize = "12sp", textColor = "#FF69B4" }, {LinearLayout, padding = {'0dp', '0dp', '0dp', '1dp'}, layout_marginTop = '1dp', { Switch, layout_marginLeft = '0dp', text="自选特效", textColor= "#01FFFF", layout_height="30dp", layout_width="200dp", background= luajava.loadlayout { GradientDrawable, color = "#00000000", cornerRadius = 28 }, onCheckedChange = function(CompoundButton, state) if state then menu = gg.choice({ '大X特效', '双X特效', '细X特效', '细长特效', '全屏特效'}, 2026,os.date'') if menu == 1 then tx1() end if menu == 2 then tx2() end if menu == 3 then tx3() end if menu == 4 then tx4() end if menu == 5 then tx5() end end function tx1() UE4bss = gg.getRangesList("libUE4.so:bss")[1].start kzq = BC(BC(BC(UE4bss+0x570E70)+0x30)+0x540) zs = BC(kzq+0x618) WBC(zs+0x14,16,1600) WBC(zs+0x54,16,1600) WBC(zs+0x94,16,1600) WBC(zs+0xD4,16,1600) WBC(zs+0x10,16,300) WBC(zs+0x50,16,300) WBC(zs+0x90,16,300) WBC(zs+0xD0,16,300) end function tx2() UE4bss = gg.getRangesList("libUE4.so:bss")[1].start kzq = BC(BC(BC(UE4bss+0x570E70)+0x30)+0x540) zs = BC(kzq+0x618) WBC(zs+0x10,16,9999) WBC(zs+0x50,16,9999) WBC(zs+0x90,16,9999) WBC(zs+0xD0,16,9999) end function tx3() UE4bss = gg.getRangesList("libUE4.so:bss")[1].start kzq = BC(BC(BC(UE4bss+0x570E70)+0x30)+0x540) zs = BC(kzq+0x618) WBC(zs+0x14,16,1600) WBC(zs+0x54,16,1600) WBC(zs+0x94,16,1600) WBC(zs+0xD4,16,1600) WBC(zs+0x10,16,150) WBC(zs+0x50,16,150) WBC(zs+0x90,16,150) WBC(zs+0xD0,16,150) end function tx4() UE4bss = gg.getRangesList("libUE4.so:bss")[1].start kzq = BC(BC(BC(UE4bss+0x570E70)+0x30)+0x540) zs = BC(kzq+0x618) WBC(zs+0x14,16,1600) WBC(zs+0x54,16,1600) WBC(zs+0x94,16,1600) WBC(zs+0xD4,16,1600) end function tx5() UE4bss = gg.getRangesList("libUE4.so:bss")[1].start kzq = BC(BC(BC(UE4bss+0x570E70)+0x30)+0x540) zs = BC(kzq+0x618) WBC(zs+0x14,16,9999) WBC(zs+0x54,16,9999) WBC(zs+0x94,16,9999) WBC(zs+0xD4,16,9999) WBC(zs+0x10,16,9999) WBC(zs+0x50,16,9999) WBC(zs+0x90,16,9999) WBC(zs+0xD0,16,9999) end UE4bss = gg.getRangesList("libUE4.so:bss")[1].start kzq = BC(BC(BC(UE4bss+0x570E70)+0x30)+0x540) zs = BC(kzq+0x618) WBC(zs+0x14,16,46) WBC(zs+0x54,16,46) WBC(zs+0x94,16,46) WBC(zs+0xD4,16,46) WBC(zs+0x10,16,10) WBC(zs+0x50,16,10) WBC(zs+0x90,16,10) WBC(zs+0xD0,16,10) gg.toast("特效已关闭") 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 = '10dp', { Button, background = floatingWindowManager:getStateListDrawable(), layout_width = 'match_parent', layout_margin = '5dp', text = '隐藏水印', textSize = '16sp', onClick = function() draw.text("", 290,300) draw.setColor('#00FFFF') draw.setSize(0) draw.setStyle('描边并填充') end }, { Button, background = floatingWindowManager:getStateListDrawable(), layout_width = 'match_parent', layout_margin = '5dp', text = '恢复水印', textSize = '16sp', onClick = function() draw.text("", 250,400) draw.setColor('#00FFFF') draw.setSize(50) draw.setStyle('描边并填充') end } } }) end }) -- 启动悬浮窗 floatingWindowManager:run()