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 TNRNB(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 tmp={} local offset=Search[k][2]-base local num=Search[k][1] for i,v in ipairs(result)do tmp[#tmp+1]={} tmp[#tmp].address=v.address+offset tmp[#tmp].flags=v.flags end tmp=gg.getValues(tmp) for i,v in ipairs(tmp)do if(tostring(v.value)~=tostring(num))then result[i].isUseful=false end end end for i,v in ipairs(result)do if(v.isUseful)then data[#data+1]=v.address end end if(#data>0)then gg.toast("\n🔍搜索到"..#data.."数据\n🔰开始进行偏移") 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) gg.toast("\n🚬"..Name.."成功\n🛠共修改"..#t.."数据") else gg.toast("\n❌"..Name.."失败") return false end else gg.toast("\n❌"..Name.."失败") return false end end --指针配置(魔神仔优化) function TNRNB(Search,Get,Type,Range,Name) gg.clearResults() gg.setRanges(Range) gg.setVisible(false) if Search[1][1]~=false then gg.searchAddress(Search[1][1],0xFFFFFFFF,Search[1][4] or Type,gg.SIGN_EQUAL,Search[1][5] or 1,Search[1][6] or -1) end gg.searchNumber(Search[1][2],Search[1][4] or Type,false,gg.SIGN_EQUAL,Search[1][5] or 1,Search[1][6] or -1) local count=gg.getResultCount() local result=gg.getResults(count) gg.clearResults() local data={} local base=Search[1][3] 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=Search[k][3] or Type end tmp=gg.getValues(tmp) for i,v in ipairs(tmp) do if v.flags==16 or v.flags==64 then values=tostring(v.value):sub(1,6) num=tostring(num):sub(1,6) else values=v.value end if tostring(values)~=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,t_={},{} local base=Search[1][3] for i=1,#data do for k,w in ipairs(Get) do offset=w[2] - base if w[1]==false then t_[#t_+1]={} t_[#t_].address=data[i]+offset t_[#t_].flags=Type th_=(th_) and th_+1 or 1 else t[#t+1]={} t[#t].address=data[i]+offset t[#t].flags=w[3] or Type t[#t].value=w[1] tg_=(tg_) and tg_+1 or 1 if (w[4]==true) then local item={} item[#item+1]=t[#t] item[#item].freeze=w[4] gg.addListItems(item) end end end end tg=(tg_) and "by年淤提示修改"..tg_.."数据" or "" th=(th_) and "" or "" gg.setValues(t) t_=gg.getValues(t_) gg.loadResults(t_) gg.toast(""..Name..tg) tg_,th_=nil,nil else gg.toast("搜索不到",false) return false end else gg.toast("搜索不到") return false end end function Fxs(Search,Get,Type,Range,Name) gg.clearResults() gg.setRanges(Range) gg.setVisible(false) if Search[1][1]~=false then gg.searchAddress(Search[1][1],0xFFFFFFFF,Search[1][4] or Type,gg.SIGN_EQUAL,Search[1][5] or 1,Search[1][6] or -1) end gg.searchNumber(Search[1][2],Search[1][4] or Type,false,gg.SIGN_EQUAL,Search[1][5] or 1,Search[1][6] or -1) local count=gg.getResultCount() local result=gg.getResults(count) gg.clearResults() local data={} local base=Search[1][3] 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=Search[k][3] or Type end tmp=gg.getValues(tmp) for i,v in ipairs(tmp) do if v.flags==16 or v.flags==64 then values=tostring(v.value):sub(1,6) num=tostring(num):sub(1,6) else values=v.value end if tostring(values)~=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,t_={},{} local base=Search[1][3] for i=1,#data do for k,w in ipairs(Get) do offset=w[2] - base if w[1]==false then t_[#t_+1]={} t_[#t_].address=data[i]+offset t_[#t_].flags=Type th_=(th_) and th_+1 or 1 else t[#t+1]={} t[#t].address=data[i]+offset t[#t].flags=w[3] or Type t[#t].value=w[1] tg_=(tg_) and tg_+1 or 1 if (w[4]==true) then local item={} item[#item+1]=t[#t] item[#item].freeze=w[4] gg.addListItems(item) end end end end tg=(tg_) and "🏟🏟🏟\n开启成功\n🗾修改"..tg_.."数据" or "" th=(th_) and "" or "" gg.setValues(t) t_=gg.getValues(t_) gg.loadResults(t_) gg.toast("\n"..Name..tg) tg_,th_=nil,nil else gg.toast("MYBABY",false) return false end else gg.toast("MYBABY") return false end end function searchWrite(search,Write,Type) gg.clearResults() gg.setVisible(false) gg.searchNumber(search[1][1],Type) local count = gg.getResultCount() local result = gg.getResults(count) gg.clearResults() local data = {} local base = search[1][2] if(count>0)then for i,v in ipairs(result)do v.isUseful=true end for k=2,#search do local tmp={} local offset=search[k][2]-base local num=search[k][1] for i,v in ipairs(result)do tmp[#tmp+1]={} tmp[#tmp].address=v.address+offset tmp[#tmp].flags=v.flags end tmp=gg.getValues(tmp) for i,v in ipairs(tmp)do if(tostring(v.value)~=tostring(num))then result[i].isUseful=false end end end for i,v in ipairs(result)do if(v.isUseful)then data[#data+1]=v.address end end if(#data>0)then gg.toast(Name.."共搜索到"..#data.."个数据") local t={} local base=search[1][2] for i=1,#data do for k,w in ipairs(Write)do offset=w[2]-base t[#t+1]={} t[#t].address=data[i]+offset t[#t].flags=Type t[#t].value=w[1] if(w[3]==true)then local item={} item[#item+1]=t[#t] item[#item].freeze=true gg.addListItems(item) end end end gg.setValues(t) gg.sleep(500) gg.toast(Name.."开启成功共修改"..#t.."条数据") else return false end else return false 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(szNC, qmxg) for x = 1, #(qmxg) do xgNC = szNC + qmxg[x]["offset"] xglx = qmxg[x]["type"] NCNB = qmxg[x]["value"] xgdj = qmxg[x]["freeze"] if xgdj == nil or xgdj == "" then gg.setValues({[1] = {address = xgNC, flags = xglx, value = NCNB}}) else gg.addListItems({[1] = {address = xgNC, flags = xglx, freeze = xgdj, value = NCNB}}) end xgsl = xgsl + 1 xgjg = true end end function xqNCb(qNCb) gg.clearResults() gg.setRanges(qNCb[1]["memory"]) gg.searchNumber(qNCb[3]["value"], qNCb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qNCb[2]["name"] .. "开启失败✘") else gg.refineNumber(qNCb[3]["value"], qNCb[3]["type"]) gg.refineNumber(qNCb[3]["value"], qNCb[3]["type"]) gg.refineNumber(qNCb[3]["value"], qNCb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qNCb[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, #(qNCb) do if pdsz == true then NCsz = {} NCsz[1] = {} NCsz[1].address = sl[i].address + qNCb[v]["offset"] NCsz[1].flags = qNCb[v]["type"] szNC = gg.getValues(NCsz) pdpd = qNCb[v]["lv"] .. ";" .. szNC[1].value szpd = split(pdpd, ";") tzszpd = szpd[1] NCszpd = szpd[2] if tzszpd == NCszpd then pdjg = true pdsz = true else pdjg = false pdsz = false end end end if pdjg == true then szNC = sl[i].address xgxc(szNC, qmxg) end end if xgjg == true then gg.toast(qNCb[2]["name"] .. "开启成功✔共修改" .. xgsl .. "条数据") else gg.toast(qNCb[2]["name"] .. "开启失败✘") end end end end function edit(orig,ret)_om=orig[1].memory or orig[1][1]_ov=orig[3].value or orig[3][1]_on=orig[2].name or orig[2][1]gg.clearResults()gg.setRanges(_om)gg.searchNumber(_ov,orig[3].type or orig[3][2])sz=gg.getResultCount()if sz<1 then gg.toast(_on.."开启失败✘")else sl=gg.getResults(720)for i=1,sz do ist=true for v=4,#orig do if ist==true and sl[i].value==_ov then cd={{}}cd[1].address=sl[i].address+(orig[v].offset or orig[v][2])cd[1].flags=orig[v].type or orig[v][3]szNC=gg.getValues(cd)cdlv=orig[v].lv or orig[v][1]cdv=szNC[1].value if cdlv==cdv then pdjg=true ist=true else pdjg=false ist=false end end end if pdjg==true then szNC=sl[i].address for x=1,#(ret)do xgNC=szNC+(ret[x].offset or ret[x][2])xglx=ret[x].type or ret[x][3]NCNB=ret[x].value or ret[x][1]xgdj=ret[x].freeze or ret[x][4]xgsj={{address=xgNC,flags=xglx,value=NCNB}}if xgdj==true then xgsj[1].freeze=xgdj gg.addListItems(xgsj)else gg.setValues(xgsj)end end xgjg=true end end if xgjg==true then gg.toast(_on.."开启成功")else gg.toast(_on.."开启失败✘")end end end function searchWrite(search, Write, Type) gg.clearResults() gg.setVisible(false) gg.searchNumber(search[1][1], Type) local count = gg.getResultCount() local result = gg.getResults(count) gg.clearResults() local data = {} local base = search[1][2] if (count > 0) then for i, v in ipairs(result) do v.isUseful = true end for k=2, #search do local tmp = {} local offset = search[k][2] - base local num = search[k][1] for i, v in ipairs(result) do tmp[#tmp+1] = {} tmp[#tmp].address = v.address + offset tmp[#tmp].flags = v.flags end tmp = gg.getValues(tmp) for i, v in ipairs(tmp) do if ( tostring(v.value) ~= tostring(num) ) then result[i].isUseful = false end end end for i, v in ipairs(result) do if (v.isUseful) then data[#data+1] = v.address end end if (#data > 0) then gg.toast("搜索到"..#data.."条数据") local t = {} local base = search[1][2] for i=1, #data do for k, w in ipairs(Write) do offset = w[2] - base t[#t+1] = {} t[#t].address = data[i] + offset t[#t].flags = Type t[#t].value = w[1] if (w[3] == true) then local item = {} item[#item+1] = t[#t] item[#item].freeze = true gg.addListItems(item) end end end gg.setValues(t) gg.toast("已修改"..#t.."条数据") gg.addListItems(t) else gg.toast("开启失败✘", false) return false end else gg.toast("开启失败✘") return false 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(szNC, qmxg) for x = 1, #(qmxg) do xgNC = szNC + qmxg[x]["offset"] xglx = qmxg[x]["type"] NCNB = qmxg[x]["value"] xgdj = qmxg[x]["freeze"] if xgdj == nil or xgdj == "" then gg.setValues({[1] = {address = xgNC, flags = xglx, value = NCNB}}) else gg.addListItems({[1] = {address = xgNC, flags = xglx, freeze = xgdj, value = NCNB}}) end xgsl = xgsl + 1 xgjg = true end end function xqNCb(qNCb) gg.clearResults() gg.setRanges(qNCb[1]["memory"]) gg.searchNumber(qNCb[3]["value"], qNCb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qNCb[2]["name"] .. "开启失败✘") else gg.refineNumber(qNCb[3]["value"], qNCb[3]["type"]) gg.refineNumber(qNCb[3]["value"], qNCb[3]["type"]) gg.refineNumber(qNCb[3]["value"], qNCb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qNCb[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, #(qNCb) do if pdsz == true then NCsz = {} NCsz[1] = {} NCsz[1].address = sl[i].address + qNCb[v]["offset"] NCsz[1].flags = qNCb[v]["type"] szNC = gg.getValues(NCsz) pdpd = qNCb[v]["lv"] .. ";" .. szNC[1].value szpd = split(pdpd, ";") tzszpd = szpd[1] NCszpd = szpd[2] if tzszpd == NCszpd then pdjg = true pdsz = true else pdjg = false pdsz = false end end end if pdjg == true then szNC = sl[i].address xgxc(szNC, qmxg) end end if xgjg == true then gg.toast(qNCb[2]["name"] .. "开启成功✔共修改" .. xgsl .. "条数据") else gg.toast(qNCb[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) else return false end else return false end end local app = {} function Assert(data) if data == nil or data == "" or data == "nil" then return false else return true end end function mearrass(memory, array) if Assert(memory) and Assert(array) then return true else return false end end function typetab(array, type) local datatype = {} for i = 1, #array do if Assert(array[i].type) then table.insert(datatype, i, array[i].type) else if Assert(type) then table.insert(datatype, i, type) else return false end end end return true, datatype end function app.memorysearch(memory, array, type) gg.setVisible(false) local rx = mearrass(memory, array) if rx then local rx, datatype = typetab(array, type) if rx then if Assert(array[1].hv) then gg.clearResults() gg.setRanges(memory) gg.searchNumber(array[1].lv .. "~" .. array[1].hv, datatype[1]) elsegg.clearResults() gg.setRanges(memory) gg.searchNumber(array[1].lv, datatype[1]) end if gg.getResultCount() == 0 then return false else local tab = {} local data = gg.getResults(gg.getResultCount()) gg.clearResults() for i = 1, #data do data[i].rx = true end for i = 2, #array do local t = {} local offset = array[i].offset for x = 1, #data do t[#t + 1] = {} t[#t].address = data[x].address + offset t[#t].flags = datatype[i] end local t = gg.getValues(t) for z = 1, #t do if Assert(array[i].hv) then if tonumber(t[z].value) < tonumber(array[i].lv) or tonumber(t[z].value) > tonumber(array[i].hv) then data[z].rx = false end else if tostring(t[z].value) ~= tostring(array[i].lv) then data[z].rx = false end end end end for i = 1, #data do if data[i].rx then tab[#tab + 1] = data[i].address end end if #tab > 0 then return true, tab else return false end end else print("type参数错误") gg.toast("type参数错误") os.exit() end else print("memory or array参数错误") gg.toast("memory or array参数错误") os.exit() end end function app.memoryread(addr, type) local t = {} t[1] = {} t[1].address = addr t[1].flags = type if #t > 0 then return true, gg.getValues(t)[1].value else return false end end function app.memorywrite(addr, type, value, freeze) local t = {} t[1] = {} t[1].address = addr t[1].flags = type t[1].value = value if #t > 0 then if Assert(freeze) then t[1].freeze = freeze return gg.addListItems(t) else return gg.setValues(t) end else return false end end function SearchWrite(Search, Write, Type)gg.clearResults()gg.setVisible(false)gg.searchNumber(Search[1][1], Type)local count = gg.getResultCount()local result = gg.getResults(count)gg.clearResults()local data = {}local base = Search[1][2]if (count > 0) then for i, v in ipairs(result) do v.isUseful = true end for k=2, #Search do local tmp = {} local offset = Search[k][2] - base local num = Search[k][1] for i, v in ipairs(result) do tmp[#tmp+1] = {} tmp[#tmp].address = v.address + offset tmp[#tmp].flags = v.flags end tmp = gg.getValues(tmp) for i, v in ipairs(tmp) do if ( tostring(v.value) ~= tostring(num) ) then result[i].isUseful = false end end end for i, v in ipairs(result) do if (v.isUseful) then data[#data+1] = v.address end end if (#data > 0) then gg.toast("found "..#data.." data") local t = {} local base = Search[1][2] for i=1, #data do for k, w in ipairs(Write) do offset = w[2] - base t[#t+1] = {} t[#t].address = data[i] + offset t[#t].flags = Type t[#t].value = w[1] if (w[3] == true) then local item = {} item[#item+1] = t[#t] item[#item].freeze = true gg.addListItems(item) end end end gg.setValues(t) else gg.toast("啦啦啦啦", false) return false end else gg.toast("啦啦啦啦") return false end end function SearchWrite(Search,Modification) gg.clearResults() gg.searchNumber(Search[1][1],Search[1][2],false,536870912,0,-1) if gg.getResultCount()==0 then gg.toast(Name..'开启失败') return end local Result=gg.getResults(gg.getResultCount()) local sum=0 for i=2,#Search do for index=1,#Result do if gg.getValues({{address=Result[index].address+Search[i][3],flags=Search[i][2]}})[1].value~=Search[i][1]then Result[index].Usable=true sum=sum+1 end end end if sum==#Result then gg.toast(Name..'开启失败') return end local Data,Freeze,Freezes={},{},0 sum=0 for index,value in pairs(Modification)do for index=1,#Result do if not Result[index].Usable then local Value={address=Result[index].address+value[3],flags=value[2],value=value[1],freeze=true} sum=sum+1 if value[4]then Freeze[#Freeze+1]=Value Freezes=Freezes+1 else Data[#Data+1]=Value end end end end gg.setValues(Data) gg.addListItems(Freeze) if Freeze==0 then gg.toast(Name..'开启成功,共修改'..sum..'条数据.') else gg.toast(Name..'开启成功,共修改'..sum..'条数据,冻结'..Freezes..'条数据.') end end--指针 function HaoGe(Range,Type,Search,Write) gg.clearResults() gg.setRanges(Range) gg.setVisible(false) gg.searchNumber(Search[1][1],Type) local count=gg.getResultCount() local result=gg.getResults(count) gg.clearResults() local data={} local base=Search[1][2] if(count>0)then for i,v in ipairs(result)do v.isUseful=true end for k=2,#Search do local tmp={} local offset=Search[k][2]-base local num=Search[k][1] for i,v in ipairs(result)do tmp[#tmp+1]={} tmp[#tmp].address=v.address+offset tmp[#tmp].flags=v.flags end tmp=gg.getValues(tmp) for i,v in ipairs(tmp)do if(tostring(v.value)~=tostring(num))then result[i].isUseful=false end end end for i,v in ipairs(result)do if(v.isUseful)then data[#data+1]=v.address end end if(#data>0)then gg.toast("\n🔍搜索到"..#data.."数据\n🔰开始进行偏移") 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) 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 _Q = tonumber(0x167ba0fe) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address print(string.char(231,190,164,58).._Q) end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end--动态 function PS() end function setvalue(address,flags,value) PS('修改地址数值(地址,数值类型,要修改的值)') local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end--静态 local function interruptThread(thread) if thread then pcall(function() thread:interrupt() end) end end -------------- function TNRNB(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 tmp={} local offset=Search[k][2]-base local num=Search[k][1] for i,v in ipairs(result)do tmp[#tmp+1]={} tmp[#tmp].address=v.address+offset tmp[#tmp].flags=v.flags end tmp=gg.getValues(tmp) for i,v in ipairs(tmp)do if(tostring(v.value)~=tostring(num))then result[i].isUseful=false end end end for i,v in ipairs(result)do if(v.isUseful)then data[#data+1]=v.address end end if(#data>0)then gg.toast("\n🔍搜索到"..#data.."数据\n🔰开始进行偏移") 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) gg.toast("\n🚬"..Name.."成功\n🛠共修改"..#t.."数据") else gg.toast("\n⭕"..Name.."失败") return false end else gg.toast("\n⭕"..Name.."失败") return false end end function TNRNB1(Range,Type,Search,Write) gg.clearResults() gg.setRanges(Range) gg.setVisible(false) gg.searchNumber(Search[1][1],Type) local count=gg.getResultCount() local result=gg.getResults(count) gg.clearResults() local data={} local base=Search[1][2] if(count>0)then for i,v in ipairs(result)do v.isUseful=true end for k=2,#Search do local tmp={} local offset=Search[k][2]-base local num=Search[k][1] for i,v in ipairs(result)do tmp[#tmp+1]={} tmp[#tmp].address=v.address+offset tmp[#tmp].flags=v.flags end tmp=gg.getValues(tmp) for i,v in ipairs(tmp)do if(tostring(v.value)~=tostring(num))then result[i].isUseful=false end end end for i,v in ipairs(result)do if(v.isUseful)then data[#data+1]=v.address end end if(#data>0)then gg.toast("🔍搜索到"..#data.."数据🔰开始进行偏移") local t={} local base=Search[1][2] for i=1,#data do for k,w in ipairs(Write)do offset=w[2]-base t[#t+1]={} t[#t].address=data[i]+offset t[#t].flags=Type t[#t].value=w[1] if(w[3]==true)then local item={} item[#item+1]=t[#t] item[#item].freeze=true gg.addListItems(item) end end end gg.setValues(t) gg.sleep(400) gg.toast("🚬"..Name.."失敗🛠共修改"..#t.."数据") else gg.toast("⭕"..Name.."⭕") return false end else gg.toast("⭕"..Name.."⭕") return false end end --指针配置(魔神仔优化) function TNRNB(Search,Get,Type,Range,Name) gg.clearResults() gg.setRanges(Range) gg.setVisible(false) if Search[1][1]~=false then gg.searchAddress(Search[1][1],0xFFFFFFFF,Search[1][4] or Type,gg.SIGN_EQUAL,Search[1][5] or 1,Search[1][6] or -1) end gg.searchNumber(Search[1][2],Search[1][4] or Type,false,gg.SIGN_EQUAL,Search[1][5] or 1,Search[1][6] or -1) local count=gg.getResultCount() local result=gg.getResults(count) gg.clearResults() local data={} local base=Search[1][3] 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=Search[k][3] or Type end tmp=gg.getValues(tmp) for i,v in ipairs(tmp) do if v.flags==16 or v.flags==64 then values=tostring(v.value):sub(1,6) num=tostring(num):sub(1,6) else values=v.value end if tostring(values)~=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,t_={},{} local base=Search[1][3] for i=1,#data do for k,w in ipairs(Get) do offset=w[2] - base if w[1]==false then t_[#t_+1]={} t_[#t_].address=data[i]+offset t_[#t_].flags=Type th_=(th_) and th_+1 or 1 else t[#t+1]={} t[#t].address=data[i]+offset t[#t].flags=w[3] or Type t[#t].value=w[1] tg_=(tg_) and tg_+1 or 1 if (w[4]==true) then local item={} item[#item+1]=t[#t] item[#item].freeze=w[4] gg.addListItems(item) end end end end tg=(tg_) and "by魔神仔提示修改"..tg_.."数据" or "" th=(th_) and "" or "" gg.setValues(t) t_=gg.getValues(t_) gg.loadResults(t_) gg.toast(""..Name..tg) tg_,th_=nil,nil else gg.toast("搜索不到",false) return false end else gg.toast("搜索不到") return false end end function PS() end function setvalue(address,flags,value) PS('修改地址数值(地址,数值类型,要修改的值)') local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end local gurenya=gg.setValues--静态 function getRanges() local ranges = {} local tt = {} local t = gg.getRangesList('^/data/*.so*$') for i in pairs(t) do if t[i].type:sub(2, 2) == 'w' or t[i].type == "r-xp" then if not tt[t[i].internalName] then tt[t[i].internalName] = {} end if not tt[t[i].internalName][t[i].state] then tt[t[i].internalName][t[i].state] = 0 end tt[t[i].internalName][t[i].state] = tt[t[i].internalName][t[i].state] + 1 t[i].count = tt[t[i].internalName][t[i].state] table.insert(ranges, t[i]) end end return ranges end function Base_Address(N_So) local S_list = getRanges() local _S = {} 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 and N_So[3] == S_list[i].count then _S = S_list[i] break end end return _S.start end function Get_Address(Address, Offset) local flags_bit = {[true] = 32, [false] = 4} local ti64 = gg.getTargetInfo().x64 local Type = flags_bit[ti64] local addr = 0 if Address then addr = Address + Offset[1] for _ = 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[_] end end return addr end function SearchWrite(Search, Write, Type)gg.clearResults()gg.setVisible(false)gg.searchNumber(Search[1][1], Type)local count = gg.getResultCount()local result = gg.getResults(count)gg.clearResults()local data = {}local base = Search[1][2]if (count > 0) then for i, v in ipairs(result) do v.isUseful = true end for k=2, #Search do local tmp = {} local offset = Search[k][2] - base local num = Search[k][1] for i, v in ipairs(result) do tmp[#tmp+1] = {} tmp[#tmp].address = v.address + offset tmp[#tmp].flags = v.flags end tmp = gg.getValues(tmp) for i, v in ipairs(tmp) do if ( tostring(v.value) ~= tostring(num) ) then result[i].isUseful = false end end end for i, v in ipairs(result) do if (v.isUseful) then data[#data+1] = v.address end end if (#data > 0) then gg.toast("found "..#data.." data") local t = {} local base = Search[1][2] for i=1, #data do for k, w in ipairs(Write) do offset = w[2] - base t[#t+1] = {} t[#t].address = data[i] + offset t[#t].flags = Type t[#t].value = w[1] if (w[3] == true) then local item = {} item[#item+1] = t[#t] item[#item].freeze = true gg.addListItems(item) end end end gg.setValues(t) else gg.toast("啦啦啦啦", false) return false end else gg.toast("啦啦啦啦") return false end end function mnnb(Search, Write,Neicun,Mingcg,Shuzhiliang) gg.clearResults() gg.setRanges(Neicun) gg.setVisible(false) gg.searchNumber(Search[1][1], Search[1][3]) count = gg.getResultCount() result = gg.getResults(count) gg.clearResults() data = {} base = Search[1][2] if (count > 0) then for i, v in ipairs(result) do v.isUseful = true end for k=2, #Search do tmp = {} offset = Search[k][2] - base num = Search[k][1] for i, v in ipairs(result) do tmp[#tmp+1] = {} tmp[#tmp].address = v.address + offset tmp[#tmp].flags = Search[k][3] end tmp = gg.getValues(tmp) for i, v in ipairs(tmp) do if ( tostring(v.value) ~= tostring(num) ) then result[i].isUseful = false end end end for i, v in ipairs(result) do if (v.isUseful) then data[#data+1] = v.address end end if (#data > 0) then gg.toast(Mingcg.."搜索到"..#data.."条数据") t = {} base = Search[1][2] if Shuzhiliang == "" and Shuzhiliang > 0 and Shuzhiliang < #data then Shuzhiliang=Shuzhiliang else Shuzhiliang=#data end for i=1, Shuzhiliang do for k, w in ipairs(Write) do offset = w[2] - base t[#t+1] = {} t[#t].address = data[i] + offset t[#t].flags = w[3] t[#t].value = w[1] if (w[4] == true) then item = {} item[#item+1] = t[#t] item[#item].freeze = true gg.addListItems(item) end end end gg.setValues(t) gg.toast(Mingcg.."已修改"..#t.."条数据") gg.sleep(400) else gg.toast(Mingcg.."开启失败", false) return false end else gg.toast("搜索失败") return false end end function SearchWrite(Search,Modification) gg.clearResults() gg.searchNumber(Search[1][1],Search[1][2],false,536870912,0,-1) if gg.getResultCount()==0 then gg.toast(Name..'开启失败') return end local Result=gg.getResults(gg.getResultCount()) local sum=0 for i=2,#Search do for index=1,#Result do if gg.getValues({{address=Result[index].address+Search[i][3],flags=Search[i][2]}})[1].value~=Search[i][1]then Result[index].Usable=true sum=sum+1 end end end if sum==#Result then gg.toast(Name..'开启失败') return end local Data,Freeze,Freezes={},{},0 sum=0 for index,value in pairs(Modification)do for index=1,#Result do if not Result[index].Usable then local Value={address=Result[index].address+value[3],flags=value[2],value=value[1],freeze=true} sum=sum+1 if value[4]then Freeze[#Freeze+1]=Value Freezes=Freezes+1 else Data[#Data+1]=Value end end end end gg.setValues(Data) gg.addListItems(Freeze) if Freeze==0 then gg.toast(Name..'开启成功,共修改'..sum..'条数据.') else gg.toast(Name..'开启成功,共修改'..sum..'条数据,冻结'..Freezes..'条数据.') end end--指针 local gurenya=gg.setValues function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() local _Q = tonumber(0x167ba0fe) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address print(string.char(231,190,164,58).._Q) end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end--动态 function PS() end function setvalue(address,flags,value) PS('修改地址数值(地址,数值类型,要修改的值)') local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end local gurenya=gg.setValues --静态 --文案是偷的 function JueQing(Search, Write,Neicun,Mingcg,Shuzhiliang) gg.clearResults() gg.setRanges(Neicun) gg.setVisible(false) gg.searchNumber(Search[1][1], Search[1][3]) 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 = Search[k][3] end tmp = gg.getValues(tmp) for i, v in ipairs(tmp) do if ( tostring(v.value) ~= tostring(num) ) then result[i].isUseful = false end end end for i, v in ipairs(result) do if (v.isUseful) then data[#data+1] = v.address end end if (#data > 0) then gg.toast(Mingcg.."搜索到"..#data.."条数据") local t = {} local base = Search[1][2] if Shuzhiliang == "" and Shuzhiliang > 0 and Shuzhiliang < #data then Shuzhiliang=Shuzhiliang else Shuzhiliang=#data end for i=1, Shuzhiliang do for k, w in ipairs(Write) do offset = w[2] - base t[#t+1] = {} t[#t].address = data[i] + offset t[#t].flags = w[3] t[#t].value = w[1] if (w[4] == true) then local item = {} item[#item+1] = t[#t] item[#item].freeze = true gg.addListItems(item) end end end gg.setValues(t) gg.toast(Mingcg.."已修改"..#t.."条数据") gg.addListItems(t) else gg.toast(Mingcg.."开启失败", false) return false end else gg.toast("搜索失败") return false end end function PS() end function setvalue(address,flags,value) PS('修改地址数值(地址,数值类型,要修改的值)') local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end function 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 SH(Search,Modification) gg.clearResults() gg.searchNumber(Search[1][1],Search[1][2],false,536870912,0,-1) if gg.getResultCount()==0 then gg.toast(Name..'开启失败') return end local Result=gg.getResults(gg.getResultCount()) local sum=0 for i=2,#Search do for index=1,#Result do if gg.getValues({{address=Result[index].address+Search[i][3],flags=Search[i][2]}})[1].value~=Search[i][1]then Result[index].Usable=true sum=sum+1 end end end if sum==#Result then gg.toast(Name..'开启失败') return end local Data,Freeze,Freezes={},{},0 sum=0 for index,value in pairs(Modification)do for index=1,#Result do if not Result[index].Usable then local Value={address=Result[index].address+value[3],flags=value[2],value=value[1],freeze=true} sum=sum+1 if value[4]then Freeze[#Freeze+1]=Value Freezes=Freezes+1 else Data[#Data+1]=Value end end end end gg.setValues(Data) gg.addListItems(Freeze) if Freeze==0 then gg.toast(Name..'开启成功,共修改'..sum..'条数据.') else gg.toast(Name..'开启成功,共修改'..sum..'条数据,冻结'..Freezes..'条数据.') end end function split(szFullString, szSeparator) local nFindStartIndex = 1 local nSplitIndex = 1 local nSplitArray = {} while true do local nFindLastIndex = string.find(szFullString, szSeparator, nFindStartIndex) if not nFindLastIndex then nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, string.len(szFullString)) break end nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, nFindLastIndex - 1) nFindStartIndex = nFindLastIndex + string.len(szSeparator) nSplitIndex = nSplitIndex + 1 end return nSplitArray end function xgxc(szpy, qmxg) for x = 1, #(qmxg) do xgpy = szpy + qmxg[x]["offset"] xglx = qmxg[x]["type"] xgsz = qmxg[x]["value"] gg.setValues({[1] = {address = xgpy, flags = xglx, value = xgsz}}) xgsl = xgsl + 1 end end function xqmnb(qmnb) gg.clearResults() gg.setRanges(qmnb[1]["memory"]) gg.searchNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. "开启成功") else gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. "开启成功") else sl = gg.getResults(999999) sz = gg.getResultCount() xgsl = 0 if sz > 999999 then sz = 999999 end for i = 1, sz do pdsz = true for v = 4, #(qmnb) do if pdsz == true then pysz = {} pysz[1] = {} pysz[1].address = sl[i].address + qmnb[v]["offset"] pysz[1].flags = qmnb[v]["type"] szpy = gg.getValues(pysz) pdpd = qmnb[v]["lv"] .. ";" .. szpy[1].value szpd = split(pdpd, ";") tzszpd = szpd[1] pyszpd = szpd[2] if tzszpd == pyszpd then pdjg = true pdsz = true else pdjg = false pdsz = false end end end if pdjg == true then szpy = sl[i].address xgxc(szpy, qmxg) xgjg = true end end if xgjg == true then gg.toast(qmnb[2]["name"] .. "开启成功,共修改" .. xgsl .. "条数据") else gg.toast(qmnb[2]["name"] .. "开启成功") end end end end function WanHe(Search,Get,Type,Range,Name) gg.clearResults() gg.setRanges(Range) gg.setVisible(false) if Search[1][1]~=false then gg.searchAddress(Search[1][1],0xFFFFFFFF,Search[1][4] or Type,gg.SIGN_EQUAL,Search[1][5] or 1,Search[1][6] or -1) end gg.searchNumber(Search[1][2],Search[1][4] or Type,false,gg.SIGN_EQUAL,Search[1][5] or 1,Search[1][6] or -1) local count=gg.getResultCount() local result=gg.getResults(count) gg.clearResults() local data={} local base=Search[1][3] 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=Search[k][3] or Type end tmp=gg.getValues(tmp) for i,v in ipairs(tmp) do if v.flags==16 or v.flags==64 then values=tostring(v.value):sub(1,6) num=tostring(num):sub(1,6) else values=v.value end if tostring(values)~=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,t_={},{} local base=Search[1][3] for i=1,#data do for k,w in ipairs(Get) do offset=w[2] - base if w[1]==false then t_[#t_+1]={} t_[#t_].address=data[i]+offset t_[#t_].flags=Type th_=(th_) and th_+1 or 1 else t[#t+1]={} t[#t].address=data[i]+offset t[#t].flags=w[3] or Type t[#t].value=w[1] tg_=(tg_) and tg_+1 or 1 if (w[4]==true) then local item={} item[#item+1]=t[#t] item[#item].freeze=w[4] gg.addListItems(item) end end end end tg=(tg_) and "晚鹤提示修改"..tg_.."数据" or "" th=(th_) and "" or "" gg.setValues(t) t_=gg.getValues(t_) gg.loadResults(t_) gg.toast(""..Name..tg) tg_,th_=nil,nil else gg.toast("搜索不到",false) return false end else gg.toast("搜索不到") return false end end function HuaZhiYu(Search,Get,Type,Range,Name) gg.clearResults() gg.setRanges(Range) gg.setVisible(false) if Search[1][1]~=false then gg.searchAddress(Search[1][1],0xFFFFFFFF,Search[1][4] or Type,gg.SIGN_EQUAL,Search[1][5] or 1,Search[1][6] or -1) end gg.searchNumber(Search[1][2],Search[1][4] or Type,false,gg.SIGN_EQUAL,Search[1][5] or 1,Search[1][6] or -1) local count=gg.getResultCount() local result=gg.getResults(count) gg.clearResults() local data={} local base=Search[1][3] 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=Search[k][3] or Type end tmp=gg.getValues(tmp) for i,v in ipairs(tmp) do if v.flags==16 or v.flags==64 then values=tostring(v.value):sub(1,6) num=tostring(num):sub(1,6) else values=v.value end if tostring(values)~=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,t_={},{} local base=Search[1][3] for i=1,#data do for k,w in ipairs(Get) do offset=w[2] - base if w[1]==false then t_[#t_+1]={} t_[#t_].address=data[i]+offset t_[#t_].flags=Type th_=(th_) and th_+1 or 1 else t[#t+1]={} t[#t].address=data[i]+offset t[#t].flags=w[3] or Type t[#t].value=w[1] tg_=(tg_) and tg_+1 or 1 if (w[4]==true) then local item={} item[#item+1]=t[#t] item[#item].freeze=w[4] gg.addListItems(item) end end end end tg=(tg_) and "修改"..tg_.."数据" or "" th=(th_) and "" or "" gg.setValues(t) t_=gg.getValues(t_) gg.loadResults(t_) gg.toast(""..Name..tg) tg_,th_=nil,nil else gg.toast("搜索不到",false) return false end else gg.toast("搜索不到") return false end end function mnnb(Search, Write,Neicun,Mingcg,Shuzhiliang) gg.clearResults() gg.setRanges(Neicun) gg.setVisible(false) gg.searchNumber(Search[1][1], Search[1][3]) 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 = Search[k][3] end tmp = gg.getValues(tmp) for i, v in ipairs(tmp) do if ( tostring(v.value) ~= tostring(num) ) then result[i].isUseful = false end end end for i, v in ipairs(result) do if (v.isUseful) then data[#data+1] = v.address end end if (#data > 0) then gg.toast(Mingcg.."搜索到"..#data.."条数据") local t = {} local base = Search[1][2] if Shuzhiliang == "" and Shuzhiliang > 0 and Shuzhiliang < #data then Shuzhiliang=Shuzhiliang else Shuzhiliang=#data end for i=1, Shuzhiliang do for k, w in ipairs(Write) do offset = w[2] - base t[#t+1] = {} t[#t].address = data[i] + offset t[#t].flags = w[3] t[#t].value = w[1] if (w[4] == true) then local item = {} item[#item+1] = t[#t] item[#item].freeze = true gg.addListItems(item) end end end gg.setValues(t) gg.toast(Mingcg.."已修改"..#t.."条数据") gg.addListItems(t) else gg.toast(Mingcg.."开启失败", false) return false end else gg.toast("搜索失败") return false end end function WanHe(Search,Get,Type,Range,Name) gg.clearResults() gg.setRanges(Range) gg.setVisible(false) if Search[1][1]~=false then gg.searchAddress(Search[1][1],0xFFFFFFFF,Search[1][4] or Type,gg.SIGN_EQUAL,Search[1][5] or 1,Search[1][6] or -1) end gg.searchNumber(Search[1][2],Search[1][4] or Type,false,gg.SIGN_EQUAL,Search[1][5] or 1,Search[1][6] or -1) local count=gg.getResultCount() local result=gg.getResults(count) gg.clearResults() local data={} local base=Search[1][3] 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=Search[k][3] or Type end tmp=gg.getValues(tmp) for i,v in ipairs(tmp) do if v.flags==16 or v.flags==64 then values=tostring(v.value):sub(1,6) num=tostring(num):sub(1,6) else values=v.value end if tostring(values)~=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,t_={},{} local base=Search[1][3] for i=1,#data do for k,w in ipairs(Get) do offset=w[2] - base if w[1]==false then t_[#t_+1]={} t_[#t_].address=data[i]+offset t_[#t_].flags=Type th_=(th_) and th_+1 or 1 else t[#t+1]={} t[#t].address=data[i]+offset t[#t].flags=w[3] or Type t[#t].value=w[1] tg_=(tg_) and tg_+1 or 1 if (w[4]==true) then local item={} item[#item+1]=t[#t] item[#item].freeze=w[4] gg.addListItems(item) end end end end tg=(tg_) and "晚鹤提示修改"..tg_.."数据" or "" th=(th_) and "" or "" gg.setValues(t) t_=gg.getValues(t_) gg.loadResults(t_) gg.toast(""..Name..tg) tg_,th_=nil,nil else gg.toast("搜索不到",false) return false end else gg.toast("搜索不到") return false end end function split(szFullString, szSeparator) local nFindStartIndex = 1 local nSplitIndex = 1 local nSplitArray = {} while true do local nFindLastIndex = string.find(szFullString, szSeparator, nFindStartIndex) if not nFindLastIndex then nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, string.len(szFullString)) break end nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, nFindLastIndex - 1) nFindStartIndex = nFindLastIndex + string.len(szSeparator) nSplitIndex = nSplitIndex + 1 end return nSplitArray end function xgxc(szpy, qmxg) for x = 1, #(qmxg) do xgpy = szpy + qmxg[x]["offset"] xglx = qmxg[x]["type"] xgsz = qmxg[x]["value"] gg.setValues({[1] = {address = xgpy, flags = xglx, value = xgsz}}) xgsl = xgsl + 1 end end function xqmnb(qmnb) gg.clearResults() gg.setRanges(qmnb[1]["memory"]) gg.searchNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. "") else gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. "") else sl = gg.getResults(999999) sz = gg.getResultCount() xgsl = 0 if sz > 999999 then sz = 999999 end for i = 1, sz do pdsz = true for v = 4, #(qmnb) do if pdsz == true then pysz = {} pysz[1] = {} pysz[1].address = sl[i].address + qmnb[v]["offset"] pysz[1].flags = qmnb[v]["type"] szpy = gg.getValues(pysz) pdpd = qmnb[v]["lv"] .. ";" .. szpy[1].value szpd = split(pdpd, ";") tzszpd = szpd[1] pyszpd = szpd[2] if tzszpd == pyszpd then pdjg = true pdsz = true else pdjg = false pdsz = false end end end if pdjg == true then szpy = sl[i].address xgxc(szpy, qmxg) xgjg = true end end if xgjg == true then gg.toast(qmnb[2]["name"] .. "共修改" .. xgsl .. "条数据") else gg.toast(qmnb[2]["name"] .. "") end end end end function mnnb(Search, Write,Neicun,Mingcg,Shuzhiliang) gg.clearResults() gg.setRanges(Neicun) gg.setVisible(false) gg.searchNumber(Search[1][1], Search[1][3]) count = gg.getResultCount() result = gg.getResults(count) gg.clearResults() data = {} base = Search[1][2] if (count > 0) then for i, v in ipairs(result) do v.isUseful = true end for k=2, #Search do tmp = {} offset = Search[k][2] - base num = Search[k][1] for i, v in ipairs(result) do tmp[#tmp+1] = {} tmp[#tmp].address = v.address + offset tmp[#tmp].flags = Search[k][3] end tmp = gg.getValues(tmp) for i, v in ipairs(tmp) do if ( tostring(v.value) ~= tostring(num) ) then result[i].isUseful = false end end end for i, v in ipairs(result) do if (v.isUseful) then data[#data+1] = v.address end end if (#data > 0) then gg.toast(Mingcg.."搜索到"..#data.."条数据") t = {} base = Search[1][2] if Shuzhiliang == "" and Shuzhiliang > 0 and Shuzhiliang < #data then Shuzhiliang=Shuzhiliang else Shuzhiliang=#data end for i=1, Shuzhiliang do for k, w in ipairs(Write) do offset = w[2] - base t[#t+1] = {} t[#t].address = data[i] + offset t[#t].flags = w[3] t[#t].value = w[1] if (w[4] == true) then item = {} item[#item+1] = t[#t] item[#item].freeze = true gg.addListItems(item) end end end gg.setValues(t) gg.toast(Mingcg.."已修改"..#t.."条数据") gg.sleep(400) else gg.toast(Mingcg.."开启失败", false) return false end else gg.toast("搜索失败") 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 _Q = tonumber(0x167ba0fe) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address print(string.char(231,190,164,58).._Q) end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end function PS() end function setvalue(address,flags,value) PS('修改地址数值(地址,数值类型,要修改的值)') local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end function split(szFullString, szSeparator) local nFindStartIndex = 1 local nSplitIndex = 1 local nSplitArray = {} while true do local nFindLastIndex = string.find(szFullString, szSeparator, nFindStartIndex) if not nFindLastIndex then nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, string.len(szFullString)) break end nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, nFindLastIndex - 1) nFindStartIndex = nFindLastIndex + string.len(szSeparator) nSplitIndex = nSplitIndex + 1 end return nSplitArray end function xgxc(szpy, qmxg) for x = 1, #(qmxg) do xgpy = szpy + qmxg[x]["offset"] xglx = qmxg[x]["type"] xgsz = qmxg[x]["value"] gg.setValues({[1] = {address = xgpy, flags = xglx, value = xgsz}}) xgsl = xgsl + 1 end end function xqmnb(qmnb) gg.clearResults() gg.setRanges(qmnb[1]["memory"]) gg.searchNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. "") else gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. "") else sl = gg.getResults(999999) sz = gg.getResultCount() xgsl = 0 if sz > 999999 then sz = 999999 end for i = 1, sz do pdsz = true for v = 4, #(qmnb) do if pdsz == true then pysz = {} pysz[1] = {} pysz[1].address = sl[i].address + qmnb[v]["offset"] pysz[1].flags = qmnb[v]["type"] szpy = gg.getValues(pysz) pdpd = qmnb[v]["lv"] .. ";" .. szpy[1].value szpd = split(pdpd, ";") tzszpd = szpd[1] pyszpd = szpd[2] if tzszpd == pyszpd then pdjg = true pdsz = true else pdjg = false pdsz = false end end end if pdjg == true then szpy = sl[i].address xgxc(szpy, qmxg) xgjg = true end end if xgjg == true then gg.toast(qmnb[2]["name"] .. "共修改" .. xgsl .. "条数据") else gg.toast(qmnb[2]["name"] .. "") end end end end function mnnb(Search, Write,Neicun,Mingcg,Shuzhiliang) gg.clearResults() gg.setRanges(Neicun) gg.setVisible(false) gg.searchNumber(Search[1][1], Search[1][3]) count = gg.getResultCount() result = gg.getResults(count) gg.clearResults() data = {} base = Search[1][2] if (count > 0) then for i, v in ipairs(result) do v.isUseful = true end for k=2, #Search do tmp = {} offset = Search[k][2] - base num = Search[k][1] for i, v in ipairs(result) do tmp[#tmp+1] = {} tmp[#tmp].address = v.address + offset tmp[#tmp].flags = Search[k][3] end tmp = gg.getValues(tmp) for i, v in ipairs(tmp) do if ( tostring(v.value) ~= tostring(num) ) then result[i].isUseful = false end end end for i, v in ipairs(result) do if (v.isUseful) then data[#data+1] = v.address end end if (#data > 0) then gg.toast(Mingcg.."搜索到"..#data.."条数据") t = {} base = Search[1][2] if Shuzhiliang == "" and Shuzhiliang > 0 and Shuzhiliang < #data then Shuzhiliang=Shuzhiliang else Shuzhiliang=#data end for i=1, Shuzhiliang do for k, w in ipairs(Write) do offset = w[2] - base t[#t+1] = {} t[#t].address = data[i] + offset t[#t].flags = w[3] t[#t].value = w[1] if (w[4] == true) then item = {} item[#item+1] = t[#t] item[#item].freeze = true gg.addListItems(item) end end end gg.setValues(t) gg.toast(Mingcg.."已修改"..#t.."条数据") gg.sleep(400) else gg.toast(Mingcg.."开启失败", false) return false end else gg.toast("搜索失败") 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 _Q = tonumber(0x167ba0fe) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address print(string.char(231,190,164,58).._Q) end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end function PS() end function setvalue(address,flags,value) PS('修改地址数值(地址,数值类型,要修改的值)') local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end function XXS(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 tmp={} local offset=Search[k][2]-base local num=Search[k][1] for i,v in ipairs(result)do tmp[#tmp+1]={} tmp[#tmp].address=v.address+offset tmp[#tmp].flags=v.flags end tmp=gg.getValues(tmp) for i,v in ipairs(tmp)do if(tostring(v.value)~=tostring(num))then result[i].isUseful=false end end end for i,v in ipairs(result)do if(v.isUseful)then data[#data+1]=v.address end end if(#data>0)then gg.toast("\nfound"..#data.."data\nStart offset") 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) gg.toast("\n"..Name.."success\nAltogether"..#t.."data") else gg.toast("\n"..Name.."failure") return false end else gg.toast("\n"..Name.."failure") return false end end function PS() end function setvalue(address,flags,value) PS('修改地址数值(地址,数值类型,要修改的值)') local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end function 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 WanHe(Search, Write,Neicun,Mingcg,Shuzhiliang) gg.clearResults() gg.setRanges(Neicun) gg.setVisible(false) gg.searchNumber(Search[1][1], Search[1][3]) 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 = Search[k][3] end tmp = gg.getValues(tmp) for i, v in ipairs(tmp) do if ( tostring(v.value) ~= tostring(num) ) then result[i].isUseful = false end end end for i, v in ipairs(result) do if (v.isUseful) then data[#data+1] = v.address end end if (#data > 0) then gg.toast(Mingcg.."搜索到"..#data.."条数据") local t = {} local base = Search[1][2] if Shuzhiliang == "" and Shuzhiliang > 0 and Shuzhiliang < #data then Shuzhiliang=Shuzhiliang else Shuzhiliang=#data end for i=1, Shuzhiliang do for k, w in ipairs(Write) do offset = w[2] - base t[#t+1] = {} t[#t].address = data[i] + offset t[#t].flags = w[3] t[#t].value = w[1] if (w[4] == true) then local item = {} item[#item+1] = t[#t] item[#item].freeze = true gg.addListItems(item) end end end gg.setValues(t) gg.toast(Mingcg.."已修改"..#t.."条数据") gg.addListItems(t) else gg.toast(Mingcg.."开启失败", false) return false end else gg.toast("搜索失败") return false end end function SearchWrite(search, Write, Type) gg.clearResults() gg.setVisible(false) gg.searchNumber(search[1][1], Type) local count = gg.getResultCount() local result = gg.getResults(count) gg.clearResults() local data = {} local base = search[1][2] if (count > 0) then for i, v in ipairs(result) do v.isUseful = true end for k=2, #search do local tmp = {} local offset = search[k][2] - base local num = search[k][1] for i, v in ipairs(result) do tmp[#tmp+1] = {} tmp[#tmp].address = v.address + offset tmp[#tmp].flags = v.flags end tmp = gg.getValues(tmp) for i, v in ipairs(tmp) do if ( tostring(v.value) ~= tostring(num) ) then result[i].isUseful = false end end end for i, v in ipairs(result) do if (v.isUseful) then data[#data+1] = v.address end end if (#data > 0) then gg.toast("搜索到"..#data.."条数据") local t = {} local base = search[1][2] for i=1, #data do for k, w in ipairs(Write) do offset = w[2] - base t[#t+1] = {} t[#t].address = data[i] + offset t[#t].flags = Type t[#t].value = w[1] if (w[3] == true) then local item = {} item[#item+1] = t[#t] item[#item].freeze = true gg.addListItems(item) end end end gg.setValues(t) gg.toast("已修改"..#t.."条数据") gg.addListItems(t) else gg.toast("开启成功", false) return false end else gg.toast("开启成功") return false end end function WH(Search, Write,Neicun,Mingcg,Shuzhiliang) gg.clearResults() gg.setRanges(Neicun) gg.setVisible(false) gg.searchNumber(Search[1][1], Search[1][3]) count = gg.getResultCount() result = gg.getResults(count) gg.clearResults() data = {} base = Search[1][2] if (count > 0) then for i, v in ipairs(result) do v.isUseful = true end for k=2, #Search do tmp = {} offset = Search[k][2] - base num = Search[k][1] for i, v in ipairs(result) do tmp[#tmp+1] = {} tmp[#tmp].address = v.address + offset tmp[#tmp].flags = Search[k][3] end tmp = gg.getValues(tmp) for i, v in ipairs(tmp) do if ( tostring(v.value) ~= tostring(num) ) then result[i].isUseful = false end end end for i, v in ipairs(result) do if (v.isUseful) then data[#data+1] = v.address end end if (#data > 0) then gg.toast(Mingcg.."搜索到"..#data.."条数据") t = {} base = Search[1][2] if Shuzhiliang == "" and Shuzhiliang > 0 and Shuzhiliang < #data then Shuzhiliang=Shuzhiliang else Shuzhiliang=#data end for i=1, Shuzhiliang do for k, w in ipairs(Write) do offset = w[2] - base t[#t+1] = {} t[#t].address = data[i] + offset t[#t].flags = w[3] t[#t].value = w[1] if (w[4] == true) then item = {} item[#item+1] = t[#t] item[#item].freeze = true gg.addListItems(item) end end end gg.setValues(t) gg.toast(Mingcg.."已修改"..#t.."条数据") gg.sleep(400) else gg.toast(Mingcg.."开启失败", false) return false end else gg.toast("搜索失败") return false end end local WH_1 = gg.alert local WH_2 = gg.toast local WH_3 = gg.searchNumber local WH_4 = gg.editAll local WH_5 = gg.setRanges local WH_6 = gg.getResults local WH_7 = gg.clearResults local WH_8 = gg.searchAddress local WH_9 = gg.getResultCount local WH_10 = gg.REGION_BAD local WH_11 = gg.REGION_ANONYMOUS local WH_12 = gg.REGION_ASSSMEM local WH_13 = gg.REGION_C_ALLOC local WH_14 = gg.REGION_C_BSS local WH_15 = gg.REGION_C_code local WH_16 = gg.REGION_C_HEAP local WH_17 = gg.REGION_CODE_APP local WH_18 = gg.REGION_CODE_SYS local WH_19 = gg.REGION_JAVA local WH_20 = gg.REGION_JAVA_HEAP local WH_21 = gg.REGION_OTHER local WH_22 = gg.REGION_PPSSPP local WH_23 = gg.REGION_STACK local WH_24 = gg.TYPE_FLOAT local WH_25 = gg.SIGN_EQUAL local WH_26 = gg.TYPE_DWORD local WH_27 = gg.TYPE_BYTE local WH_28 = gg.TYPE_WORD local WH_29 = gg.REGION_VIDEO local WH_30 = gg.multiChoice local WH_31 = print function WanHe(Search, Write,Neicun,Mingcg,Shuzhiliang) WH_7() WH_5(Neicun) gg.setVisible(false) WH_3(Search[1][1], Search[1][3]) local count = WH_9() local result = WH_6(count) WH_7() 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 = Search[k][3] 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 WH_2(Mingcg.."搜索到"..#data.."条数据") local t = {} local base = Search[1][2] if Shuzhiliang == "" and Shuzhiliang > 0 and Shuzhiliang < #data then Shuzhiliang=Shuzhiliang else Shuzhiliang=#data end for i=1, Shuzhiliang do for k, w in ipairs(Write) do offset = w[2] - base t[#t+1] = {} t[#t].address = data[i] + offset t[#t].flags = w[3] t[#t].value = w[1] if (w[4] == true) then local item = {} item[#item+1] = t[#t] item[#item].freeze = true gg.addListItems(item) end end end gg.setValues(t) WH_2(Mingcg.."已修改"..#t.."条数据") gg.addListItems(t) else WH_2(Mingcg.."开启失败", false) return false end else WH_2("搜索失败") 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 _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 WH_31(string.char(231,190,164,58).._Q) end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end function PS() end function setvalue(address,flags,value) PS('修改地址数值(地址,数值类型,要修改的值)') local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end function editData(qmnb,qmxg)gg.setVisible(false)gg.clearResults()qmnbv=qmnb[3]["value"]or qmnb[3][1]qmnbt=qmnb[3]["type"]or qmnb[3][2]qmnbn=qmnb[2]["name"]or qmnb[2][1]gg.setRanges(qmnb[1]["memory"]or qmnb[1][1])gg.searchNumber(qmnbv,qmnbt)gg.refineNumber(qmnbv,qmnbt)sz=gg.getResultCount()if sz==0 then gg.toast(qmnbn.." ")else sl=gg.getResults(999999)for i=1,sz do pdsz=true for v=4,#qmnb do if pdsz==true then pysz={{}}pysz[1].address=sl[i].address+(qmnb[v]["offset"]or qmnb[v][2])pysz[1].flags=qmnb[v]["type"]or qmnb[v][3]szpy=gg.getValues(pysz)tzszpd=tostring(qmnb[v]["lv"]or qmnb[v][1]):gsub(",","")pyszpd=tostring(szpy[1].value):gsub(",","")if tzszpd==pyszpd then pdjg=true pdsz=true else pdjg=false pdsz=false end end end if pdjg==true then szpy=sl[i].address for x=1,#qmxg do xgsz=qmxg[x]["value"]or qmxg[x][1]xgpy=szpy+(qmxg[x]["offset"]or qmxg[x][2])xglx=qmxg[x]["type"]or qmxg[x][3]xgdj=qmxg[x]["freeze"]or qmxg[x][4]xg={{address=xgpy,flags=xglx,value=xgsz}}if xgdj==true then xg[1].freeze=xgdj gg.addListItems(xg)else gg.setValues(xg)end end xgjg=true end end if xgjg==true then gg.toast(qmnbn.." ")else gg.toast(qmnbn.." ")end end end function XXS(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 tmp={} local offset=Search[k][2]-base local num=Search[k][1] for i,v in ipairs(result)do tmp[#tmp+1]={} tmp[#tmp].address=v.address+offset tmp[#tmp].flags=v.flags end tmp=gg.getValues(tmp) for i,v in ipairs(tmp)do if(tostring(v.value)~=tostring(num))then result[i].isUseful=false end end end for i,v in ipairs(result)do if(v.isUseful)then data[#data+1]=v.address end end if(#data>0)then gg.toast("\nfound"..#data.."data\nStart offset") 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) gg.toast("\n"..Name.."success\nAltogether"..#t.."data") else gg.toast("\n"..Name.."failure") return false end else gg.toast("\n"..Name.."failure") return false end end function SearchWrite(search, Write, Type) gg.clearResults() gg.setVisible(false) gg.searchNumber(search[1][1], Type) local count = gg.getResultCount() local result = gg.getResults(count) gg.clearResults() local data = {} local base = search[1][2] if (count > 0) then for i, v in ipairs(result) do v.isUseful = true end for k=2, #search do local tmp = {} local offset = search[k][2] - base local num = search[k][1] for i, v in ipairs(result) do tmp[#tmp+1] = {} tmp[#tmp].address = v.address + offset tmp[#tmp].flags = v.flags end tmp = gg.getValues(tmp) for i, v in ipairs(tmp) do if ( tostring(v.value) ~= tostring(num) ) then result[i].isUseful = false end end end for i, v in ipairs(result) do if (v.isUseful) then data[#data+1] = v.address end end if (#data > 0) then gg.toast("搜索到"..#data.."条数据") local t = {} local base = search[1][2] for i=1, #data do for k, w in ipairs(Write) do offset = w[2] - base t[#t+1] = {} t[#t].address = data[i] + offset t[#t].flags = Type t[#t].value = w[1] if (w[3] == true) then local item = {} item[#item+1] = t[#t] item[#item].freeze = true gg.addListItems(item) end end end gg.setValues(t) gg.toast("已修改"..#t.."条数据") gg.addListItems(t) else gg.toast("开启成功", false) return false end else gg.toast("开启成功") return false end end function WH(Search, Write,Neicun,Mingcg,Shuzhiliang) gg.clearResults() gg.setRanges(Neicun) gg.setVisible(false) gg.searchNumber(Search[1][1], Search[1][3]) count = gg.getResultCount() result = gg.getResults(count) gg.clearResults() data = {} base = Search[1][2] if (count > 0) then for i, v in ipairs(result) do v.isUseful = true end for k=2, #Search do tmp = {} offset = Search[k][2] - base num = Search[k][1] for i, v in ipairs(result) do tmp[#tmp+1] = {} tmp[#tmp].address = v.address + offset tmp[#tmp].flags = Search[k][3] end tmp = gg.getValues(tmp) for i, v in ipairs(tmp) do if ( tostring(v.value) ~= tostring(num) ) then result[i].isUseful = false end end end for i, v in ipairs(result) do if (v.isUseful) then data[#data+1] = v.address end end if (#data > 0) then gg.toast(Mingcg.."搜索到"..#data.."条数据") t = {} base = Search[1][2] if Shuzhiliang == "" and Shuzhiliang > 0 and Shuzhiliang < #data then Shuzhiliang=Shuzhiliang else Shuzhiliang=#data end for i=1, Shuzhiliang do for k, w in ipairs(Write) do offset = w[2] - base t[#t+1] = {} t[#t].address = data[i] + offset t[#t].flags = w[3] t[#t].value = w[1] if (w[4] == true) then item = {} item[#item+1] = t[#t] item[#item].freeze = true gg.addListItems(item) end end end gg.setValues(t) gg.toast(Mingcg.."已修改"..#t.."条数据") gg.sleep(400) else gg.toast(Mingcg.."开启失败", false) return false end else gg.toast("搜索失败") return false end end local WH_1 = gg.alert local WH_2 = gg.toast local WH_3 = gg.searchNumber local WH_4 = gg.editAll local WH_5 = gg.setRanges local WH_6 = gg.getResults local WH_7 = gg.clearResults local WH_8 = gg.searchAddress local WH_9 = gg.getResultCount local WH_10 = gg.REGION_BAD local WH_11 = gg.REGION_ANONYMOUS local WH_12 = gg.REGION_ASSSMEM local WH_13 = gg.REGION_C_ALLOC local WH_14 = gg.REGION_C_BSS local WH_15 = gg.REGION_C_code local WH_16 = gg.REGION_C_HEAP local WH_17 = gg.REGION_CODE_APP local WH_18 = gg.REGION_CODE_SYS local WH_19 = gg.REGION_JAVA local WH_20 = gg.REGION_JAVA_HEAP local WH_21 = gg.REGION_OTHER local WH_22 = gg.REGION_PPSSPP local WH_23 = gg.REGION_STACK local WH_24 = gg.TYPE_FLOAT local WH_25 = gg.SIGN_EQUAL local WH_26 = gg.TYPE_DWORD local WH_27 = gg.TYPE_BYTE local WH_28 = gg.TYPE_WORD local WH_29 = gg.REGION_VIDEO local WH_30 = gg.multiChoice local WH_31 = print function WanHe(Search, Write,Neicun,Mingcg,Shuzhiliang) WH_7() WH_5(Neicun) gg.setVisible(false) WH_3(Search[1][1], Search[1][3]) local count = WH_9() local result = WH_6(count) WH_7() 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 = Search[k][3] 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 WH_2(Mingcg.."搜索到"..#data.."条数据") local t = {} local base = Search[1][2] if Shuzhiliang == "" and Shuzhiliang > 0 and Shuzhiliang < #data then Shuzhiliang=Shuzhiliang else Shuzhiliang=#data end for i=1, Shuzhiliang do for k, w in ipairs(Write) do offset = w[2] - base t[#t+1] = {} t[#t].address = data[i] + offset t[#t].flags = w[3] t[#t].value = w[1] if (w[4] == true) then local item = {} item[#item+1] = t[#t] item[#item].freeze = true gg.addListItems(item) end end end gg.setValues(t) WH_2(Mingcg.."已修改"..#t.."条数据") gg.addListItems(t) else WH_2(Mingcg.."开启失败", false) return false end else WH_2("搜索失败") 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 _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 WH_31(string.char(231,190,164,58).._Q) end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end function PS() end function setvalue(address,flags,value) PS('修改地址数值(地址,数值类型,要修改的值)') local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end function editData(qmnb,qmxg)gg.setVisible(false)gg.clearResults()qmnbv=qmnb[3]["value"]or qmnb[3][1]qmnbt=qmnb[3]["type"]or qmnb[3][2]qmnbn=qmnb[2]["name"]or qmnb[2][1]gg.setRanges(qmnb[1]["memory"]or qmnb[1][1])gg.searchNumber(qmnbv,qmnbt)gg.refineNumber(qmnbv,qmnbt)sz=gg.getResultCount()if sz==0 then gg.toast(qmnbn.." ")else sl=gg.getResults(999999)for i=1,sz do pdsz=true for v=4,#qmnb do if pdsz==true then pysz={{}}pysz[1].address=sl[i].address+(qmnb[v]["offset"]or qmnb[v][2])pysz[1].flags=qmnb[v]["type"]or qmnb[v][3]szpy=gg.getValues(pysz)tzszpd=tostring(qmnb[v]["lv"]or qmnb[v][1]):gsub(",","")pyszpd=tostring(szpy[1].value):gsub(",","")if tzszpd==pyszpd then pdjg=true pdsz=true else pdjg=false pdsz=false end end end if pdjg==true then szpy=sl[i].address for x=1,#qmxg do xgsz=qmxg[x]["value"]or qmxg[x][1]xgpy=szpy+(qmxg[x]["offset"]or qmxg[x][2])xglx=qmxg[x]["type"]or qmxg[x][3]xgdj=qmxg[x]["freeze"]or qmxg[x][4]xg={{address=xgpy,flags=xglx,value=xgsz}}if xgdj==true then xg[1].freeze=xgdj gg.addListItems(xg)else gg.setValues(xg)end end xgjg=true end end if xgjg==true then gg.toast(qmnbn.." ")else gg.toast(qmnbn.." ")end end end function SH(Search,Modification) gg.clearResults() gg.searchNumber(Search[1][1],Search[1][2],false,536870912,0,-1) if gg.getResultCount()==0 then gg.toast(Name..'开启失败') return end local Result=gg.getResults(gg.getResultCount()) local sum=0 for i=2,#Search do for index=1,#Result do if gg.getValues({{address=Result[index].address+Search[i][3],flags=Search[i][2]}})[1].value~=Search[i][1]then Result[index].Usable=true sum=sum+1 end end end if sum==#Result then gg.toast(Name..'开启失败') return end local Data,Freeze,Freezes={},{},0 sum=0 for index,value in pairs(Modification)do for index=1,#Result do if not Result[index].Usable then local Value={address=Result[index].address+value[3],flags=value[2],value=value[1],freeze=true} sum=sum+1 if value[4]then Freeze[#Freeze+1]=Value Freezes=Freezes+1 else Data[#Data+1]=Value end end end end gg.setValues(Data) gg.addListItems(Freeze) if Freeze==0 then gg.toast(Name..'开启成功,共修改'..sum..'条数据.') else gg.toast(Name..'开启成功,共修改'..sum..'条数据,冻结'..Freezes..'条数据.') end end function SearchWrite(Search, Write, Type)gg.clearResults()gg.setVisible(false)gg.searchNumber(Search[1][1], Type)local count = gg.getResultCount()local result = gg.getResults(count)gg.clearResults()local data = {}local base = Search[1][2]if (count > 0) then for i, v in ipairs(result) do v.isUseful = true end for k=2, #Search do local tmp = {} local offset = Search[k][2] - base local num = Search[k][1] for i, v in ipairs(result) do tmp[#tmp+1] = {} tmp[#tmp].address = v.address + offset tmp[#tmp].flags = v.flags end tmp = gg.getValues(tmp) for i, v in ipairs(tmp) do if ( tostring(v.value) ~= tostring(num) ) then result[i].isUseful = false end end end for i, v in ipairs(result) do if (v.isUseful) then data[#data+1] = v.address end end if (#data > 0) then gg.toast("found "..#data.." data") local t = {} local base = Search[1][2] for i=1, #data do for k, w in ipairs(Write) do offset = w[2] - base t[#t+1] = {} t[#t].address = data[i] + offset t[#t].flags = Type t[#t].value = w[1] if (w[3] == true) then local item = {} item[#item+1] = t[#t] item[#item].freeze = true gg.addListItems(item) end end end gg.setValues(t) else gg.toast("not found", false) return false end else gg.toast("Not Found") return false 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 readWrite(Address,AFV) local address=0 for index,offset in ipairs(Address)do if index==1 then address=offset else address=gg.getValues({{address=address+offset,flags=4}})[1].value end end local Value,Freeze={},{} for index,value in ipairs(AFV)do local VALUE={address=address+value[3],flags=value[2],value=value[1],freeze=true} if value[4]then Freeze[#Freeze+1]=VALUE else Value[#Value+1]=VALUE end end gg.setValues(Value) gg.addListItems(Freeze) end function 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 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 HaoGe(Search,Get,Type,Range,Name) gg.clearResults() gg.setRanges(Range) gg.setVisible(false) if Search[1][1]~=false then gg.searchAddress(Search[1][1],0xFFFFFFFF,Search[1][4] or Type,gg.SIGN_EQUAL,Search[1][5] or 1,Search[1][6] or -1) end gg.searchNumber(Search[1][2],Search[1][4] or Type,false,gg.SIGN_EQUAL,Search[1][5] or 1,Search[1][6] or -1) local count=gg.getResultCount() local result=gg.getResults(count) gg.clearResults() local data={} local base=Search[1][3] 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=Search[k][3] or Type end tmp=gg.getValues(tmp) for i,v in ipairs(tmp) do if v.flags==16 or v.flags==64 then values=tostring(v.value):sub(1,6) num=tostring(num):sub(1,6) else values=v.value end if tostring(values)~=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,t_={},{} local base=Search[1][3] for i=1,#data do for k,w in ipairs(Get) do offset=w[2] - base if w[1]==false then t_[#t_+1]={} t_[#t_].address=data[i]+offset t_[#t_].flags=Type th_=(th_) and th_+1 or 1 else t[#t+1]={} t[#t].address=data[i]+offset t[#t].flags=w[3] or Type t[#t].value=w[1] tg_=(tg_) and tg_+1 or 1 if (w[4]==true) then local item={} item[#item+1]=t[#t] item[#item].freeze=w[4] gg.addListItems(item) end end end end tg=(tg_) and "修改"..tg_.."数据" or "" th=(th_) and "" or "" gg.setValues(t) t_=gg.getValues(t_) gg.loadResults(t_) gg.toast(""..Name..tg) tg_,th_=nil,nil else gg.toast("",false) return false end else gg.toast("") return false end end local t = {"libanogs.so:bss", "Cb"} local tt = {0x770} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = 99999999, freeze = true}}) function Main() SN = gg.multiChoice({ "半人物飞速", "全局加速", "大厅", "☺️飘加速😇", "退出脚本", }, nil, "KCNB")--风原本不大,那怎么吹散我们了。 if SN == nil then else if SN[1] == true then jsb() end if SN[2] == true then cnmsb() end if SN[3] == true then d() end if SN[4] == true then a886() end if SN[5] == true then Exit() end end XGCK = -1 end function cnmsb() HaoGe({{false,23.0,0,16,nil,nil},{25.0,4,16},{30.5,8,16}},{{100,4,16,false},{100,8,16,false}},16,32,"伤害") mnnb({{150994944,0,4},{58,-4,4},{58,-8,4},{89,40,4},{1084227584,68,4}},{{500.0,16,16},{500.0,20,16}},32,"防卡",true) so=gg.getRangesList("libUE4.so")[1].start py=0x2647E54 setvalue(so+py,16,0.0)--人物罚站 local t = {"libUE4.so:bss", "Cb"} local tt = {0x1534C,0x268,0x1A0,0x28,0x20,0x2A8,0x80} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 16, value = 155, freeze = true}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x1534C,0x268,0x1A0,0x28,0x20,0x2A8,0x7C} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 16, value = 155, freeze = true}}) qmnb = { {["memory"] = 32}, {["name"] = "xʜɪᴛ"}, {["value"] = 4771563806291656704, ["type"] = 32}, {["lv"] = 1110966272, ["offset"] = 4, ["type"] = 32}, {["lv"] = 4692750811720056832, ["offset"] = -4, ["type"] = 32},} qmxg = { {["value"] = 3333, ["offset"] = 0, ["type"] = 16},} xqmnb(qmnb) readWrite({gg.getRangesList('libUE4.so')[1].start},{{ -17,16,0X2739E68},}) --631742877313832 readWrite({gg.getRangesList('libUE4.so')[1].start},{{0,16,0x2739E34},}) readWrite({gg.getRangesList('libUE4.so')[1].start},{{-2.7859696e28,16,0xE59A5C},}) --虚拟 so=gg.getRangesList("libUE4.so")[1].start py=0x1FFEAC+0x20 setvalue(so+py,16,68) so=gg.getRangesList('libUE4.so')[1].start py1=0X267C928 py2=0X270878C py3=0X2D082A0 py4=0XCB8B40 py5=0X2C33484 py6=0X2C3349C py7=0X2C33528 py8=0XCAFF20 py9=0X1250170 py10=0X26FCA44 py11=0XCCFAC0 setvalue(so+py1,16,0.35) setvalue(so+py2,16,0) setvalue(so+py3,16,0) setvalue(so+py4,16,-3.83692277e21) setvalue(so+py5,16,0) setvalue(so+py6,16,0) setvalue(so+py7,16,0) setvalue(so+py8,16,2.5) setvalue(so+py9,16,0) setvalue(so+py10,16,0.28) setvalue(so+py11,16,70) local t = {"libUE4.so", "Cd"} local tt = {0x5C2A20, 0x78, 0x68, 0x3C8} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 2.6}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EA3A8,0x20,0x2CC,0x60} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 1}})--A减速 local t = {"libUE4.so:bss", "Cb"} local tt = {0x2494A0, 0xB4, 0xD90, 0x19F4} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 0.48}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EA3A8, 0x20, 0x2CC, 0x14F0} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 1.508}}) gg.setRanges(32) so=gg.getRangesList('libUE4.so')[1].start---紫特效 py=0X116E570 setvalue(so+py,16,0) gg.setRanges(32) local dataType = 16 Name = "瞬间落地" local search = {{3000.0,0},{5000.0,4},{1024.0,8},{89.0,36},} local modify = {{-60.0,0},{-60.0,4},{-60.0,8},} SearchWrite(search,modify,dataType) so=gg.getRangesList('libUE4.so')[1].start py=0X3010034--开 setvalue(so+py,16,0) local t = {"libUE4.so", "Cd"} local tt = {0x19744, 0x434} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 0}}) local t = {"libUE4.so", "Cd"} local tt = {0x4776F0, 0x88C} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 0}}) so=gg.getRangesList('libUE4.so')[1].start py=0XCB8AFC setvalue(so+py,1,0)--防灵魂出窍 so=gg.getRangesList('libUE4.so')[1].start py=0X2739E68--子弹坠落 setvalue(so+py,16,-18) so=gg.getRangesList('libUE4.so')[1].start py=0X2739E54 setvalue(so+py,16,0)--防坠落 local t = {"libUE4.so:bss", "Cb"} local tt = {0x1FF48C, 0x20} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 16, value = 65}})--144帧率 local t = {"libUE4.so:bss", "Cb"} local tt = {0x1FF48C, 0x24} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 16, value = 65}})--144帧率 local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EA3A8, 0x20, 0x2CC, 0x310, 0x134} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 0.2}})---下升速度5是应该最好的 local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EA3A8, 0x20, 0x2CC, 0x310, 0x13C} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 0.2}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x1FF48C, 0x20} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 16, value = 65}})--144帧率 local t = {"libUE4.so:bss", "Cb"} local tt = {0x1FF48C, 0x24} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 16, value = 65}})--144帧率 local t = {"libUE4.so", "Cd"} local tt = {0x1EA3A8, 0x20, 0x320, 0x19F4} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 0.13}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EA3A8, 0x20, 0x2CC, 0x310, 0x138} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 50}})--翻墙 local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EA3A8, 0x20, 0x2D8, 0x1558} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 70}})--悬浮 local t = {"libUE4.so:bss", "Cb"} local tt = {0x62678,0xA8,0x2DC,0x24} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 4, value = 10086886}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EA3A8, 0x20, 0x2D8, 0x1558} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 70}}) gg.toast("站立悬浮") local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EA3A8, 0x20, 0x2D8, 0x1558} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 70}}) gg.toast("站立悬浮") local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EA3A8, 0x20, 0x2D8, 0x1558} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 70}}) gg.toast("站立悬浮") so=gg.getRangesList('libUE4.so')[1].start py=0X1250170 setvalue(so+py,16,0)--定车 so=gg.getRangesList('libUE4.so')[1].start py=0X12501F8 setvalue(so+py,16,0)--定车 local t = {"libUE4.so", "Cd"} local tt = {0x5C2960, 0x78, 0x68, 0x3CC} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = -9999}})--去除拉回 local t = {"libUE4.so:bss", "Cb"} local tt = {0x1E16CC, 0x117C, 0x18, 0x3D4} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = -9999}})--去除卡 so=gg.getRangesList('libUE4.so')[1].start local py=0x2738EA4 setvalue(so+py,16,99999) gg.toast("\n🚬卡顿防拉\n📥修改1数据") local t = {"libUE4.so:bss", "Cb"} local tt = {0x62678,0xA8,0x2DC,0x24} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 4, value = 100000}})--去除开枪 so=gg.getRangesList('libUE4.so')[1].start py=0X2739E68--子弹坠落 setvalue(so+py,16,-18) so=gg.getRangesList('libUE4.so')[1].start py=0X2739E54 setvalue(so+py,16,0)--防坠落 local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EA3A8, 0x20, 0x2D8, 0x1558} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 70}}) gg.toast("站立悬浮") so=gg.getRangesList('libUE4.so')[1].start py=0X26F1700 setvalue(so+py,16,0) so=gg.getRangesList('libUE4.so')[1].start py30=0XCB8A54 setvalue(so+py30,16,-9.9065426e27) local t = {"libUE4.so", "Cd"} local tt = {0x19744, 0x434} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 0}}) local t = {"libUE4.so", "Cd"} local tt = {0x4776F0, 0x88C} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 0}}) so=gg.getRangesList('libUE4.so')[1].start py=0X3010034--开 setvalue(so+py,16,0) so=gg.getRangesList("libUE4.so")[1].start py=0xCB8A54 setvalue(so+py,16,-9.9065426e27)--左右翻倍 py=0xCB8B40 setvalue(so+py,16,-3.83692277e21)--去除卡坡x2 Name='秒开镜' local tb1={{6.160318374633789,16,0},{0.3799999952316284,16,12},{1.0,16,16},} local tb2={{-99999999999,16,12},} SearchWrite(tb1,tb2,dataType) gg.setRanges(32) Name='飞天移速' local tb1= { {2048.0,16,0}, {300.0,16,8}, {0.05000000074505806,16,16}, {2.0,16,20}, } local tb2= { {99999,16,16}, } SH(tb1,tb2,dataType) so=gg.getRangesList("libUE4.so")[1].start py=0x267C928 setvalue(so+py,16,161818199191911) gg.toast("慢动作") qmnb = {{["memory"] = 32},{["name"] = "ʜᴇᴀᴅsʜᴏᴛ"},{["value"] = 4740038608910024704, ["type"] = 32}, {["lv"] = 4752423507886342144, ["offset"] = 4, ["type"] = 32}, {["lv"] = 1106509824, ["offset"] = 8, ["type"] = 32}, }qmxg = {{["value"] = 180, ["offset"] = 0, ["type"] = 16}, {["value"] = 150, ["offset"] = 4, ["type"] = 16}, {["value"] = 150, ["offset"] = 8, ["type"] = 16}, } xqmnb(qmnb) qmnb = {{["memory"] = 32},{["name"] = "川"},{["value"] = 1119156320, ["type"] = 4},{["lv"] = 1105199104, ["offset"] = 12, ["type"] = 4},}qmxg = {{["value"] = 180, ["offset"] = 12, ["type"] = 16},}xqmnb(qmnb) qmnb = {{["memory"] = 32},{["name"] = "川"},{["value"] = 1091779028, ["type"] = 4},{["lv"] = 1103626240, ["offset"] = 28, ["type"] = 4},{["lv"] = 1106509824, ["offset"] = 32, ["type"] = 4},}qmxg = {{["value"] = 180, ["offset"] = 28, ["type"] = 16},{["value"] = 150, ["offset"] = 32, ["type"] = 16},}xqmnb(qmnb) qmnb = {{["memory"] = 32},{["name"] = "川"},{["value"] = 69.5, ["type"] = gg.TYPE_FLOAT},{["lv"] = 33, ["offset"] = -4, ["type"] = gg.TYPE_FLOAT},{["lv"] = 35, ["offset"] = -8, ["type"] = gg.TYPE_FLOAT},}qmxg = {{["value"] = 150, ["offset"] = 0, ["type"] = gg.TYPE_FLOAT},{["value"] = 260, ["offset"] = -4, ["type"] = gg.TYPE_FLOAT},}xqmnb(qmnb) qmnb = {{["memory"] = 32},{["name"] = "川"},{["value"] = 9.20161819458, ["type"] = gg.TYPE_FLOAT},{["lv"] = 0, ["offset"] = 12, ["type"] = gg.TYPE_FLOAT},{["lv"] = 0, ["offset"] = 16, ["type"] = gg.TYPE_FLOAT},}qmxg = {{["value"] = 220, ["offset"] = 24, ["type"] = gg.TYPE_FLOAT,},{["value"] = 180, ["offset"] = 24, ["type"] = gg.TYPE_FLOAT,},{["value"] = 220, ["offset"] = 28, ["type"] = gg.TYPE_FLOAT},{["value"] = 180, ["offset"] = 32, ["type"] = gg.TYPE_FLOAT},}xqmnb(qmnb) qmnb = {{["memory"] = 32},{["name"] = "川"},{["value"] = -88.66608428955, ["type"] = gg.TYPE_FLOAT},{["lv"] = 16, ["offset"] = 4, ["type"] = gg.TYPE_FLOAT},{["lv"] = 26, ["offset"] = 8, ["type"] = gg.TYPE_FLOAT},}qmxg = {{["value"] = -530, ["offset"] = 8, ["type"] = gg.TYPE_FLOAT},}xqmnb(qmnb) qmnb = {{["memory"] = 32},{["name"] = "川"},{["value"] = 27.13222122192, ["type"] = 16},{["lv"] = 15, ["offset"] = 4, ["type"] = 16},{["lv"] = 5, ["offset"] = -4, ["type"] = 16},{["lv"] = 39, ["offset"] = 20, ["type"] = 16},{["lv"] = 27, ["offset"] = 116, ["type"] = 16},{["lv"] = 38, ["offset"] = 132, ["type"] = 16},}qmxg = {{["value"] = -640, ["offset"] = 4, ["type"] = 4},{["value"] = -640, ["offset"] = 116, ["type"] = 4},}xqmnb(qmnb) qmnb = {{["memory"] = 32},{["name"] = "川"},{["value"] = 3266401545, ["type"] = 4},{["lv"] = 1104150528, ["offset"] = 8, ["type"] = 4},{["lv"] = 1104180528, ["offset"] = 392, ["type"] = 4},}qmxg = {{["value"] = 180, ["offset"] = 8, ["type"] = 16},{["value"] = 180, ["offset"] = 392, ["type"] = 16},}xqmnb(qmnb) gg.toast("修复完成") so=gg.getRangesList('libUE4.so')[1].start py=0X2739E68--子弹坠落 setvalue(so+py,16,-18) so=gg.getRangesList('libUE4.so')[1].start py=0X2739E54 setvalue(so+py,16,0)--防坠落 so=gg.getRangesList('libUE4.so')[1].start py=0X2739E68--子弹坠落 setvalue(so+py,16,-18) so=gg.getRangesList('libUE4.so')[1].start py=0X2739E54 setvalue(so+py,16,0)--防坠落 so=gg.getRangesList('libUE4.so')[1].start py=0X2739E68--子弹坠落 setvalue(so+py,16,-18) so=gg.getRangesList('libUE4.so')[1].start py=0X2739E54 setvalue(so+py,16,0)--防坠落 gg.clearResults() gg.setRanges(gg.REGION_ANONYMOUS | gg.REGION_CODE_APP) gg.searchNumber("hB8 41 00 00 C8 41 00 00 F4 41", gg.TYPE_BYTE, false, gg.SIGN_EQUAL, 0, -1, 0) gg.getResults(10000) gg.editAll("hB8 43 00 00 AF 96 00 00 AF 43", gg.TYPE_BYTE) gg.clearResults() so=gg.getRangesList('libUE4.so')[1].start py=0X2739E68--子弹坠落 setvalue(so+py,16,-18) so=gg.getRangesList('libUE4.so')[1].start py=0X2739E54 setvalue(so+py,16,0)--防坠落 gg.setRanges(gg.REGION_ANONYMOUS | gg.REGION_CODE_APP) gg.searchNumber("h01 00 00 00 00 ?? ?? ?? ?? ?? ?? 47 00 00 00 00 00 00 ?? 3F ?? 00 00 00 01", gg.TYPE_BYTE, false, gg.SIGN_EQUAL, 0, -1, 0) gg.getResults(10000) gg.editAll("h01 00 00 00 00 ?? ?? ?? FA 96 28 49 00 00 00 00 00 00 ?? 3F ?? 00 00 00 01", gg.TYPE_BYTE) gg.clearResults() so=gg.getRangesList('libUE4.so')[1].start py=0X2739E68--子弹坠落 setvalue(so+py,16,-18) so=gg.getRangesList('libUE4.so')[1].start py=0X2739E54 setvalue(so+py,16,0)--防坠落 gg.setRanges(gg.REGION_ANONYMOUS | gg.REGION_CODE_APP) gg.searchNumber("hB8 41 00 00 2F 44 00 00 2F 44", gg.TYPE_BYTE, false, gg.SIGN_EQUAL, 0, -1, 0) gg.getResults(10000) gg.editAll("hB8 41 00 00 AF 43 00 00 AF 43", gg.TYPE_BYTE) gg.clearResults() so=gg.getRangesList('libUE4.so')[1].start py=0X2739E68--子弹坠落 setvalue(so+py,16,-18) so=gg.getRangesList('libUE4.so')[1].start py=0X2739E54 setvalue(so+py,16,0)--防坠落 gg.setRanges(gg.REGION_ANONYMOUS | gg.REGION_CODE_APP) gg.searchNumber("h4E 8A 38 EE E0 00 DD E5 01 00 10 E3 23 00 00", gg.TYPE_BYTE, false, gg.SIGN_EQUAL, 0, -1, 0) gg.getResults(10000) gg.editAll("h00 00 00 00 E0 00 DD E5 01 00 10 E3 23 00 00", gg.TYPE_BYTE) gg.clearResults() so=gg.getRangesList('libUE4.so')[1].start py=0X2739E68--子弹坠落 setvalue(so+py,16,-18) so=gg.getRangesList('libUE4.so')[1].start py=0X2739E54 setvalue(so+py,16,0)--防坠落 so=gg.getRangesList('libUE4.so')[1].start py=0X2739E68--子弹坠落 setvalue(so+py,16,-18) so=gg.getRangesList('libUE4.so')[1].start py=0X2739E54 setvalue(so+py,16,0)--防坠落 gg.setRanges(gg.REGION_C_DATA | gg.REGION_CODE_APP) gg.searchNumber("hB8 41 00 00 C8 41 00 00 F4 41", gg.TYPE_BYTE, false, gg.SIGN_EQUAL, 0, -1, 0) gg.getResults(10000) gg.editAll("hB8 43 00 00 AF 96 00 00 AF 43", gg.TYPE_BYTE) gg.clearResults() so=gg.getRangesList('libUE4.so')[1].start py=0X2739E68--子弹坠落 setvalue(so+py,16,-18) so=gg.getRangesList('libUE4.so')[1].start py=0X2739E54 setvalue(so+py,16,0)--防坠落 gg.setRanges(gg.REGION_C_DATA | gg.REGION_CODE_APP) gg.searchNumber("h01 00 00 00 00 ?? ?? ?? ?? ?? ?? 47 00 00 00 00 00 00 ?? 3F ?? 00 00 00 01", gg.TYPE_BYTE, false, gg.SIGN_EQUAL, 0, -1, 0) gg.getResults(10000) gg.editAll("h01 00 00 00 00 ?? ?? ?? FA 96 28 49 00 00 00 00 00 00 ?? 3F ?? 00 00 00 01", gg.TYPE_BYTE) gg.clearResults() so=gg.getRangesList('libUE4.so')[1].start py=0X2739E68--子弹坠落 setvalue(so+py,16,-18) so=gg.getRangesList('libUE4.so')[1].start py=0X2739E54 setvalue(so+py,16,0)--防坠落 gg.setRanges(gg.REGION_C_DATA | gg.REGION_CODE_APP) gg.searchNumber("hB8 41 00 00 2F 44 00 00 2F 44", gg.TYPE_BYTE, false, gg.SIGN_EQUAL, 0, -1, 0) gg.getResults(10000) gg.editAll("hB8 41 00 00 AF 43 00 00 AF 43", gg.TYPE_BYTE) gg.clearResults() gg.setRanges(gg.REGION_C_DATA | gg.REGION_CODE_APP) gg.searchNumber("h4E 8A 38 EE E0 00 DD E5 01 00 10 E3 23 00 00", gg.TYPE_BYTE, false, gg.SIGN_EQUAL, 0, -1, 0) gg.getResults(10000) gg.editAll("h00 00 00 00 E0 00 DD E5 01 00 10 E3 23 00 00", gg.TYPE_BYTE) gg.clearResults() gg.setRanges(gg.REGION_ANONYMOUS | gg.REGION_BAD | gg.REGION_CODE_APP) gg.clearResults() gg.searchNumber("hB8410000C8410000F441", gg.TYPE_BYTE, false, gg.SIGN_EQUAL, 0, -1, 0) gg.processResume() gg.getResults(99999, nil, nil, nil, nil, nil, nil, nil, nil) gg.editAll("hB8430000AF960000AF43", gg.TYPE_BYTE) so=gg.getRangesList('libUE4.so')[1].start py=0X2739E68--子弹坠落 setvalue(so+py,16,-18) so=gg.getRangesList('libUE4.so')[1].start py=0X2739E54 setvalue(so+py,16,0)--防坠落 gg.processResume() gg.clearResults() gg.processResume() gg.searchNumber("h34353235323136393037343134313437363935", gg.TYPE_BYTE, false, gg.SIGN_EQUAL, 0, -1, 0) gg.processResume() gg.getResults(99999, nil, nil, nil, nil, nil, nil, nil, nil) gg.editAll("h34353235323136393037343733363733323538", gg.TYPE_BYTE) gg.clearResults() gg.searchNumber("hB84100002F4400002F44", gg.TYPE_BYTE, false, gg.SIGN_EQUAL, 0, -1, 0) gg.processResume() gg.getResults(99999, nil, nil, nil, nil, nil, nil, nil, nil) gg.editAll("hB8410000AF430000AF43", gg.TYPE_BYTE) gg.clearResults() gg.searchNumber("h2D31323936373434313439383833363134353535", gg.TYPE_BYTE, false, gg.SIGN_EQUAL, 0, -1, 0) gg.processResume() gg.getResults(99999, nil, nil, nil, nil, nil, nil, nil, nil) gg.editAll("h2D31323936373434313439323634323639333432", gg.TYPE_BYTE) gg.clearResults() gg.searchNumber("h2D313239343439323335303039393230383139322E30", gg.TYPE_BYTE, false, gg.SIGN_EQUAL, 0, -1, 0) gg.processResume() gg.getResults(99999, nil, nil, nil, nil, nil, nil, nil, nil) gg.editAll("h0000000000000000000000000000000000000000000000'", gg.TYPE_BYTE) gg.clearResults() gg.searchNumber("h2D313239343439323335303039393230383139322E30", gg.TYPE_BYTE, false, gg.SIGN_EQUAL, 0, -1, 0) gg.processResume() gg.getResults(99999, nil, nil, nil, nil, nil, nil, nil, nil) gg.editAll("h00008F01", gg.TYPE_BYTE) gg.clearResults() gg.setRanges(gg.REGION_CODE_APP) gg.searchNumber("h4E8A38EEE000DDE5", gg.TYPE_BYTE, false, gg.SIGN_EQUAL, 0, -1, 0) gg.refineNumber("h4E8A38EE", gg.TYPE_BYTE, false, gg.SIGN_EQUAL, 0, -1, 0) gg.getResults(10000) gg.editAll("78;-118;56;0", gg.TYPE_BYTE) gg.clearResults() so=gg.getRangesList('libUE4.so')[1].start py=0X2739E68--子弹坠落 setvalue(so+py,16,-18) so=gg.getRangesList('libUE4.so')[1].start py=0X2739E54 setvalue(so+py,16,0)--防坠落 so=gg.getRangesList('libUE4.so')[1].start py=0X2739E68--子弹坠落 setvalue(so+py,16,-18) so=gg.getRangesList('libUE4.so')[1].start py=0X2739E54 setvalue(so+py,16,0)--防坠落 so=gg.getRangesList('libUE4.so')[1].start py=0X2739E68--子弹坠落 setvalue(so+py,16,-18) so=gg.getRangesList('libUE4.so')[1].start py=0X2739E54 setvalue(so+py,16,0)--防坠落 end function d() local modify = {{-3.836923e21 ,-20},} SearchWrite(search,modify,dataType,Name) so=gg.getRangesList('libUE4.so')[1].start py=0X2739E34 setvalue(so+py,16,0)--无后 so=gg.getRangesList('libUE4.so')[1].start py=0XDB0AF8 setvalue(so+py,16,0)--武器瞬机 so=gg.getRangesList('libUE4.so')[1].start py=0X2739E54 setvalue(so+py,16,0)--防坠落 so=gg.getRangesList('libUE4.so')[1].start py=0X26BF690 setvalue(so+py,16,215) gg.clearResults() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("403,007",gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0,-1) gg.getResults(2990) gg.editAll("1405032",gg.TYPE_DWORD) qmnb = { {["memory"] = 32}, {["name"] = "一级头"}, {["value"] = 502001, ["type"] = 4}, {["lv"] = 502000, ["offset"] = -44, ["type"] = 4}, {["lv"] = 502001, ["offset"] = 12, ["type"] = 4}, } qmxg = { {["value"] = 0, ["offset"] = 0, ["type"] = 4}, } xqmnb(qmnb) qmnb = { {["memory"] = 32}, {["name"] = "二级头"}, {["value"] = 502002, ["type"] = 4}, {["lv"] = 502000, ["offset"] = -44, ["type"] = 4}, {["lv"] = 502002, ["offset"] = 12, ["type"] = 4}, } qmxg = { {["value"] = 0, ["offset"] = 0, ["type"] = 4}, } xqmnb(qmnb) gg.setRanges(8|16384) gg.searchNumber("-5.77775931e27F;-5.78017776e27F;-1.38573889e28F:100", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.refineNumber("-5.77775931e27", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(500) gg.editAll("0", gg.TYPE_FLOAT) gg.setRanges(8|16384) gg.searchNumber("-5.77775931e27F;-5.78017776e27F;-1.38573889e28F:100", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.refineNumber("-5.77775931e27", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(500) gg.editAll("0", gg.TYPE_FLOAT)gg.clearResults() gg.setRanges(16384) gg.searchNumber("-289,596,733;-308,983,296;-298,640,831;-298,370,492;-294,581,562;-298,706,367:193", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("-289,596,733;-308,983,296;-298,640,831;-298,370,492;-294,581,562;-298,706,367:193", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("0", gg.TYPE_DWORD) gg.toast("红色血雾") so=gg.getRangesList('libUE4.so')[1].start py=0x20843D0 setvalue(so+py,16,0) so=gg.getRangesList('libUE4.so')[1].start py=0X19457C8 setvalue(so+py,16,0) so=gg.getRangesList('libUE4.so')[1].start py=0xE59A5C setvalue(so+py,16,-2.7859696e28) so=gg.getRangesList('libUE4.so')[1].start py=0X217D290 setvalue(so+py,16,0) so=gg.getRangesList('libUE4.so')[1].start py=0X217D2A4 setvalue(so+py,16,0) gg.clearResults() gg.setRanges(32) gg.searchNumber("10101000", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("10101000", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(1000) gg.editAll("10100100", gg.TYPE_DWORD) gg.toast("g36c美化ak") gg.clearResults() gg.toast("开启成功") end--结束 function jsb() so=gg.getRangesList("libUE4.so")[1].start py=0x2647E54 setvalue(so+py,16,0.0)--人物罚站 so=gg.getRangesList("libUE4.so")[1].start py=0x1FFEAC+0x20 setvalue(so+py,16,68) HaoGe({{false,23.0,0,16,nil,nil},{25.0,4,16},{30.5,8,16}},{{100,4,16,false},{100,8,16,false}},16,32,"") readWrite({gg.getRangesList('libUE4.so')[1].start},{{ -17,16,0X2739E68},}) --631742877313832 readWrite({gg.getRangesList('libUE4.so')[1].start},{{0,16,0x2739E34},}) readWrite({gg.getRangesList('libUE4.so')[1].start},{{-2.7859696e28,16,0xE59A5C},}) --虚拟 gg.setRanges(32) Name='飞天移速' local tb1= { {2048.0,16,0}, {300.0,16,8}, {0.05000000074505806,16,16}, {2.0,16,20}, } local tb2= { {99999,16,16}, } SH(tb1,tb2,dataType) gg.setRanges(32) so=gg.getRangesList("libUE4.so")[1].start py=0xCB8A54 setvalue(so+py,16,-9.9065426e27)--左右翻倍 so=gg.getRangesList('libUE4.so')[1].start py1=0X267C928 py2=0X270878C py3=0X2D082A0 py4=0XCB8B40 py5=0X2C33484 py6=0X2C3349C py7=0X2C33528 py8=0XCAFF20 py9=0X1250170 py10=0X26FCA44 py11=0XCCFAC0 setvalue(so+py1,16,0.35) setvalue(so+py2,16,0) setvalue(so+py3,16,0) setvalue(so+py4,16,-3.83692277e21) setvalue(so+py5,16,0) setvalue(so+py6,16,0) setvalue(so+py7,16,0) setvalue(so+py8,16,2.5) setvalue(so+py9,16,0) setvalue(so+py10,16,0.28) setvalue(so+py11,16,70) so=gg.getRangesList('libUE4.so')[1].start py=0XCB8AFC setvalue(so+py,1,0)--防灵魂出窍 local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EA3A8, 0x20, 0x2CC, 0x310, 0x134} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 2}})---下升速度5是应该最好的 local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EA3A8, 0x20, 0x2CC, 0x310, 0x13C} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 2}}) local t = {"libUE4.so", "Cd"} local tt = {0x5C2A20, 0x78, 0x68, 0x3C8} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 1.2}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EA3A8,0x20,0x2CC,0x60} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 1.41}})--A减速 local t = {"libUE4.so:bss", "Cb"} local tt = {0x2494A0, 0xB4, 0xD90, 0x19F4} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 0.95}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EA3A8, 0x20, 0x2CC, 0x14F0} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 886}}) local t = {"libUE4.so", "Cd"} local tt = {0x1EA3A8, 0x20, 0x320, 0x19F4} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 0.13}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EA3A8, 0x20, 0x2CC, 0x310, 0x138} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 70}})--翻墙 local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EA3A8, 0x20, 0x2D8, 0x1558} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 70}})--悬浮 so=gg.getRangesList('libUE4.so')[1].start py=0X1250170 setvalue(so+py,16,0)--定车 so=gg.getRangesList('libUE4.so')[1].start py=0X12501F8 setvalue(so+py,16,0)--定车 so=gg.getRangesList('libUE4.so')[1].start local py=0x2738EA4 setvalue(so+py,16,99999) gg.toast("防卡") local t = {"libUE4.so:bss", "Cb"} local tt = {0x62678,0xA8,0x2DC,0x24} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 4, value = 100000}})--去除开枪 so=gg.getRangesList("libUE4.so")[1].start py=0x267C928 setvalue(so+py,16,8) gg.toast("慢动作") local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EA3A8, 0x20, 0x2D8, 0x1558} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 70}}) gg.toast("站立悬浮") so=gg.getRangesList('libUE4.so')[1].start py=0X26F1700 setvalue(so+py,16,0) so=gg.getRangesList('libUE4.so')[1].start py=0X3010034--开 setvalue(so+py,16,0) py=0xCB8B40 setvalue(so+py,16,-3.83692277e21)--去除卡坡x2 Name='秒开镜' local tb1={{6.160318374633789,16,0},{0.3799999952316284,16,12},{1.0,16,16},} local tb2={{-99999999999,16,12},} SearchWrite(tb1,tb2,dataType) Name = "爆屏强锁60" local Nc = 32 local Lx = 4 local Sz1 = {{150994944, 0},{58, -4},{58, -8},{89, 40},{1084227584, 68}} local Sz2 = {{1124204544, 16},{1124204544, 20}} HaoGe(Nc, Lx, Sz1, Sz2) end --关 --local t = {"libUE4.so", "Cd"} --local tt = {0x5C2A20, 0x78, 0x68, 0x3C8} --local ttt = S_Pointer(t, tt) --gg.setValues({{address = ttt, flags = 16, value = 1}})--全局 --so=gg.getRangesList('libUE4.so')[1].start --py1=0X270878C--游泳加速 --py2=0X2C33484--全局 --py3=0X2C3349C--全局 --py4=0X2C33528--全局 --py5=0X26FCA44--加速 --py6=0X267C928 --setvalue(so+py1,16,-1.86389771e-20) --setvalue(so+py2,16,6.16304121e-33) --setvalue(so+py3,16,2.64700415e-23) --setvalue(so+py4,16,-1.88909657e26) --setvalue(so+py5,16,9.99999997e-7) --setvalue(so+py6,16,0) function a886() local t = {"libUE4.so:bss", "Cb"} local tt = {0x1534C,0x268,0x1A0,0x28,0x20,0x2A8,0x80} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 16, value = 155, freeze = true}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x1534C,0x268,0x1A0,0x28,0x20,0x2A8,0x7C} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 16, value = 155, freeze = true}}) readWrite({gg.getRangesList('libUE4.so')[1].start},{{ -17,16,0X2739E68},}) --631742877313832 readWrite({gg.getRangesList('libUE4.so')[1].start},{{0,16,0x2739E34},}) readWrite({gg.getRangesList('libUE4.so')[1].start},{{-2.7859696e28,16,0xE59A5C},}) --虚拟 so=gg.getRangesList("libUE4.so")[1].start py=0x2647E54 setvalue(so+py,16,0.0)--人物罚站 so=gg.getRangesList('libUE4.so')[1].start py1=0X267C928 py2=0X270878C py3=0X2D082A0 py4=0XCB8B40 py5=0X2C33484 py6=0X2C3349C py7=0X2C33528 py8=0XCAFF20 py9=0X1250170 py10=0X26FCA44 py11=0XCCFAC0 setvalue(so+py1,16,0.35) setvalue(so+py2,16,0) setvalue(so+py3,16,0) setvalue(so+py4,16,-3.83692277e21) setvalue(so+py5,16,0) setvalue(so+py6,16,0) setvalue(so+py7,16,0) setvalue(so+py8,16,2.5) setvalue(so+py9,16,0) setvalue(so+py10,16,0.28) setvalue(so+py11,16,70) local t = {"libUE4.so", "Cd"} local tt = {0x5C2A20, 0x78, 0x68, 0x3C8} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 0.74}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EA3A8,0x20,0x2CC,0x60} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 1.695}})--A减速 local t = {"libUE4.so:bss", "Cb"} local tt = {0x2494A0, 0xB4, 0xD90, 0x19F4} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 0.933}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EA3A8, 0x20, 0x2CC, 0x14F0} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 1}}) so=gg.getRangesList('libUE4.so')[1].start--人物转 py=0XD09CC0 setvalue(so+py,16,-1.11445016e28) readWrite({gg.getRangesList('libUE4.so')[1].start},{{-18,16,0X2739E68},}) --631742877313832 readWrite({gg.getRangesList('libUE4.so')[1].start},{{0,16,0x2739E34},}) readWrite({gg.getRangesList('libUE4.so')[1].start},{{-2.7859696e28,16,0xE59A5C},}) --虚拟 HaoGe({{false,23.0,0,16,nil,nil},{25.0,4,16},{30.5,8,16}},{{100,4,16,false},{100,8,16,false}},16,32,"") mnnb({{150994944,0,4},{58,-4,4},{58,-8,4},{89,40,4},{1084227584,68,4}},{{500.0,16,16},{500.0,20,16}},32,"",true) so=gg.getRangesList("libUE4.so")[1].start py=0x1FFEAC+0x20 setvalue(so+py,16,68) function SearchWrite(Search, Write, Type)gg.clearResults()gg.setVisible(false)gg.searchNumber(Search[1][1], Type)local count = gg.getResultCount()local result = gg.getResults(count)gg.clearResults()local data = {}local base = Search[1][2]if (count > 0) then for i, v in ipairs(result) do v.isUseful = true end for k=2, #Search do local tmp = {} local offset = Search[k][2] - base local num = Search[k][1] for i, v in ipairs(result) do tmp[#tmp+1] = {} tmp[#tmp].address = v.address + offset tmp[#tmp].flags = v.flags end tmp = gg.getValues(tmp) for i, v in ipairs(tmp) do if ( tostring(v.value) ~= tostring(num) ) then result[i].isUseful = false end end end for i, v in ipairs(result) do if (v.isUseful) then data[#data+1] = v.address end end if (#data > 0) then gg.toast("found "..#data.." data") local t = {} local base = Search[1][2] for i=1, #data do for k, w in ipairs(Write) do offset = w[2] - base t[#t+1] = {} t[#t].address = data[i] + offset t[#t].flags = Type t[#t].value = w[1] if (w[3] == true) then local item = {} item[#item+1] = t[#t] item[#item].freeze = true gg.addListItems(item) end end end gg.setValues(t) else gg.toast("not found", false) return false end else gg.toast("Not Found") return false end end gg.setRanges(32) so=gg.getRangesList('libUE4.so')[1].start---紫特效 py=0X116E570 setvalue(so+py,16,0) so=gg.getRangesList('libUE4.so')[1].start py=0X3010034--开 setvalue(so+py,16,0) local t = {"libUE4.so", "Cd"} local tt = {0x19744, 0x434} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 0}}) local t = {"libUE4.so", "Cd"} local tt = {0x4776F0, 0x88C} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 0}}) so=gg.getRangesList('libUE4.so')[1].start py=0XCB8AFC setvalue(so+py,1,0)--防灵魂出窍 so=gg.getRangesList('libUE4.so')[1].start py=0X2739E68--子弹坠落 setvalue(so+py,16,-18) so=gg.getRangesList('libUE4.so')[1].start py=0X2739E54 setvalue(so+py,16,0)--防坠落 local t = {"libUE4.so:bss", "Cb"} local tt = {0x1FF48C, 0x20} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 16, value = 65}})--144帧率 local t = {"libUE4.so:bss", "Cb"} local tt = {0x1FF48C, 0x24} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 16, value = 65}})--144帧率 local t = {"libUE4.so", "Cd"} local tt = {0x1EA3A8, 0x20, 0x320, 0x19F4} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 0.13}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EA3A8, 0x20, 0x2CC, 0x310, 0x138} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 50}})--翻墙 local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EA3A8, 0x20, 0x2D8, 0x1558} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 70}})--悬浮 local t = {"libUE4.so:bss", "Cb"} local tt = {0x62678,0xA8,0x2DC,0x24} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 4, value = 10086886}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EA3A8, 0x20, 0x2D8, 0x1558} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 70}}) gg.toast("站立悬浮") local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EA3A8, 0x20, 0x2D8, 0x1558} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 70}}) gg.toast("站立悬浮") local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EA3A8, 0x20, 0x2D8, 0x1558} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 70}}) gg.toast("站立悬浮") local t = {"libUE4.so", "Cd"} local tt = {0x5C2960, 0x78, 0x68, 0x3CC} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = -9999}})--去除拉回 local t = {"libUE4.so:bss", "Cb"} local tt = {0x1E16CC, 0x117C, 0x18, 0x3D4} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = -9999}})--去除卡 so=gg.getRangesList('libUE4.so')[1].start local py=0x2738EA4 setvalue(so+py,16,99999) gg.toast("\n🚬卡顿防拉\n📥修改1数据") local t = {"libUE4.so:bss", "Cb"} local tt = {0x62678,0xA8,0x2DC,0x24} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 4, value = 100000}})--去除开枪 so=gg.getRangesList('libUE4.so')[1].start py=0X2739E68--子弹坠落 setvalue(so+py,16,-18) local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EA3A8, 0x20, 0x2D8, 0x1558} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 70}}) gg.toast("站立悬浮") so=gg.getRangesList('libUE4.so')[1].start py30=0XCB8A54 setvalue(so+py30,16,-9.9065426e27) local t = {"libUE4.so", "Cd"} local tt = {0x19744, 0x434} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 0}}) local t = {"libUE4.so", "Cd"} local tt = {0x4776F0, 0x88C} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 0}}) so=gg.getRangesList('libUE4.so')[1].start py=0X3010034--开 setvalue(so+py,16,0) py=0xCB8B40 setvalue(so+py,16,-3.83692277e21)--去除卡坡x2 Name='秒开镜' local tb1={{6.160318374633789,16,0},{0.3799999952316284,16,12},{1.0,16,16},} local tb2={{-99999999999,16,12},} SearchWrite(tb1,tb2,dataType) gg.setRanges(32) Name='飞天移速' local tb1= { {2048.0,16,0}, {300.0,16,8}, {0.05000000074505806,16,16}, {2.0,16,20}, } local tb2= { {99999,16,16}, } SH(tb1,tb2,dataType) so=gg.getRangesList("libUE4.so")[1].start py=0x267C928 setvalue(so+py,16,161818199191911) gg.toast("慢动作") qmnb = {{["memory"] = 32},{["name"] = "ʜᴇᴀᴅsʜᴏᴛ"},{["value"] = 4740038608910024704, ["type"] = 32}, {["lv"] = 4752423507886342144, ["offset"] = 4, ["type"] = 32}, {["lv"] = 1106509824, ["offset"] = 8, ["type"] = 32}, }qmxg = {{["value"] = 180, ["offset"] = 0, ["type"] = 16}, {["value"] = 150, ["offset"] = 4, ["type"] = 16}, {["value"] = 150, ["offset"] = 8, ["type"] = 16}, } xqmnb(qmnb) qmnb = {{["memory"] = 32},{["name"] = "川"},{["value"] = 1119156320, ["type"] = 4},{["lv"] = 1105199104, ["offset"] = 12, ["type"] = 4},}qmxg = {{["value"] = 180, ["offset"] = 12, ["type"] = 16},}xqmnb(qmnb) qmnb = {{["memory"] = 32},{["name"] = "川"},{["value"] = 1091779028, ["type"] = 4},{["lv"] = 1103626240, ["offset"] = 28, ["type"] = 4},{["lv"] = 1106509824, ["offset"] = 32, ["type"] = 4},}qmxg = {{["value"] = 180, ["offset"] = 28, ["type"] = 16},{["value"] = 150, ["offset"] = 32, ["type"] = 16},}xqmnb(qmnb) qmnb = {{["memory"] = 32},{["name"] = "川"},{["value"] = 69.5, ["type"] = gg.TYPE_FLOAT},{["lv"] = 33, ["offset"] = -4, ["type"] = gg.TYPE_FLOAT},{["lv"] = 35, ["offset"] = -8, ["type"] = gg.TYPE_FLOAT},}qmxg = {{["value"] = 150, ["offset"] = 0, ["type"] = gg.TYPE_FLOAT},{["value"] = 260, ["offset"] = -4, ["type"] = gg.TYPE_FLOAT},}xqmnb(qmnb) qmnb = {{["memory"] = 32},{["name"] = "川"},{["value"] = 9.20161819458, ["type"] = gg.TYPE_FLOAT},{["lv"] = 0, ["offset"] = 12, ["type"] = gg.TYPE_FLOAT},{["lv"] = 0, ["offset"] = 16, ["type"] = gg.TYPE_FLOAT},}qmxg = {{["value"] = 220, ["offset"] = 24, ["type"] = gg.TYPE_FLOAT,},{["value"] = 180, ["offset"] = 24, ["type"] = gg.TYPE_FLOAT,},{["value"] = 220, ["offset"] = 28, ["type"] = gg.TYPE_FLOAT},{["value"] = 180, ["offset"] = 32, ["type"] = gg.TYPE_FLOAT},}xqmnb(qmnb) qmnb = {{["memory"] = 32},{["name"] = "川"},{["value"] = -88.66608428955, ["type"] = gg.TYPE_FLOAT},{["lv"] = 16, ["offset"] = 4, ["type"] = gg.TYPE_FLOAT},{["lv"] = 26, ["offset"] = 8, ["type"] = gg.TYPE_FLOAT},}qmxg = {{["value"] = -530, ["offset"] = 8, ["type"] = gg.TYPE_FLOAT},}xqmnb(qmnb) qmnb = {{["memory"] = 32},{["name"] = "川"},{["value"] = 27.13222122192, ["type"] = 16},{["lv"] = 15, ["offset"] = 4, ["type"] = 16},{["lv"] = 5, ["offset"] = -4, ["type"] = 16},{["lv"] = 39, ["offset"] = 20, ["type"] = 16},{["lv"] = 27, ["offset"] = 116, ["type"] = 16},{["lv"] = 38, ["offset"] = 132, ["type"] = 16},}qmxg = {{["value"] = -640, ["offset"] = 4, ["type"] = 4},{["value"] = -640, ["offset"] = 116, ["type"] = 4},}xqmnb(qmnb) qmnb = {{["memory"] = 32},{["name"] = "川"},{["value"] = 3266401545, ["type"] = 4},{["lv"] = 1104150528, ["offset"] = 8, ["type"] = 4},{["lv"] = 1104180528, ["offset"] = 392, ["type"] = 4},}qmxg = {{["value"] = 180, ["offset"] = 8, ["type"] = 16},{["value"] = 180, ["offset"] = 392, ["type"] = 16},}xqmnb(qmnb) gg.toast("修复完成") end function Exit() print("加速") os.exit() end cs = "KC" while true do if gg.isVisible(true) then XGCK = 1 gg.setVisible(false) end gg.clearResults() if XGCK == 1 then Main() end end