do if type(getrlyunyz) ~= 'function' then gg.alert('请使用RLGG执行') os.exit() return end local info = { example_version = '1.0.3', name = '小雪加速永久公益', appid = '100158', appkey = 'A8Axr4B9M4QGe8v8', rc4key = 'dum9UNMmpW4U496Z', version = '1.0', mi_type = '3' } local rlyunyz = getrlyunyz(info) local ret = rlyunyz.start() if not ret or not isTable(ret) or ret.sign ~= 'b5cba6995c37c210cafa0f87c4eaf21a' then os.exit() return end end function panduan(rec) fille,err = io.open(rec) if fille == nil then return false else return true end end if gg.isPackageInstalled("top.rlyun.gg") then gg.alert("想开你妈?\n违规软件: RLGG-拆卸工具") os.remove(string.gsub(gg.getFile(),"top.rlyun.gg","")) os.exit("") while true do end end gg.alert('导航频道XS78666反馈xbqxnb') string.toMusic("欢迎使用小雪国体") gg.setConfig("隐藏辅助", 23) gg.setConfig("运行守护", 3) gg.setConfig("冻结间隔", 0) gg.setConfig("旁路模式", 1) draw.setSize(45) draw.setStyle("填充") draw.setColor("#FF0080") draw.text("小雪 AUTHOR:小白", 340, 180) draw.text(" ", 340, 230) 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 t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end function setvalue(address,flags,value) local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end local function interruptThread(thread) if thread then pcall(function() thread:interrupt() end) end end -- 读取 DWORD 和 FLOAT 的函数 function readD(address) return gg.getValues({{address = address, flags = gg.TYPE_DWORD}})[1].value end function readF(address) return gg.getValues({{address = address, flags = gg.TYPE_FLOAT}})[1].value end -- 设置值的函数 function setvalue(address, flags, value, freeze) local t = {} t[1] = {address = address, flags = flags, value = value, freeze = freeze or false} gg.setValues(t) gg.addListItems(t) 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 _t = ti_bit and 32 or 4 local _S = nil 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 local t = {{address = _S.start + Offset[1], flags = _t}} for i = 2, #Offset do local S = gg.getValues(t) t = {{address = S[1].value + Offset[i], flags = _t}} end return t[1].address end end return string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) end -- LSQ_Chain 函数 function LSQ_Chain(so, offset, format, value, type, Function) local getRanges = function() 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 rest, ranges, sostart, valtype = {}, getRanges(), nil, gg.TYPE_DWORD if gg.getTargetInfo().x64 then 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 return Format(rest, format, value, type, Function) end end gg.toast("功能:" .. Function .. "开启失败") print("功能开启失败原因: 未找到基址头") return os.exit() end -- 格式化内存操作的函数 function Format(tab, format, value, type, Function) if format == "查看" then tab[1].flags = type return 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 gai(addr,type,value) local t={} t[1]={} t[1].address=addr t[1].flags=type t[1].value=value gg.setValues(t) end local function RUI(address) return gg.getValues({{ address = address, flags = gg.TYPE_QWORD }})[1].value end D=gg.TYPE_DWORD F=gg.TYPE_FLOAT 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 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 t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end local function setvalue(address,flags,value,freeze) local t={} t[1]={} t[1].address=address t[1].flags=flags t[1].value=value t[1].freeze=freeze gg.setValues(t) gg.addListItems(t) end local function X(address) return gg.getValues({{address = address, flags = gg.TYPE_QWORD}})[1].value end function getvalue(addr,flags) local asbd={} asbd[1]={} asbd[1].address=addr asbd[1].flags=flags tmp=gg.getValues(asbd) return tmp[1].value end function gai(addr,type,value) local t={} t[1]={} t[1].address=addr t[1].flags=type t[1].value=value gg.setValues(t) end local function X(address) return gg.getValues({{ address = address, flags = gg.TYPE_QWORD }})[1].value end D=gg.TYPE_DWORD F=gg.TYPE_FLOAT -- 定义读取 DWORD 和 FLOAT 的函数 function readD(address) return getvalue(address, gg.TYPE_DWORD) end function readF(address) return getvalue(address, gg.TYPE_FLOAT) end -- 定义 RQI 函数(假设是读取 QWORD 类型的值) function RQI(address) return getvalue(address, gg.TYPE_QWORD) end local function interruptThread(thread) if thread then pcall(function() thread:interrupt() -- 调用线程的中断方法 end) end end -- 线程中断函数 local function interruptThread(thread) if thread then pcall(function() thread:interrupt() -- 调用线程的中断方法 end) end end -- 线程中断函数 local function interruptThread(thread) if thread then pcall(function() thread:interrupt() -- 调用线程的中断方法 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 getvalue(addr,flags) local asbd={} asbd[1]={} asbd[1].address=addr asbd[1].flags=flags tmp=gg.getValues(asbd) return tmp[1].value end function GotoPointer(start, offset) local flags = {[true] = 32, [false] = 4} local ti64 = gg.getTargetInfo().x64 local type = flags[ti64] local addr = 0 if start then addr = start + offset[1] for index = 2, #offset do local pointer = gg.getValues({{address = addr, flags = type}}) if not ti64 then pointer[1].value = pointer[1].value & 0xFFFFFFFF end addr = pointer[1].value + offset[index] end end return addr end local function setvalue(address,flags,value,freeze) local t={} t[1]={} t[1].address=address t[1].flags=flags t[1].value=value t[1].freeze=freeze gg.setValues(t) gg.addListItems(t) end local function interruptThread(thread) if thread then pcall(function() thread:interrupt() end) end end -- 异步线程回调(无任务冲突检测) local function getAsyncCallback(func) return function() luajava.startThread(function() pcall(func) end) end end -- 同步线程回调(带任务冲突检测) local task local function getSyncCallback(func) return function() if task then gg.toast('有任务在运行,请稍后') return end luajava.startThread(function() task = true pcall(func) task = nil end) end end -- 直接执行同步任务 local function callSync(func) getSyncCallback(func)() end -- 通过函数名获取同步回调 local function getFuncCallback(name) local func = _ENV[name] if type(func) ~= 'function' then gg.alert('不存在功能: ' .. name) return nil end return getSyncCallback(func) end -- 按钮布局生成 local function newButton(name) if type(name) ~= 'string' then return end return { Button, background = floatingWindowManager:getStateListDrawable(), layout_width = 'match_parent', layout_margin = '2dp', text = name, textSize = '16sp', onClick = getFuncCallback(name) } end -- 开关布局生成 local function newSwitch(openName, closeName) if type(openName) ~= 'string' then return end return { Switch, layout_width = 'match_parent', text = openName, onCheckedChange = function(self, state) self:setText(state and (closeName or '关闭') or openName) local func = state and getFuncCallback(openName) or getFuncCallback(closeName) if func then func() end end } end -- 复选框布局生成 local function newCheckBox(openName, closeName) if type(openName) ~= 'string' then return end return { CheckBox, layout_width = 'match_parent', text = openName, onCheckedChange = function(self, state) self:setText(state and (closeName or '已选择') or openName) local func = state and getFuncCallback(openName) or getFuncCallback(closeName) if func then func() end end } end -- 多选框组布局 local function newCheckBoxGroup(radio) local layout = { LinearLayout, layout_width = 'match_parent', layout_height = 'match_parent', orientation = 'vertical' } -- 添加标题 if type(radio[1]) == 'string' then table.insert(layout, { TextView, text = radio[1], textColor = '#ffffff' }) end -- 添加选项 local group = { LinearLayout, orientation = 'horizontal', gravity = 'center', background = '#00C92E37', layout_width = 'match_parent' } for i = 2, #radio do local item = radio[i] local name = item[1] or '未命名' local openFunc = item[2] local closeFunc = item[3] local id = name .. tostring(math.random()) -- 简易唯一ID -- 开关逻辑 local toggle = function() local state = _ENV[id] ~= '开' _ENV[id] = state and '开' or '关' (state and openFunc or closeFunc)() end table.insert(group, { CheckBox, text = name, textSize = '9sp', textColor = '#ffffff', onClick = function() luajava.newThread(function() pcall(toggle) end) end }) end table.insert(layout, group) return luajava.loadlayout(layout) end -- 单选框组布局 local function newradio(radio) local layout = { LinearLayout, layout_width = 'match_parent', layout_height = 'match_parent', orientation = 'horizontal' } -- 添加选项 local group = { RadioGroup, orientation = 'horizontal', gravity = 'center', background = '#00C92E37', layout_width = 'match_parent' } for i = 2, #radio do local item = radio[i] table.insert(group, { RadioButton, text = item[1] or '选项', textColor = '#ffffff', textSize = '11sp', onClick = function() luajava.newThread(function() pcall(item[2]) end) end }) end table.insert(layout, group) return luajava.loadlayout(layout) end -- 简易唯一ID生成 local function guid() local seed = {'e','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'} local tb = {} for i = 1, 32 do table.insert(tb, seed[math.random(1, 16)]) end local sid = table.concat(tb) return string.sub(sid,1,8) .. string.sub(sid,10,12) .. string.sub(sid,21,22) .. string.sub(sid,1,6) .. string.sub(sid,21,25) end function PS() end function setvalue(address,flags,value) PS('修改地址数值(地址,数值类型,要修改的值)') local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end ---静态基址写法配置 function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() local _Q = tonumber(0x167ba0fe) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end 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 Unfreeze() local t = gg.getListItems() for k, v in pairs(t) do t[k]["freeze"] = false end return gg.addListItems(t) 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.addListItems(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.addListItems(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.addListItems(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 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 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(A0_146, A1_147, A2_148) PS("修改地址数值(地址,数值类型,要修改的值)") local tmp = {} tmp.address = A0_146 tmp.flags = A1_147 tmp.value = A2_148 gg.setValues({ [1] = tmp }) end local function X(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 & 0xFFFFFFFF end addr = addr[1].value + offset[i] end return addr end end local function interruptThread(thread) if thread then pcall(function() thread:interrupt() end) end end function split(szFullString, szSeparator) local nFindStartIndex = 1 local nSplitIndex = 1 local nSplitArray = {} while true do local nFindLastIndex = string.find (szFullString, szSeparator, nFindStartIndex) if not nFindLastIndex then nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, string.len (szFullString)) break end nSplitArray[nSplitIndex] = string.sub (szFullString, nFindStartIndex, nFindLastIndex - 1) nFindStartIndex = nFindLastIndex + string.len (szSeparator) nSplitIndex = nSplitIndex + 1 end return nSplitArray end function xgxc(szpy, qmxg) for x = 1, #(qmxg) do xgpy = szpy + qmxg[x]["offset"] xglx = qmxg[x]["type"] xgsz = qmxg[x]["value"] xgdj = qmxg[x]["freeze"] if xgdj == nil or xgdj == "" then gg.setValues({[1] = {address = xgpy, flags = xglx, value = xgsz}}) else gg.addListItems({[1] = {address = xgpy, flags = xglx, freeze = xgdj, value = xgsz}}) end xgsl = xgsl + 1 xgjg = true end end function xqmnb(qmnb) gg.clearResults() gg.setRanges(qmnb[1]["memory"]) gg.searchNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. "开启失败") 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 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 t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end function setvalue(address,flags,value) local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end local function interruptThread(thread) if thread then pcall(function() thread:interrupt() end) end end -- 读取 DWORD 和 FLOAT 的函数 function readD(address) return gg.getValues({{address = address, flags = gg.TYPE_DWORD}})[1].value end function readF(address) return gg.getValues({{address = address, flags = gg.TYPE_FLOAT}})[1].value end -- 设置值的函数 function setvalue(address, flags, value, freeze) local t = {} t[1] = {address = address, flags = flags, value = value, freeze = freeze or false} gg.setValues(t) gg.addListItems(t) 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 _t = ti_bit and 32 or 4 local _S = nil 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 local t = {{address = _S.start + Offset[1], flags = _t}} for i = 2, #Offset do local S = gg.getValues(t) t = {{address = S[1].value + Offset[i], flags = _t}} end return t[1].address end end return string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) end -- LSQ_Chain 函数 function LSQ_Chain(so, offset, format, value, type, Function) local getRanges = function() 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 rest, ranges, sostart, valtype = {}, getRanges(), nil, gg.TYPE_DWORD if gg.getTargetInfo().x64 then 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 return Format(rest, format, value, type, Function) end end gg.toast("功能:" .. Function .. "开启失败") print("功能开启失败原因: 未找到基址头") return os.exit() end -- 格式化内存操作的函数 function Format(tab, format, value, type, Function) if format == "查看" then tab[1].flags = type return 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 gai(addr,type,value) local t={} t[1]={} t[1].address=addr t[1].flags=type t[1].value=value gg.setValues(t) end local function RUI(address) return gg.getValues({{ address = address, flags = gg.TYPE_QWORD }})[1].value end D=gg.TYPE_DWORD F=gg.TYPE_FLOAT 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 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 t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end local function setvalue(address,flags,value,freeze) local t={} t[1]={} t[1].address=address t[1].flags=flags t[1].value=value t[1].freeze=freeze gg.setValues(t) gg.addListItems(t) end local function X(address) return gg.getValues({{address = address, flags = gg.TYPE_QWORD}})[1].value end function getvalue(addr,flags) local asbd={} asbd[1]={} asbd[1].address=addr asbd[1].flags=flags tmp=gg.getValues(asbd) return tmp[1].value end function gai(addr,type,value) local t={} t[1]={} t[1].address=addr t[1].flags=type t[1].value=value gg.setValues(t) end local function X(address) return gg.getValues({{ address = address, flags = gg.TYPE_QWORD }})[1].value end D=gg.TYPE_DWORD F=gg.TYPE_FLOAT -- 定义读取 DWORD 和 FLOAT 的函数 function readD(address) return getvalue(address, gg.TYPE_DWORD) end function readF(address) return getvalue(address, gg.TYPE_FLOAT) end -- 定义 RQI 函数(假设是读取 QWORD 类型的值) function RQI(address) return getvalue(address, gg.TYPE_QWORD) 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 getvalue(addr,flags) local asbd={} asbd[1]={} asbd[1].address=addr asbd[1].flags=flags tmp=gg.getValues(asbd) return tmp[1].value end function GotoPointer(start, offset) local flags = {[true] = 32, [false] = 4} local ti64 = gg.getTargetInfo().x64 local type = flags[ti64] local addr = 0 if start then addr = start + offset[1] for index = 2, #offset do local pointer = gg.getValues({{address = addr, flags = type}}) if not ti64 then pointer[1].value = pointer[1].value & 0xFFFFFFFF end addr = pointer[1].value + offset[index] end end return addr end local function setvalue(address,flags,value,freeze) local t={} t[1]={} t[1].address=address t[1].flags=flags t[1].value=value t[1].freeze=freeze gg.setValues(t) gg.addListItems(t) end local floatingWindowManager = require('floatingWindowManager') floatingWindowManager:init() 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 = 'vertical', padding = '5dp', { Button, background = floatingWindowManager:getStateListDrawable(), layout_width = 'match_parent', layout_margin = '2dp', text = '[选择进程]', textColor= "#ddffffff",--文字颜色代码 textSize = '16sp', onClick = function() string.toMusic('选择进程') gg.setProcessX() end }, { Button, background = floatingWindowManager:getStateListDrawable(), layout_width = 'match_parent', layout_margin = '2dp', text = '[4.4.4]⁶⁴', textColor= "#ddffffff",--文字颜色代码 textSize = '16sp', onClick = function() floatingWindowManager:start('[4.4.4]⁶⁴') string.toMusic('4.4.4') end }, { Button, background = floatingWindowManager:getStateListDrawable(), layout_width = 'match_parent', layout_margin = '2dp', text = '[框架防闪]', textColor= "#ddffffff",--文字颜色代码 textSize = '16sp', onClick = function() local t = {"libanogs.so:bss", "Cb"} local tt = {0xA008} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 64, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0xA038} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 64, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0xA070} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 64, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0xA0A0} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 64, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0xA130} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 64, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0xA218} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 64, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0xA3C0} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 64, 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 = 64, freeze = true}}) string.toMusic('框架防闪开启成功') end } } }) end, onDestroy = function() end }) floatingWindowManager:newWindow(('[4.4.4]⁶⁴'):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 = "0x80b5dbff" }, layout_width = 'match_parent', layout_margin = '2dp', text = '大厅区⁶⁴', textColor= "#ddffffff",--文字颜色代码 textSize = '16sp', onClick = function() floatingWindowManager:start('[大厅区]⁶⁴') string.toMusic('大厅区') end }, { Button, background = { GradientDrawable, cornerRadius='10dp', color = "0x80b5dbff" }, layout_width = 'match_parent', layout_margin = '2dp', text = '加速区⁶⁴', textColor= "#ddffffff",--文字颜色代码 textSize = '16sp', onClick = function() floatingWindowManager:start('[加速区]⁶⁴') string.toMusic('加速区') end }, { Button, background = { GradientDrawable, cornerRadius='10dp', color = "0x80b5dbff" }, layout_width = 'match_parent', layout_margin = '2dp', text = '飞天区⁶⁴', textColor= "#ddffffff",--文字颜色代码 textSize = '16sp', onClick = function() floatingWindowManager:start('[飞天区]⁶⁴') string.toMusic('飞天区') end }, { Button, background = { GradientDrawable, cornerRadius='10dp', color = "0x80b5dbff" }, layout_width = 'match_parent', layout_margin = '2dp', text = '美化区⁶⁴', textColor= "#ddffffff",--文字颜色代码 textSize = '16sp', onClick = function() floatingWindowManager:start('[美化区]⁶⁴') string.toMusic('美化区') 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', {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, layout_marginTop = '5dp',--间距 { Switch, layout_marginLeft = '5dp',--间距 text="自改广角", textColor= "#ddffffff",--文字颜色代码 gravity="center", layout_height="30dp",--长度 layout_width="220dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "#fcbad3",--背景颜色代码 cornerRadius = 38--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程511' if state then local thread = floatingWindow:getCache(cacheName) interruptThread(thread) local thread1 = luajava.startThread(T1) floatingWindow:setCache(cacheName, thread1) end end }, }, {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, layout_marginTop = '5dp',--间距 { Switch, layout_marginLeft = '5dp',--间距 text="隐藏水印", textColor= "#ddffffff",--文字颜色代码 gravity="center", layout_height="30dp",--长度 layout_width="220dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "#fcbad3",--背景颜色代码 cornerRadius = 38--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程511' if state then draw.remove() string.toMusic('隐藏水印成功') end end }, }, {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, layout_marginTop = '5dp',--间距 { Switch, layout_marginLeft = '5dp',--间距 text="范围", textColor= "#ddffffff",--文字颜色代码 gravity="center", layout_height="30dp",--长度 layout_width="220dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "#fcbad3",--背景颜色代码 cornerRadius = 38--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程511' if state then local thread = floatingWindow:getCache(cacheName) interruptThread(thread) local thread1 = luajava.startThread(T3) floatingWindow:setCache(cacheName, thread1) 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', {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, layout_marginTop = '5dp',--间距 { Switch, layout_marginLeft = '5dp',--间距 text="防止标记", textColor= "#ddffffff",--文字颜色代码 gravity="center", layout_height="30dp",--长度 layout_width="227dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "#fcbad3",--背景颜色代码 cornerRadius = 20--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程1' if state then local thread1 = luajava.startThread(a1) floatingWindow:setCache(cacheName, thread1) else local thread1 = luajava.startThread(a2) floatingWindow:setCache(cacheName, thread1) end end }, }, {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, layout_marginTop = '5dp',--间距 { Switch, layout_marginLeft = '5dp',--间距 text="趴下移动开枪(开完加速)", textColor= "#ddffffff",--文字颜色代码 gravity="center", layout_height="30dp",--长度 layout_width="227dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "#fcbad3",--背景颜色代码 cornerRadius = 20--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程511' if state then local thread1 = luajava.startThread(ayym) floatingWindow:setCache(cacheName, thread1) else local thread1 = luajava.startThread(aljw) floatingWindow:setCache(cacheName, thread1) end end }, }, {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, layout_marginTop = '5dp',--间距 { Switch, layout_marginLeft = '5dp',--间距 text="经典加速", textColor= "#ddffffff",--文字颜色代码 gravity="center", layout_height="30dp",--长度 layout_width="227dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "#fcbad3",--背景颜色代码 cornerRadius = 20--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程511' if state then local thread1 = luajava.startThread(a999) floatingWindow:setCache(cacheName, thread1) else local thread1 = luajava.startThread(a888) floatingWindow:setCache(cacheName, thread1) end end }, }, {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, layout_marginTop = '5dp',--间距 { Switch, layout_marginLeft = '5dp',--间距 text="地铁加速", textColor= "#ddffffff",--文字颜色代码 gravity="center", layout_height="30dp",--长度 layout_width="227dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "#fcbad3",--背景颜色代码 cornerRadius = 20--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程511' if state then local thread1 = luajava.startThread(a3) floatingWindow:setCache(cacheName, thread1) else local thread1 = luajava.startThread(a4) floatingWindow:setCache(cacheName, thread1) end end }, }, {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, layout_marginTop = '5dp',--间距 { Switch, layout_marginLeft = '5dp',--间距 text="自改高跳", textColor= "#ddffffff",--文字颜色代码 gravity="center", layout_height="30dp",--长度 layout_width="227dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "#fcbad3",--背景颜色代码 cornerRadius = 20--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程331' if state then local thread1 = luajava.startThread(a15) floatingWindow:setCache(cacheName, thread1) else local thread1 = luajava.startThread(a16) floatingWindow:setCache(cacheName, thread1) end end }, }, {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, layout_marginTop = '5dp',--间距 { Switch, layout_marginLeft = '5dp',--间距 text="判断大跳", textColor= "#ddffffff",--文字颜色代码 gravity="center", layout_height="30dp",--长度 layout_width="227dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "#fcbad3",--背景颜色代码 cornerRadius = 20--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程331' if state then local thread1 = luajava.startThread(a17) floatingWindow:setCache(cacheName, thread1) else local thread1 = luajava.startThread(a18) floatingWindow:setCache(cacheName, thread1) 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', {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, layout_marginTop = '5dp',--间距 { Switch, layout_marginLeft = '5dp',--间距 text="防止标记", textColor= "#ddffffff",--文字颜色代码 gravity="center", layout_height="30dp",--长度 layout_width="220dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "#fcbad3",--背景颜色代码 cornerRadius = 38--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程1' if state then local thread1 = luajava.startThread(a1) floatingWindow:setCache(cacheName, thread1) else local thread1 = luajava.startThread(a2) floatingWindow:setCache(cacheName, thread1) end end }, }, {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, layout_marginTop = '5dp',--间距 { Switch, layout_marginLeft = '5dp',--间距 text="防拉", textColor= "#ddffffff",--文字颜色代码 gravity="center", layout_height="30dp",--长度 layout_width="220dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "#fcbad3",--背景颜色代码 cornerRadius = 38--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程1' if state then local thread1 = luajava.startThread(b5) floatingWindow:setCache(cacheName, thread1) else local thread1 = luajava.startThread(b6) floatingWindow:setCache(cacheName, thread1) end end }, }, {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, layout_marginTop = '5dp',--间距 { Switch, layout_marginLeft = '5dp',--间距 text="定点飞天", textColor= "#ddffffff",--文字颜色代码 gravity="center", layout_height="30dp",--长度 layout_width="220dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "#fcbad3",--背景颜色代码 cornerRadius = 38--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程1' if state then local thread1 = luajava.startThread(b1) floatingWindow:setCache(cacheName, thread1) else local thread1 = luajava.startThread(b2) floatingWindow:setCache(cacheName, thread1) end end }, }, {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, layout_marginTop = '5dp',--间距 { Switch, layout_marginLeft = '5dp',--间距 text="趴下上升", textColor= "#ddffffff",--文字颜色代码 gravity="center", layout_height="30dp",--长度 layout_width="220dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "#fcbad3",--背景颜色代码 cornerRadius = 38--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程1' if state then local thread1 = luajava.startThread(byym78) floatingWindow:setCache(cacheName, thread1) else local thread1 = luajava.startThread(byym91) floatingWindow:setCache(cacheName, thread1) end end }, }, {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '2dp'}, layout_marginTop = '2dp',--间距 { Button, background = floatingWindowManager:getStateListDrawable(), layout_width = 'match_parent', layout_margin = '1dp', text ='上', textColor= "#ddffffff",--文字颜色代码 layout_height="35dp",--长度 layout_width="110dp",--宽度 color = "#fcbad3",--背景颜色代码 onClick = function() LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x194},"冻结","999",16,"定") end }, { Button, background = floatingWindowManager:getStateListDrawable(), layout_width = 'match_parent', layout_margin = '2dp', text ='定', textColor= "#ddffffff",--文字颜色代码 layout_height="35dp",--长度 layout_width="110dp",--宽度 color = "#fcbad3",--背景颜色代码 onClick = function() LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x194},"冻结","0",16,"定") end }, }, {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '2dp'}, layout_marginTop = '2dp',--间距 { Button, background = floatingWindowManager:getStateListDrawable(), layout_width = 'match_parent', layout_margin = '1dp', text ='下', textColor= "#ddffffff",--文字颜色代码 layout_height="35dp",--长度 layout_width="110dp",--宽度 color = "#fcbad3",--背景颜色代码 onClick = function() LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x194},"冻结","-999",16,"定") 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', {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, layout_marginTop = '5dp',--间距 { Switch, layout_marginLeft = '5dp',--间距 text="果冻", textColor= "#ddffffff",--文字颜色代码 gravity="center", layout_height="30dp",--长度 layout_width="220dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "#fcbad3",--背景颜色代码 cornerRadius = 38--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程1' if state then local thread1 = luajava.startThread(a123) floatingWindow:setCache(cacheName, thread1) else local thread1 = luajava.startThread(a456) floatingWindow:setCache(cacheName, thread1) end end }, }, {LinearLayout,--同一排代码 padding = {'0dp', '0dp', '0dp', '0dp'}, layout_marginTop = '5dp',--间距 { Switch, layout_marginLeft = '5dp',--间距 text="明日香", textColor= "#ddffffff",--文字颜色代码 gravity="center", layout_height="30dp",--长度 layout_width="220dp",--宽度 background= luajava.loadlayout { GradientDrawable, color = "#fcbad3",--背景颜色代码 cornerRadius = 38--背景圆角 }, onCheckedChange = function(CompoundButton, state) local cacheName = '多线程1' if state then local thread1 = luajava.startThread(b789) floatingWindow:setCache(cacheName, thread1) else local thread1 = luajava.startThread(b780) floatingWindow:setCache(cacheName, thread1) end end }, }, } }) end }) --大厅区 function T1() GJ=gg.prompt({'自改1-5'},{[1]='3'},{[1]='number'})---自改 if GJ == nil or GJ[1] == '' or GJ[1] == '0' then gg.toast("取消") else --广角原值:360.0 --广角原值:360.0 so=gg.getRangesList('libUE4.so')[1].start py=0x37B13E8 setvalue(so+py,16,GJ[1]) end string.toMusic('自改广角开启成功') end function T3() 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 gg.clearResults() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("15.75", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("15.75", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("110", gg.TYPE_FLOAT) gg.clearResults() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("15;28;16;26;8;18", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(56) gg.editAll("-1339", gg.TYPE_FLOAT) gg.clearResults() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("24.5;33;68", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("24.5;33", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("500", gg.TYPE_FLOAT) qmnb = { {["memory"] = 32}, {["name"] = "不减伤头部范围开启成功"}, {["value"] = 4719772412750681353, ["type"] = 32}, {["lv"] = 4742290408720039936, ["offset"] = 4, ["type"] = 32}, } qmxg = { {["value"] = -10, ["offset"] = 8, ["type"] = 16}, } xqmnb(qmnb) qmnb = { {["memory"] = 32}, {["value"] = -4417614866316724128, ["type"] = 32}, {["lv"] = 4724276012378061487, ["offset"] = 4, ["type"] = 32}, } qmxg = { {["value"] = -10, ["offset"] = 12, ["type"] = 16}, } xqmnb(qmnb) qmnb = { {["memory"] = 32}, {["value"] = -4416487068034336677, ["type"] = 32}, {["lv"] = 4724276012378324073, ["offset"] = 4, ["type"] = 32}, } qmxg = { {["value"] = -10, ["offset"] = 8, ["type"] = 16}, {["value"] = -10, ["offset"] = 12, ["type"] = 16}, } xqmnb(qmnb) string.toMusic('数组范围开启成功') end --加速区 function a1() so=gg.getRangesList('libgcloud.so')[1].start py=0x487128 setvalue(so+py,4,-698416192) py=0x506EB8 setvalue(so+py,4,-698416192) py=0x487CC4 setvalue(so+py,4,-698416192) py=0x507A54 setvalue(so+py,4,-698416192) string.toMusic('防止标记开启成功') end function a2() so=gg.getRangesList('libgcloud.so')[1].start py=0x487128 setvalue(so+py,4,1033081774) py=0x506EB8 setvalue(so+py,4,1033081774) py=0x487CC4 setvalue(so+py,4,16843522) py=0x507A54 setvalue(so+py,4,16843522) string.toMusic('防止标记关闭成功') end function a3() choice = gg.alert("请选择传送点位", "五图", "七图") if choice == 1 then if choice == 2 then end end if choice == 1 then LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0xE8},"冻结","0",4,"灵魂") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x208,0x220},"冻结","122,961.1015625",16,"X") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x208,0x224},"冻结","203,550.09375",16,"Y") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x208,0x228},"冻结","3,543.267578125",16,"Z") end if choice == 2 then LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0xE8},"冻结","0",4,"灵魂") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x208,0x220},"冻结","136,497.953125",16,"X") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x208,0x224},"冻结","163,064.796875",16,"Y") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x208,0x228},"冻结","5,937.17626953125",16,"Z") end gg.sleep(2000) so=gg.getRangesList('libUE4.so')[1].start py=0xCAC92C4 setvalue(so+py,4,-721215457) so=gg.getRangesList('libUE4.so')[1].start py=0xCAC92C4 setvalue(so+py,4,-721215457) gg.sleep(1000) LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0xE8},"冻结","167,772,680",4,"灵魂") local t = {"libUE4.so:bss", "Cb"} local tt = {0x559B70,0x30,0x4B8,0xE8} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, freeze = false}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x559B70,0x30,0x4B8,0x208,0x220} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, freeze = false}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x559B70,0x30,0x4B8,0x208,0x224} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, freeze = false}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x559B70,0x30,0x4B8,0x208,0x228} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, freeze = false}}) QA = gg.prompt({ "速度调节推荐\n60帧0.004-0.0045\n90帧0.002-0.0025\n120帧0.0015-0.002", },cfg,{"0.002"}) if QA == nil then else if QA[1] == true then QA1() end LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x364},"冻结",QA[1],16,"xa变量") end so=gg.getRangesList('libUE4.so')[1].start py=0x63602C4 setvalue(so+py,4,-721215457) LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x1168},"冻结","6",16,"微加速") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x27C},"冻结","999999",16,"2048") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x610},"冻结","0",16,"240") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x2B8},"冻结","0",4,"13680") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x268},"冻结","4000",16,"8192") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x64},"冻结","0.00001",16,"流畅趴下") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x68},"冻结","0.00001",16,"流畅趴下") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x19A8},"冻结","0.001",16,"秒趴") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0xE4},"冻结","999999",16,"流畅落地") string.toMusic("开启成功") end function a4() so=gg.getRangesList('libUE4.so')[1].start py=0xCAC92C4 setvalue(so+py,4,-117270918) so=gg.getRangesList('libUE4.so')[1].start py=0x63602C4 setvalue(so+py,4,506149161) LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x1168},"冻结","1",16,"流畅落地") Unfreeze()--解除所有冻结 gg.toast('已关闭') string.toMusic("关闭成功") end function a999() so=gg.getRangesList('libUE4.so')[1].start py=0xCAC92C4 setvalue(so+py,4,-721215457) so=gg.getRangesList('libUE4.so')[1].start py=0xCAC92C4 setvalue(so+py,4,-721215457) QA = gg.prompt({ "自改0.00几", "微加速", },cfg,{"text","text"}) if QA == nil then else if QA[1] == true then QA1() end if QA[2] == true then QA2() end LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x364},"冻结",QA[1],16,"xa变量") local t = {"libUE4.so:bss", "Cb"} local tt = {0x559B70,0x30,0x4B8,0x1168}--微加速 local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = QA[2], freeze = true}}) end so=gg.getRangesList('libUE4.so')[1].start py=0x63602C4 setvalue(so+py,4,-721215457) LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x20,0x400,0x75C},"冻结","100",16,"变速") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x20,0x400,0x770},"冻结","0.0001",16,"减速") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0xE4},"冻结","1",16,"变速") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x260},"冻结","0",16,"60000") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x2E4},"冻结","0",16,"7500") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x27C},"冻结","999999",16,"2048") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x610},"冻结","0",16,"240") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x448},"冻结","54148",4,"防卡脚") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x2B8},"冻结","0",4,"13680") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x268},"冻结","4000",16,"8192") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x218},"冻结","150",16,"45") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x64},"冻结","0.00001",16,"流畅趴下") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x68},"冻结","0.00001",16,"流畅趴下") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0xE4},"冻结","999999",16,"流畅落地") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x2D08},"冻结","34",16,"50") string.toMusic("开启成功") end function a888() so=gg.getRangesList('libUE4.so')[1].start py=0xCAC92C4 setvalue(so+py,4,-117270918) so=gg.getRangesList('libUE4.so')[1].start py=0x63602C4 setvalue(so+py,4,506149161) LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x1168},"冻结","1",16,"流畅落地") Unfreeze()--解除所有冻结 gg.toast('已关闭') string.toMusic("关闭成功") end function a13() end function a14() play = false so=gg.getRangesList('libUE4.so')[1].start py=0xCAC92C4 setvalue(so+py,4,-117270918) so=gg.getRangesList('libUE4.so')[1].start py=0x63602C4 setvalue(so+py,4,506149161) Unfreeze() LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x268},"修改","8192",16,"8192") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x218},"冻结","45",16,"45") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x364},"冻结","0.1",16,"xa减速") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x27C},"修改","2048",16,"2048防拉") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x610},"修改","240",16,"240") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x28C},"修改","0.05",16,"0.05") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0xE4},"冻结","1",16,"慢动作") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x1168},"修改","1",16,"V加") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x21C},"修改","443",16,"443") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x21C},"修改","443",16,"443") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x214},"修改","1",16,"1F防摔") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x2D08},"修改","50",16,"50") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x2D08},"修改","50",16,"50") Unfreeze()--解除所有冻结 Unfreeze()--解除所有冻结 string.toMusic('关闭成功') end function a15() local a1 = gg.prompt ( { '高度自改' , '防摔自改' , } , { 4500 , 5.5 , false } , { 'number' , 'number' } ) if a1 then local t = {"libUE4.so:bss", "Cb"} local tt = {0x559B70,0x30,0x4B8,0x518,0x21C} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = a1[1], freeze = true}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x559B70,0x30,0x4B8,0x518,0x214} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = a1[2], freeze = true}}) end LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x2D08},"冻结","34",16,"50") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x28C},"冻结","999",16,"0.05") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x19A8},"冻结","0.00001",16,"秒趴") string.toMusic('开启成功') end function a16() LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x21C},"修改","443",16,"443") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x214},"修改","1",16,"1F防摔") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x2D08},"修改","50",16,"50") Unfreeze()--解除所有冻结 gg.toast("关闭成功") string.toMusic("关闭成功") end function a17() local a1 = gg.prompt ( { '高度高度(10000-17000)' , '高跳坠落速度(20-30)' , '变速(120帧1.0) (90帧1.2) (60帧1.8)' , '跳远距离(15-30)' , } , { 15000 , 25 , 1.2 ,30 ,false } , { 'number' , 'number', 'number' , 'number'} ) if a1 then local t = {"libUE4.so:bss", "Cb"} local tt = {0x559B70,0x30,0x4B8,0x518,0x21C} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = a1[1], freeze = true}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x559B70,0x30,0x4B8,0x518,0x214} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = a1[2], freeze = true}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x559B70,0x30,0x20,0x400,0x75c} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = a1[3], freeze = true}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x559B70,0x30,0x4B8,0x1168} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = a1[4], freeze = true}}) end LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x268},"冻结","4000",16,"8192") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x2D08},"冻结","34",16,"50") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x20,0x400,0x758},"冻结","75",16,"全局") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x20,0x400,0x770},"冻结","0.0001",16,"减速") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x2B8},"冻结","0",4,"13680") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x268},"冻结","4000",16,"8192") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x448},"冻结","54148",4,"防卡脚") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x260},"冻结","0",16,"60000") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x2E4},"冻结","0",16,"7500") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x27C},"冻结","999999",16,"2048") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x610},"冻结","0",16,"240") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x64},"冻结","0.00001",16,"趴下后摇") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x68},"冻结","0.00001",16,"趴下后摇") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x1990},"冻结","0.00001",16,"秒趴") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0xE4},"冻结","999",16,"流畅落地") play = true while play do function zhi(a, b)--a是地址,b是类型,c是返回值 local c = gg.getValues({{address = a, flags = b}})[1].value return c end local t = {"libUE4.so:bss", "Cb"} local tt = {0x559B70,0x30,0x4B8,0x1058}--加上判断链条 local ttt = S_Pointer(t, tt, true) r={} r[1] = {} r[1].address = ttt r[1].name = "判断" r[1].flags = 4 gg.addListItems(r) -- 获取地址值并返回 play = true while play do if zhi(ttt,4)==72 then LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x268},"冻结","999999",16,"8192") --写当判断值等于这个时执行的东西 gg.sleep(2000) LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x268},"冻结","4000",16,"8192") end if zhi(ttt,4)==75 then LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x268},"冻结","999999",16,"8192") --写当判断值等于这个时执行的东西 gg.sleep(2000) LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x268},"冻结","4000",16,"8192") end end end end function a18() play = false so=gg.getRangesList('libUE4.so')[1].start py=0xCAC92C4 setvalue(so+py,4,-117270918) so=gg.getRangesList('libUE4.so')[1].start py=0x63602C4 setvalue(so+py,4,506149161) Unfreeze() LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x268},"修改","8192",16,"8192") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x218},"冻结","45",16,"45") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x364},"冻结","0.1",16,"xa减速") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x27C},"修改","2048",16,"2048防拉") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x610},"修改","240",16,"240") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x28C},"修改","0.05",16,"0.05") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0xE4},"冻结","1",16,"慢动作") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x1168},"修改","1",16,"V加") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x21C},"修改","443",16,"443") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x21C},"修改","443",16,"443") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x214},"修改","1",16,"1F防摔") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x2D08},"修改","50",16,"50") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x2D08},"修改","50",16,"50") Unfreeze()--解除所有冻结 string.toMusic('关闭成功') end function ayym() LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x1058},"冻结","11",4,"8d") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x19A8},"冻结","0.00001",16,"秒趴") end function aljw() Unfreeze()--解除所有冻结 end function b1() local a1 = gg.prompt ( { '速度2-4' , '变速\n120改0.5-0.7\n90-60改0.8-1.2' , } , { 2 , 0.8 , false } , { 'number' , 'number' } ) if a1 then local t = {"libUE4.so:bss", "Cb"} local tt = {0x559B70,0x30,0x4B8,0x1168} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = a1[1], freeze = true}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x559B70,0x30,0x20,0x400,0x758} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = a1[2], freeze = true}}) end LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x20,0x400,0x770},"冻结","0.0001",16,"减速") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x20,0x400,0x75C},"冻结","90",16,"变速") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x194},"冻结","0",16,"定") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x64},"冻结","0.0001",16,"后摇") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x610},"冻结","0",16,"240") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x28C},"冻结","0.05",16,"0.05") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x214},"冻结","0",16,"重力") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x68},"冻结","0.0001",16,"流畅趴下") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x2B8},"冻结","0",4,"13680") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x268+0x30},"冻结","999",16,"空中急停") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x27C},"冻结","99999",16,"2048") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x2B8},"冻结","0",4,"13680") end function b2() Unfreeze()--解除所有冻结 so=gg.getRangesList('libUE4.so')[1].start py=0xCAC92C4 setvalue(so+py,4,-117270918) so=gg.getRangesList('libUE4.so')[1].start py=0x63602C4 setvalue(so+py,4,506149161) Unfreeze() LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x268},"修改","8192",16,"8192") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x218},"冻结","45",16,"45") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x364},"冻结","0.1",16,"xa减速") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x27C},"修改","2048",16,"2048防拉") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x610},"修改","240",16,"240") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x28C},"修改","0.05",16,"0.05") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0xE4},"冻结","1",16,"慢动作") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x1168},"修改","1",16,"V加") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x21C},"修改","443",16,"443") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x21C},"修改","443",16,"443") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x214},"修改","1",16,"1F防摔") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x2D08},"修改","50",16,"50") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x2D08},"修改","50",16,"50") Unfreeze()--解除所有冻结 string.toMusic('关闭成功') end function b5() choice=gg.alert("选择","七图","五图","经典") if choice==1 or choice==2 or choice==3 then end if choice==1 then LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0xE8},"冻结","0",4,"灵魂") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x208,0x220},"冻结","136,497.953125",16,"X") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x208,0x224},"冻结","163,064.796875",16,"Y") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x208,0x228},"冻结","5,937.17626953125",16,"Z") --地皮 gg.sleep(2000) --锁地皮原值:-117284230 so=gg.getRangesList('libUE4.so')[1].start py=0xCAC92C4 setvalue(so+py,4,-721215457) so=gg.getRangesList('libUE4.so')[1].start py=0xCAC92C4 setvalue(so+py,4,-721215457) gg.sleep(1000) LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0xE8},"冻结","167,772,680",4,"灵魂") local t = {"libUE4.so:bss", "Cb"} local tt = {0x559B70,0x30,0x4B8,0xE8} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, freeze = false}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x559B70,0x30,0x4B8,0x208,0x220} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, freeze = false}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x559B70,0x30,0x4B8,0x208,0x224} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, freeze = false}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x559B70,0x30,0x4B8,0x208,0x228} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, freeze = false}}) end if choice==2 then LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0xE8},"冻结","0",4,"灵魂") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x208,0x220},"冻结","122,961.1015625",16,"X") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x208,0x224},"冻结","203,550.09375",16,"Y") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x208,0x228},"冻结","3,543.267578125",16,"Z") gg.sleep(2000) so=gg.getRangesList('libUE4.so')[1].start py=0xCAC92C4 setvalue(so+py,4,-721215457) so=gg.getRangesList('libUE4.so')[1].start py=0xCAC92C4 setvalue(so+py,4,-721215457) gg.sleep(1000) LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0xE8},"冻结","167,772,680",4,"灵魂") local t = {"libUE4.so:bss", "Cb"} local tt = {0x559B70,0x30,0x4B8,0xE8} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, freeze = false}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x559B70,0x30,0x4B8,0x208,0x220} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, freeze = false}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x559B70,0x30,0x4B8,0x208,0x224} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, freeze = false}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x559B70,0x30,0x4B8,0x208,0x228} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, freeze = false}}) end if choice==3 then so=gg.getRangesList('libUE4.so')[1].start py=0xCAC92C4 setvalue(so+py,4,-721215457) so=gg.getRangesList('libUE4.so')[1].start py=0xCAC92C4 setvalue(so+py,4,-721215457) end string.toMusic('开启成功') end function b6() so=gg.getRangesList('libUE4.so')[1].start py=0x63602C4 setvalue(so+py,4,506149161) so=gg.getRangesList('libUE4.so')[1].start py=0xCAF4D58 setvalue(so+py,4,-117270918) Unfreeze()--解除所有冻结 string.toMusic('关闭成功') end function byym78() LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x64},"冻结","0.0001",16,"后摇") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x28C},"冻结","0.4",16,"0.05") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x68},"冻结","0.0001",16,"流畅趴下") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x2B8},"冻结","0",16,"13680") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x268+0x30},"冻结","999",16,"空中急停") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x214},"冻结","0",16,"重力") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0xE4},"冻结","999999",16,"后摇") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x27C},"冻结","4000",16,"2048") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x2B8},"冻结","0",16,"13680") LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x518,0x268},"冻结","99999",16,"8192") so = gg.getRangesList('libUE4.so')[1].start ttAddr = GotoPointer(so,{0x12A6DB70,0x30,0x4B8,0x116C}) zAddr = GotoPointer(so,{0x12A6DB70,0x30,0x4B8,0x208,0x228}) OP=gg.prompt({'上升速度调节推荐\n60FPS40~50\n90FPS30~40\n120FPS20~30'},{[1]='25'},{[1]='number'}) zvg = true if OP == nil or OP[1] == '' or OP[1] == '0' then gg.toast("取消") else while zvg do tt = getvalue(ttAddr, 16) if tt == 120 then setvalue(zAddr, gg.TYPE_FLOAT, readF(zAddr) + OP[1], true) else local t = {"libUE4.so:bss", "Cb"} local tt = {0x559B70,0x30,0x4B8,0x208,0x228} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, freeze = false}}) end end end string.toMusic('开启成功') end function byym91() zvg = false string.toMusic('关闭成功') end function a123() LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x2E50,0x3E8,0x78},"冻结","1406971",4,"60000") end function a456() Unfreeze()--解除所有冻结 end function a789() LSQ_Chain({'libUE4.so:bss','Cb'},{0x559B70,0x30,0x4B8,0x2E50,0x3E8,0x78},"冻结","1406387",4,"60000") end function a780() Unfreeze()--解除所有冻结 end function a87() local dir = "/storage/emulated/0/小白NB" os.execute("mkdir -p \""..dir.."\"") local files = { { name = "Inject 程序(先执行这个)", url = "https://www.mpimg.cn/down.php/be87bf42b50d3115e1807eda984add35.", path = "/storage/emulated/0/小白NB/64bit" }, } -- ===== 下载函数(避免云模块冲突)===== function httpDownload(url, path) gg.toast("开始下载...") local r = gg.makeRequest(url) if not r or r.code ~= 200 then gg.alert("下载失败\n状态码: "..tostring(r and r.code)) return false end local f = io.open(path, "wb") if not f then gg.alert("无法写入文件\n路径: "..path) return false end f:write(r.content) f:close() gg.toast("下载完成") return true end -- ===== 直接下载唯一文件,不再显示菜单 ===== local item = files[1] -- 选择列表中的第一个(也是唯一一个)文件项 if item then if httpDownload(item.url, item.path) then gg.alert("导航频道xs78666") end else gg.alert("未找到可下载的文件项。") os.exit() end local files = { { name = "YY内测", url = "https://mpimg.cn/down.php/945d63cc0becfb3493677bbe2e57a294.so", path = "/storage/emulated/0/小白NB/lib淡水.so" }, { name = "诈骗犯v10", url = "https://imgimg.qqdsw8.cn/down.php/0b73b849e159de62eb2671599adabb16.so", path = "/storage/emulated/0/小白NB/lib淡水.so" }, { name = "小柠檬v10", url = "https://imgimg.qqdsw8.cn/down.php/4b043a7707dad179665b7358104b4d22.so", path = "/storage/emulated/0/小白NB/lib淡水.so" }, { name = "小苹果v1040", url = "https://imgimg.qqdsw8.cn/down.php/711c42ccee8b26f847d7265d4f495919.so", path = "/storage/emulated/0/小白NB/lib淡水.so" }, { name = "逃生7.4修复", url = "https://imgimg.qqdsw8.cn/down.php/e4d39e2570f7fc50fe6e4f4f16d0e8a4.so", path = "/storage/emulated/0/小白NB/lib淡水.so" }, { name = "沐岑14.0", url = "https://imgimg.qqdsw8.cn/down.php/770751e96f0e2fd6e8b339360322bff4.so", path = "/storage/emulated/0/小白NB/lib淡水.so" }, { name = "RT", url = "https://imgimg.qqdsw8.cn/down.php/50a1df2f589ae3ac726b243b67218f8b.so", path = "/storage/emulated/0/小白NB/lib淡水.so" }, { name = "花心v5", url = "https://imgimg.qqdsw8.cn/down.php/301f5f3c26c140881c740b825e8e71dd.so", path = "/storage/emulated/0/小白NB/lib淡水.so" }, } -- ===== 下载函数(避免云模块冲突)===== function httpDownload(url, path) gg.toast("开始下载...") local r = gg.makeRequest(url) if not r or r.code ~= 200 then gg.alert("下载失败\n状态码: "..tostring(r and r.code)) return false end local f = io.open(path, "wb") if not f then gg.alert("无法写入文件\n路径: "..path) return false end f:write(r.content) f:close() gg.toast("下载完成") return true end -- ===== 构建菜单 ===== local menu = {} for i, v in ipairs(files) do menu[i] = v.name .. "\n→ " .. v.path end menu[#menu + 1] = "❌ 取消" -- ===== 选择 ===== local choice = gg.choice(menu, nil, "选择要下载的文件") if choice == nil or choice == #menu then gg.toast("已取消") os.exit() end local item = files[choice] -- ===== 执行下载 ===== if httpDownload(item.url, item.path) then gg.alert("下载成功:\n"..item.name.."\n\n保存到:\n"..item.path) end loadYunLua('https://www.mpimg.cn/down.php/bb6218ec44e96f77fe0c5904f3d36196.lua') gg.alert("等待UI出现") end function a186() Unfreeze()--解除所有冻结 end floatingWindowManager:run()