gg.alert("SL迷你公益\n支持官方版本1.32.0,会持续更新!\n您的支持就是我们最大的动力,进群随时免费获取最新版本:934419950!") lde={} lde.gre,lde.sbr,lde.srg,lde.crs=gg.getResults,gg.searchNumber,gg.setRanges,gg.clearResults local import = import local error = error local zq={} function bv(a,b) if not b then b=","end if not tostring(a):find(b)then return{a}end local tab={}local i=0 while true do j=string.find(a,b,i+1) if not j then table.insert(tab,a:sub(i+1,#a)) break end table.insert(tab,a:sub(i+1,j-1)) i=j end return tab end function so(a,b,c) local csn=gg.getRanges() gg.setVisible(true) gg.setRanges(a[3]) gg.clearResults() gg.searchNumber(a[2],a[4]) local js=gg.getResultCount() local count=gg.getResults(js) gg.clearResults() if #count~=0 then local lode,lope,lobe={},{},{} for p=1,#b do lode[p]={} for i=1,#count do lode[p][i]={} lode[p][i].address=count[i].address+b[p][2] if not b[p][3]then b[p][3]=a[4]end lode[p][i].flags=b[p][3]end lode[p]=gg.getValues(lode[p]) db=bv(b[p][1],"~") if not db[2]then db[2]=db[1]end for i=1,#lode[p] do if tonumber(lode[p][i].value)>=tonumber(db[1]) and tonumber(lode[p][i].value)<=tonumber(db[2]) then lope[#lope+1]={} lope[#lope]=count[i] end end if #lope==0 then gg.setRanges(csn)if p>11 then p=11 end return "宝~修改失败,请重新尝试~" end count=lope lope={}end for i=1,#c do for n=1,#count do lope[#lope+1]={} lope[#lope].address=count[n].address+c[i][2] if not c[i][3]then c[i][3]=a[4]end lope[#lope].flags=c[i][3] if c[i][1] then lope[#lope].value=c[i][1] else lope[#lope].value=gg.getValues(lope)[#lope].value end if c[i][4] then lobe[#lobe+1]={} lobe[#lobe]=lope[#lope] table.remove(lope,#lope) end if c[i][4]==1 then lobe[#lobe].freeze=true elseif c[i][4]==2 then lobe[#lobe].freeze=false end if c[i][5] then lobe[#lobe].name=c[i][5] end end end gg.setValues(lope) gg.addListItems(lobe) gg.setRanges(csn) return a[1].."宝~已修改成功,祝您游戏愉快~" else gg.setRanges(csn) return a[1].."宝~修改失败,请重新尝试~" end end print(drawText) lde,mnsj={},{Dj="0.01",dv={},lz="/sdcard/.zbb",r={}} lde.gre,lde.sbr,lde.srg,lde.crs=gg.getResults,gg.searchNumber,gg.setRanges,gg.clearResults function lde.qb()table.remove(bc,#bc)table.remove(bc,#bc)end function bv(a,b) if not b then b=","end if not tostring(a):find(b)then return{a}end local tab={}local i=0 while true do j=string.find(a,b,i+1) if not j then table.insert(tab,a:sub(i+1,#a)) break end table.insert(tab,a:sub(i+1,j-1)) i=j end return tab end function so(a,b,c) local cKG=gg.getRanges() gg.setVisible(false) lde.srg(a[3]) lde.crs() lde.sbr(a[2],a[4]) local js=gg.getResultCount() local count=lde.gre(js) lde.crs() if #count~=0 then local lode,lope,lobe={},{},{} for p=1,#b do lode[p]={} for i=1,#count do lode[p][i]={} lode[p][i].address=count[i].address+b[p][2] if not b[p][3]then b[p][3]=a[4]end lode[p][i].flags=b[p][3]end lode[p]=gg.getValues(lode[p]) db=bv(b[p][1],"~") if not db[2]then db[2]=db[1]end for i=1,#lode[p] do if tonumber(lode[p][i].value)>=tonumber(db[1]) and tonumber(lode[p][i].value)<=tonumber(db[2]) then lope[#lope+1]={} lope[#lope]=count[i] end end if #lope==0 then lde.srg(cKG)if p>11 then p=11 end return "宝~修改失败,请重新尝试~" end count=lope lope={}end for i=1,#c do for n=1,#count do lope[#lope+1]={} lope[#lope].address=count[n].address+c[i][2] if not c[i][3]then c[i][3]=a[4]end lope[#lope].flags=c[i][3] if c[i][1] then lope[#lope].value=c[i][1] else lope[#lope].value=gg.getValues(lope)[#lope].value end if c[i][4] then lobe[#lobe+1]={} lobe[#lobe]=lope[#lope] table.remove(lope,#lope) end if c[i][4]==1 then lobe[#lobe].freeze=true elseif c[i][4]==2 then lobe[#lobe].freeze=false end if c[i][5] then lobe[#lobe].name=c[i][5] end end end gg.setValues(lope) gg.addListItems(lobe) lde.srg(cKG) return a[1].."宝~已修改成功,祝您游戏愉快~" else lde.srg(cKG) return a[1].."宝~修改失败,请重新尝试~" end end function xe(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]) gg.toast((name or "") .. "宝~已修改成功,祝您游戏愉快~, 共修改"..#Table.."个值") end function readValue(read) local bf={} for i,v in ipairs(read) do bf[i]={address=v[1],flags=v[2]} end bf=gg.getValues(bf) for i=1,#bf do bf[i]=bf[i].value end return bf 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]) gg.toast((name or "") .. "宝~已修改成功,祝您游戏愉快~, 共修改"..#Table.."个值") end local sod,so_bss,xdd='libAppPlayJNI.so','libAppPlayJNI.so:bss',gg.getRangesList("libAppPlayJNI.so:bss") function nc_offset(addr,tablex,tt) for i,v in ipairs(tablex) do if v[4]==true then gg.addListItems({{address=addr+v[3],flags=v[2],value=v[1],freeze=v[4]}})else gg.setValues({{address=addr+v[3],flags=v[2],value=v[1]}}) end end gg.toast((tt or "").."宝~已修改成功,祝您游戏愉快~") end function getso(So_name) return gg.getRangesList(So_name)[1].start end function BaAdd(add) t=gg.getValues({[1]={address=add,flags=4}}) return t[1].value&0xFFFFFFFF end function readPointer(Add,Item) for i=1,(#Item-1) do Add=BaAdd(Add+Item[i]) end return Add+Item[#Item] end function setvalue(add,value,falgs,dj) local WY={} WY[1]={} WY[1].address=add WY[1].value=value WY[1].flags=falgs if dj==true then WY[1].freeze=true gg.addListItems(WY) else gg.setValues(WY) end end function getnc(Name,nc) local t=gg.getRangesList(Name) for i, v in ipairs(t) do if v.state==nc then return v.start 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("\n宝~已修改成功,祝您游戏愉快~"..#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("\n宝~修改失败,请重新尝试~", false) return false end else gg.toast("\n宝~修改失败,请重新尝试~")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"] .. "\n宝~修改失败,请重新尝试~") 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"] .. "\n宝~修改失败,请重新尝试~") 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"] .. "\n宝~已修改成功,祝您游戏愉快~\n宝~已修改成功,祝您游戏愉快~" .. xgsl .. "\n条数据") else gg.toast(qmnb[2]["name"] .. "\n宝~修改失败,请重新尝试~") end end end end lde={} lde.gre,lde.sbr,lde.srg,lde.crs=gg.getResults,gg.searchNumber,gg.setRanges,gg.clearResults function so(a,b,c) local cSY=gg.getRanges() lde.srg(a[3]) lde.crs() lde.sbr(a[2],a[4]) local js=gg.getResultCount() local count=lde.gre(js) lde.crs() if #count~=0 then local lode,lope,lobe={},{},{} for p=1,#b do lode[p]={} for i=1,#count do lode[p][i]={} lode[p][i].address=count[i].address+b[p][2] if not b[p][3] then b[p][3]=a[4] end lode[p][i].flags=b[p][3] end lode[p]=gg.getValues(lode[p]) db=bv(b[p][1],"~") if not db[2] then db[2]=db[1] end for i=1,#lode[p] do if tonumber(lode[p][i].value)>=tonumber(db[1]) and tonumber(lode[p][i].value)<=tonumber(db[2]) then lope[#lope+1]={} lope[#lope]=count[i] end end if #lope==0 then lde.srg(cSY) if p>11 then p=11 end return a[1].."宝~修改失败,请重新尝试~" end count=lope lope={} end for i=1,#c do for n=1,#count do lope[#lope+1]={} lope[#lope].address=count[n].address+c[i][2] if not c[i][3] then c[i][3]=a[4] end lope[#lope].flags=c[i][3] if c[i][1] then lope[#lope].value=c[i][1] else lope[#lope].value=gg.getValues(lope)[#lope].value end if c[i][4] then lobe[#lobe+1]={} lobe[#lobe]=lope[#lope] table.remove(lope,#lope) end if c[i][4]==1 then lobe[#lobe].freeze=true else if c[i][4]==2 then lobe[#lobe].freeze=false end end if c[i][5] then lobe[#lobe].name=c[i][5] end end end gg.setValues(lope) gg.addListItems(lobe) lde.srg(cSY) return a[1].."宝~已修改成功,祝您游戏愉快~" else lde.srg(cSY) return a[1].."宝~修改失败,请重新尝试~" end end D=gg.TYPE_DWORD E=gg.TYPE_DOUBLE F=gg.TYPE_FLOAT W=gg.TYPE_WORD B=gg.TYPE_BYTE X=gg.TYPE_XOR Q=gg.TYPE_QWORD 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) 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 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 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 recover=gg.getResults(100000) function AppSearch(SSYR,XGNR,BCNR,notWrite) gg.clearResults() gg.setRanges(SSYR["M"]) gg.searchNumber(SSYR[1]["mv"],SSYR[1]["lx"],false,gg.SIGN_EQUAL,(SSYR[1]["addr"] or nil),(SSYR[1]["toAddr"] or nil)) jg=gg.getResults(100000) local base=(SSYR[1]["offs"] or 0) local data={} if #jg==0 then gg.toast("功能名:"..(SSYR.name or "无").."\n".."修改失败\n"..(SSYR["error"] or ""))gg.loadResults(recover)return nil end for i=1,#jg do jg[i].Useful=true end for k=2,#SSYR do if not SSYR[k] then break end local content={} local offset=SSYR[k]["offs"]-base local value=SSYR[k]["sv"] local type=SSYR[k]["lx"] local to=(SSYR[k]["to"] or value) local num={} if totonumber(to) then jg[num[i]].Useful=false end end end for j=1,#jg do if jg[j].Useful==true then data[#data+1]=jg[j].address end end if #data==0 then gg.toast("功能名:"..(SSYR.name or "无").."\n".."修改失败\n"..(SSYR["error"] or ""))gg.loadResults(recover)return nil end if notWrite==true then gg.loadResults(recover)return data end if XGNR then local write={} for i=1,#data do for j=1,#XGNR do write[#write+1]={} write[#write].address=data[i]+(XGNR[j][2]-base) write[#write].flags=XGNR[j][3] write[#write].value=XGNR[j][1] write[#write].freeze=XGNR[j][4] write[#write].name=XGNR[j][5] or nil if write[#write].freeze==true then gg.addListItems({[1]=write[#write]}) else gg.setValues({[1]=write[#write]})end if XGNR[j][6]==true then gg.addListItems({[1]=write[#write]})end end end end if BCNR then local bc={}for j=1,#data do for i=1,#BCNR do bc[#bc+1]={}bc[#bc].address=data[j]+(BCNR[i][1]-base)bc[#bc].flags=BCNR[i][2]bc[#bc].name=BCNR[i][3]end end gg.addListItems(bc)end gg.toast("功能名:"..(SSYR.name or "无").."\n".."[修改成功]")gg.loadResults(recover)end function so(a,b,c) local cSY=gg.getRanges() gg.setVisible(false) lde.srg(a[3]) lde.crs() lde.sbr(a[2],a[4]) local js=gg.getResultCount() local count=lde.gre(js) lde.crs() if #count~=0 then local lode,lope,lobe={},{},{} for p=1,#b do lode[p]={} for i=1,#count do lode[p][i]={} lode[p][i].address=count[i].address+b[p][2] if not b[p][3]then b[p][3]=a[4]end lode[p][i].flags=b[p][3]end lode[p]=gg.getValues(lode[p]) db=bv(b[p][1],"~") if not db[2]then db[2]=db[1]end for i=1,#lode[p] do if tonumber(lode[p][i].value)>=tonumber(db[1]) and tonumber(lode[p][i].value)<=tonumber(db[2]) then lope[#lope+1]={} lope[#lope]=count[i] end end if #lope==0 then lde.srg(cSY)if p>11 then p=11 end return "宝~修改失败,请重新尝试~" end count=lope lope={}end for i=1,#c do for n=1,#count do lope[#lope+1]={} lope[#lope].address=count[n].address+c[i][2] if not c[i][3]then c[i][3]=a[4]end lope[#lope].flags=c[i][3] if c[i][1] then lope[#lope].value=c[i][1] else lope[#lope].value=gg.getValues(lope)[#lope].value end if c[i][4] then lobe[#lobe+1]={} lobe[#lobe]=lope[#lope] table.remove(lope,#lope) end if c[i][4]==1 then lobe[#lobe].freeze=true elseif c[i][4]==2 then lobe[#lobe].freeze=false end if c[i][5] then lobe[#lobe].name=c[i][5] end end end gg.setValues(lope) gg.addListItems(lobe) lde.srg(cSY) return a[1].."宝~已修改成功,祝您游戏愉快~" else lde.srg(cSY) return a[1].."宝~修改失败,请重新尝试~" end end local zb={}local getsl=gg.getResultCount function bgtss(text,flag,Ran) gg.clearResults() gg.setRanges(Ran) gg.searchNumber(text,flag) end function bgtgs(num,flag) if gg.getResultCount()>0 then gg.refineNumber(num,flag) end end function readValue(addr, type)local t = {}t[1] = {}t[1].address = addr t[1].flags = type return gg.getValues(t)[1].value end function QC(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.."宝~修改失败,请重新尝试~\n请尝试重启游戏")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.."宝~修改失败,请重新尝试~\n请尝试重启游戏")end end end function WX(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.."宝~修改失败\n请重新尝试~,请尝试更换房间")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.."宝~已修改成功,祝您游戏愉快~\n请切换一下物品\n 宝~已修改成功,祝您游戏愉快~")else gg.toast(qmnbn.."宝~修改失败,请重新尝试~\n请尝试更换房间")end end end function XE(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.."宝~修改失败\n请重新尝试~,请尝试重启游戏")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.."宝~已修改成功,祝您游戏愉快~\n 宝~已修改成功,祝您游戏愉快~")else gg.toast(qmnbn.."宝~修改失败,请重新尝试~\n请尝试重启游戏")end end end function CA(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.."宝~修改失败\n请重新尝试~,请尝试重启游戏")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.."宝~已修改成功,祝您游戏愉快~\n 宝~已修改成功,祝您游戏愉快~")else gg.toast(qmnbn.."宝~修改失败,请重新尝试~\n请尝试重启游戏")end end end function split(szFullString, szSeparator) local nFindStartIndex = 1 local nSplitIndex = 1 local nSplitArray = {} while true do local nFindLastIndex = string.find(szFullString, szSeparator, nFindStartIndex) if not nFindLastIndex then nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, string.len(szFullString)) break end nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, nFindLastIndex - 1) nFindStartIndex = nFindLastIndex + string.len(szSeparator) nSplitIndex = nSplitIndex + 1 end return nSplitArray end function xgxc(szpy, qmxg) for x = 1, #(qmxg) do xgpy = szpy + qmxg[x]['offset'] xglx = qmxg[x]['type'] xgsz = qmxg[x]['value'] xgdj = qmxg[x]['freeze'] if xgdj == nil or xgdj == '' then gg.setValues({[1] = {address = xgpy, flags = xglx, value = xgsz}}) else gg.addListItems({[1] = {address = xgpy, flags = xglx, freeze = xgdj, value = xgsz}}) end xgsl = xgsl + 1 xgjg = true end end function xqmnb(qmnb) gg.clearResults() gg.setRanges(qmnb[1]['memory']) gg.searchNumber(qmnb[3]['value'], qmnb[3]['type']) if gg.getResultCount() == 0 then gg.toast('ༀid'..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('ༀid'..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('\n✔️id:'..qmnb[2]['name']..'成功📝共修改' .. xgsl .. '封情书') else gg.toast('ༀid'..qmnb[2]['name'] .. '宝~修改失败,请重新尝试~,情书不见了ༀ') end end end end --[[配置1]]function js(address,flags,value) local jz={} jz[1]={} jz[1].address=address jz[1].flags=flags jz[1].value=value gg.setValues(jz) end --[[配置2]]function jz(py,a,xgsz) flags=a value=xgsz so=gg.getRangesList(''..name..'')[1].start js(so+py,a,xgsz) 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 Ax(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.."宝~已修改成功,祝您游戏愉快~\n 宝~已修改成功,祝您游戏愉快~")else gg.toast(qmnbn.."宝~修改失败,请重新尝试~")end end end function Address(adds,offset,chang,value,flags,freeze,save,name)local add=gg.getRangesList(adds)[1]["start"]+offset local data={{["address"]=add,["value"]=value,["flags"]=flags,["freeze"]=freeze}}if chang==true then gg.setValues(data)end if freeze or save ==true then gg.addListItems(data)end if name~="false" then gg.toast("["..name.."]宝~已修改成功,祝您游戏愉快~")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('id'..qmnb[2]['name'] .. '宝~修改失败,请重新尝试~')gg.playMusic("https://fanyi.baidu.com/gettts?lan=zh&text="..qmnb[2]['name'].."宝~修改失败,请重新尝试~&spd=5&source=wise") 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'] .. '宝~修改失败,请重新尝试~')gg.playMusic("https://fanyi.baidu.com/gettts?lan=zh&text="..qmnb[2]['name'].."宝~修改失败,请重新尝试~&spd=5&source=wise") 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('\n'..qmnb[2]['name']..'宝~已修改成功,祝您游戏愉快~,\n已修改' .. xgsl .. '条数据') gg.playMusic("https://fanyi.baidu.com/gettts?lan=zh&text="..qmnb[2]['name'].."宝~已修改成功,祝您游戏愉快~&spd=5&source=wise")else gg.toast(''..qmnb[2]['name'] .. '宝~修改失败,请重新尝试~') end end end end function SearchWrite(tb1, tb2, dataType, Name) local lt1={} local lt2={} local mm1={["主特征码"] = tb1[1][1],["类型"] = dataType } table.insert(lt1,1,mm1) for i=2 , #tb1 do local mm2={["副特征码"] = tb1[i][1],["偏移"] = tb1[i][2]} table.insert(lt1,i,mm2) end for i=1 , #tb2 do if tb2[i][2]~=nil then local mm3={["修改"] = tb2[i][1],["偏移"] = tb2[i][2]} table.insert(lt2,i,mm3) else local mm3={["修改"] = false,["偏移"] = tb2[i][1]} table.insert(lt2,i,mm3) end end LongTao(lt1, lt2 ) end function LongTao(Search, Write) gg.clearResults() gg.setVisible(false) lx=Search[1]["类型"] gg.searchNumber(Search[1]["主特征码"], lx) local count = gg.getResultCount() local result = gg.getResults(count) gg.clearResults() local data = {} if (count > 0) then for i, v in ipairs(result) do v.isUseful = true end for k=2, #Search do local tmp = {} local num = Search[k]["副特征码"] if Search[k]["类型"]~= nil then lx =Search[k]["类型"] else lx = Search[1]["类型"] end for i, v in ipairs(result) do tmp[#tmp+1] = {} tmp[#tmp].address = v.address + Search[k]["偏移"] tmp[#tmp].flags = lx 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 = {} for i=1, #data do for k, w in ipairs(Write) do if w["类型"] ~= nil then lx = w["类型"] else lx = Search[1]["类型"] end t[#t+1] = {} t[#t].address = data[i] + w["偏移"] t[#t].flags = lx if (w["修改"]~=nil) and (w["修改"]~=false) then t[#t].value = w["修改"] gg.setValues(t) if (w["冻结"] == true) then local item = {} item[#item+1] = t[#t] item[#item].freeze = w["冻结"] gg.addListItems(item) end end end end gg.loadResults(t) else gg.toast("未定位到数据!") return false end else gg.toast("未定位到数据!") 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 isok = mearrass(memory, array) if isok then local isok, datatype = typetab(array, type) if isok then if Assert(array[1].hv) then gg.clearResults() gg.setRanges(memory) gg.searchNumber(array[1].lv .. "~" .. array[1].hv, datatype[1]) else gg.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].isok = 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].isok = false end else if tostring(t[z].value) ~= tostring(array[i].lv) then data[z].isok = false end end end end for i = 1, #data do if data[i].isok 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 Xilst() local iihj = ilht+1 gg.setRanges(4) local dataType = 4 local tb1 = {{ilht, 0},{iihj, 0x400},} local tb2 = {{ 0 }, } SearchWrite(tb1, tb2, dataType) sl=gg.getResultCount() jg=gg.getResults(100) for i = 1, sl do dzy=jg[i].address gg.addListItems({[1] = {address = dzy,flags = gg.TYPE_DWORD,freeze = true,value = ilht}}) end end function SearchWrite(tb1, tb2, dataType, Name) local lt1={} local lt2={} local mm1={["主特征码"] = tb1[1][1],["类型"] = dataType } table.insert(lt1,1,mm1) for i=2 , #tb1 do local mm2={["副特征码"] = tb1[i][1],["偏移"] = tb1[i][2]} table.insert(lt1,i,mm2) end for i=1 , #tb2 do if tb2[i][2]~=nil then local mm3={["修改"] = tb2[i][1],["偏移"] = tb2[i][2]} table.insert(lt2,i,mm3) else local mm3={["修改"] = false,["偏移"] = tb2[i][1]} table.insert(lt2,i,mm3) end end LongTao(lt1, lt2 ) end function LongTao(Search, Write) gg.clearResults() gg.setVisible(false) lx=Search[1]["类型"] gg.searchNumber(Search[1]["主特征码"], lx) local count = gg.getResultCount() local result = gg.getResults(count) gg.clearResults() local data = {} if (count > 0) then for i, v in ipairs(result) do v.isUseful = true end for k=2, #Search do local tmp = {} local num = Search[k]["副特征码"] if Search[k]["类型"]~= nil then lx =Search[k]["类型"] else lx = Search[1]["类型"] end for i, v in ipairs(result) do tmp[#tmp+1] = {} tmp[#tmp].address = v.address + Search[k]["偏移"] tmp[#tmp].flags = lx 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 = {} for i=1, #data do for k, w in ipairs(Write) do if w["类型"] ~= nil then lx = w["类型"] else lx = Search[1]["类型"] end t[#t+1] = {} t[#t].address = data[i] + w["偏移"] t[#t].flags = lx if (w["修改"]~=nil) and (w["修改"]~=false) then t[#t].value = w["修改"] gg.setValues(t) if (w["冻结"] == true) then local item = {} item[#item+1] = t[#t] item[#item].freeze = w["冻结"] gg.addListItems(item) end end end end gg.loadResults(t) else gg.toast("未定位到数据!") return false end else gg.toast("未定位到数据!") 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 isok = mearrass(memory, array) if isok then local isok, datatype = typetab(array, type) if isok then if Assert(array[1].hv) then gg.clearResults() gg.setRanges(memory) gg.searchNumber(array[1].lv .. "~" .. array[1].hv, datatype[1]) else gg.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].isok = 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].isok = false end else if tostring(t[z].value) ~= tostring(array[i].lv) then data[z].isok = false end end end end for i = 1, #data do if data[i].isok 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 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 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 SearchWrite(tb1, tb2, dataType, Name) local lt1={} local lt2={} local mm1={["主特征码"] = tb1[1][1],["类型"] = dataType } table.insert(lt1,1,mm1) for i=2 , #tb1 do local mm2={["副特征码"] = tb1[i][1],["偏移"] = tb1[i][2]} table.insert(lt1,i,mm2) end for i=1 , #tb2 do if tb2[i][2]~=nil then local mm3={["修改"] = tb2[i][1],["偏移"] = tb2[i][2]} table.insert(lt2,i,mm3) else local mm3={["修改"] = false,["偏移"] = tb2[i][1]} table.insert(lt2,i,mm3) end end LongTao(lt1, lt2 ) end function LongTao(Search, Write) gg.clearResults() gg.setVisible(false) lx=Search[1]["类型"] gg.searchNumber(Search[1]["主特征码"], lx) local count = gg.getResultCount() local result = gg.getResults(count) gg.clearResults() local data = {} if (count > 0) then gg.toast("共搜索 "..count.." 条数据") for i, v in ipairs(result) do v.isUseful = true end for k=2, #Search do local tmp = {} local num = Search[k]["副特征码"] if Search[k]["类型"]~= nil then lx =Search[k]["类型"] else lx = Search[1]["类型"] end for i, v in ipairs(result) do tmp[#tmp+1] = {} tmp[#tmp].address = v.address + Search[k]["偏移"] tmp[#tmp].flags = lx 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 = {} for i=1, #data do for k, w in ipairs(Write) do if w["类型"] ~= nil then lx = w["类型"] else lx = Search[1]["类型"] end t[#t+1] = {} t[#t].address = data[i] + w["偏移"] t[#t].flags = lx if (w["修改"]~=nil) and (w["修改"]~=false) then t[#t].value = w["修改"] gg.setValues(t) if (w["冻结"] == true) then local item = {} item[#item+1] = t[#t] item[#item].freeze = w["冻结"] gg.addListItems(item) end end end end gg.loadResults(t) gg.toast("共偏移η"..#t.." 条数据ΔΘ") else gg.toast("未定位到数据!") return false end else gg.toast("未定位到数据!") 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 isok = mearrass(memory, array) if isok then local isok, datatype = typetab(array, type) if isok then if Assert(array[1].hv) then gg.clearResults() gg.setRanges(memory) gg.searchNumber(array[1].lv .. "~" .. array[1].hv, datatype[1]) else gg.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].isok = 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].isok = false end else if tostring(t[z].value) ~= tostring(array[i].lv) then data[z].isok = false end end end end for i = 1, #data do if data[i].isok 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 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 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 S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() local _Q = tonumber(0x167ba0fe) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address print(string.char(231,190,164,58).._Q) end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end local so_bss='liblibGameApp.so:bss' RE={ {0x6C3940, 0x368, 0xC0},--[跳高]1 {0x6C3940, 0x350, 0x84},--[连跳]2 {0x846A40, 0x430, 0x770},--[重力]3 {0x6C3940, 0x350, 0xC0},--[Z]4 {0x6C3940, 0x350, 0x118},--[视角坐标]5 {0x3BBAB8, 0xC0},--[模式]6 {0xE428, 0x880},--[房间模式]7 {0x35E0, 0x4B4},--[速度]8 {0x6C3940, 0x278, 0x6FC},--[人物技能]9 {0x6C3940, 0x350, 0xBC},--[X]10 {0x6C3940, 0x350, 0xC4},--[Y]11 {0x41F40, 0xE8, 0x548},--[外盘]12 {0x791210, 0x410, 0x194},--[内盘]13 {0x6FA8, 0x0, 0x5A0, 0x4E0},--[旋转]14 {0x6FA8, 0x0, 0x5A0, 0x4E8},--[头旋转]15 {0x6C3940, 0x580},--[人物状态]16 {0x660DB0, 0x6F8, 0x748, 0x6AC},--[秒挖方块]17 {0x399870, 0x38, 0xC},--[视角]18 {0x69BB0, 0x2C0, 0x5E0},--[飞行速度]19 {0x54D38, 0x2E0, 0x1D0, 0x1C8},--[距离]20 {0x6C3940, 0x4B0, 0x760},--[攻击状态]21 {0x6C3940, 0x6E0}--[对准数据]22 } ------------------------------------------------------------------------------------------------------------- vibra = context:getSystemService(Context.VIBRATOR_SERVICE) changan = {} local changan = changan local android = import('android.*') write=file.write function panduan(rec) fille,err = io.open(rec) if fille == nil then return false else return true end end read=file.read function checkimg(tmp) if panduan("/sdcard/SL/图片/"..tmp) ~= true then gg.toast("正在加载资源"..tmp) download("https://escape2020-1303126286.cos.ap-shenzhen-fsi.myqcloud.com/"..tmp,"/sdcard/SL/图片/"..tmp) end end function 获取图片(txt) ntxt=string.sub(string.gsub(txt,"/","."),-10,-1) if string.find(tostring(txt),"http")~=nil then if panduan("/sdcard/SL/图片/"..ntxt)==false then download(txt,"/sdcard/SL/图片/"..ntxt) end txt="/sdcard/SL/图片/"..ntxt end return luajava.getBitmapDrawable(txt) end ckimg = { "blackx", } for i = 1,#ckimg do checkimg(ckimg[i]) end context = app.context window = context:getSystemService("window") -- 获取窗口管理器 function getLayoutParams() LayoutParams = WindowManager.LayoutParams layoutParams = luajava.new(LayoutParams) if (Build.VERSION.SDK_INT >= 26) then -- 设置悬浮窗方式 layoutParams.type = LayoutParams.TYPE_APPLICATION_OVERLAY else layoutParams.type = LayoutParams.TYPE_PHONE end layoutParams.format = PixelFormat.RGBA_8888 -- 设置背景 layoutParams.flags = LayoutParams.FLAG_NOT_FOCUSABLE -- 焦点设置Finish layoutParams.gravity = Gravity.TOP|Gravity.LEFT -- 重力设置 layoutParams.width = LayoutParams.WRAP_CONTENT -- 布局宽度 layoutParams.height = LayoutParams.WRAP_CONTENT -- 布局高度 return layoutParams end function getj6() jianbian6 = luajava.new(GradientDrawable) jianbian6:setCornerRadius(20) jianbian6:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbian6:setColors({0xffffffff,0xffffffff}) jianbian6:setStroke(0,"0xdd000000") return jianbian6 end hanshu = function(v, event) local Action = event:getAction() if Action == MotionEvent.ACTION_DOWN then isMove = false RawX = event:getRawX() RawY = event:getRawY() x = mainLayoutParams.x y = mainLayoutParams.y elseif Action == MotionEvent.ACTION_MOVE then isMove = true mainLayoutParams.x = tonumber(x) + (event:getRawX() - RawX) mainLayoutParams.y = tonumber(y) + (event:getRawY() - RawY) window:updateViewLayout(floatWindow, mainLayoutParams) end end slctb1 = luajava.loadlayout({ GradientDrawable, color = "#661E1C27", cornerRadius = 20 }) slcta1 = luajava.loadlayout({ GradientDrawable, color = "#331E1C27", cornerRadius = 20 }) function getSelector3() selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, slcta1) selector:addState({ -android.R.attr.state_pressed }, slctb1) return selector end slctb = luajava.loadlayout({ GradientDrawable, color = "#001E1C27", cornerRadius = 0 }) slcta = luajava.loadlayout({ GradientDrawable, color = "0xff0086F1", cornerRadius = 4 }) slctc = luajava.loadlayout { GradientDrawable, color = "#ffffffff", cornerRadius = 16 } slctd = luajava.loadlayout { GradientDrawable, color = "#ddE0E0E0", cornerRadius = 16 } slcte = luajava.loadlayout { GradientDrawable, color = "#11ffffff", cornerRadius = 12 } slctf = luajava.loadlayout { GradientDrawable, color = "#aa1E1C27", cornerRadius = 12 } changan.controlFlip = function(control,time) luajava.runUiThread(function() import "android.view.animation.Animation" import "android.animation.ObjectAnimator" xuanzhuandonghua = ObjectAnimator:ofFloat(control, "rotationY", {0, 360}) xuanzhuandonghua:setRepeatCount(0) xuanzhuandonghua:setRepeatMode(Animation.REVERSE) xuanzhuandonghua:setDuration(time) xuanzhuandonghua:start() end) end function getSelector() selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, slcta) selector:addState({ -android.R.attr.state_pressed }, slctb) return selector end function getSelector2() selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, slctd) selector:addState({ -android.R.attr.state_pressed }, slctc) return selector end jianbian = luajava.new(GradientDrawable) jianbian:setCornerRadius(30) jianbian:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbian2 = luajava.new(GradientDrawable) jianbian2:setCornerRadius(30) jianbian2:setGradientType(GradientDrawable.LINEAR_GRADIENT) local isswitch YoYoImpl = luajava.getYoYoImpl() changan.menu = function(sview) if isswitch then return false end for i=1,#stab do _ENV["jmb"..i]=getSelector() end isswitch = true cebian = { LinearLayout, id = "侧边", gravity = "center", visibility = "gone", layout_height = "wrap_content", layout_width = "match_parent", } gund = { LinearLayout, background=getblue(), gravity = "center", orientation = "horizontal", layout_height = "wrap_content", layout_width = "wrap_content", } for i = 1,#stab do _ENV["jm"..i]=luajava.loadlayout({ LinearLayout, id = "jm"..i, layout_height = "28dp", layout_width = "68dp", gravity = "center", layout_marginTop = "2dp", layout_marginBottom = "2dp", background = _ENV["jmb"..i], onClick=function() --changan.controlFlip(_ENV["jm"..i],500) 切换(i) end, { TextView, id="jm"..i.."t", gravity = "center", textColor="#0086F1", text = stab[i], --onClick = function() 切换(i) end }}) gund[#gund+1] = _ENV["jm"..i] if i< #stab then gund[#gund+1] = luajava.loadlayout({ LinearLayout, layout_height="match_parent", layout_width="1.3dp", background="#0086F1" }) end end cebian[#cebian+1] = { HorizontalScrollView, gravity = "center", fillViewport = "true", layout_height = "wrap_content", layout_width = "wrap_content", gund, } cebian = luajava.loadlayout(cebian) for i = 1,#stab do _ENV["layout"..i] = luajava.loadlayout( { ScrollView, --background = getj6(), fillViewport = "true", padding = "3dp", id = "layout"..i, visibility = "gone", padding="10dp", layout_width = "wrap_content", layout_height = "280dp", orientation = "vertical", { LinearLayout, --background = getj6(), id = "layoutm"..i, gravity = "top", layout_width = "250dp", orientation = "vertical", gravity = "center_horizontal", }, }) end ckou = { LinearLayout, id = "chuangk", padding="4dp", visibility = "gone", layout_width = "wrap_content", layout_height = "wrap_content", orientation = "vertical", cebian, } for i = 1,#stab do ckou[#ckou+1] = _ENV["layout"..i] end --luajava.newThread(function() develo(ckou) end):start() ckou = luajava.loadlayout(ckou) title = luajava.loadlayout({ TextView, id = "title", visibility = "gone", text = stitle, --background="#80FF00", textColor="#000000", gravity = "center", textSize = "19sp", layout_marginTop = "20dp", layout_width = "280dp", }) floatWindow = { LinearLayout, id = "motion", orientation="vertical", {FrameLayout, layout_width="wrap_content", --background="#ffffff", { LinearLayout, gravity = "center", { ImageView, id = "control", background = 获取图片(xfcpic), layout_width = "40dp", layout_height = "40dp", }}, { ImageView, id = "exit", layout_gravity="right", visibility="gone", src = "/sdcard/SL/图片/blackx", layout_width = "20dp", layout_height = "20dp", layout_marginTop = "10dp", layout_marginRight = "20dp", }, {LinearLayout, layout_width = "wrap_content", orientation = "vertical", gravity = "center_vertical", layout_height = "wrap_content", { LinearLayout, layout_width = "wrap_content", layout_height = "wrap_content", orientation = "horizontal", gravity = "center", title, }, }}, ckou } local function invoke() local ok local RawX, RawY, x, y mainLayoutParams = getLayoutParams() floatWindow = luajava.loadlayout(floatWindow) local function invoke2() block('start') for k = 1,#sview do for i = 1,#sview[k] do _ENV["layoutm"..k]:addView(sview[k][i]) end end window:addView(floatWindow, mainLayoutParams) block('end') end local runnable = luajava.getRunnable(invoke2) local handler = luajava.getHandler() handler:post(runnable) block('join') control.onClick = 隐藏 exit.onClick = 隐藏 local isMove motion.onTouch = hanshu control.onTouch = hanshu exit.onTouch = hanshu end invoke(swib1,swib2) gg.setVisible(false) luajava.setFloatingWindowHide(true) 切换(1) end function changan.line() rest = luajava.loadlayout({ LinearLayout, layout_width = 'fill_parent', layout_height = "1dp", background = "#C2CAD7", }) return rest end function changan.line2() rest = luajava.loadlayout({ LinearLayout, layout_width = '180dp', layout_height = "5dp", layout_marginLeft="35dp", background = "#0087FF", layout_marginTop="10dp", }) return rest end function getblue() jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(6) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({0xffffffff,0xffffffff}) jianbians:setStroke(4,"0xff0086F1") return jianbians end function getShape3() jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(10) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({0xffffffff,0xffffffff}) jianbians:setStroke(4,"0x77000000") return jianbians end function getShape5() jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(4) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({0xffffffff,0xff007AFF}) jianbians:setOrientation(GradientDrawable.Orientation.TL_BR) jianbians:setStroke(2,"0x77000000") return jianbians end function getShape() jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(90) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({0xff49C263,0xff49C263}) jianbians:setStroke(0,"0xffffffff") return jianbians end function getShape2() jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(10) jianbians:setShape(GradientDrawable.RECTANGLE) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({0xffffffff,0xffffffff}) jianbians:setStroke(8,"0xff000000") return jianbians end corbk = true 当前ui = 1 显示 = 0 beij = luajava.new(GradientDrawable) beij:setCornerRadius(25) beij:setGradientType(GradientDrawable.LINEAR_GRADIENT) beij:setColors({0xfeEFEFEF,0xfeEFEFEF,}) beij:setStroke(0,"0x44FFffff") --beijw beij2 = luajava.loadlayout({ GradientDrawable, color = "#001E1C27", cornerRadius = 10 }) function visi(tid,ttid) local tview = luajava.getIdValue(tid) local ttview = luajava.getIdValue(ttid) if not tview then return 0 end if tonumber(tostring(tview:getVisibility())) == 8.0 then tview:setVisibility(View.VISIBLE) ttview:setBackground(luajava.getBitmapDrawable("/sdcard/SL/图片/hsj")) else tview:setVisibility(View.GONE) ttview:setBackground(luajava.getBitmapDrawable("/sdcard/SL/图片/sj")) end end function changan.box2(views,boxi) local tid = "box"..guid() local ttid = tid.."678" firadio = { LinearLayout, layout_width = '250dp', layout_height = "wrap_content", layout_marginTop = "2dp", layout_marginBottom = "2dp", orientation = "vertical", } if type(views[1]) == "string" or type(views[1]) == "number" then firadio[#firadio+1] = { LinearLayout, layout_width = 'fill_parent', layout_height = "28dp", gravity = "center_vertical", layout_marginTop = "2dp", layout_marginBottom = "4dp", onClick = function() visi(tid,ttid) end, background = getSelector3(), { ImageView, layout_marginLeft = "10dp", id = luajava.newId(ttid), background = "/sdcard/SL/图片/hsj", layout_width = "20dp", layout_height = "20dp", layout_marginTop = "0dp", }, { TextView,text = views[1], textSize = "16sp", layout_marginLeft = "15dp", layout_width = "100dp", textColor = "#ffffff", gravity = "left", }} else gg.alert("changan.box第一个参数必须是string") os.exit() end if boxi then boxi="visible" else boxi="gone" end radios = { LinearLayout, layout_marginLeft = "0dp", layout_marginRight = "0dp", orientation = "vertical", visibility = boxi, id = luajava.newId(tid), padding = "0dp", layout_width = 'fill_parent', } for i = 2,#views do radios[#radios+1] = views[i] end firadio[#firadio+1] = radios return luajava.loadlayout(firadio) end function changan.box(views) local tid = "box"..guid() local ttid = tid.."6" firadio = { LinearLayout, gravity = "center", layout_width = 'fill_parent', layout_height = "wrap_content", orientation = "vertical", } if type(views[1]) == "string" or type(views[1]) == "number" then if views[1]~="" then tsiz="14sp" else tsiz="0sp"end firadio[#firadio+1] = { LinearLayout, layout_height = "wrap_content", layout_width = "fill_parent", { TextView, text = views[1], textSize = tsiz, layout_width = "match_parent", textColor = "#000000", gravity = "center", }} else end radios = { LinearLayout, layout_marginLeft = "0dp", layout_marginRight = "0dp", orientation = "vertical", padding = "0dp", background = getj6(), layout_width = 'fill_parent', } for i = 2,#views do radios[#radios+1] = views[i] if i~=#views then radios[#radios+1] = changan.line() end end firadio[#firadio+1] = radios return luajava.loadlayout(firadio) end 当前ui = 1 function 切换(x) 当前ui = x luajava.runUiThread(function() for i = 1,#stab do _ENV["jm"..i]:setBackground(_ENV["jmb"..i]) _ENV["jm"..i.."t"]:setTextColor(0xff0086F1) _ENV["layout"..i]:setVisibility(View.GONE) end _ENV["layout"..当前ui]:setVisibility(View.VISIBLE) _ENV["jm"..当前ui]:setBackground(slcta) _ENV["jm"..当前ui.."t"]:setTextColor(0xffffffff) --YoYoImpl:with("FadeIn"):duration(200):playOn(_ENV["layout"..当前ui]) end) end function 隐藏() luajava.runUiThread(function() if tonumber(tostring(exit:getVisibility())) == 8.0 then control:setVisibility(View.GONE) chuangk:setVisibility(View.VISIBLE) exit:setVisibility(View.VISIBLE) title:setVisibility(View.VISIBLE) cebian:setVisibility(View.VISIBLE) mainLayoutParams.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL window:updateViewLayout(floatWindow, mainLayoutParams) --YoYoImpl:with("FadeIn"):duration(300):playOn(title) _ENV["layout"..当前ui]:setVisibility(View.VISIBLE) YoYoImpl:with("FadeIn"):duration(200):playOn(floatWindow) floatWindow:setBackground(beij) else control:setVisibility(View.VISIBLE) mainLayoutParams.flags = LayoutParams.FLAG_NOT_FOCUSABLE window:updateViewLayout(floatWindow, mainLayoutParams) title:setVisibility(View.GONE) cebian:setVisibility(View.GONE) floatWindow:setBackground(beij2) chuangk:setVisibility(View.GONE) exit:setVisibility(View.GONE) YoYoImpl:with("FadeIn"):duration(200):playOn(floatWindow) _ENV["layout"..当前ui]:setVisibility(View.GONE) end end) end function 退出UI() window:removeView(floatWindow) luajava.setFloatingWindowHide(false) bloc("end") end function guid() seed = { 'e','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f' } tb = {} for i = 1,32 do table.insert(tb,seed[math.random(1,16)]) end sid = table.concat(tb) return string.format('%s%s%s%s%s', string.sub(sid,1,8), string.sub(sid,10,12), string.sub(sid,21,22)) ..string.format('%s%s%s%s%s', string.sub(sid,1,6), string.sub(sid,21,25) ) end chazhi={} chajv={} function changan.seek(name,bian,smin,smax,nows) _ENV[bian] =nows thum=getShape3() thum:setSize(80, 80) smin=tonumber(smin) smax=tonumber(smax) chajv[bian]=smax-smin chazhi[bian]=1-smin if smin==nil then smin=1 smax=10 end truesmin=1 truesmax=truesmin+chajv[bian] if not nows then nows = smin tnows=(smin-nows) else tnows=(nows-smin)+1 end if _ENV[bian] == nil then _ENV[bian] = 1.0 end if not name then name = "未设置" end local names = name..guid() rest = luajava.loadlayout({ LinearLayout, layout_width = 'fill_parent', layout_height = "36dp", { LinearLayout, layout_width = 'fill_parent', layout_hight = "fill_parent", layout_marginTop = "5dp", layout_marginBottom = "5dp", gravity = "center_vertical", --background = getShape(), { TextView, gravity = "top", textColor="#00A4FF", textSize="16sp", text = name..":"..nows, id = luajava.newId(names), layout_width = '100dp', layout_marginLeft = "10dp", layout_marginRight = "0dp", }, { SeekBar, layout_width = '140dp', id=luajava.newId(name.."seekbar"), min = truesmin, max = truesmax, progress=tnows, --paddingStart="0dp", --paddingEnd="0dp", progressDrawable={getShape5()}, thumb=thum, progressHeight="2dp", onSeekBarChange = { onProgressChanged = function(SeekBar, var2, var3) if not var3 then return end local resultvar=tonumber(string.sub(var2,0,-3))-chazhi[bian] luajava.runUiThread(function() luajava.getIdValue(names):setText(name..":".. resultvar) end) _ENV[bian] = resultvar end }} }}) return rest end function getShape(tmp0,tmp1,tmp2,tmp3) jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(tmp0) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors(tmp1) jianbians:setOrientation(GradientDrawable.Orientation.LEFT_RIGHT) jianbians:setStroke(4,tmp3) return jianbians end function getShape2(tmp0,tmp1,tmp2,tmp3) jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(tmp0) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors(tmp1) jianbians:setOrientation(GradientDrawable.Orientation.LEFT_RIGHT) jianbians:setStroke(8,tmp3) return jianbians end checkbg=getShape( 45, {0xffB8B8B8,0xffB8B8B8}, 4,0xffB8B8B8) checkbga=getShape( 45, {0xff0086F1,0xff0086F1}, 4,0xff0086F1) checkbg1=getShape2( 45, {0xffffffff,0xffffffff}, 4,0xffffffff) checkbg2=getShape2( 45, {0xffffffff,0xffffffff}, 4,0xffffffff) function 开关3(name,func1,func2,nid) name=name..guid() _ENV[name] = "关" if func1 == nil then func1 = "" end if func2 == nil then func2 = "" end if type(func1) == "function" then return function() namers = _ENV[name] if namers ~= "开" then luajava.runUiThread(function() luajava.getIdValue(nid.."k"):setVisibility(View.GONE) luajava.getIdValue(nid.."g"):setVisibility(View.VISIBLE) luajava.getIdValue(nid):setBackground(checkbga) end) _ENV[name] = "开" vibra:vibrate(10) pcall(func1) else luajava.runUiThread(function() luajava.getIdValue(nid.."g"):setVisibility(View.GONE) luajava.getIdValue(nid.."k"):setVisibility(View.VISIBLE) luajava.getIdValue(nid):setBackground(checkbg) end) _ENV[name] = "关" vibra:vibrate(10) pcall(func2) end end end end function changan.switch(name,func1,func2,yans) nid = name..guid() if not yans then yans="#00A4FF" end local func = 开关3(name,func1,func2,nid) if not name then name = "未设置" end rest = luajava.loadlayout({ LinearLayout, layout_width = 'fill_parent', layout_height = "36dp", gravity = "center_vertical", { LinearLayout, layout_width = 'fill_parent', layout_height = "35dp", gravity = "center_vertical", { TextView, gravity = "top", text = name, textColor=yans, textSize="16sp", layout_width = '170dp', layout_marginLeft = "10dp", layout_marginRight = "10dp", }, { FrameLayout, id = luajava.newId(nid), background = checkbg, onClick = function() luajava.newThread(function() func() end):start() end, layout_width = '43dp', layout_height = 'wrap_content', padding="1dp", { LinearLayout, layout_gravity="left", id = luajava.newId(nid.."k"), background = checkbg1, onClick = function() luajava.newThread(function() func() end):start() end, layout_width = '21dp', layout_height = '21dp', },{ LinearLayout, visibility="gone", layout_gravity="right", id = luajava.newId(nid.."g"), background = checkbg2, onClick = function() luajava.newThread(function() func() end):start() end, layout_width = '21dp', layout_height = '21dp', } }} }) return rest end function changan.edit(name) _ENV[name] = name..guid() if not name then name = "点击输入文字" end rest = luajava.loadlayout({ LinearLayout, layout_width = 'fill_parent', layout_height = "40dp", { FrameLayout, layout_width = 'fill_parent', layout_hight = "fill_parent", gravity = "center", --orientation="vertical", { EditText, gravity = "top", background = getShape(), hint = name, textColor="#383C3F", gravity="center", textSize="15sp", --layout_marginBottom="-20dp", id = luajava.newId(_ENV[name]), layout_width = 'fill_parent', }, { LinearLayout, layout_width = '220dp', layout_height = "2dp", layout_gravity="center", background = "#0087FF", layout_marginTop="10dp", } } }) luajava.getIdValue(_ENV[name]):setHintTextColor(0xff787878) return rest end function changan.radio(radio) firadio = { LinearLayout, layout_width = 'fill_parent', layout_hight = "fill_parent", padding="10dp", orientation = "vertical" } if type(radio[1]) == "string" or type(radio[1]) == "number" then firadio[#firadio+1] = { TextView,text = radio[1]} end radios = { RadioGroup,background = getShape(), layout_width = 'fill_parent', } for i = 2,#radio do radios[#radios+1] = { RadioButton, layout_width = 'fill_parent', text = radio[i][1], onClick = function() luajava.newThread(function() pcall(radio[i][2]) end):start() end, } end firadio[#firadio+1] = radios return luajava.loadlayout(firadio) end function changan.button(txt,func,yans) if not yans then yans="#00A4FF" end if not txt then txt = "未设置" end return luajava.loadlayout( {LinearLayout, layout_width = 'fill_parent', layout_hight = "30dp", background=getSelector2(), onClick=function() luajava.newThread(func):start() end, { LinearLayout, layout_width = "fill_parent", layout_hight="wrap_content", gravity="center_horizontal", layout_marginTop = "6dp", layout_marginBottom = "6dp", { TextView, textStyle="bold", textColor=yans, --id = luajava.newId(tid), text = txt, textSize="15sp", layout_width = "wrap_content", }, }}) end function changan.text(txt,color,size) if not txt then txt = "未设置文字" end if not color then color = "#ffffff" end if not size then size = "18sp" end return luajava.loadlayout( { TextView, text = txt, textSize = size, textColor = color, layout_width = "wrap_content", }) end corb = true function changan.setedit(name,txt) txt = tostring(txt) luajava.runUiThread(function() luajava.getIdValue(_ENV[name]):setText(txt) end) end function changan.getedit(name) edit = tostring(luajava.getIdValue(_ENV[name]):getText()) return edit end function 开关(name,func1,func2) if func1 == nil then func1 = "" end if func2 == nil then func2 = "" end if type(func1) == "function" then return function() namers = _ENV[name] if namers ~= "开" then _ENV[name] = "开" pcall(func1) else _ENV[name] = "关" pcall(func2) end end end end 帧率 = function () local cglib = require('cglib') local windowManager = require('windowManager') local function FpsView() local fps = 0 local fpsView = cglib.createInterceptor(TextView, {'onDraw'}, function(thisObject, param, methodProxy) methodProxy:invokeSuper(thisObject, param) fps = fps + 1 thisObject:postInvalidateDelayed(2) end, context) fpsView:setText('fps') fpsView:setTextColor(0xFFFF0000) fpsView:setTextSize(15) local handler = cglib.createInterceptor(Handler, {'handleMessage'}, function(thisObject, param, methodProxy) methodProxy:invokeSuper(thisObject, param) local message = param[1] fpsView:setText(string.format('FPS : %d', message.what)) end, Looper:getMainLooper()) luajava.startThread(function() while true do local msg = Message:obtain() msg.what = fps fps = 0 handler:sendMessage(msg) gg.sleep(1000) end end) return fpsView end local fpsViewManager = windowManager:bindView(FpsView()) fpsViewManager:show() fpsViewManager:setMoveable(true) end gg.playVideo("https://pan.baidu.re/view.php/da87d969d14d02789c6ebfadb1e85234.mp4") stitle = "SL.Por v2.0" stab = { "主页", "房主", "联机", "其它", } xfcpic = "https://pan.baidu.re/view.php/48d7fd3eb94aca8025965ee762679eb1.png" changan.menu( { { changan.button("选择进程", function() gg.setProcessX() end), changan.button("登录防闪", function() gg.toast(so({"",1853321060,8,4},{{1953390894,4}},{{0,-0x3C,4},{0,-0x38,4}})) end), changan.switch("内存防封", function() py={[1]=0x4E960,[2]=0x4EE4C,[3]=0x4EE48, [4]=0x8CF90,[5]=0x4EE04,} py={[1]=0x1380,[2]=0x270,} py={[1]=0x9898,} end), changan.switch("过ACE检测", function() gg.clearResults()gg.setRanges(16384) gg.searchNumber(":seconds", gg.TYPE_BYTE, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber(":seconds", gg.TYPE_BYTE, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(99999)gg.editAll("", gg.TYPE_BYTE) gg.toast("宝~已修改成功,祝游戏愉快~") end), changan.box({"Now that you know this is my life", changan.switch("画面帧率", function() 帧率() end), changan.switch("防止录屏", function() setScreenshots(true) end, function() setScreenshots(false) end), changan.button("清除列表", function() gg.clearList() end), changan.button("退出脚本", function() 退出UI() end, "#DB202C"), }), }, { changan.switch("伪装服主", function() gg.toast("请在5秒内复制服主的迷你号") gg.sleep(5000) fzmnh = gg.prompt({F='输入服主的迷你号'}, {F=''}) gg.sleep(5000) ndmnh = gg.prompt({N='输入你的迷你号'}, {N=''}) gg.searchNumber(fzmnh['F'], gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.refineNumber(fzmnh['F'], gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) revert = gg.getResults(100, nil, nil, nil, nil, nil, nil, nil, nil) gg.editAll(ndmnh['N'], gg.TYPE_DWORD) gg.processResume() end), changan.switch("喷漆改物", function() SL = gg.prompt({"输入需要的物品代码\n输入12239恢复"},{[1]=667},{[1]="number"})[1] gg.toast(so({"",12240,4,4},{{200,-0x1B0,4},{2,0x8,4}},{{SL,-0x280,4,1}})) end), changan.switch("修改物品", function() gg.setRanges(4) local dataType = 4 local tb1 = {{1117126656, 0},{256, -0x24},{65793, -0x6C},} local tb2 = {{ -0x74 }, } SearchWrite(tb1, tb2, dataType) sln=gg.getResultCount() if sln<1 then return end local scw=gg.getResults(1) sl=gg.getValues(scw) sc=sl[1].value GW = gg.prompt({"输入物品代码"},{[1]=15054},{[1]="number"})[1] qmnb= { {['memory']=4}, {['name']=''}, {['value']=sc, ['type']=4}, {['lv']=1216418114,['offset']=-936, ['type']=4}, } qmxg= { {['value']=GW,['offset']=0,['type']=4}, } xqmnb(qmnb,qmxg) end), changan.switch("星星数量", function() qmnb = {{["memory"] = 4}, {["name"] = ""}, {["value"] = 4474776592571170816, ["type"] = 32}, {["lv"] = 1120403456, ["offset"] = -24, ["type"] = 32}, }qmxg = {{["value"] = 1000000, ["offset"] = -80, ["type"] = 16, ["freeze"] = true},{["value"] = 1000000, ["offset"] = -256, ["type"] = 16, ["freeze"] = true},{["value"] = 0.00006336603, ["offset"] = 0x14, ["type"] = 16},} xqmnb(qmnb,qmxg) end), changan.switch("创造背包", function() gg.toast(so({"",5074258675312059233,4,32},{{10,-20,4}},{{257,252,4}})) end), changan.switch("房间环境", function() SL=gg.prompt({"房主3 联机2 异常99"},{""},{"number"})[1] gg.edits(xe(so_bss,RE[7],1),{{SL,4,0}},"") end), changan.switch("清空世界", function() gg.alert("无法关闭,谨慎开启") gg.clearResults() gg.setRanges(16384) gg.searchNumber("65538D;65536D;1", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("1", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(1000) gg.editAll("-99", gg.TYPE_FLOAT) gg.toast("宝~已修改成功,祝游戏愉快~") gg.clearResults() gg.setRanges(16384) gg.searchNumber("65538D;65536D;1", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("1", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(1000) gg.editAll("0", gg.TYPE_FLOAT) gg.toast("宝~已修改成功,祝游戏愉快~") gg.clearResults() gg.setRanges(16384) gg.searchNumber("65538D;-99", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("-99", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(1000) gg.editAll("1", gg.TYPE_FLOAT) gg.toast("宝~已修改成功,祝游戏愉快~") gg.clearResults() end), changan.switch("无限耐久", function() xggs = gg.prompt({"开启格数[1;8]"},{[1]=""},{[1]="number"}) gg.toast(so({"","945804461~945804524",4,4},{{xggs[1]+999,-4,4}},{{999999,4,4,1}})) end, function() xggs = gg.prompt({"关闭格数[1;8]"},{[1]=""},{[1]="number"}) gg.toast(so({"","945804461~945804524",4,4},{{xggs[1]+999,-4,4}},{{1000,4,4,1}})) end), changan.switch("人物重力", function() xs=gg.prompt({"输入8恢复"},{""},{"number"})[1] gg.edits(xe(so_bss,RE[3],1),{{xs,16,0}},"") end), changan.switch("物品数量", function() gg.clearResults() gg.setRanges(4) gg.searchNumber("945804461", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("945804200", gg.TYPE_DWORD) gg.toast("宝~已修改成功,祝游戏愉快~") gg.clearResults() end), changan.switch("秒吃食物", function() SL = gg.prompt({"香溢水果拼盘-12557 水果拼盘-12501 牛排-12517 饺子-12567 年糕-12568 小麦面包-12502 方西瓜-12508 烤鸡全家桶-12543 香溢西瓜汁-12556 香溢野萝卜-12555 香溢烤鸡-12558 香溢牛肉堡-12559 牛肉堡-12544 香溢麦包-12550 长条麦包-12540 疾跑烤鸡-12499 泡泡糖12576 熟猪肉-12523 烤鱼-12521 烤鸡腿-12519 美味蛋糕-830 香溢南瓜派-12552 香溢饼干-12553 浓缩奶糖-12549 萝卜-236 野果12500 瓶装糖浆-11326 牛奶-12509 瓶蜂蜜-12511"},{[1]=''},{[1]="number"})[1] gg.toast(so({"",SL,4,4},{{30,4,4},{SL,-4,4}},{{-9999,4,4}})) end, function() gg.toast(so({"","12498~12604",4,4},{{30,4,4},{"12498~12604",-4,4}},{{1,4,4}})) end), changan.switch("全局吸人", function() gg.toast(so({"",220,4,4},{{60,-16,4},{180,-12,4},{120,-4,4},{120,4,4}},{{0,8,4,1},{0,16,4,1}})) end, function() gg.toast(so({"",220,4,4},{{60,-16,4},{180,-12,4},{120,-4,4},{120,4,4}},{{0,8,4,2},{0,16,4,2}})) end), changan.switch("跳跃扣血", function() gg.toast(so({"",515396075740,4,32},{{60,-0x10,4},{180,-0xC,4},{120,-0x4,4}},{{1500,0xC,4,1}})) end), changan.switch("人物穿墙", function() gg.toast(so({"",944892805240,4,32},{{120,8,4},{220,4,4}},{{-9999,-8,4,1}})) end, function() gg.toast(so({"",944892805240,4,32},{{120,8,4},{220,4,4}},{{1,-8,4,1}})) end), changan.switch("召唤坐骑", function() count=30.0+(154.0*1)-154.0 so({"",132.0,4,16},{{180.0,4,16},{count,36,16}},{{257,96,4,1},{3485,304,4,1}}) count=30.0+(154.0*2)-154.0 so({"",132.0,4,16},{{180.0,4,16},{count,36,16}},{{257,96,4,1},{3471,304,4,1}}) count=30.0+(154.0*3)-154.0 so({"",132.0,4,16},{{180.0,4,16},{count,36,16}},{{257,96,4,1},{3462,304,4,1}}) count=30.0+(154.0*4)-154.0 so({"",132.0,4,16},{{180.0,4,16},{count,36,16}},{{257,96,4,1},{3459,304,4,1}}) count=30.0+(154.0*5)-154.0 so({"",132.0,4,16},{{180.0,4,16},{count,36,16}},{{257,96,4,1},{3480,304,4,1}}) count=30.0+(154.0*1)-154.0 so({"",132.0,4,16},{{180.0,4,16},{count,36,16}},{{257,96,4,1},{4562,304,4,1}}) count=30.0+(154.0*2)-154.0 so({"",132.0,4,16},{{180.0,4,16},{count,36,16}},{{257,96,4,1},{4650,304,4,1}}) count=30.0+(154.0*3)-154.0 so({"",132.0,4,16},{{180.0,4,16},{count,36,16}},{{257,96,4,1},{4652,304,4,1}}) count=30.0+(154.0*4)-154.0 so({"",132.0,4,16},{{180.0,4,16},{count,36,16}},{{257,96,4,1},{4654,304,4,1}}) count=30.0+(154.0*5)-154.0 so({"",132.0,4,16},{{180.0,4,16},{count,36,16}},{{257,96,4,1},{4656,304,4,1}}) end), changan.switch("枪械改子", function() F = gg.alert("请选择","狙击","冲锋️","重机") if F~=1 and F~=2 then gg.toast("未选择") else end if F== 1 then A4 = gg.prompt({"12299无畏导弹12300星星弹15007 罐装手雷15008 菠萝手雷15050 投射物-野人猎手15051 投射物-硫黄弓手15052 投射物-小恶魔15053 投射物-野生团子15054 投射物-黑龙火球15055 投射物-黑龙熔岩石柱15056 投射物-黑龙熔岩球15057 投射物-黑龙混乱球15058 投射物-小外星人A15059 投射物-小外星人B15060 投射物-小外星人C15061 投射物-萌眼叮叮15062 投射物-萌眼咚咚15063 投射物-萌眼当当15064 投射物-萌眼叮咚15065 投射物-萌眼叮当15066 投射物-萌眼咚当15067 投射物-萌眼咻咻15068 投射物-混乱弓手15069 投射物-远程守卫15070 投射物-远程守卫15071 投射物-远程守卫15072 投射物-年兽boss15501 冲锋枪子弹15502 牛仔左轮子弹15503 狙击枪子弹15504 重机枪子弹15505 虚空巨石15506 圆球爆弹15507 冰锥15508 熔岩球15509 萌眼星BOSS-击飞激光15510 萌眼星BOSS-冰冻激光15511 萌眼星BOSS-爆炸激光15512 萌眼星BOSS-岩石海啸15513 萌眼星BOSS-蓝色手臂技能15514 萌眼星BOSS-白色手臂技能15515 萌眼星BOSS精英怪-蓝色投掷15516 萌眼星BOSS精英怪-白色投掷15517 萌眼星BOSS精英怪-蓝色技能15518 萌眼星BOSS精英怪-白色技能15519 黑龙熔岩球15520 黑龙混乱球15521 摄像机15522 长方体15523 胶囊体(竖)15524 球体15525 中心长方体15526 胶囊体(横)15527 胶囊体(直)"} ,{[1]=12299},{[1]="number"})[1] qmnb = { {["memory"] = 4}, {["name"] = ""}, {["value"] = 1155186688, ["type"] = 4}, {["lv"] = 1152319488, ["offset"] = 4, ["type"] = 4}, {["lv"] = 1137836032, ["offset"] = 8, ["type"] = 4}, } qmxg = { {["value"] = A4, ["offset"] = 24, ["type"] = 4}, {["value"] = 1, ["offset"] = 20, ["type"] = 4}, {["value"] = 0, ["offset"] = -28, ["type"] = 16}, {["value"] = 0, ["offset"] = -44, ["type"] = 16}, } xqmnb(qmnb) end if F==2 then A5 = gg.prompt({"12299无畏导弹12300星星弹15007 罐装手雷15008 菠萝手雷15050 投射物-野人猎手15051 投射物-硫黄弓手15052 投射物-小恶魔15053 投射物-野生团子15054 投射物-黑龙火球15055 投射物-黑龙熔岩石柱15056 投射物-黑龙熔岩球15057 投射物-黑龙混乱球15058 投射物-小外星人A15059 投射物-小外星人B15060 投射物-小外星人C15061 投射物-萌眼叮叮15062 投射物-萌眼咚咚15063 投射物-萌眼当当15064 投射物-萌眼叮咚15065 投射物-萌眼叮当15066 投射物-萌眼咚当15067 投射物-萌眼咻咻15068 投射物-混乱弓手15069 投射物-远程守卫15070 投射物-远程守卫15071 投射物-远程守卫15072 投射物-年兽boss15501 冲锋枪子弹15502 牛仔左轮子弹15503 狙击枪子弹15504 重机枪子弹15505 虚空巨石15506 圆球爆弹15507 冰锥15508 熔岩球15509 萌眼星BOSS-击飞激光15510 萌眼星BOSS-冰冻激光15511 萌眼星BOSS-爆炸激光15512 萌眼星BOSS-岩石海啸15513 萌眼星BOSS-蓝色手臂技能15514 萌眼星BOSS-白色手臂技能15515 萌眼星BOSS精英怪-蓝色投掷15516 萌眼星BOSS精英怪-白色投掷15517 萌眼星BOSS精英怪-蓝色技能15518 萌眼星BOSS精英怪-白色技能15519 黑龙熔岩球15520 黑龙混乱球15521 摄像机15522 长方体15523 胶囊体(竖)15524 球体15525 中心长方体15526 胶囊体(横)15527 胶囊体(直)"} ,{[1]=12299},{[1]="number"})[1] qmnb = { {["memory"] = 4}, {["name"] = ""}, {["value"] = 1154613248, ["type"] = 4}, {["lv"] = 1149861888, ["offset"] = 4, ["type"] = 4}, {["lv"] = 1123024896, ["offset"] = 8, ["type"] = 4}, } qmxg = { {["value"] = A5, ["offset"] = 24, ["type"] = 4}, {["value"] = 1, ["offset"] = 20, ["type"] = 4}, {["value"] = 0, ["offset"] = -28, ["type"] = 16}, {["value"] = 0, ["offset"] = -44, ["type"] = 16}, } xqmnb(qmnb) end if F==3 then A6 = gg.prompt({"12299无畏导弹12300星星弹15007 罐装手雷15008 菠萝手雷15050 投射物-野人猎手15051 投射物-硫黄弓手15052 投射物-小恶魔15053 投射物-野生团子15054 投射物-黑龙火球15055 投射物-黑龙熔岩石柱15056 投射物-黑龙熔岩球15057 投射物-黑龙混乱球15058 投射物-小外星人A15059 投射物-小外星人B15060 投射物-小外星人C15061 投射物-萌眼叮叮15062 投射物-萌眼咚咚15063 投射物-萌眼当当15064 投射物-萌眼叮咚15065 投射物-萌眼叮当15066 投射物-萌眼咚当15067 投射物-萌眼咻咻15068 投射物-混乱弓手15069 投射物-远程守卫15070 投射物-远程守卫15071 投射物-远程守卫15072 投射物-年兽boss15501 冲锋枪子弹15502 牛仔左轮子弹15503 狙击枪子弹15504 重机枪子弹15505 虚空巨石15506 圆球爆弹15507 冰锥15508 熔岩球15509 萌眼星BOSS-击飞激光15510 萌眼星BOSS-冰冻激光15511 萌眼星BOSS-爆炸激光15512 萌眼星BOSS-岩石海啸15513 萌眼星BOSS-蓝色手臂技能15514 萌眼星BOSS-白色手臂技能15515 萌眼星BOSS精英怪-蓝色投掷15516 萌眼星BOSS精英怪-白色投掷15517 萌眼星BOSS精英怪-蓝色技能15518 萌眼星BOSS精英怪-白色技能15519 黑龙熔岩球15520 黑龙混乱球15521 摄像机15522 长方体15523 胶囊体(竖)15524 球体15525 中心长方体15526 胶囊体(横)15527 胶囊体(直)"} ,{[1]=12299},{[1]="number"})[1] qmnb = { {["memory"] = 4}, {["name"] = ""}, {["value"] = 1157840896, ["type"] = 4}, {["lv"] = 1149861888, ["offset"] = 4, ["type"] = 4}, {["lv"] = 1123024896, ["offset"] = 8, ["type"] = 4}, } qmxg = { {["value"] = A6, ["offset"] = 24, ["type"] = 4}, {["value"] = 1, ["offset"] = 20, ["type"] = 4}, {["value"] = 0, ["offset"] = -28, ["type"] = 16}, {["value"] = 0, ["offset"] = -44, ["type"] = 16}, } xqmnb(qmnb) end end), changan.switch("解锁图鉴", function() qmnb= { {['memory']=4}, {['name']=''}, {['value']=10000, ['type']=4}, {['lv']=200,['offset']=160, ['type']=4}, } qmxg= { {['value']=0,['offset']=-4,['type']=4}, } xqmnb(qmnb,qmxg) end, function() qmnb= { {['memory']=4}, {['name']=''}, {['value']=10000, ['type']=4}, {['lv']=200,['offset']=160, ['type']=4}, } qmxg= { {['value']=1,['offset']=-4,['type']=4}, } xqmnb(qmnb,qmxg) end), changan.switch("人物滑翔", function() gg.clearResults() qmnb = { {["memory"] = 16384}, {["name"] = ""}, {["value"] = 4.0, ["type"] = 16}, {["lv"] = 8.0, ["offset"] = -4, ["type"] = 16}, } qmxg = { {["value"] = 0.1, ["offset"] = -4, ["type"] = 16}, } xqmnb(qmnb) gg.clearResults() end), changan.switch("变身技能", function() local t = {"liblibGameApp.so:bss", "Cb"} local tt = {0x6C3940, 0x278, 0x6FC} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = 14850}}) end), changan.switch("无限连跳", function() gg.edits(xe(so_bss,RE[3],1),{{3,16,0}},"") while true do gg.edits(xe(so_bss,RE[2],1),{{1,4,0}},"") end end), changan.switch("40人房间", function() gg.toast(so({'',1078198272,4,4},{{1077805056,-0x10},{1077149696,-0x20},{1076101120,-0x30},{1075052544,-0x50}},{{40,-0x44,64}})) end), changan.switch("快速复活", function() gg.clearResults() gg.setRanges(4) gg.searchNumber("4,812,096,205,058,211,840", gg.TYPE_QWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("4,812,096,205,058,211,840", gg.TYPE_QWORD, false, gg.SIGN_EQUAL, 0, -1) jg=gg.getResults(100) sl=gg.getResultCount() for i = 1, sl do dzy=jg[i].address gg.addListItems({[1] = {address = dzy,flags = gg.TYPE_QWORD,freeze = true,value = 4812096202965778432}}) end gg.toast("宝~已修改成功,祝游戏愉快~") gg.clearResults() end), changan.switch("坐标传送", function() local coordinate = gg.prompt({"[X]","[Y]","[Z]"},{[1]=''},{[2]=''},{[3]=''},{[1]="number"},{[2]="number"},{[3]="number"}) local X = coordinate[1].."00"local Y = coordinate[2].."00"local Z = coordinate[3].."00" gg.toast(so({"",220,4,4},{{60,-16,4},{180,-12,4},{120,-4,4},{120,4,4}},{{X,8,4},{Y,12,4},{Z,16,4}})) end), changan.switch("物品附魔", function() fm = gg.prompt({ "附魔代码:\n物品耐久5-1505 攻击击飞5-505 物品锋利5-605\n人类猎手5-705 动物猎手5-805 魔物猎手5-905\n野人猎手5-2905 点燃射击5-1005 击退射击5-1105\n幸运狩猎3-1203 强力射击5-1305 无限射击5-1405\n爆炸射击5-2701 近战抗性5-1605 远程抗性5-1705\n爆炸抗性5-1805 燃烧抗性5-1905 毒素抗性5-2005\n混乱抗性5-2105 反击抗性5-2205 击退抗性5-2305\n龙之缓落-2801 护腿速降5-3005 鞋子爬墙5-3105\n精准采集-2401 挖掘速度5-2505 挖掘幸运3-2603\n\n附魔第一格","附魔第二格","附魔第三格","附魔第四格","附魔第五格"},{[1]=''},{[2]=''},{[3]=''},{[4]=''},{[5]=''},{[1]="number"},{[2]="number"},{[3]="number"},{[4]="number",{[5]="number"}}) so({"物品附魔",945804461,4,4},{{1000,-4,4}},{{20000,4,4},{5,8,4},{fm[1],12,4},{fm[2],16,4},{fm[3],20,4},{fm[4],24,4},{fm[5],28,4}}) end), changan.switch("瑶瑶附身", function() function RE(...) local Tab=type(...)~='table' and {...} or ... return ((Tab[2]==nil or Tab[2]==1) and gg.getValues({{address=Tab[1],flags=Tab[3] or 4}})[1].value) or (Tab[2]==2 and Tab[1]) or (Tab[2]==3 and gg.getValues({{address=gg.getValues({{address=Tab[1],flags=32}})[1].value,flags=Tab[3]}})[1].value) or (Tab[2]==4 and gg.getValues({{address=Tab[1],flags=32}})[1].value) end function utf(add) local v={} for i=0,100 do v[#v+1]={address=add+i,flags=1} end v=gg.getValues(v) local t={} for i,v in pairs(v) do if v.value==0 then break end t[#t+1]=v.value & 0xff end return string.char(table.unpack(t)) end local Group={{},{}} local s={{}} gg.clearList() gg.clearResults() so({"当前信息",4290672328704,4,32},{{1065353216,-168,4},{60,16,4},{120,24,4},{220,20,4}},{{nil,0,32,0}}) for i, v in pairs(gg.getListItems()) do if v.value==4290672328704 then Group[1][#Group[1]+1]={ [1]=v.address, [2]=utf(v.address-344-0xC7), [3]=RE(v.address-344), } end end if #Group[1]~=0 then for i, v in ipairs(Group[1]) do Group[2][#Group[2]+1] = ("昵称-"..v[2].."\n迷你号:"..v[3].."") s[1][#s[1]+1] = { v[2], v[3]} end local SN=gg.choice(Group[2],2023,'当前共有-['..#Group[2]..']名玩家')s1=s[1][SN] else print(s1)end local t = {"liblibGameApp.so:bss", "Cb"} local tt = {0x6C3940, 0x388, 0x80} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = s1[2]}}) end, function() local t = {"liblibGameApp.so:bss", "Cb"} local tt = {0x6C3940, 0x388, 0x80} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = 0}}) end), changan.switch("拉人一起退", function() gg.toast("请在5秒内复制你的迷你号") gg.sleep(5000) nDmnh = gg.prompt({"请输入你的迷你号"},{[1]='3'},{[1]="number"})[1] gg.toast("请在5秒内复制你要带走的那个人的迷你号") gg.sleep(5000) tdmnh = gg.prompt({"请输入你要带走的那个人的迷你号"},{[1]='1000'},{[1]="number"})[1] gg.toast(so({"",nDmnh,4,4},{{nDmnh,0,4}},{{tdmnh,0,4,1}})) end), changan.switch("漰服务器", function() function bf(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.."共修改2条冻结数据") else gg.toast(qmnbn.."错误") end end end bf( { {4}, {""}, {773094113340, gg.TYPE_QWORD}, {220, 16, gg.TYPE_DWORD}, }, { {-10000, 28, gg.TYPE_DWORD, true}, } ) gg.clearResults() end, function() gg.clearResults() gg.setRanges(4) gg.searchNumber("16777472;16777216;16777472;16777216", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("99999", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.toast("宝~已修改成功,祝您游戏愉快~") gg.clearResults() CA1() end), changan.switch("升级漰服务器", function() function jiuyan(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.."共修改2条冻结数据") else gg.toast(qmnbn.."无法开启,请尝试重启游戏!") end end end jiuyan( { {4}, {""}, {773094113340, gg.TYPE_QWORD}, {220, 16, gg.TYPE_DWORD}, }, { {1000, 32, gg.TYPE_DWORD, true}, } ) gg.clearResults() end), }, { changan.switch("人物飞天", function() gg.toast(so({"",1634488352,4,4},{{1767984505,0xB4,4},{-1046478848,0xC8,4}},{{257,0x104,4,1}})) end, function() gg.toast(so({"",1634488352,4,4},{{1767984505,0xB4,4},{-1046478848,0xC8,4}},{{0,0x104,4,1}})) end), changan.switch("飞行速度", function() SL=gg.prompt({"1.2恢复"},{""},{"number"})[1] gg.edits(xe(so_bss,RE[19],1),{{SL,16,0}},"") end), changan.switch("子弹连发", function() gg.toast(so({(""),15003,4,2,2},{{("15000~15009"),-136}},{{1,-4},{0,-66},{0,-56,16},{0,-40},{1,-28},{0,-52,16},{32000,-0x3e,}})) end), changan.switch("脉冲连发", function() gg.toast(so({"",12292,4,2,2}, {{"15000~15009",-136}}, {{1, -4},{0, -66},{0,-56,16},{0, -40},{1, -28},{0,-52,16}})) end), changan.switch("进口武器", function() gg.clearResults() gg.setRanges(16384) gg.searchNumber("-9,319,378;2,139,095,040;1F::", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("1", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(3) gg.editAll("3.111", gg.TYPE_FLOAT) gg.toast("宝~已修改成功,祝您游戏愉快~") gg.clearResults() end, function() gg.clearResults() gg.setRanges(16384) gg.searchNumber("3.111", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("3.111", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(3) gg.editAll("1", gg.TYPE_FLOAT) gg.toast("宝~已修改成功,祝您游戏愉快~") gg.clearResults() end), changan.switch("切换界面", function() gg.toast(so({(""),'1634488346','4',"4"},{{'1767984505','0x4','4'}},{{'257','0x54','4'}})) end), changan.switch("人物浮空", function() qmnb = { {["memory"] = 16384}, {["name"] = ""}, {["value"] = 4.0, ["type"] = 16}, {["lv"] = 8.0, ["offset"] = -4, ["type"] = 16}, } qmxg = { {["value"] = 0, ["offset"] = -4, ["type"] = 16}, } xqmnb(qmnb,qmxg) end, function() qmnb = { {["memory"] = 16384}, {["name"] = ""}, {["value"] = 4.0, ["type"] = 16}, {["lv"] = 0.0, ["offset"] = -4, ["type"] = 16}, } qmxg = { {["value"] = 8, ["offset"] = -4, ["type"] = 16}, } xqmnb(qmnb,qmxg) end), changan.switch("攻击距离", function() gg.toast(so({'',640,16384,16},{{1143275520,12,4},{350.0,-8,16}},{{-1,8,16}})) end, function() gg.toast(so({'',640,16384,16},{{1143275520,12,4},{350.0,-8,16}},{{0.1,8,16}})) end), changan.switch("人物大小", function() SL = gg.prompt({"输入1恢复"},{[1]=''},{[1]="number"})[1] gg.toast(so({"","600~700",4,16},{{0,-8,4},{1065353216,-12,4},{1065353216,-16,4},{1065353216,-20,4}},{{SL,28,16},{SL,32,16},{SL,36,16}})) end), changan.switch("天空流速", function() gg.clearResults() gg.setRanges(16384) gg.searchNumber("1000", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("1000", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) jg=gg.getResults(100) sl=gg.getResultCount() for i = 1, sl do dzy=jg[i].address gg.addListItems({[1] = {address = dzy,flags = gg.TYPE_FLOAT,freeze = true,value = 10}}) end gg.toast("宝~已修改成功,祝游戏愉快~") end), changan.switch("死亡移动", function() gg.alert("死亡计时开") gg.clearResults() gg.setRanges(4) gg.searchNumber("4,812,096,205,058,211,840", gg.TYPE_QWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("", gg.TYPE_QWORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("4,812,096,202,965,778,432", gg.TYPE_QWORD) gg.toast("宝~已修改成功,祝您游戏愉快~") gg.clearResults() end, function() gg.alert("活着时候关") gg.clearResults() gg.setRanges(4) gg.searchNumber("4,812,096,202,965,778,432", gg.TYPE_QWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("4,812,096,202,965,778,432", gg.TYPE_QWORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("4,812,096,205,058,211,840", gg.TYPE_QWORD) gg.toast("宝~已修改成功,祝您游戏愉快~") gg.clearResults() end), changan.switch("自动旋转", function() gg.clearResults() gg.setRanges(16384) gg.searchNumber("-360", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("-360", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(1000) gg.editAll("378", gg.TYPE_FLOAT) gg.toast("宝~已修改成功,祝您游戏愉快~") gg.clearResults() end), changan.switch("锁定高度", function() SL = gg.prompt({""},{[1]=''},{[1]="number"})[1] gg.toast(so({"",515396075740,4,32},{{60,-16,4},{180,-12,4},{120,-4,4}},{{SL,12,4,1}})) end), changan.switch("传送高度", function() SL = gg.prompt({""},{[1]=''},{[1]="number"})[1] gg.toast(so({"",515396075740,4,32},{{180,-12,4},{120,-4,4}},{{SL,12,4}})) end), changan.switch("人物自瞄", function() local GetValue=function(addr,flag) local getvalue = gg.getValues({{address = addr, flags = flag, }}) return getvalue[1].value end local GetPlayerAngleAddr=function() local t = {"liblibGameApp.so:bss", "Cb"} local tt = {0x399870, 0x38, 0xC} local ttt = S_Pointer(t, tt, true) local qwe={} qwe[1]=ttt-4 qwe[2]=ttt-0 return qwe end local GetPlayerPosAddr=function() local t = {"liblibGameApp.so:bss", "Cb"} local tt = {0x6C3940, 0x694} local ttt = S_Pointer(t, tt, true) local asd={} asd[1]=ttt-4 asd[2]=ttt-0 asd[3]=ttt+4 return asd end function Aim( aimPos, playerPos, angleAddr) local disX = aimPos[1] - playerPos[1] local disY = playerPos[2] - aimPos[2] local disZ = aimPos[3] - playerPos[3] local dis = math.sqrt(disX * disX + disZ * disZ) local radToDeg = -180 / math.pi local setAngleX = -(radToDeg * math.atan2( disX, disZ)) local setAngleY = -(radToDeg * math.atan2( disY, dis)) gg.setValues({{address = angleAddr[1], flags = 16,value=setAngleX}}) gg.setValues({{address = angleAddr[2], flags = 16,value=setAngleY}}) return { setAngleX, setAngleY}end function main(v) angleAddr = GetPlayerAngleAddr() playerPos = GetPlayerPosAddr() a=tonumber(v[5]) aimPos = {a,a+4,a+8} axyz={} bxyz={} while true do axyz[1]=GetValue(playerPos[1],16) axyz[2]=GetValue(playerPos[2],16) axyz[3]=GetValue(playerPos[3],16) bxyz[1]=GetValue(aimPos[1],4) bxyz[2]=GetValue(aimPos[2],4) bxyz[3]=GetValue(aimPos[3],4) Aim(bxyz,axyz,angleAddr) gg.toast("目标玩家\n名字-"..s1[1].."\n迷你号:"..s1[2].."") if gg.isVisible(true) then gg.setVisible(false)Main() end end end local Group={{},{}} local s={{}} gg.clearList() gg.clearResults() gg.toast(so({"当前信息",4812096202965778432 ,4,32},{{1, 172 ,4},{1120403456, 4 ,32},{2,-536 ,4},{"1000~2000000000",-712 ,4}},{{nil,0 ,32 ,0}})) for i,v in pairs(gg.getListItems()) do if v.value==4812096202965778432 then Group[1][#Group[1]+1]={ [1]=v.address, [2]=utf(v.address-712+0x38), [3]=GetValue(v.address-712,4), [4]=v.address-712+0x10, [5]=v.address-712+0x2C4, [6]=v.address-712+20, } end end if #Group[1]~=0 then for i,v in ipairs(Group[1]) do Group[2][#Group[2]+1] = ("名字-"..v[2].."\n迷你号:"..v[3].."") s[1][#s[1]+1]={v[2],v[3],v[4],v[5],v[6]} end local SN=gg.choice(Group[2],2023,'当前房间共有-['..#Group[2]..']名玩家\n[选择目标玩家]') s1=s[1][SN] if SN then if (GetValue(Group[1][SN][1]-712,4)~=Group[1][SN][3]) then gg.alert('玩家-['..Group[1][SN][2]..']已退出房间') else main(s1) end end else gg.alert('未查询到玩家!')end end), changan.switch("彩弹枪改子", function() local SL = gg.prompt({"12299擎天柱炮弹12300星星弹15509燃烧激光15510冰冻激光15511爆炸激光15512岩石海啸15513冰球15518特效炸弹15519岩浆弹15520混乱球_15521_15051燃烧箭15052燃烧雪球15053泡泡球15056熔岩弹15057混乱弹15058炸弹15059冰锥[不可放置方块]15060熔岩球15062冰锥15064冰炸弹15065火炸弹15066冰雪弹15067紫球15068紫箭"},{[1]=12299},{[1]="number"}) if not SL then return end gg.toast(so({"",434259848432382,4,32},{{1,-0xC,4}},{{SL[1],-0x8,4}})) end), changan.seek("视角范围","SL",0,100,1), changan.button("俢改", function() gg.toast(so({"",1117126656,4,4},{{1065353216,32,4},{-25.0,96,16},{-1.0,92,16}},{{SL,80,16,1}})) end), changan.switch("人物陀螺", function() gg.searchNumber("360", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) revert = gg.getResults(100, nil, nil, nil, nil, nil, nil, nil, nil) gg.editAll("-99999999", gg.TYPE_FLOAT) gg.processResume() end), changan.switch("人物升空", function() F=gg.alert("请选择","快速","️缓速","停止") if F ~= 1 and F ~= 2 then gg.toast("未选择") else end if F==1 then gg.clearResults() gg.setRanges(16384) gg.searchNumber("4.0;8.0", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("8.0", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("-99", gg.TYPE_FLOAT) gg.toast("宝~已修改成功,祝您游戏愉快~") gg.clearResults()end if F==2 then gg.clearResults() gg.setRanges(16384) gg.searchNumber("4.0;8.0", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("8.0", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("-0.9", gg.TYPE_FLOAT) gg.toast("宝~已修改成功,祝您游戏愉快~") gg.clearResults()end if F==3 then gg.clearResults() gg.setRanges(16384) gg.searchNumber("4.0;-0.9", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("-0.9", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("8.0", gg.TYPE_FLOAT) gg.clearResults() gg.setRanges(16384) gg.searchNumber("4.0;-0.9", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("-99", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("8.0", gg.TYPE_FLOAT) gg.toast("宝~已修改成功,祝您游戏愉快~") gg.clearResults() end end), changan.switch("人物杀戮", function() function RE(...) local Tab=type(...)~='table' and {...} or ... return ((Tab[2]==nil or Tab[2]==1) and gg.getValues({{address=Tab[1],flags=Tab[3] or 4}})[1].value) or (Tab[2]==2 and Tab[1]) or (Tab[2]==3 and gg.getValues({{address=gg.getValues({{address=Tab[1],flags=32}})[1].value,flags=Tab[3]}})[1].value) or (Tab[2]==4 and gg.getValues({{address=Tab[1],flags=32}})[1].value) end function utf(add) local v={} for i=0,100 do v[#v+1]={address=add+i,flags=1} end v=gg.getValues(v) local t={} for i,v in pairs(v) do if v.value==0 then break end t[#t+1]=v.value & 0xff end return string.char(table.unpack(t)) end local Group={{},{}} local s={{}} gg.clearList() gg.clearResults() gg.toast(so({"当前信息",4290672328704,4,32},{{1065353216,-168,4},{60,16,4},{120,24,4},{220,20,4}},{{nil,-344,4,1}})) while true do z=gg.getListItems()for i=1,#z do zz1=z[i].value 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 GETValue(a)b=gg.getValues({{address=a,flags=4}})[1].value return b end local mnh=readPointer('liblibGameApp.so:bss',{0x806EA0}) local mnh=GETValue(mnh) local fzmnh=readPointer('liblibGameApp.so:bss',{0x8FE750}) local fzmnh=GETValue(fzmnh) for i, v in pairs(gg.getListItems()) do if v.value==zz1 then Group={[1]=v.address,[2]=utf(v.address-0-0xC7),[3]=RE(v.address-0),} end end if zz1 ==mnh then zz1=zz1-mnh end if zz1 ==0 then gg.getListItems() end local t = {"liblibGameApp.so:bss", "Cb"} local tt = {0x6C3940, 0x388, 0x80} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = zz1}}) gg.toast("目标玩家\n名字-"..Group[2].."\n迷你号:"..Group[3].."") if gg.isVisible(true) then gg.setVisible(false)Main() end end end end), changan.switch("华丽变身", function() gg.toast(so({"",220,4,4},{{60,-4},{120,8},{180,-8},{120,4},{"1~200",-0x764},{"0~6",-0x438}},{{259,-0x764}})) end), changan.switch("攻击范围", function() gg.edits(xe(so_bss,RE[20],1),{{9999,16,0}},"") gg.edits(xe(so_bss,RE[21],1),{{2,4,0,true}},"") end, function() gg.edits(xe(so_bss,RE[20],1),{{400,16,0}},"") gg.edits(xe(so_bss,RE[21],1),{{1,4,0,true}},"") end), }, { changan.seek("人物移速","SL",0,100,1), changan.button("俢改", function() gg.toast(so({"",4812096202965778432,4,32},{{1065353216,0xD8,4}},{{SL,0x84,16},{SL,0x7C,16}})) end), changan.seek("人物跳高","SL",-1,100,1), changan.button("俢改", function() gg.edits(xe(so_bss,RE[1],1),{{SL,16,0}},"") end), changan.switch("观战模式", function() gg.toast(so({"",1121452032,4,4},{{1118568448,-4,4},{1065353216,-8,4}},{{257,92,4,1}})) end, function() gg.toast(so({"",1121452032,4,4},{{1118568448,-4,4},{1065353216,-8,4}},{{256,92,4,1}})) end), changan.switch("秒挖方块", function() gg.clearResults() gg.setRanges(16384) gg.searchNumber("0.30000001192", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("0.30000001192", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(1000) gg.editAll("-99", gg.TYPE_FLOAT) gg.toast("宝~已修改成功,祝您游戏愉快~") gg.clearResults() end, function() gg.clearResults() gg.setRanges(16384) gg.searchNumber("-99", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("-99", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(1000) gg.editAll("0.30000001192", gg.TYPE_FLOAT) gg.toast("宝~已修改成功,祝您游戏愉快~") gg.clearResults() end), changan.switch("人物上色", function() qmnb = { {["memory"] = 16384}, {["name"] = ""}, {["value"] =774, ["type"] = 4}, {["lv"] =768 , ["offset"] = 4, ["type"] = 4}, } qmxg = { {["value"]=0,["offset"]=-4,["type"]=4}, } xqmnb(qmnb) end, function() qmnb = { {["memory"] = 16384}, {["name"] = ""}, {["value"] =774, ["type"] = 4}, {["lv"] =768 , ["offset"] = 4, ["type"] = 4}, } qmxg = { {["value"]=1,["offset"]=-4,["type"]=4}, } xqmnb(qmnb) end), changan.switch("编辑按钮", function() qmnb = { {["memory"] = 4}, {["name"] = ""}, {["value"] = 1852786458, ["type"] = 4}, {["lv"] = -1016070144,["offset"] =0x18, ["type"] = 4}, {["lv"] = 1050253722,["offset"] =0x130, ["type"] = 4}, {["lv"] = 128,["offset"] =0x144, ["type"] = 4}, } qmxg = { {["value"] =257,["offset"] =0x54, ["type"] = 4, ["freeze"] = true}, } xqmnb(qmnb,qmxg) end), changan.switch("全员摔死", function() gg.clearResults() gg.setRanges(4) local dataType = 4 local tb1 = {{220, 0},{120, -4},{60, -16},{180, -12},{120, 4},} local tb2 = {{ 12 }, }SearchWrite(tb1, tb2, dataType) gg.getResults(100) gg.editAll("99999", gg.TYPE_DWORD) end), changan.switch("超级透视", function() gg.clearResults() gg.setRanges(4) gg.searchNumber("30000", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(1000) gg.editAll("0", gg.TYPE_FLOAT) gg.toast("宝~已修改成功,祝您游戏愉快~") gg.clearResults() end), changan.switch("无限脚印", function() qmnb = { {["memory"] = 16384}, {["name"] = ""}, {["value"] =28274328, ["type"] = 4}, {["lv"] = 28275432, ["offset"] = 4, ["type"] = 4}, } qmxg = { {["value"] = 0, ["offset"] = -4,["type"] = 16}, } xqmnb(qmnb) gg.clearResults() end, function() qmnb = { {["memory"] = 16384}, {["name"] = ""}, {["value"] =28274328, ["type"] = 4}, {["lv"] = 28275432, ["offset"] = 4, ["type"] = 4}, } qmxg = { {["value"] = 200, ["offset"] = -4,["type"] = 16}, } xqmnb(qmnb) gg.clearResults() end), changan.switch("修改模式", function() SL = gg.prompt({"编辑模式0\n玩法模式5\n创造模式1\n模拟模式3\n冒险模式0\n极限生存2\n高级生存6"},{[1]=''},{[1]="number"})[1] gg.edits(xe(so_bss,RE[6],1),{{SL,4,0}},"") end), changan.switch("房间崩溃", function() gg.toast(so({"",773094113340,4,32},{{220,16,4}},{{-10000,28,4,1}})) end, function() gg.toast(so({"",773094113340,4,32},{{220,16,4}},{{-10000,28,4,2}})) end), changan.switch("金镐秒蓄", function() gg.toast(so({(''),1060320051,4,4},{{65538,-4,4}},{{0.1,0xC,16}})) end), changan.switch("人物摇头", function() gg.edits(xe(so_bss,RE[15],1),{{99999,16,0}},"") end, function() gg.edits(xe(so_bss,RE[15],1),{{-180,16,0}},"") end), changan.switch("人物旋转", function() gg.edits(xe(so_bss,RE[14],1),{{-9999,16,0}},"") end, function() gg.edits(xe(so_bss,RE[14],1),{{360,16,0}},"") end), changan.switch("编辑器球体大小", function() local t = {"liblibGameApp.so:bss", "Cb"} local tt = {0x1B970, 0x10, 0x18} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 20, freeze = true}}) end), changan.switch("编辑器放置距离", function() SL = gg.prompt({"输入距离"},{[1]=100},{[1]="number"})[1] local t = {"liblibGameApp.so:bss", "Cb"} local tt = {0x1B970, 0x10, 0x34} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = SL, freeze = true}}) end), changan.switch("修改宠物", function() SL = gg.prompt({"宠物代码:\n远古叮叮-3511 房主闪退-3512 10001-小泡沫\n10002-泡泡团子 10003-四泡团 10004-小孩子\n10005-的叶团子 10006-豪华团 10007-小石子\n10008-岩石团 10009-巨岩团 10010-小火量\n10011-暖暖团 10012-报火团 10013-小HT\n10014-跳跳蛙 10015-忍忍娃 10016-小免机\n10017-免叫 10018-玉免机 10019-迷你注\n10020-旺旺 10021-旺旺警长 10022-小龙蛋\n10023-黑龙重 10024-黑龙糕 10025-小菲鹏\n10026-球糟鹏 10027-全羽鹅网 10028-小灵球\n10029-幽酬球 10030-重灵王球 10031-小黑猫\n10032-焦炭猫 10033-黑飘远 10034-小球节\n10035-球球豹 10036-球豹王子 10037-小擦报\n10038-奏乐猴 10039-梵音猴 10040-小孔雀\n10041-雏孔雀 10042-丰羽孔雀 3515-虚幻影速\n3516-虚幻影猛 3511-远古叮叮 3513-房主闪退\n3109-爆爆蛋 10001-恢复\n\n输入现在宠物代码","输入修改宠物代码"},{[1]=''},{[2]=''},{[1]="number"},{[2]="number"}) gg.toast(so({"",SL[1],4,4},{{1,4,4}},{{SL[2],8,4,1}})) end), changan.switch("删除备份", function() gg.clearResults() gg.setRanges(262207) gg.searchNumber("11011", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("11011", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) jg=gg.getResults(100) sl=gg.getResultCount() for i = 1, sl do dzy=jg[i].address gg.addListItems({[1] = {address = dzy,flags = gg.TYPE_DWORD,freeze = true,value = 12005}}) end gg.toast("已删除") gg.clearResults() end), changan.switch("潜行改背视", function() gg.clearResults() gg.setRanges(16384) gg.searchNumber("-1F;69D;1.0F", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("-1", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(1000) gg.editAll("24", gg.TYPE_FLOAT) gg.toast("宝~已修改成功,祝您游戏愉快~") gg.clearResults() end, function() gg.clearResults() gg.setRanges(16384) gg.searchNumber("24.0F", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("24", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(1000) gg.editAll("-1", gg.TYPE_FLOAT) gg.toast("宝~已修改成功,祝您游戏愉快~") gg.clearResults() end), } }) bloc = luajava.getBlock() bloc('join') luajava.setFloatingWindowHide(false)