function getRangeEnd(range) --北小天资源频道分享 @BXTZYPD --删掉死全家 return range.endd or range["end"] or range.finish or range.stop or nil end function getRangeSize(range) local e = getRangeEnd(range) if e and range.start then return e - range.start end return 0 end function findLib(name) local exact = gg.getRangesList(name) if #exact > 0 then for _, v in ipairs(exact) do if v.start then return v.start, v end end end local all = gg.getRangesList() for _, v in ipairs(all) do if v.state and (v.state:find(name, 1, true) or v.state:match("[^/]+$") == name) then return v.start, v end end return nil end --北小天资源频道分享 @BXTZYPD --删掉死全家 function copyMemoryDword(src, dst, len) local alignedSrc = (src + 3) & ~3 local alignedDst = (dst + 3) & ~3 local skipStart = alignedSrc - src local alignedLen = (len - skipStart) & ~3 if alignedLen <= 0 then return 0 end local batch = 1024 local dwords = alignedLen // 4 for offset = 0, dwords - 1, batch do local current = math.min(batch, dwords - offset) local values = {} for i = 0, current - 1 do values[i+1] = {address = alignedSrc + (offset + i) * 4, flags = gg.TYPE_DWORD} end values = gg.getValues(values) for i, v in ipairs(values) do v.address = alignedDst + (offset + i - 1) * 4 v.flags = gg.TYPE_DWORD end gg.setValues(values) end return alignedLen end function checkReadable(addr) local all = gg.getRangesList() for _, v in ipairs(all) do local e = getRangeEnd(v) if e and v.start and addr >= v.start and addr < e then if v.type and v.type:find("r") then return true end break end end return false end function checkWritable(addr) local all = gg.getRangesList() for _, v in ipairs(all) do local rangeEnd = getRangeEnd(v) if rangeEnd and v.start and addr >= v.start and addr < rangeEnd then if v.type and v.type:find("w") then return true end break end end return false end local configs = { { dstLib = "libAkDelayWG.so:bss", srcOffset = 0x12523408, srcEndOffset = 0x12524578, }, { dstLib = "libGPixUI.so:bss", srcOffset = 0x12840388, srcEndOffset = 0x12843134, }, } local ue4Base = findLib("libUE4.so") if not ue4Base then return end for i, cfg in ipairs(configs) do local dstBase = findLib(cfg.dstLib) if not dstBase then goto continue end local srcStart = ue4Base + cfg.srcOffset local srcEnd = ue4Base + cfg.srcEndOffset local copySize = srcEnd - srcStart local dstAddr = dstBase + 0x0 if not checkReadable(srcStart) then goto continue end if not checkWritable(dstAddr) then goto continue end local copied = copyMemoryDword(srcStart, dstAddr, copySize) ::continue:: end --北小天资源频道分享 @BXTZYPD --删掉死全家 function setvalue(address,flags,value,freeze) if address == 0 then return end local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value tt[1].freeze=freeze if freeze==false then gg.setValues(tt) end gg.addListItems(tt) end function getvalue(address,flags,value,freeze) if address == 0 then return end local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags gg.addListItems(tt) end function autovalue(address,flags,_o,_v,freeze) if address == 0 then return end local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].freeze=freeze local _v_ = gg.getValues(tt)[1].value if math.abs(_v_-_o) < 1e-7 then tt[1].value=_v else tt[1].value=_o end if freeze==false then gg.setValues(tt) end gg.addListItems(tt) end function readD(address) return gg.getValues({{address = address, flags = 4}})[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 _Q = tonumber(0x167ba0fe) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end local _S = gg.getRangesList(N_So[1])[1] 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 else S[_].value = S[_].value & 0xFFFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address --北小天资源频道分享 @BXTZYPD --删掉死全家 end return _S end local ttt = Get_Address(t_So, t_Offset, _bit) if ttt ~= nil then local _A = string.format('0x%X', ttt) return _A end return 0 end function RDI(address) return gg.getValues({{address = address, flags = 4}})[1].value & 0xFFFFFFFF end function RQI(address) return gg.getValues({{address = address, flags = gg.TYPE_QWORD}})[1].value end function PS() end function setvalue(address,flags,value) local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end function setvalue(address,flags,value) local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) gg.addListItems(tt) end synb = S_Pointer({"libUE4.so:bss", "Cb"}, {0x9FB410,0x30,0x6838}, true) qxx = S_Pointer({"libUE4.so:bss", "Cb"}, {0x9FB410,0x30,0x3478,0x0}, true) max = S_Pointer({"libUE4.so:bss", "Cb"}, {0x9FB410,0x30,0x3478,0x660,0x0}, true) gc0=gg.getRangesList('libUE4.so')[1].start gc=gg.getRangesList('libGPixUI.so')[1].start xx=gg.getRangesList('libAkDelayWG.so')[1].start gc1=gc0+0x63587BC safe1=gc0+0x12523408 safe=gc+0x1000 xz=xx+0x31000 qxy=gc+0x24000 py=0x14CF8418 setvalue(gc0+py,4,0)--改时间 py=0x1000 setvalue(gc+py,4,506015744) py=0x1004 setvalue(gc+py,4,1476395080) py=0x1008 setvalue(gc+py,4,-702611200) py=0x100C setvalue(gc+py,32,gc1) py=0x1020 setvalue(gc+py,4,-698416192) py=0x24AD8 setvalue(gc+py,32,gc+0x1020) py=0x31BF0 setvalue(xx+py,32,gc+0x1000) gg.clearList() --北小天资源频道分享 @BXTZYPD --删掉死全家 function Main() menu = gg.multiChoice({ "加速(开)", "加速(关)", "挥拳提速(翻倍)", "挥拳加速", "退出脚本", }, nil, os.date" @BXTZYPD ") if menu == nil then else if menu[1] == true then A1() end if menu[2] == true then A2() end if menu[3] == true then A3() end if menu[4] == true then A4() end if menu[5] == true then kk() end end XGCK = -1 end --北小天资源频道分享 @BXTZYPD --删掉死全家 function A1() gg.setValues({{address = qxx, flags = 32, value = qxy}})--冻结地皮 gg.setValues({{address = synb, flags = 4, value = 65536}}) local b={"libUE4.so:bss","Cb"} local function p(o)return S_Pointer(b,o,true)end local function f(m,v) local c={0x9FB410,0x30,0x20,0xA0,m,0x6B8,0x1c8} if gg.getValues({{address=p(c),flags=16}})[1].value==v then local s={0x9FB410,0x30,0x20,0xA0,m,0x6B8,0x0} local a=tonumber(p(s))or tonumber(p(s):gsub("0x",""),16) gg.setValues({{address=p({0x9FB410,0x30,0x3478,0x670}),flags=32,value=a}})--修改本人地皮 end end--以上为锁地皮 f(0x10,1000000256.0)f(0xA0,2000000512.0)f(0x118,1000000256.0)f(0x140,2000000512.0)--判断地皮是否加载 gg.setValues({{address = max, flags = 32, value = xz}})--加速开 end function A2() gg.setValues({{address = max, flags = 32, value = safe1}})--加速关 end --北小天资源频道分享 @BXTZYPD --删掉死全家 function A3() local UE4={0x9FB410,0x30,0x3478,0x660,0x280} local UE5={0x9FB410,0x30,0x3478,0x660,0x28C} while true do gg.sleep(5) local a=RDI(S_Pointer({"libUE4.so"},{0x15744410,0x30,0x3478,0x3438},true))==1 setvalue(S_Pointer({"libUE4.so"},{0x153A5004},true),4,a and 1 or 0,false) gg.setValues({ {address=S_Pointer({"libUE4.so:bss","Cb"},UE4,true),flags=16,value=a and-999 or 2}, {address=S_Pointer({"libUE4.so:bss","Cb"},UE5,true),flags=16,value=a and 500 or 2048} }) --北小天资源频道分享 @BXTZYPD --删掉死全家 end end --北小天资源频道分享 @BXTZYPD --删掉死全家 function A4() gg.setValues({{address = qxx, flags = 32, value = qxy}}) gg.setValues({{address = synb, flags = 4, value = 65536}}) local b={"libUE4.so:bss","Cb"} local function p(o)return S_Pointer(b,o,true)end local function f(m,v) local c={0x9FB410,0x30,0x20,0xA0,m,0x6B8,0x1c8} if gg.getValues({{address=p(c),flags=16}})[1].value==v then local s={0x9FB410,0x30,0x20,0xA0,m,0x6B8,0x0} local a=tonumber(p(s))or tonumber(p(s):gsub("0x",""),16) gg.setValues({{address=p({0x9FB410,0x30,0x3478,0x670}),flags=32,value=a}}) end end f(0x10,1000000256.0)f(0xA0,2000000512.0)f(0x118,1000000256.0)f(0x140,2000000512.0) while true do gg.sleep(5) local a=RDI(S_Pointer({"libUE4.so"},{0x15744410,0x30,0x3478,0x3438},true))==1 if a then gg.setValues({{address = max, flags = 32, value = xz}}) else gg.setValues({{address = max, flags = 32, value = safe1}}) end end end --北小天资源频道分享 @BXTZYPD --删掉死全家 --北小天资源频道分享 @BXTZYPD --删掉死全家 function kk() os.exit()end while true do if gg.isVisible(true) then XGCK = 1 gg.setVisible(false)end gg.clearResults() if XGCK == 1 then Main()end end