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 readPointer(name, offset, i) local re = gg.getRangesList(name) local x64 = gg.getTargetInfo().x64 local va = {[true]=32, [false]=4} if re[i or 1] then local addr = re[i or 1].start + offset[1] for i = 2, #offset do addr = gg.getValues({{address=addr, flags=va[x64]}}) if not x64 then addr[1].value = addr[1].value & 0xFFFFFFFF end addr = addr[1].value + offset[i] end return addr end end function gg.edits(addr, Table) local Table1 = {{}, {}} for k, v in ipairs(Table) do local value = {address = addr+v[3], value = v[1], flags = v[2], freeze = v[4]} if v[4] then Table1[2][#Table1[2]+1] = value else Table1[1][#Table1[1]+1] = value end end gg.addListItems(Table1[2]) gg.setValues(Table1[1]) 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 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 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 BaseAddressWrite(data) local so = gg.getRangesList(data.so) if so[1] ~= nil then local t = {} for i = 1, #data do t[#t+1] = {} t[#t].address = so[1].start + data[i].offset t[#t].value = data[i].value t[#t].flags = data[i].type end gg.setValues(t) else gg.toast("") end end function zjson(jsonr) local str = jsonr -- 匹配Json Key的正则表达式 local pattern = "\"[%w]+\":" string.gsub(str, pattern, function(v) if string.find(str, v) then str = string.gsub(str, v, string.gsub(v, "\"", "")) end end) str = string.gsub(str, ":", "=") str = string.gsub(str, "%[", "{") str = string.gsub(str, "%]", "}") local data = "-- WSG PRO 1.0.9(109)\nreturn " .. str local res = load(data)() return res 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 json(con) res=zjson(con) zd=res.result.songCount pd=go3-zd if pd <= 0 then else go3=zd end ts="《"..go1.."》找到"..zd.."首歌曲,当前显示"..go3.."首" gqlb={} idb={} for i=1,go3 do gqlb[i]=res.result.songs[i].name idb[i]=res.result.songs[i].id end --print(idb) 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 YY998() Obtain=gg.makeRequest("https://api.uomg.com/api/rand.music?sort=热歌榜&format=json").content muchen=Obtain:match('url":"(.-)","picurl') gg.playMusic(muchen) end function PS() end function setvalue(address,flags,value) PS('修改地址数值(地址,数值类型,要修改的值)') local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end--静态 function setvalue(address,flags,value) local CatWill={} CatWill[1]={} CatWill[1].address=address CatWill[1].flags=flags CatWill[1].value=value gg.setValues(CatWill) 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 readPointer(name, offset, i) local re = gg.getRangesList(name) local x64 = gg.getTargetInfo().x64 local va = {[true] = 32, [false] = 4} if re[i or 1] then local addr = re[i or 1].start + offset[1] for i = 2, #offset do addr = gg.getValues({{address = addr, flags = va[x64]}}) if not x64 then addr[1].value = addr[1].value & 0xFFFFFFFF end addr = addr[1].value + offset[i] end return addr end end function 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,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 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 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 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 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 end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A 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 readPointer(name, offset, i) local re = gg.getRangesList(name) local x64 = gg.getTargetInfo().x64 local va = {[true] = 32, [false] = 4} if re[i or 1] then local addr = re[i or 1].start + offset[1] for i = 2, #offset do addr = gg.getValues({{address = addr, flags = va[x64]}}) if not x64 then addr[1].value = addr[1].value & 0xFFFFFFFF end addr = addr[1].value + offset[i] end return addr end end function gg.edits(addr, Table, name) local Table1 = {{}, {}} for k, v in ipairs(Table) do local value = {address = addr + v[3], value = v[1], flags = v[2], freeze = v[4]} if v[4] then Table1[2][#Table1[2] + 1] = value else Table1[1][#Table1[1] + 1] = value end end gg.addListItems(Table1[2]) gg.setValues(Table1[1]) end local json = json 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 setvalue(address,flags,value) local CatWill={} CatWill[1]={} CatWill[1].address=address CatWill[1].flags=flags CatWill[1].value=value gg.setValues(CatWill) 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 setvalue(address,flags,value) local CatWill={} CatWill[1]={} CatWill[1].address=address CatWill[1].flags=flags CatWill[1].value=value gg.setValues(CatWill) end function Unfreeze() --获取保存列表 local t = gg.getListItems() for k, v in pairs(t) do t[k]["freeze"] = false end return gg.addListItems(t) end function xqmnb(Search,Modification) gg.clearResults() gg.setRanges(Search[1].memory) gg.searchNumber(Search[3].value,Search[3].type,false,536870912,0,-1) if gg.getResultCount()==0 then gg.toast(Search[2].name..'开启失败') return end local Result=gg.getResults(gg.getResultCount()) local sum for index=4,#Search do sum=0 for i=1,#Result do if gg.getValues({{address=Result[i].address+Search[index].offset,flags=Search[index].type}})[1].value~=Search[index].lv then Result[i].Usable=true sum=sum+1 end end if sum==#Result then gg.toast(Search[2].name..'开启失败') return end end local Data,Freeze,Freezes={},{},0 sum=0 for index,value in ipairs(Modification)do for index=1,#Result do if not Result[index].Usable then local Value={address=Result[index].address+value.offset,flags=value.type,value=value.value,freeze=true} if value.freeze then Freeze[#Freeze+1]=Value Freezes=Freezes+1 else Data[#Data+1]=Value end sum=sum+1 end end end gg.setValues(Data) gg.addListItems(Freeze) if Freezes==0 then gg.toast(Search[2].name..'开启成功,共修改'..sum..'条数据') else gg.toast(Search[2].name..'开启成功,共修改'..sum..'条数据,冻结'..Freezes..'条数据') end gg.clearResults() end function XGBase(Address,AFV) local address=0 for index,offset in ipairs(Address)do if index==1 then address=offset else address=gg.getValues({{address=address+offset,flags=4}})[1].value end end local Value,Freeze={},{} for index,value in ipairs(AFV)do local VALUE={address=address+value[3],flags=value[2],value=value[1],freeze=true} if value[4]then Freeze[#Freeze+1]=VALUE else Value[#Value+1]=VALUE end end gg.setValues(Value) gg.addListItems(Freeze) end function Format(tab, format, value, type, Function) if format == "查看" then tab[1]["flags"] = type return print(gg.getValues(tab)) elseif format == "修改" then tab[1]["flags"] = type tab[1]["value"] = value return gg.setValues(tab) elseif format == "冻结" then tab[1]["flags"] = type tab[1]["freeze"] = true tab[1]["value"] = value tab[1]["name"] = Function or "功能" return gg.addListItems(tab) elseif format == "加载" then tab[1]["flags"] = type return gg.loadResults(tab) end end function addListltems(address,flags,value,freeze) t={} t[1]={} t[1].address=address t[1].flags=flags t[1].value=value t[1].freeze=freeze gg.addListItems(t) end function setvalue(address,flags,value) local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end function LSQ_Chain(so, offset, format, value, type, Function)--模块设置, 偏移量, 功能参数, 修改值, 类型, 功能 getRanges = getRanges or (function() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v["type"]:sub(2, 2) == 'w' then--判断so是否可读可写 ranges[#ranges+1] = v end end return ranges end) local rest, ranges, sostart, valtype = {}, getRanges(), nil , gg.TYPE_DWORD if gg.getTargetInfo()["x64"] then--判断应用程序是否为64位 valtype = gg.TYPE_QWORD end for i in pairs(ranges) do local _name = ranges[i]["internalName"]:gsub('^.*/', '') if so[1] == _name and so[2] == ranges[i]["state"] then sostart = ranges[i]["start"] break end end if sostart then if offset[1] then for i = 1, #offset do rest = {{flags = valtype,address = sostart + offset[i]}} rest = gg.getValues(rest) if i == #offset then break end if valtype == gg.TYPE_DWORD then sostart = rest[1].value & 0xFFFFFFFF--对值进行补位操作 else sostart = rest[1].value end end end if #rest == 1 then end return Format(rest, format, value, type, Function) end gg.toast("功能:" .. Function .. "开启失败") print("功能开启失败原因: 未找到基址头") return os.exit() end function setvalue(address,flags,value) local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end function xqmnb(Search,Modification) gg.clearResults() gg.setRanges(Search[1].memory) gg.searchNumber(Search[3].value,Search[3].type,false,536870912,0,-1) if gg.getResultCount()==0 then gg.toast(Search[2].name..'开启失败') return end local Result=gg.getResults(gg.getResultCount()) local sum for index=4,#Search do sum=0 for i=1,#Result do if gg.getValues({{address=Result[i].address+Search[index].offset,flags=Search[index].type}})[1].value~=Search[index].lv then Result[i].Usable=true sum=sum+1 end end if sum==#Result then gg.toast(Search[2].name..'开启失败') return end end local Data,Freeze,Freezes={},{},0 sum=0 for index,value in ipairs(Modification)do for index=1,#Result do if not Result[index].Usable then local Value={address=Result[index].address+value.offset,flags=value.type,value=value.value,freeze=true} if value.freeze then Freeze[#Freeze+1]=Value Freezes=Freezes+1 else Data[#Data+1]=Value end sum=sum+1 end end end gg.setValues(Data) gg.addListItems(Freeze) if Freezes==0 then gg.toast(Search[2].name..'开启成功,共修改'..sum..'条数据') else gg.toast(Search[2].name..'开启成功,共修改'..sum..'条数据,冻结'..Freezes..'条数据') end gg.clearResults() end 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(0x0) 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 setvalue(address,flags,value) local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value tt[1].freeze=true gg.addListItems(tt) gg.addListItems(tt) end function xqmnb(Search,Modification) gg.clearResults() gg.setRanges(Search[1].memory) gg.searchNumber(Search[3].value,Search[3].type,false,536870912,0,-1) if gg.getResultCount()==0 then gg.toast(Search[2].name..'开启失败') return end local Result=gg.getResults(gg.getResultCount()) local sum for index=4,#Search do sum=0 for i=1,#Result do if gg.getValues({{address=Result[i].address+Search[index].offset,flags=Search[index].type}})[1].value~=Search[index].lv then Result[i].Usable=true sum=sum+1 end end if sum==#Result then gg.toast(Search[2].name..'开启失败') return end end local Data,Freeze,Freezes={},{},0 sum=0 for index,value in ipairs(Modification)do for index=1,#Result do if not Result[index].Usable then local Value={address=Result[index].address+value.offset,flags=value.type,value=value.value,freeze=true} if value.freeze then Freeze[#Freeze+1]=Value Freezes=Freezes+1 else Data[#Data+1]=Value end sum=sum+1 end end end gg.setValues(Data) gg.addListItems(Freeze) if Freezes==0 then gg.toast(Search[2].name..'开启成功,共修改'..sum..'条数据') else gg.toast(Search[2].name..'开启成功,共修改'..sum..'条数据,冻结'..Freezes..'条数据') end gg.clearResults() end function setvalue(address,flags,value) local CatWill={} CatWill[1]={} CatWill[1].address=address CatWill[1].flags=flags CatWill[1].value=value gg.setValues(CatWill) 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(0x315fdca1) 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 readAdd(add) t=gg.getValues({[1]={address=add,flags=32}}) add=string.format("%X",t[1].value) if (#add)==16 then add=add:sub(9,16) end if (#add)==1 then add=add.."0000000" else add=string.format("%d","0x"..add) end return add end function getAdd(so,offset,off1) add=gg.getRangesList(so)[1].start add=readAdd(add+offset) return add end function setvalue(address,flags,value) local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end function gg.edits(addr, Table, name) local Table1 = {{}, {}} for k, v in ipairs(Table) do local value = {address = addr + v[3], value = v[1], flags = v[2], freeze = v[4]} if v[4] then Table1[2][#Table1[2] + 1] = value else Table1[1][#Table1[1] + 1] = value end end gg.addListItems(Table1[2]) gg.setValues(Table1[1]) 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 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 found"..#data.."data\n Start 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\n Altogether"..#t.."data") else gg.toast("\n"..Name.."failure") return false end else gg.toast("\n"..Name.."failure") 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 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 function Fxs(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 Main() SN = gg.multiChoice({ "上防", "定防", "下天", "功能区", "坠落飞天", "探头路飞", "退出", }, nil, "雾霾轻量\nTG:wumai0")--二改留名 倒卖你妈必死 if SN == nil then else if SN[1] == true then a() end if SN[2] == true then b() end if SN[3] == true then c() end if SN[4] == true then d() end if SN[5] == true then f() end if SN[6] == true then g() end if SN[7] == true then os.exit() end end XGCK = -1 end function a() local t = {"libUE4.so:bss", "Cb"} local tt = {0x211600,0xA8,0x30} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 2000}}) end function b() local t = {"libUE4.so:bss", "Cb"} local tt = {0x211600,0xA8,0x30} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 0}}) end function c() local t = {"libUE4.so:bss", "Cb"} local tt = {0x211600,0xA8,0x30} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = -680}}) end function d() menu1 = gg.multiChoice({ '大厅一套', '锁定帧率', '追踪范围', '飞天开启', '飞天关闭', '人物跳远加速开启', '人物跳远加速关闭', '无限子弹', '切换主页'}, nil,'破烂的文笔该怎么勾勒心中已绽放的情花.') if menu1 == nil then else if menu1[1] == true then a1() end if menu1[2] == true then a2() end if menu1[3] == true then a3() end if menu1[4] == true then a4() end if menu1[5] == true then a5() end if menu1[6] == true then a6() end if menu1[7] == true then a7() end if menu1[8] == true then am() end if menu1[9] == true then HOME() end end GLWW=-1 end function a1() OP=gg.prompt({'360到180'},{[1]='200'},{[1]='number'}) if OP == nil or OP[1] == '' or OP[1] == '0' then gg.toast("取消") else so=gg.getRangesList('libUE4.so')[1].start py=0x26C7B90 setvalue(so+py,16,OP[1]) end so=gg.getRangesList('libUE4.so')[1].start py=0xDB4C38 setvalue(so+py,16,0)--午后 so=gg.getRangesList('libUE4.so')[1].start py=0X1269148 setvalue(so+py,16,0) so=gg.getRangesList('libUE4.so')[1].start py=0X126914C setvalue(so+py,16,0) so=gg.getRangesList('libUE4.so')[1].start py=0xDB51F8 setvalue(so+py,16,90)--据点 so=gg.getRangesList('libUE4.so')[1].start py=0x2648B80 setvalue(so+py,16,0)--防抖 so=gg.getRangesList('libUE4.so')[1].start py=0x26C4CAC setvalue(so+py,16,0)--防抖 so=gg.getRangesList('libUE4.so')[1].start py=0x1949A58 setvalue(so+py,16,0)--草 so=gg.getRangesList('libUE4.so')[1].start py=0x2742334 setvalue(so+py,16,0) so=gg.getRangesList('libUE4.so')[1].start py=0x2742354 setvalue(so+py,16,0) so=gg.getRangesList('libUE4.so')[1].start py=0x208C8D0 setvalue(so+py,16,0)-- so=gg.getRangesList('libUE4.so')[1].start py=0X11726DC setvalue(so+py,16,0)-- -8.33060006e22 --斜x特效 end function a2() local t = {"libUE4.so:bss", "Cb"} local tt = {0x1FFEAC, 0x20} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 120}})--改帧率 local t = {"libUE4.so:bss", "Cb"} local tt = {0x1FFEAC, 0x24} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 120}})--改帧率 end function am() local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EADC8,0x20,0x2CC,0x13F4,0x468,0x450} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 8, value = 1}})--开枪防拉 end function a3() gg.clearResults() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("25;30.5", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("999", gg.TYPE_FLOAT) gg.clearResults() gg.clearResults() gg.setRanges(32) gg.searchNumber("1024",16) resultCounts=gg.getResultsCount() results=gg.getResults(resultCounts) for i=1,resultCounts do values={} values[1]={} values[1].address=results[i].address-4 values[1].flags=16 values=gg.getValues(values) if values[1].value==5000.0 then values={} values[1]={} values[1].address=results[i].address-8 values[1].flags=16 values=gg.getValues(values) if values[1].value==3000.0 then values={} values[1]={} values[1].address=results[i].address-12 values[1].flags=16 values=gg.getValues(values) if values[1].value==0.5 then setvalues={} setvalues[1]={} setvalues[1].address=results[i].address setvalues[1].flags=16 setvalues[1].value=200000 setvalues[2]={} setvalues[2].address=results[i].address-4 setvalues[2].flags=16 setvalues[2].value=200000 setvalues[3]={} setvalues[3].address=results[i].address-8 setvalues[3].flags=16 setvalues[3].value=200000 setvalues[4]={} setvalues[4].address=results[i].address-12 setvalues[4].flags=16 setvalues[4].value=200000 gg.setValues(setvalues) end end end end end function a4() so=gg.getRangesList('libUE4.so')[1].start py=0XCBCB00 setvalue(so+py,16,-3.83692277e21)--突破 so=gg.getRangesList('libUE4.so')[1].start py=0X26F9C00 setvalue(so+py,16,0) so=gg.getRangesList('libUE4.so')[1].start py=0X2650584 setvalue(so+py,16,0) so=gg.getRangesList('libUE4.so')[1].start py=0X2D107D0 setvalue(so+py,16,0)--防拉 so=gg.getRangesList('libUE4.so')[1].start py=0X2684E28 setvalue(so+py,16,9999)--慢动作 so=gg.getRangesList('libUE4.so')[1].start py=0X2704F44 setvalue(so+py,16,0.3)--加速 so=gg.getRangesList('libUE4.so')[1].start py=0X2710C8C setvalue(so+py,16,0)---1.86389771e-20 local t = {"libUE4.so:bss", "Cb"} local tt = {0x1FFEAC, 0x20} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 9999}})--改帧率 local t = {"libUE4.so:bss", "Cb"} local tt = {0x1FFEAC, 0x24} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 9999}})--改帧率 so=gg.getRangesList('libUE4.so')[1].start py=0X2C3BA28 setvalue(so+py,16,0) so=gg.getRangesList('libUE4.so')[1].start py=0X2D107E0 setvalue(so+py,16,0) local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EADC8,0x20,0x2CC,0x310,0x1AC} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 999999, freeze = true}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EADC8,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 = {0x1EADC8,0x20,0x2CC,0x1558} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 70}})--浮空 local t = {"libUE4.so:bss", "Cb"} local tt = {0x62EB8,0xA8,0x24C,0x24} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 4, value = 1000000000}})--开枪防拉 local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EADC8,0x20,0x2CC,0x1558} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 75}})--防拉 local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EADC8,0x20,0x18,0x1C8,0x3C8} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 0.25}})--加速 local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EADC8,0x20,0x2CC,0x60} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 9.6}})--控速 1 local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EADC8,0x20,0x18,0x1C8,0x3D4} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 0.1}})--加速 local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EADC8,0x20,0x2CC,0x310,0x13C} local t = {"libUE4.so:bss", "Cb"} local tt = {0x62EB8,0xA8,0x24C,0x24} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 1000000}})--开枪防拉 end function a5() so=gg.getRangesList('libUE4.so')[1].start py=0XCBCB00 setvalue(so+py,16,-3.83692305e21)--突破 so=gg.getRangesList('libUE4.so')[1].start py=0X26F9C00 setvalue(so+py,16,-3.74440972e28) so=gg.getRangesList('libUE4.so')[1].start py=0X2650584 setvalue(so+py,16,-3.74440972e28) so=gg.getRangesList('libUE4.so')[1].start py=0X2684E28 setvalue(so+py,16,0)--慢动作 so=gg.getRangesList('libUE4.so')[1].start py=0X2704F44 setvalue(so+py,16,9.99999997e-7)--加速 so=gg.getRangesList('libUE4.so')[1].start py=0X2C3BA14 setvalue(so+py,16,10.90734863281) so=gg.getRangesList('libUE4.so')[1].start py=0X2710C8C setvalue(so+py,16,-1.86389771e-20) local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EADC8,0x20,0x2CC,0x310,0x1AC} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 0.0005, freeze = true}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EADC8,0x20,0x18,0x1C8,0x3C8} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 1}})--加速 local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EADC8,0x20,0x2CC,0x60} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 1}})--减速 local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EADC8,0x20,0x18,0x1C8,0x3D4} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 0.0005}})--加速 end function a6() local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EADC8,0x20,0x2CC,0x1558} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 70}})--防拉 local t = {"libUE4.so:bss", "Cb"} local tt = {0x62EB8,0xA8,0x24C,0x24} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 1000000}})--开枪防拉 local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EADC8,0x20,0x2CC,0x1558} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 75}})--浮空 local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EADC8,0x20,0x18,0x1C8,0x3C8} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 0.14}})--射速 local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EADC8,0x20,0x18,0x1C8,0x3D4} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 0.2}})--控制全局速度 local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EADC8,0x20,0x2CC,0x310,0x138} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 70}})--443 local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EADC8,0x20,0x2CC,0x310,0x188} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 9999999}})--空中速度 local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EADC8,0x20,0x2CC,0x310,0x17C} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 900}})--游泳加速 local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EADC8,0x20,0x2CC,0x310,0x7C4} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 9999}})--转换 local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EADC8,0x20,0x2CC,0x14F0} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 15}})--陆地关键速度 so=gg.getRangesList('libUE4.so')[1].start py=0XCBCB00 setvalue(so+py,16,-3.83692277e21)--突破 so=gg.getRangesList('libUE4.so')[1].start py=0X2D107D0 setvalue(so+py,16,0)--防拉 so=gg.getRangesList('libUE4.so')[1].start py=0X2684E28 setvalue(so+py,16,1)--动作 so=gg.getRangesList('libUE4.so')[1].start py=0X2704F44 setvalue(so+py,16,0.00009)--加速 so=gg.getRangesList('libUE4.so')[1].start py=0X2710C8C setvalue(so+py,16,0)--关键人物移速 end function a7() so=gg.getRangesList('libUE4.so')[1].start py=0X2710C8C setvalue(so+py,16,-1.86389771e-20) local t = {"libUE4.so:bss", "Cb"} local tt = {0x1FFEAC, 0x20} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 120}})--改帧率 local t = {"libUE4.so:bss", "Cb"} local tt = {0x1FFEAC, 0x24} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 120}})--改帧率 local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EADC8,0x20,0x2CC,0x1558} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 88}})--防拉 local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EADC8,0x20,0x2CC,0x14F0} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 1}})--翻倍 local t = {"libUE4.so:bss", "Cb"} local tt = {0x62EB8,0xA8,0x24C,0x24} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 10000}})--开枪防拉 local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EADC8,0x20,0x18,0x1C8,0x3C8} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 1}})--加速 local t = {"libUE4.so:bss", "Cb"} local tt = {0x1EADC8,0x20,0x18,0x1C8,0x3D4} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 0.00050000002}})--加速 so=gg.getRangesList('libUE4.so')[1].start py=0X2684E28 setvalue(so+py,16,0)--慢动作 so=gg.getRangesList('libUE4.so')[1].start py=0X2704F44 setvalue(so+py,16,9.99999997e-7)--加速 so=gg.getRangesList('libUE4.so')[1].start py=0X2C3BA14 setvalue(so+py,16,10.90734863281) end function g() function readPointer(name, offset, i) local re = gg.getRangesList(name) local x64 = gg.getTargetInfo().x64 local va = {[true]=32, [false]=4} if re[i or 1] then local addr = re[i or 1].start + offset[1] for i = 2, #offset do addr = gg.getValues({{address=addr, flags=va[x64]}}) if not x64 then addr[1].value = addr[1].value & 0xFFFFFFFF end addr = addr[1].value + offset[i] end return addr end end function gg.edits(addr, Table) local Table1 = {{}, {}} for k, v in ipairs(Table) do local value = {address = addr+v[3], value = v[1], flags = v[2], freeze = v[4]} if v[4] then Table1[2][#Table1[2]+1] = value else Table1[1][#Table1[1]+1] = value end end gg.addListItems(Table1[2]) gg.setValues(Table1[1]) end --动态基址配置 function BaseAddressWrite(data) local so = gg.getRangesList(data.so) if so[1] ~= nil then local t = {} for i = 1, #data do t[#t+1] = {} t[#t].address = so[1].start + data[i].offset t[#t].value = data[i].value t[#t].flags = data[i].type end gg.setValues(t) else gg.toast("") end end ddsl = readPointer('libUE4.so:bss', {0x1EADC8,0x20,0x320,0x310,0x14C}, 1) --定点锁链 local ttsl = readPointer('libUE4.so:bss', {0x1EADC8,0x20,0x2CC,0x30C,0x654,0x294,0x540,0x8A8,0x38,0x0}, 1) --探头锁链 local jznbsl = readPointer('libUE4.so:bss', {0x1E667C,0x20,0x200}, 1) --矩阵南北 local jzdxsl = readPointer('libUE4.so:bss', {0x1E667C,0x20,0x20C}, 1) --矩阵东西 local jzsxsl = readPointer('libUE4.so:bss', {0x1E667C,0x20,0x22C}, 1) --矩阵上下 zbxsl = readPointer('libUE4.so:bss', {0x1EADC8,0x20,0x2CC,0x140,0x150}, 1) --坐标x实体 zbysl = readPointer('libUE4.so:bss', {0x1EADC8,0x20,0x2CC,0x140,0x154}, 1) --坐标y实体 zbzsl = readPointer('libUE4.so:bss', {0x1EADC8,0x20,0x2CC,0x140,0x158}, 1) --坐标z实体 ttlf={} ttlf[1]={} ttlf[1].address=ttsl ttlf[1].flags=16 ttlf[2]={} ttlf[2].address=jznbsl ttlf[2].flags=16 ttlf[3]={} ttlf[3].address=jzdxsl ttlf[3].flags=16 ttlf[4]={} ttlf[4].address=jzsxsl ttlf[4].flags=16 ttlf[5]={} ttlf[5].address=zbxsl ttlf[5].flags=16 ttlf[6]={} ttlf[6].address=zbysl ttlf[6].flags=16 ttlf[7]={} ttlf[7].address=zbzsl ttlf[7].flags=16 gg.addListItems(ttlf)--保存 jznb=gg.getValues(ttlf)[2].value--矩阵方位南北 jzdx=gg.getValues(ttlf)[3].value--矩阵方位东西 jzsx=gg.getValues(ttlf)[4].value--矩阵方位上下 zbx=gg.getValues(ttlf)[5].value--坐标x zby=gg.getValues(ttlf)[6].value--坐标y zbz=gg.getValues(ttlf)[7].value--坐标z while true do--开始循环 tt=gg.getValues(ttlf)[1].value--探头 if tt == -1 then--左探头 gg.edits(ddsl, {{0, 4, 0, false}}) local data = { ["so"] = "libUE4.so", {["value"] = 0, ["offset"] = 0x2710C44, ["type"] = 16},--灵魂出窍 } BaseAddressWrite(data) if jzsx>-0.8 and jzsx<0.3 then--视角中 if jznb>-1.2 and jznb<-0.7 then--南 gg.edits(zbxsl, {{zbx, 16, 0, true}}) gg.edits(zbysl, {{zby+280, 16, 0, true}}) gg.edits(zbzsl, {{zbz+10, 16, 0, true}}) else if jznb>0.7 and jznb<1.2 then--北 gg.edits(zbxsl, {{zbx, 16, 0, true}}) gg.edits(zbysl, {{zby-280, 16, 0, true}}) gg.edits(zbzsl, {{zbz+10, 16, 0, true}}) else if jzdx>-1.2 and jzdx<-0.5 then--西 gg.edits(zbxsl, {{zbx-280, 16, 0, true}}) gg.edits(zbysl, {{zby, 16, 0, true}}) gg.edits(zbzsl, {{zbz+10, 16, 0, true}}) else if jzdx>0.5 and jzdx<1.2 then--东 gg.edits(zbxsl, {{zbx+280, 16, 0, true}}) gg.edits(zbysl, {{zby, 16, 0, true}}) gg.edits(zbzsl, {{zbz+10, 16, 0, true}}) end end end end--东南西北结束 end--视角中结束 if jzsx>0.5 then--视角上 gg.edits(zbxsl, {{zbx, 16, 0, true}}) gg.edits(zbysl, {{zby, 16, 0, true}}) gg.edits(zbzsl, {{zbz+300, 16, 0, true}}) end--视角上结束 if jzsx<-0.8 then--视角下 gg.edits(zbxsl, {{zbx, 16, 0, true}}) gg.edits(zbysl, {{zby, 16, 0, true}}) gg.edits(zbzsl, {{zbz-300, 16, 0, true}}) end--视角下结束 end--左探头结束 if tt == 1 then--右探头 gg.edits(ddsl, {{0, 4, 0, false}}) local data = { ["so"] = "libUE4.so", {["value"] = 0, ["offset"] = 0x2710C44, ["type"] = 16},--灵魂出窍 } BaseAddressWrite(data) if jzsx>-0.8 and jzsx<0.3 then--视角中 if jznb>-1.2 and jznb<-0.7 then--南 gg.edits(zbxsl, {{zbx, 16, 0, true}}) gg.edits(zbysl, {{zby+280, 16, 0, true}}) gg.edits(zbzsl, {{zbz+10, 16, 0, true}}) else if jznb>0.7 and jznb<1.2 then--北 gg.edits(zbxsl, {{zbx, 16, 0, true}}) gg.edits(zbysl, {{zby-280, 16, 0, true}}) gg.edits(zbzsl, {{zbz+10, 16, 0, true}}) else if jzdx>-1.2 and jzdx<-0.5 then--西 gg.edits(zbxsl, {{zbx-280, 16, 0, true}}) gg.edits(zbysl, {{zby, 16, 0, true}}) gg.edits(zbzsl, {{zbz+10, 16, 0, true}}) else if jzdx>0.5 and jzdx<1.2 then--东 gg.edits(zbxsl, {{zbx+280, 16, 0, true}}) gg.edits(zbysl, {{zby, 16, 0, true}}) gg.edits(zbzsl, {{zbz+10, 16, 0, true}}) end end end end--东南西北结束 end--视角中结束 if jzsx>0.5 then--视角上 gg.edits(zbxsl, {{zbx, 16, 0, true}}) gg.edits(zbysl, {{zby, 16, 0, true}}) gg.edits(zbzsl, {{zbz+300, 16, 0, true}}) end--视角上结束 if jzsx<-0.8 then--视角下 gg.edits(zbxsl, {{zbx, 16, 0, true}}) gg.edits(zbysl, {{zby, 16, 0, true}}) gg.edits(zbzsl, {{zbz-300, 16, 0, true}}) end--视角下结束 end--左探头结束 if tt == 0 then--不探头 local data = { ["so"] = "libUE4.so", {["value"] = -5.14670063e27, ["offset"] = 0x2710C44, ["type"] = 16},--灵魂出窍 } BaseAddressWrite(data) gg.removeListItems(ttlf)--解冻 jznb=gg.getValues(ttlf)[2].value--矩阵方位南北 jzdx=gg.getValues(ttlf)[3].value--矩阵方位东西 jzsx=gg.getValues(ttlf)[4].value--矩阵方位上下 zbx=gg.getValues(ttlf)[5].value--坐标x zby=gg.getValues(ttlf)[6].value--坐标y zbz=gg.getValues(ttlf)[7].value--坐标z end end end function f() while true do local t = {"libUE4.so:bss", "Cb"} local tt = {0x211600,0xA8,0x30} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 2000}}) gg.sleep(3000) local t = {"libUE4.so:bss", "Cb"} local tt = {0x211600,0xA8,0x30} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = -2000}}) gg.sleep(6000) local t = {"libUE4.so:bss", "Cb"} local tt = {0x211600,0xA8,0x30} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 2000}}) gg.sleep(3000) local t = {"libUE4.so:bss", "Cb"} local tt = {0x211600,0xA8,0x30} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = -2000}}) end end function Exit() os.exit() end while true do if gg.isVisible(true) then XGCK = 1 gg.setVisible(false) end gg.clearResults() if XGCK == 1 then Main() end end