do if type(getrlyunyz) ~= 'function' then gg.alert('请使用RLGG执行') os.exit() return end local info = { example_version = '1.0.3', name = 'HY全能', appid = '22904', appkey = 'Jp7Jj7L9h7mTth95', rc4key = '83OZ3XoEo1L0ckoO', version = '1.0', mi_type = '3' } local rlyunyz = getrlyunyz(info) local ret = rlyunyz.start() if not ret or not isTable(ret) or ret.sign ~= 'c0bc52681536011537f40ea7ed20eeef' then os.exit() return end end -- 把以上代码复制到你脚本最前面即可 --eve开源垃圾HY全能 ---本人qq192787050 --公益-奔放脚本请进885806298 ---火速泛滥fw白鹿 string.toMusic('欢迎老板使用HY全能为你服务') draw.text("H", 175,215)--字体 draw.setColor("#FF00DAFF")--颜色 draw.circle(200, 200, 50)--圆1 draw.setColor("#FF00DAFF") draw.circle(200, 200, 60)--圆2 draw.setColor("#FF00DAFF") draw.text("Y", 310,215)--字 draw.setColor("#FF00DAFF")--颜色 draw.circle(330, 200, 50)--圆1 draw.setColor("#FF00DAFF") draw.circle(330, 200, 60)--圆2 draw.setColor("#FF00DAFF") 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 S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() local _Q = tonumber(0x167ba0fe) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end function fastsearch(search, write) gg.setVisible(false) gg.clearResults() gg.setRanges(search[1][3]) gg.searchNumber(search[1][1], search[1][2]) if gg.getResultsCount() == 0 then gg.toast("Not Found") return false else local result = gg.getResults(gg.getResultsCount()) gg.clearResults() for i = 2, #search do local mtp = {} for w, r in ipairs(result) do mtp[#mtp + 1] = { address = r.address + search[i][2], flags = search[i][3] } end mtp = gg.getValues(mtp) local hook = {} for w, r in ipairs(mtp) do if r.value == search[i][1] then hook[#hook + 1] = result[w] end end result = hook end if #result > 0 then local tb = {{}, {}} for i, v in ipairs(result) do --- 遍历每个结果 for _, vv in ipairs(write) do expiredExit() local p = {address = v.address + vv[2], flags = vv[3], value = vv[1], freeze = vv[4]} if vv[4] then --- true 就是冻结 table.insert(tb[2], p) else table.insert(tb[1], p) end end end gg.addListItems(tb[2]) gg.setValues(tb[1]) gg.toast("修改成功, 共修改" .. (#tb[1] + #tb[2]) .. "条结果") else gg.toast("Not Found") end end end --------------------- function readPointer(name, offset, i) local re = gg.getRangesList(name) local x64 = gg.getTargetInfo().x64 local va = {[true] = 32, [false] = 4} if re[i or 1] then local addr = re[i or 1].start + offset[1] for i = 2, #offset do addr = gg.getValues({{address = addr, flags = va[x64]}}) if not x64 then addr[1].value = addr[1].value & 0xFFFFFFFF end addr = addr[1].value + offset[i] end return addr end end function gg.edits(addr, Table, name) local Table1 = {{}, {}} for k, v in ipairs(Table) do local value = {address = addr + v[3], value = v[1], flags = v[2], freeze = v[4]} if v[4] then Table1[2][#Table1[2] + 1] = value else Table1[1][#Table1[1] + 1] = value end end gg.addListItems(Table1[2]) gg.setValues(Table1[1]) end ------配置区 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 So_X32 = function ( Address , Value ) local Somod = gg.getRangesList ( 'il2cpp.so' ) [ 1 ] if Somod == nil then gg.alert ( 'so模块未加载 请重新选择游戏进程' ) else local So = Somod.start local Add = So + Address gg.setValues ( { { address = Add , flags = 4 , value = Value } } ) gg.setValues ( { { address = Add + 4 , flags = 4 , value = "1EFF2FE1r" } } ) 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 ] ) -- print ( Table1 [ 1 ] ) end function searchwb(a,b,c) gg.setRanges(c) gg.searchNumber(a,b) end function xgwb(a1,a2) gg.getResults(gg.getResultsCount()) gg.editAll(a1,a2) end ---------------------------------------------------------------------------- ---------------------------------------------------------------------------- function readPointer(name, offset, i) local re=gg.getRangesList(name) local x64=gg.getTargetInfo().x64 local va={[true]=32,[false]=4} if re[i or 1] then local addr=re[i or 1].start+offset[1] for i = 2,#offset do addr = gg.getValues({{address=addr,flags=va[x64]}}) if not x64 then addr[1].value = addr[1].value & 0xFFFFFFFF end addr = addr[1].value + offset[i] end return addr end end gg.edits = function(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 gg.clearResults() j={} xgz={} ZY = 'Main' gg.clearResults() sj={} xgz={} 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 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(":搜索0条数据.修改失败", false) return false end else gg.toast("搜索0条数据.修改失败") return false end end ---------------------------------------------------------------------------- function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end ---------------------------------------------------------------------------- function Fs3Fs4(Fs1, Fs2, Fs3, Fs4, Fs5) gg.clearResults() gg.setRanges(Fs2) gg.setVisible(false) gg.searchNumber(Fs3[1][1], Fs3[1][3]) local count = gg.getResultCount() local result = gg.getResults(count) gg.clearResults() local data = {} local base = Fs3[1][2] if (count > 0) then for i, v in ipairs(result) do v.isUseful = true end for k=2, #Fs3 do local tmp = {} local offset = Fs3[k][2] - base local num = Fs3[k][1] for i, v in ipairs(result) do tmp[#tmp+1] = {} tmp[#tmp].address = v.address + offset tmp[#tmp].flags = Fs3[k][3] end tmp = gg.getValues(tmp) for i, v in ipairs(tmp) do if ( tostring(v.value) ~= tostring(num) ) then result[i].isUseful = false end end end for i, v in ipairs(result) do if (v.isUseful) then data[#data+1] = v.address end end if (#data > 0) then gg.toast(Fs1..'\n搜索到{'..#data..'}条数据') local t = {} local base = Fs3[1][2] if Fs5 == '' and Fs5 > 0 and Fs5 < #data then Fs5 = Fs5 else Fs5 = #data end for i=1, Fs5 do for k, w in ipairs(Fs4) do offset = w[2] - base t[#t+1] = {} t[#t].address = data[i] + offset t[#t].flags = w[3] t[#t].value = w[1] if (w[4] == true) then local item = {} item[#item+1] = t[#t] item[#item].freeze = true gg.addListItems(item) end end end gg.setValues(t) gg.toast(Fs1..'️\n已修改{'..#t..'}条数据') else gg.toast(Fs1..'\n数据搜索失败', false) return false end else gg.toast(Fs1..'\n数据修改失败', false) return false end end ---------------------------------------------------------------------------- function search(ss,lx,nc,dz1,dz2) if ss~=nil then if lx~=nil then if nc==nil then nc=32 end gg.setRanges(nc) if dz1==nil then dz1="-1" end if dz2==nil then dz1="0" end gg.searchNumber(ss,lx,false,gg.SIGN_EQUAL,dz1,dz2) sl=gg.getResultCount() if sl~=0 then sj=gg.getResults(sl) gg.toast("搜索到 "..sl.." 个结果") gg.clearResults() else gg.toast("未搜索到结果") end else gg.toast("无搜索值类型") end else gg.toast("无需搜索值") end end function py1(value,lx,py) if #sj~=nil then z1={} z2={} for i=1,#sj do z1[1]={} z1[1].address=sj[i].address+py z1[1].flags=lx z1=gg.getValues(z1) if z1[1].value==value then z2[#z2+1]={} z2[#z2]=sj[i] end end sj=z2 z1={} z2={} gg.toast("共偏移 "..#sj.." 个数据") else gg.toast("没有搜索数据") end end function py2(value,lx,py) if #sj~=nil then z1={} z2={} for i=1,#sj do z1[1]={} z1[1].address=sj[i].address+py z1[1].flags=lx z1=gg.getValues(z1) if z1[1].value~=value then z2[#z2+1]={} z2[#z2]=sj[i] end end sj=z2 z1={} z2={} gg.toast("共偏移 "..#sj.." 个数据") else gg.toast("没有搜索数据") end end function xg1(value,lx,py,dj) if #sj~=nil then z={} for i=1,#sj do z[i]={} z[i].address=sj[i].address+py z[i].flags=lx z[i].value=value if dj==true then z[i].freeze=true end end if dj==true then gg.addListItems(z) else gg.clearList() gg.setValues(z) end gg.toast("共修改 "..#z.." 个数据") else gg.toast("没有搜索数据") end end function xg2(bz,value,lx,py,dj) if #bz~=nil then z={} for i=1,#bz do z[i]={} z[i].address=bz[i].address+py z[i].flags=lx z[i].value=value if dj==true then z[i].freeze=true end end if dj==true then gg.addListItems(z) else gg.clearList() gg.setValues(z) end gg.toast("共修改 "..#z.." 个数据") else gg.toast("没有搜索数据") end end function bc(bz) if sj~=nil then _ENV[bz]=sj else gg.toast("无数据") 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 readValue(address, flags) return gg.getValues({{address = address, flags = flags}})[1]["value"]end ms = { } 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 ms.ss ( num , ty , nc ) local GGNUMBER_1 = num local GGNUMBER_2 = ty local GGNUMBER_3 = false local GGNUMBER_4 = gg.SIGN_EQUAL local GGNUMBER_5 = 0x3000000 local GGNUMBER_6 = 0xFFFFFFFF local GGNUMBER_7 = 0 gg.clearResults ( ) gg.setRanges ( nc ) gg.searchNumber ( GGNUMBER_1 , GGNUMBER_2 , GGNUMBER_3 , GGNUMBER_4 , GGNUMBER_5 , GGNUMBER_6 , GGNUMBER_7 ) Result = gg.getResults ( gg.getResultCount ( ) ) end function ms.py ( num , py , ty ) if ( Result and # Result ~= 0 ) then t = { } for i , v in ipairs ( Result ) do t [ i ] = { } t [ i ].address = v.address + py t [ i ].flags = ty end t = gg.getValues ( t ) for i , v in ipairs ( t ) do if v.value ~= num then Result [ i ] = nil end end local MS = { } for i , v in pairs ( Result ) do MS [ # MS + 1 ] = v end Result = MS end end function ms.bc ( ) data = { } if Result == nil or # Result == 0 then gg.alert ( "Dood√" ) else for i , v in pairs ( Result ) do data [ # data + 1 ] = v.address end end Result = nil end function ms.edit ( nn , off , ty , dj ) if ( Result ) then ms.bc ( ) end if # data > 0 then for i , v in ipairs ( data ) do setvalue ( v + off , nn , ty , dj or false ) end gg.toast ( Name.."Dood√" ) end end function readWrite(Search,Get,Type,Range,Name) gg.clearResults() gg.setRanges(Range) gg.setVisible(false) if Search[1][1]~=false then gg.searchAddress(Search[1][1],0xFFFFFFFF,Search[1][4] or Type,gg.SIGN_EQUAL,Search[1][5] or 1,Search[1][6] or -1) end gg.searchNumber(Search[1][2],Search[1][4] or Type,false,gg.SIGN_EQUAL,Search[1][5] or 1,Search[1][6] or -1) local count=gg.getResultCount() local result=gg.getResults(count) gg.clearResults() local data={} local base=Search[1][3] if (count > 0) then for i,v in ipairs(result) do v.isUseful=true end for k=2,#Search do local tmp={} local offset=Search[k][2] - base local num=Search[k][1] for i,v in ipairs(result) do tmp[#tmp+1]={} tmp[#tmp].address=v.address+offset tmp[#tmp].flags=Search[k][3] or Type end tmp=gg.getValues(tmp) for i,v in ipairs(tmp) do if v.flags==16 or v.flags==64 then values=tostring(v.value):sub(1,6) num=tostring(num):sub(1,6) else values=v.value end if tostring(values)~=tostring(num) then result[i].isUseful=false end end end for i,v in ipairs(result) do if (v.isUseful) then data[#data+1]=v.address end end if (#data > 0) then local t,t_={},{} local base=Search[1][3] for i=1,#data do for k,w in ipairs(Get) do offset=w[2] - base if w[1]==false then t_[#t_+1]={} t_[#t_].address=data[i]+offset t_[#t_].flags=Type th_=(th_) and th_+1 or 1 else t[#t+1]={} t[#t].address=data[i]+offset t[#t].flags=w[3] or Type t[#t].value=w[1] tg_=(tg_) and tg_+1 or 1 if (w[4]==true) then local item={} item[#item+1]=t[#t] item[#item].freeze=w[4] gg.addListItems(item) end end end end tg=(tg_) and "\n已修改"..tg_.."条数据" or "" th=(th_) and "\n已获取"..th_.."条数据" or "" gg.setValues(t) t_=gg.getValues(t_) gg.loadResults(t_) gg.toast("共修改了"..#data.."条值") tg_,th_=nil,nil else gg.toast("\n"..Name.."开启失败",false) return false end else gg.toast(Name.."开启失败") return false end end ----- JFYx32 = function ( Address , Value ) local Somod = gg.getRangesList ( 'il2cpp.so' ) [ 1 ] if Somod == nil then gg.alert ( '请重新选择地铁跑酷进程' ) else local So = Somod.start local Add = So + Address gg.processPause ( ) gg.setValues ( { { address = Add , flags = 4 , value = Value } } ) gg.setValues ( { { address = Add + 4 , flags = 4 , value = "~A BX LR" } } ) gg.processResume ( ) 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 ] ) -- print ( Table1 [ 1 ] ) end function searchwb(a,b,c) gg.setRanges(c) gg.searchNumber(a,b) end function xgwb(a1,a2) gg.getResults(gg.getResultsCount()) gg.editAll(a1,a2) end ---------------------------------------------------------------------------- ---------------------------------------------------------------------------- function readPointer(name, offset, i) local re=gg.getRangesList(name) local x64=gg.getTargetInfo().x64 local va={[true]=32,[false]=4} if re[i or 1] then local addr=re[i or 1].start+offset[1] for i = 2,#offset do addr = gg.getValues({{address=addr,flags=va[x64]}}) if not x64 then addr[1].value = addr[1].value & 0xFFFFFFFF end addr = addr[1].value + offset[i] end return addr end end gg.edits = function(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 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(":搜索0条数据.修改失败", false) return false end else gg.toast("搜索0条数据.修改失败") return false end end ---------------------------------------------------------------------------- function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end ---------------------------------------------------------------------------- function Fs3Fs4(Fs1, Fs2, Fs3, Fs4, Fs5) gg.clearResults() gg.setRanges(Fs2) gg.setVisible(false) gg.searchNumber(Fs3[1][1], Fs3[1][3]) local count = gg.getResultCount() local result = gg.getResults(count) gg.clearResults() local data = {} local base = Fs3[1][2] if (count > 0) then for i, v in ipairs(result) do v.isUseful = true end for k=2, #Fs3 do local tmp = {} local offset = Fs3[k][2] - base local num = Fs3[k][1] for i, v in ipairs(result) do tmp[#tmp+1] = {} tmp[#tmp].address = v.address + offset tmp[#tmp].flags = Fs3[k][3] end tmp = gg.getValues(tmp) for i, v in ipairs(tmp) do if ( tostring(v.value) ~= tostring(num) ) then result[i].isUseful = false end end end for i, v in ipairs(result) do if (v.isUseful) then data[#data+1] = v.address end end if (#data > 0) then gg.toast(Fs1..'\n搜索到{'..#data..'}条数据') local t = {} local base = Fs3[1][2] if Fs5 == '' and Fs5 > 0 and Fs5 < #data then Fs5 = Fs5 else Fs5 = #data end for i=1, Fs5 do for k, w in ipairs(Fs4) do offset = w[2] - base t[#t+1] = {} t[#t].address = data[i] + offset t[#t].flags = w[3] t[#t].value = w[1] if (w[4] == true) then local item = {} item[#item+1] = t[#t] item[#item].freeze = true gg.addListItems(item) end end end gg.setValues(t) gg.toast(Fs1..'️\n已修改{'..#t..'}条数据') else gg.toast(Fs1..'\n数据搜索失败', false) return false end else gg.toast(Fs1..'\n数据修改失败', false) return false end end ---------------------------------------------------------------------------- function search(ss,lx,nc,dz1,dz2) if ss~=nil then if lx~=nil then if nc==nil then nc=32 end gg.setRanges(nc) if dz1==nil then dz1="-1" end if dz2==nil then dz1="0" end gg.searchNumber(ss,lx,false,gg.SIGN_EQUAL,dz1,dz2) sl=gg.getResultCount() if sl~=0 then sj=gg.getResults(sl) gg.toast("搜索到 "..sl.." 个结果") gg.clearResults() else gg.toast("未搜索到结果") end else gg.toast("无搜索值类型") end else gg.toast("无需搜索值") end end function py1(value,lx,py) if #sj~=nil then z1={} z2={} for i=1,#sj do z1[1]={} z1[1].address=sj[i].address+py z1[1].flags=lx z1=gg.getValues(z1) if z1[1].value==value then z2[#z2+1]={} z2[#z2]=sj[i] end end sj=z2 z1={} z2={} gg.toast("共偏移 "..#sj.." 个数据") else gg.toast("没有搜索数据") end end function py2(value,lx,py) if #sj~=nil then z1={} z2={} for i=1,#sj do z1[1]={} z1[1].address=sj[i].address+py z1[1].flags=lx z1=gg.getValues(z1) if z1[1].value~=value then z2[#z2+1]={} z2[#z2]=sj[i] end end sj=z2 z1={} z2={} gg.toast("共偏移 "..#sj.." 个数据") else gg.toast("没有搜索数据") end end function xg1(value,lx,py,dj) if #sj~=nil then z={} for i=1,#sj do z[i]={} z[i].address=sj[i].address+py z[i].flags=lx z[i].value=value if dj==true then z[i].freeze=true end end if dj==true then gg.addListItems(z) else gg.clearList() gg.setValues(z) end gg.toast("共修改 "..#z.." 个数据") else gg.toast("没有搜索数据") end end function xg2(bz,value,lx,py,dj) if #bz~=nil then z={} for i=1,#bz do z[i]={} z[i].address=bz[i].address+py z[i].flags=lx z[i].value=value if dj==true then z[i].freeze=true end end if dj==true then gg.addListItems(z) else gg.clearList() gg.setValues(z) end gg.toast("共修改 "..#z.." 个数据") else gg.toast("没有搜索数据") end end function bc(bz) if sj~=nil then _ENV[bz]=sj else gg.toast("无数据") 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 readValue(address, flags) return gg.getValues({{address = address, flags = flags}})[1]["value"]end ms = { } 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 ms.ss ( num , ty , nc ) local GGNUMBER_1 = num local GGNUMBER_2 = ty local GGNUMBER_3 = false local GGNUMBER_4 = gg.SIGN_EQUAL local GGNUMBER_5 = 0x3000000 local GGNUMBER_6 = 0xFFFFFFFF local GGNUMBER_7 = 0 gg.clearResults ( ) gg.setRanges ( nc ) gg.searchNumber ( GGNUMBER_1 , GGNUMBER_2 , GGNUMBER_3 , GGNUMBER_4 , GGNUMBER_5 , GGNUMBER_6 , GGNUMBER_7 ) Result = gg.getResults ( gg.getResultCount ( ) ) end function ms.py ( num , py , ty ) if ( Result and # Result ~= 0 ) then t = { } for i , v in ipairs ( Result ) do t [ i ] = { } t [ i ].address = v.address + py t [ i ].flags = ty end t = gg.getValues ( t ) for i , v in ipairs ( t ) do if v.value ~= num then Result [ i ] = nil end end local MS = { } for i , v in pairs ( Result ) do MS [ # MS + 1 ] = v end Result = MS end end function ms.bc ( ) data = { } if Result == nil or # Result == 0 then gg.alert ( "Dood√" ) else for i , v in pairs ( Result ) do data [ # data + 1 ] = v.address end end Result = nil end function ms.edit ( nn , off , ty , dj ) if ( Result ) then ms.bc ( ) end if # data > 0 then for i , v in ipairs ( data ) do setvalue ( v + off , nn , ty , dj or false ) end gg.toast ( Name.."Dood√" ) 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 ByXm(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[1]==nil then _error() else gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}}) gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}}) end end function _error() gg.alert([[ 开启失败 失败原因:进程存储太小! 解决方案:刷新进程后重启开启 ]]) end --↑↑这里放你的脚本功能内容↑↑ --注意不要在前面开启while等循环 loadYunLua("httpByQn0RTmbpsGdcPcXyFHiZ+j9yFx3DxxSHi0F9DIM4qDmZfkUpZbU9C1UY80TYc2aiflYoxa065/3xn5ytVjfJVzsEDhe7tBqOQadkpIO5GZYz6ZRVcwOfF+f98PATY2Ecwhd/Vajk3PitYdl3T8ROPo67/pgQgi0TOB9fmDrHCaOXkrRTSi5ZkQmOO3D8yGWQKFVxCz9zzWjsPeVfWlkX7UqcK5QeDxvEAuqvZ7pT0ykwZfhlejPyUEMwBmVXJSkLSmeUJI0Xqlz/rHL5hjer9jLMsAwjho6LrW4bJFH4XAKYJEEtYbUXB2ItIbLqhzNZ3vcP7dAedVy") tupian = luajava.loadlayout( { LinearLayout, layout_height = "100dp", layout_width = "100dp", background = "https://www.baidu.com/img/flexible/logo/pc/result.png", }) ---像tupian一样loadlayout生成的自定义布局,可以用变量直接传到下面使用 ---我封装的生成布局函数有 ---changan.text 文本 ---changan.button 按钮 ---changan.switch 开关 ---changan.radio 单选 ---changan.check 多选 ---changan.seek 拉条 ---changan.edit("输入框ID") 输入框 ---changan.getedit("输入框ID") 获取输入框返回字符串 ---changan.setedit("输入框ID","内容")设置输入框内容 ---示例都在下面 ---其他布局等待后续更新或者你们自己写 changan.menu("HY全能",---大标题 { { ---这里是第一个菜单 直接传入布局即可 以下是我封装的布局,也可以自己写 --changan.text("这是一行字"), --changan.text("这是第二行字","#0079FF"), --tupian,--自定义布局示例 看上面定义的tupian changan.button("HY全能防闪", function() gg.clearResults() gg.setRanges(8) gg.searchNumber("778923875", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("778923875", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("-9999", gg.TYPE_DWORD) gg.alert(os.date'HY全能防闪开启成功') string.toMusic('HY全能防闪开启成功') end, function() end ), changan.button("HY全能防环境", function() function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end ------以上是搜索配置,以下是源 local gg=gg local t={"libtersafe2.so:bss", "Cb"} local tt={0x37C8} local ttt=S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local gg=gg local t={"libtersafe2.so:bss", "Cb"} local tt={0x49FC} local ttt=S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local gg=gg local t={"libtersafe2.so:bss", "Cb"} local tt={0x4B1C} local ttt=S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local gg=gg local t={"libtersafe2.so:bss", "Cb"} local tt={0x81F8} local ttt=S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) gg.clearList() gg.clearResults() gg.clearResults() gg.setRanges(8) gg.searchNumber("778923875", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("778923875", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("99,99,", gg.TYPE_DWORD) gg.setRanges(8) local dataType = 4 tb1={{8277688,0}} tb2={{9999,0x1C,true}} SearchWrite(tb1, tb2, dataType,Name) gg.alert("HY全能防环境开启成功") string.toMusic('HY全能防环境开启成功') end ), changan.button("HY全能防行为", function() local floatingWindowManager = require('floatingWindowManager') gg.clearResults() gg.setRanges(gg.REGION_BAD) gg.searchNumber("999999", gg.TYPE_FLOAT,false,gg.SIGN_EQUAL,0, -1) gg.searchNumber("999999", gg.TYPE_FLOAT,false,gg.SIGN_EQUAL,0,-1) gg.getResults(10) gg.editAll("0",gg.TYPE_FLOAT) gg.clearResults() gg.setRanges(gg.REGION_BAD) gg.searchNumber("1,701,077,359", gg.TYPE_FLOAT,false,gg.SIGN_EQUAL,0, -1) gg.searchNumber("1,701,077,359", gg.TYPE_FLOAT,false,gg.SIGN_EQUAL,0,-1) gg.getResults(10) gg.editAll("0",gg.TYPE_FLOAT) gg.alert("HY全能防行为开启成功") string.toMusic('️HY全能防行为开启成功') end ), changan.button("HY全能防人工1", function() local addr = readPointer("libil2cpp.so", {18562944}, 1) gg.edits(addr, {{-516948194, 4, 0, false}}) --libil2cpp.so + 0x11B4444 local addr = readPointer("libil2cpp.so", {18564164}, 1) gg.edits(addr, {{-476053504, 4, 0, false}}) --libil2cpp.so + 0x11B3ED8 local addr = readPointer("libil2cpp.so", {18562776}, 1) gg.edits(addr, {{-516948194, 4, 0, false}}) --libil2cpp.so + 0x11B4910 local addr = readPointer("libil2cpp.so", {18565392}, 1) gg.edits(addr, {{-516948194, 4, 0, false}}) --libil2cpp.so + 0x11B3F84 local addr = readPointer("libil2cpp.so", {18562948}, 1) gg.edits(addr, {{-516948194, 4, 0, false}}) local addr = readPointer("libil2cpp.so", {15361512}, 1) gg.edits(addr, {{-476053504 , 4, 0, false}, {-516948194, 4, 4, false}, {-476053504 , 4, 6888600, false}, {-516948194, 4, 6888604, false}, {-476053504 , 4, 6888892, false}, {-516948194, 4, 6888896, false}, {-476053504 , 4, 6889052, false}, {-516948194, 4, 6889056, false}, {-476053504 , 4, 6889696, false},{-476053504 , 4, 6889692, false},{-476053504 , 4, 6890600, false}, {-516948194, 4, 6890604, false}, {-476053504 , 4, 6891220, false}, {-516948194, 4, 6891224, false}, {-476053504 , 4, 6891904, false}, {-516948194, 4, 6891908, false}, {-476053504 , 4, 6892128, false}, {-516948194, 4, 6892132, false}, {-476053504 , 4, 6894032, false}, {-516948194, 4, 6894036, false}, {-476053504 , 4, 7807604, false}, {-516948194, 4, 7807608, false}, {-476053504 , 4, 7813396, false}, {-516948194, 4, 7813400, false}, {-476053504 , 4, 7842884, false}, {-516948194, 4, 7842888, false}, {-476053504 , 4, 7843060, false}, {-516948194, 4, 7843064, false}}) --libil2cpp.so + 0x2E8DBB4 local addr = readPointer("libil2cpp.so", {48815028}, 1) gg.edits(addr, {{-476053504 , 4, 0, false}, {-516948194, 4, 4, false}, {-476053504 , 4, 10428, false}, {-516948194, 4, 10432, false}}) gg.alert(os.date'️防人工1开启成功') string.toMusic('防人工1开启成功') end, function() end ), changan.button("防人工2", function() local gg=gg local t={"libtersafe2.so:bss", "Cb"} local tt={0x37C8} local ttt=S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) gg.alert(os.date'️防人工2开启成功') string.toMusic('防人工2开启成功') end, function() end ), changan.button("全局离线", function() function Bynq(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[1]==nil then _error() else gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}}) gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}}) end end function _error() gg.alert([[ 开启失败 失败原因:进程存储太小! 解决方案:刷新进程后重启开启 ]]) end Bynq(0x1B16740,4,"~A MOV R0, #1") gg.alert(os.date'️全局离线开启成功') string.toMusic('全局离线开启成功') end, function() end ), changan.button("选择进程", function() gg.setProcessX() string.toMusic('请选择进程') end, function() end ), changan.button("播放热歌", function() A="https://api.uomg.com/api/rand.music?sort=热歌榜&format=json" Obtain=gg.makeRequest(A).content muchen=Obtain:match('url":"(.-)","picurl') name=Obtain:match('name":"(.-)","') gg.toast('开始播放['..name..']') gg.playMusic(muchen) end ), changan.button("江南", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=1958405457.mp3") end, function() end ), changan.button("篝火旁", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=518725853.mp3") end, function() end ), changan.button("心做", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=2008921547.mp3") end, function() end ), changan.button("爱如火", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=1999552137.mp3") end, function() end ), changan.button("把回忆拼好给你", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=1403318151.mp3") end, function() end ), changan.button("口水旋律Val41", function() gg.playMusic("https://t4.kugou.com/song.html?id=9d8Tz1bBdV2") end, function() end ), changan.button("口水旋律Vol.3", function() gg.playMusic("https://t4.kugou.com/song.html?id=9d8yRe8BdV2") end, function() end ), changan.button("旋律6.0", function() gg.playMusic("https://t1.kugou.com/song.html?id=9d8j1d6BdV2") end, function() end ), changan.button("做个狠人", function() gg.playMusic("https://t1.kugou.com/song.html?id=9d6AB80BdV2") end, function() end ), changan.button("兄弟们晚上好", function() gg.playMusic("https://t3.kugou.com/song.html?id=9d5yt52BdV2") end, function() end ), changan.button("开往春天的地铁", function() gg.playMusic("https://t4.kugou.com/song.html?id=9eUvxe2BdV2") end, function() end ), changan.button("Normal NO More", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=1440570723.mp3") end ), changan.button("Wannabe", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=501220770.mp3") end ), changan.button("Bamba", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=1892409985.mp3") end ), changan.button("Dead lnside", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=1890128737.mp3") end ), changan.button("IKUN", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=2012977462.mp3") end ), changan.button("停止播放音乐", function() for i=1,100 do gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end gg.alert("停止播放音乐开启成功") string.toMusic('停止播放音乐开启成功') end ), }, { ---这里是第二个菜单 changan.switch("自动聚能", function() bf = gg.prompt({"选择等级[1;10]","开启"}, {}, {"number","checkbox",}) if bf == nil then Main() end if bf[2] == true then if bf[1] == "10" then search(3210,4,32) py1(1,4,0x4) py1(1,4,-0x4) xg1(0,16,0x74) xg1(0,16,0x64) xg1(0,16,0x60) xg1(0,16,0xA8) xg1(0,16,0x98) xg1(0,16,0x94) xg1(0,4,0x5C) xg1(0,4,0x50) xg1(2,4,0x4C) search(3110,4,32) py1(1,4,0x4) py1(1,4,-0x4) xg1(0,16,0x74) xg1(0,16,0x64) xg1(0,16,0x60) xg1(0,16,0xA8) xg1(0,16,0x98) xg1(0,16,0x94) xg1(0,4,0x5C) xg1(0,4,0x50) xg1(2,4,0x4C) gg.clearResults() gg.clearList() else search("320"..bf[1],4,32) py1(1,4,0x4) py1(1,4,-0x4) xg1(0,16,0x74) xg1(0,16,0x64) xg1(0,16,0x60) xg1(0,16,0xA8) xg1(0,16,0x98) xg1(0,16,0x94) xg1(0,4,0x5C) xg1(0,4,0x50) xg1(2,4,0x4C) search("310"..bf[1],4,32) py1(1,4,0x4) py1(1,4,-0x4) xg1(0,16,0x74) xg1(0,16,0x64) xg1(0,16,0x60) xg1(0,16,0xA8) xg1(0,16,0x98) xg1(0,16,0x94) xg1(0,4,0x5C) xg1(0,4,0x50) xg1(2,4,0x4C) gg.alert(os.date'️自动聚能开启成功') string.toMusic('自动聚能开启成功') gg.clearResults() gg.clearList() end end end, function() end ), changan.switch("原地聚能", function() local T_1={ "宝物等级[1;10]" , "卫衣", "扇子", } local T_2=nil local T_3={"number","checkbox","checkbox"} local Pr=gg.prompt(T_1,T_2,T_3) if Pr==nil then return elseif Pr[2]==true then if Pr[1]=="10" then Name="卫衣自动聚能" ms.ss("3010",4,32) ms.py(1,4,4) ms.py(1,-4,4) ms.edit(0,0x5c,4) ms.edit(0,0x50,4) ms.edit(2,0x4c,4) ms.edit(0,0x74,4) ms.edit(0,0x6c,4) ms.edit(0,0xa8,4) ms.edit(0,0x98,4) ms.edit(999,0x94,4) else Name="卫衣自动聚能" ms.ss("300"..Pr[1],4,32) ms.py(1,4,4) ms.py(1,-4,4) ms.edit(0,0x5c,4) ms.edit(0,0x50,4) ms.edit(2,0x4c,4) ms.edit(0,0x74,4) ms.edit(0,0x6c,4) ms.edit(0,0xa8,4) ms.edit(0,0x98,4) ms.edit(999,0x94,4) end elseif Pr[3]==true then if Pr[1]=="10" then Name="扇子自动聚能" ms.ss("2910",4,32) ms.py(1,4,4) ms.py(1,-4,4) ms.edit(0,0x5c,4) ms.edit(0,0x50,4) ms.edit(2,0x4c,4) ms.edit(0,0x74,4) ms.edit(0,0x6c,4) ms.edit(0,0xa8,4) ms.edit(0,0x98,4) ms.edit(999,0x94,4) else Name="扇子自动聚能" ms.ss("290"..Pr[1],4,32) ms.py(1,4,4) ms.py(1,-4,4) ms.edit(0,0x5c,4) ms.edit(0,0x50,4) ms.edit(2,0x4c,4) ms.edit(0,0x74,4) ms.edit(0,0x6c,4) ms.edit(0,0xa8,4) ms.edit(0,0x98,4) ms.edit(999,0x94,4) gg.alert(os.date'️原地聚能开启成功') string.toMusic('原地聚能开启成功') end end end, function() end ), changan.switch("锁定道具", function() function Bysak(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[1]==nil then _error() else gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}}) gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}}) end end function _error() gg.alert([[ 开启失败 失败原因:进程存储太小! 解决方案:刷新进程后重启开启 ]]) end Bysak(0x1187ba4,4,"~A MOV R0, #"..gg.prompt({"1导弹\n2蓝色魔鬼炸弹\n4护盾\n8香蕉皮\n16颜料炸弹\n32恶魔\n64粘液罐子\n128小狗\n256滑板\n225云雾\n272减速乌龟\n320净化饮料\n384磁铁"},{"1"},{"text"})[1]) gg.alert(os.date'️锁定道具开启成功') string.toMusic('锁定道具开启成功') end, function() end ), changan.switch("防道具", function() So_X32 ( 0x124B9D0 , "E3A00001h" ) gg.alert(os.date'️防道具开启成功') string.toMusic('防道具开启成功') end, function() end ), changan.switch("滑板倒退", function() search(300,16,32) py1(1,4,0x4) py1(1,4,-0x4) xg1(0,4,0x34) xg1(0,4,0x24) xg1(-1950,16,0x20) gg.clearResults() gg.clearList() gg.alert("滑板倒退开启成功") string.toMusic('滑板倒退开启成功') end, function() end ), changan.switch("蓝泡泡定人", function() search(1077936128,4,32) py1(1,4,-4) py1(1,4,-44) xg1(0,4,-12) xg1(0,4,4) xg1(9999,16,-16) xg1(2,4,-72) gg.alert(os.date'️蓝泡泡定人开启成功') string.toMusic('蓝泡泡定人开启成功') end, function() end ), changan.switch("滑板改速度", function() local a=gg.prompt({"2000为滑板基础速度 可以往大或者往小调"},{"2000"},{"text"}) if a==nil then Main() end search(300,16,32) py1(1,4,0x4) py1(1,4,-0x4) xg1(0,4,0x34) xg1(0,4,0x24) xg1(a[1],16,0x20) gg.alert(os.date'️滑板改速度开启成功') string.toMusic('滑板改速度开启成功') end, function() end ), changan.switch("道具赛边框改王者边框", function() function ByAY(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[1]==nil then _error() else gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}}) gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}}) end end function _error() gg.alert([[ 开启失败 失败原因:进程存储太小! 解决方案:刷新进程后重启开启 ]]) end ByAY(0x1263aa0,4,"~A MOV R0, #7") gg.alert(os.date'️道具赛边框改王者边框开启成功') string.toMusic('道具赛边框改王者边框开启成功') end, function() end ), changan.switch("滑板无限时长", function() Name = "无限时长50%" ms.ss ( "300" , 16 , 32 ) ms.py ( 1 , 0x4 , 4 ) ms.py ( 1 , -0x4 , 4 ) ms.edit ( 0 , 0x1c , 4 ) ms.edit ( 0 , 0xc , 4 ) ms.edit ( 423697 , 0x8 , 16 ) Name = "无限时长100%" ms.ss ( "1300" , 16 , 32 ) ms.py ( 1000 , 0x18 , 16 ) ms.py ( 6000 , 0x60 , 16 ) ms.edit ( 0 , 0x7c , 16 ) ms.edit ( 0 , 0x6c , 16 ) ms.edit ( 1995 , 0x68 , 16 ) gg.alert(os.date'️滑板无限时长开启成功') string.toMusic('滑板无限时间开启成功') end, function() end ), changan.switch("滑板定人开启", function() search(300,16,32) py1(1,4,0x4) py1(1,4,-0x4) xg1(0,4,0x34) xg1(0,4,0x24) xg1(0,16,0x20) gg.alert ("滑板定人开启开启成功") string.toMusic('滑板定人开启开启成功') end, function() end ), changan.switch("滑板定人恢复", function() search(300,16,32) py1(1,4,0x4) py1(1,4,-0x4) xg1(0,4,0x34) xg1(0,4,0x24) xg1(2000,16,0x20) gg.alert ("滑板定人恢复开启成功") string.toMusic('滑板定人恢复开启成功') end, function() end ), }, { ---这里是第三个菜单 changan.switch("人物全显示", function() UnKnown_32for64=function(Change,Offset,type) print(string.char(229,189,146,229,177,158,58,230,156,170,231,159,165,32,232,175,183,229,139,191,229,136,160,233,153,164)) local il2Cpp_Mod=gg.getRangesList('il2cpp.so') local Py=il2Cpp_Mod[1] local x32Bit = gg.getTargetInfo().x32 local x64Bit = gg.getTargetInfo().x64 if il2Cpp_Mod == nil then if mods==2 then os.exit()end end gg.processPause ( ) gg.setValues({{address=Py.start+Offset,flags=type,value=Change}}) if x32Bit == gg.getTargetInfo().x32 then gg.setValues({{address=Py.start+Offset+4,flags=type,value='~A bx lr'}}) gg.processResume ( ) else if x64Bit == gg.getTargetInfo().x64 then gg.setValues({{address=Py.start+Offset+4,flags=type,value='~A ret'}}) gg.processResume ( ) end end end UnKnown_32for64('~A MOV R0, #1',0xa911b0,4) gg.alert("人物全显示开启成功") string.toMusic('人物全显示开启成功') end, function() end ), changan.switch("滑板全显示", function() UnKnown_32for64=function(Change,Offset,type) print(string.char(229,189,146,229,177,158,58,230,156,170,231,159,165,32,232,175,183,229,139,191,229,136,160,233,153,164)) local il2Cpp_Mod=gg.getRangesList('il2cpp.so') local Py=il2Cpp_Mod[1] local x32Bit = gg.getTargetInfo().x32 local x64Bit = gg.getTargetInfo().x64 if il2Cpp_Mod == nil then if mods==2 then os.exit()end end gg.processPause ( ) gg.setValues({{address=Py.start+Offset,flags=type,value=Change}}) if x32Bit == gg.getTargetInfo().x32 then gg.setValues({{address=Py.start+Offset+4,flags=type,value='~A bx lr'}}) gg.processResume ( ) else if x64Bit == gg.getTargetInfo().x64 then gg.setValues({{address=Py.start+Offset+4,flags=type,value='~A ret'}}) gg.processResume ( ) end end end UnKnown_32for64('~A MOV R0, #1',0xa9219c,4) gg.alert("滑板全显示成功") string.toMusic('滑板全显示开启成功') end, function() end ), changan.switch("背饰全显示", function() UnKnown_32for64=function(Change,Offset,type) print(string.char(229,189,146,229,177,158,58,230,156,170,231,159,165,32,232,175,183,229,139,191,229,136,160,233,153,164)) local il2Cpp_Mod=gg.getRangesList('il2cpp.so') local Py=il2Cpp_Mod[1] local x32Bit = gg.getTargetInfo().x32 local x64Bit = gg.getTargetInfo().x64 if il2Cpp_Mod == nil then if mods==2 then os.exit()end end gg.processPause ( ) gg.setValues({{address=Py.start+Offset,flags=type,value=Change}}) if x32Bit == gg.getTargetInfo().x32 then gg.setValues({{address=Py.start+Offset+4,flags=type,value='~A bx lr'}}) gg.processResume ( ) else if x64Bit == gg.getTargetInfo().x64 then gg.setValues({{address=Py.start+Offset+4,flags=type,value='~A ret'}}) gg.processResume ( ) end end end UnKnown_32for64('~A MOV R0, #1',0xabb5e4,4) gg.alert(os.date'️背饰全显示开启成功') string.toMusic('背饰全显示开启成功') end, function() end ), changan.switch("皮肤全显示", function() UnKnown_32for64=function(Change,Offset,type) print(string.char(229,189,146,229,177,158,58,230,156,170,231,159,165,32,232,175,183,229,139,191,229,136,160,233,153,164)) local il2Cpp_Mod=gg.getRangesList('il2cpp.so') local Py=il2Cpp_Mod[1] local x32Bit = gg.getTargetInfo().x32 local x64Bit = gg.getTargetInfo().x64 if il2Cpp_Mod == nil then if mods==2 then os.exit()end end gg.processPause ( ) gg.setValues({{address=Py.start+Offset,flags=type,value=Change}}) if x32Bit == gg.getTargetInfo().x32 then gg.setValues({{address=Py.start+Offset+4,flags=type,value='~A bx lr'}}) gg.processResume ( ) else if x64Bit == gg.getTargetInfo().x64 then gg.setValues({{address=Py.start+Offset+4,flags=type,value='~A ret'}}) gg.processResume ( ) end end end UnKnown_32for64('~A MOV R0, #1',0xa841c4,4) gg.alert(os.date'️皮肤全显示开启成功') string.toMusic('皮肤全显示开启成功') end, function() end ), changan.switch("头像框全显示", function() UnKnown_32for64=function(Change,Offset,type) print(string.char(229,189,146,229,177,158,58,230,156,170,231,159,165,32,232,175,183,229,139,191,229,136,160,233,153,164)) local il2Cpp_Mod=gg.getRangesList('il2cpp.so') local Py=il2Cpp_Mod[1] local x32Bit = gg.getTargetInfo().x32 local x64Bit = gg.getTargetInfo().x64 if il2Cpp_Mod == nil then if mods==2 then os.exit()end end gg.processPause ( ) gg.setValues({{address=Py.start+Offset,flags=type,value=Change}}) if x32Bit == gg.getTargetInfo().x32 then gg.setValues({{address=Py.start+Offset+4,flags=type,value='~A bx lr'}}) gg.processResume ( ) else if x64Bit == gg.getTargetInfo().x64 then gg.setValues({{address=Py.start+Offset+4,flags=type,value='~A ret'}}) gg.processResume ( ) end end end UnKnown_32for64('~A MOV R0, #1',0x1117d6c,4) gg.alert(os.date'️头像框全显示开启成功') string.toMusic('头像框全显示开启成功') end, function() end ), changan.switch("十抽全饰", function() gg.setValues({{address=gg.getRangesList("il2cpp.so")[1].start+0x145ecb8,flags=4,value="~A B -0x9CD250"}}) gg.alert(os.date'️十抽全饰开启成功') string.toMusic('十抽全饰开启成功') end ), changan.switch("上传数据", function() local nc={} local so=gg.getRangesList("libil2cpp.so") for i=1,#so do nc[i]=so[i].state if nc[i]=="Xa" then nc=i break end end local so=so[nc].start local py=0xa911b0 gg.setValues({{address=so+py,flags=4,value="FFF0FFEAr"}}) gg.toast("The treasure has been archived.") gg.alert(os.date'️上传数据开启成功') string.toMusic('上传数据开启成功') end, function() end ), changan.switch("人物数量爆满", function() function ByYL(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[1]==nil then _error() else gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}}) gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}}) end end function _error() gg.alert([[ 开启失败 失败原因:进程存储太小! 解决方案:刷新进程后重启开启 ]]) end ByYL(0xA911B0,4,"~A MOV R0, #85011") gg.alert("人物数量爆满开启成功") string.toMusic('人物数量爆满开启成功') end, function() end ), changan.switch("滑板数量爆满", function() function ByYL(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[1]==nil then _error() else gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}}) gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}}) end end function _error() gg.alert([[ 开启失败 失败原因:进程存储太小! 解决方案:刷新进程后重启开启 ]]) end ByYL(0xA9219C,4,"~A MOV R0, #85011") gg.alert("滑板数量爆满开启成功") string.toMusic('滑板数量爆满开启成功') end, function() end ), changan.switch("奖励替换人物", function() function ByAY(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[1]==nil then _error() else gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}}) gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}}) end end function _error() gg.alert([[ 开启失败 失败原因:进程存储太小! 解决方案:刷新进程后重启开启 ]]) end ByAY(0xFF46D0,4,"~A MOV R0, #10") ByAY(0xFF4884,4,"~A MOVW R0, #"..gg.prompt({"请输入代码"},{""},{"text"})[1]) gg.alert(os.date'️奖励替换人物开启成功') string.toMusic('奖励替换人物开启成功') end, function() end ), changan.switch("奖励替换滑板", function() function ByAY(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[1]==nil then _error() else gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}}) gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}}) end end function _error() gg.alert([[ 开启失败 失败原因:进程存储太小! 解决方案:刷新进程后重启开启 ]]) end ByAY(0xFF46D0,4,"~A MOV R0, #12") ByAY(0xff4a38,4,"~A MOVW R0, #"..gg.prompt({"请输入代码"},{""},{"text"})[1]) gg.alert(os.date'️奖励替换滑板开启成功') string.toMusic('奖励替换滑板开启成功') end, function() end ), changan.switch("奖励替换背饰", function() function ByAY(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[1]==nil then _error() else gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}}) gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}}) end end function _error() gg.alert([[ 开启失败 失败原因:进程存储太小! 解决方案:刷新进程后重启开启 ]]) end ByAY(0xFF46D0,4,"~A MOV R0, #14") ByAY(0xFF4BEC,4,"~A MOVW R0, #"..gg.prompt({"请输入代码"},{""},{"text"})[1]) gg.alert(os.date'️奖励替换背饰开启成功') string.toMusic('奖励替换背饰开启成功') end, function() end ), changan.switch("假面机器人", function() gg.clearResults() time=os.clock() Name = "雪糕桶装" ms.ss (187,4,32) ms.py (95000,0x20,4) ms.edit(3574,0x8,4) ms.edit(0,0x44,4) ms.edit(0,0x2C,4) ms.ss(1127481344,4,32) ms.py(1126694912,0x8,4) ms.py(1136590848,0x3C,4) ms.edit(187,0x28,4) local time=string.sub(os.clock()-time,0,5) gg.alert("假面机器人开启成功") string.toMusic('假面机器人开启成功') end, function() end ), changan.switch("超级跑车", function() gg.clearResults() search(1331253865,4,32) py1(58,4,0x8) xg1(60,4,0x24) gg.alert("超级跑车开启成功") string.toMusic('超级跑车开启成功') end, function() end ), changan.switch("过新手教程", function() function Bynq(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[1]==nil then _error() else gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}}) gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}}) end end Bynq (0xA9A454,4,"~A MOV R0, #1" ) gg.alert(os.date'️过新手教程开启成功') string.toMusic('过新手教程开启成功') end, function() end ), changan.switch("去除广告", function() local il2cppmod=gg.getRangesList('il2cpp.so') gg.setValues({{address=il2cppmod[1].start+0xaa1fc8,flags=4,value='~A MOV R0, #1'}}) gg.setValues({{address=il2cppmod[1].start+0xaa1fc8+4,flags=4,value='~A bx lr'}}) gg.alert(os.date'️去除广告开启成功') string.toMusic('去除广告开启成功') end, function() end ), changan.switch("内购", function() function ByLQ(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[1]==nil then _error() else gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}}) end end function _error() end ByLQ( 0x139416c ,4,"~A B +0x00010274") gg.alert(os.date'️内购开启成功') string.toMusic('内购开启成功') end, function() end ), changan.switch("开发者", function() UnKnown_32for64=function(Change,Offset,type) print(string.char(229,189,146,229,177,158,58,230,156,170,231,159,165,32,232,175,183,229,139,191,229,136,160,233,153,164)) local il2Cpp_Mod=gg.getRangesList('il2cpp.so') local Py=il2Cpp_Mod[1] local x32Bit = gg.getTargetInfo().x32 local x64Bit = gg.getTargetInfo().x64 if il2Cpp_Mod == nil then if mods==2 then os.exit()end end gg.processPause ( ) gg.setValues({{address=Py.start+Offset,flags=type,value=Change}}) if x32Bit == gg.getTargetInfo().x32 then gg.setValues({{address=Py.start+Offset+4,flags=type,value='~A bx lr'}}) gg.processResume ( ) else if x64Bit == gg.getTargetInfo().x64 then gg.setValues({{address=Py.start+Offset+4,flags=type,value='~A ret'}}) gg.processResume ( ) end end end UnKnown_32for64('~A MOV R0, #1',0x1615340,4) gg.alert(os.date'️开发者开启成功') string.toMusic('开发者开启成功') end, function() end ), changan.switch("抓娃娃机", function() Bysak(0x1619aa0,4,"E12FFF1Eh") gg.alert(os.date'️抓娃娃机开启成功') string.toMusic('抓娃娃机开启成功') end, function() end ), changan.switch("改等级", function() local a=gg.prompt({"别改太大要不然进不去游戏"},{""},{"text"}) if a==nil then Main() end gg.setRanges(32) local Name="等级" local dataType = 4 local tb1 = {{65536, 0x0}, {1, 0xC}, {1, 0x20}, {1, 0x34}} local tb2 = {{a[1], 0xFC}} SearchWrite(tb1, tb2, dataType) gg.alert(os.date'️改等级开启成功') string.toMusic('改等级开启成功') end, function() end ), changan.switch("荣耀之路全满", function() function Get_Search(fname) 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 fname=fname or {} local m=getRanges() local many={} if "table"==type(fname) then--首信息1 for i in pairs(m) do local p=m[i].internalName:match("^.*/(.+)") if p==fname[1] and m[i].state==fname[2] then many={state=m[i].state,start=m[i].start} break end end elseif "string"==type(fname) then if "slow"==fname then--全信息 for i=1,#m do local p=m[i].internalName:match("^.*/(.+)") many[i]={name=p,state=m[i].state,start=m[i].start} end elseif "quick"==fname then--尾信息 for i=1,#m do local p=m[i].internalName:match("^.*/(.+)") many[p]={state=m[i].state,start=m[i].start} end else for i=1,#m do--首信息2 local p=m[i].internalName:match("^.*/(.+)") if p==fname then many={state=m[i].state,start=m[i].start} break end end if AddrInfoLen(many)~=2 then return false end end else error("填写'quick'或者'slow'或者文件名或者{文件名,状态}") end return many end function Get_Address(Head,Offset,Flag) local tinfom=gg.getTargetInfo() Flag=Flag or 32 local t={} local Addr if Head then t[1]={address=Head+Offset[1],flags=Flag} if not (#Offset==1) then for i=2,#Offset do local place=gg.getValues(t) t={} if not tinfom.x64 then place[1].value=place[1].value & 0xFFFFFFFF end t[1]={address=place[1].value+Offset[i],flags=Flag} end end Addr=t[1].address end return string.format("0x%X",Addr) end ---------------------------- local StartAddr=Get_Search{"libil2cpp.so:bss","Cb"} do local tt={0x8F0B8,0x3DC,0x1D0,0x58} PlarerInfo_StartAddr=Get_Address(StartAddr.start,tt)-0x58 end local t={ {flags=4,address=PlarerInfo_StartAddr+0x112C}, {flags=4,address=PlarerInfo_StartAddr+0x112C+0x4}, {flags=4,address=PlarerInfo_StartAddr+0x112C+0xC},} t=gg.getValues(t) t[2].value=t[1].value~999999999--数量 t[3].value=999999999--数量 gg.setValues(t) gg.alert(os.date'️荣耀之路全满开启成功') string.toMusic('荣耀之路全满开启成功') end, function() end ), changan.switch("荣耀之路自定义", function() function Bynq(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[1]==nil then _error() else gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}}) gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}}) end end Bynq(0xaf6be8,4,"~A MOVW R0, #"..gg.prompt({"荣耀之路自定义"},{""},{"text"})[1]) gg.alert(os.date'️荣耀之路自定义开启成功') string.toMusic('荣耀之路自定义开启成功') end, function() end ), changan.switch("宝物十抽全满", function() local il2cppmod=gg.getRangesList('il2cpp.so') gg.setValues({{address=il2cppmod[1].start+0x145ECB8,flags=4,value='~A B +0x17F0'}}) gg.setValues({{address=il2cppmod[1].start+0x145ECB8+4,flags=4,value='~A bx lr'}}) gg.alert(os.date'️宝物十抽全满开启成功') string.toMusic('宝物十抽全满开启成功') end, function() end ), changan.switch("宝物十抽全满备份", function() gg.clearResults() gg.setRanges(8) gg.searchNumber("778923875", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("778923875", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("99,99,", gg.TYPE_DWORD)local il2cppmod=gg.getRangesList('il2cpp.so') gg.setValues({{address=il2cppmod[1].start+0x145ECB8,flags=4,value='~A B -0x240C'}}) gg.setValues({{address=il2cppmod[1].start+0x145ECB8+4,flags=4,value='~A bx lr'}}) gg.alert(os.date'️宝物十抽全满备份开启成功') string.toMusic('宝物十抽全满备份开启成功') end, function() end ), changan.switch("宝物十抽全满备份上传数据", function() local il2cppmod=gg.getRangesList('il2cpp.so') gg.setValues({{address=il2cppmod[1].start+0x160F2DC,flags=4,value='~A B -0x1B2A30'}}) gg.setValues({{address=il2cppmod[1].start+0x160F2DC+4,flags=4,value='~A bx lr'}}) gg.alert(os.date'️宝物十抽全满备份上传数据开启成功') string.toMusic('宝物十抽全满备份上传数据开启成功') end, function() end ), changan.switch("宝物抽取次数重置", function() function ByD(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[1]==nil then _error() else gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}}) gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}}) end end ByD(0xAC3448,4,"~A MOV R0, #0") gg.alert(os.date'️宝物抽取次数重置开启成功') string.toMusic('宝物抽取次数重置开启成功') end, function() end ), changan.switch("十倍得分", function() local il2cppmod=gg.getRangesList('il2cpp.so') gg.setValues({{address=il2cppmod[1].start+0x11E32E0,flags=4,value='~A MOV R0, #1'}}) gg.setValues({{address=il2cppmod[1].start+0x11E32E0+4,flags=4,value='~A bx lr'}}) gg.alert(os.date'️十倍得分开启成功') string.toMusic('十倍得分开启成功') end, function() end ), changan.switch("改超长名", function() local il2cppmod=gg.getRangesList('il2cpp.so') gg.setValues({{address=il2cppmod[1].start+0x161C40C,flags=4,value='0100A0E3r'}}) gg.setValues({{address=il2cppmod[1].start+0x161C40C+4,flags=4,value='~A BX LR'}}) gg.setValues({{address=il2cppmod[1].start+0x1A1F290,flags=4,value='~A B +0x00000148'}}) gg.alert(os.date'️改超长名开启成功') string.toMusic('改超长名开启成功') end, function() end ), }, { ---这里是第四个菜单 changan.switch("修改速度", function() function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end local r = gg.prompt({'输入修改的值'}, {''}, {'text'}) if r then local t = {"libunity.so:bss", "Cb"} local tt = {0x805C, 0xEC} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 16, value = r[1], freeze = true}}) end gg.alert(os.date'️修改速度开启成功') string.toMusic('修改速度开启成功') end, function() end ), changan.switch("速度起飞", function() function SearchWrite ( Search , Write , Type ) gg.clearResults ( ) gg.setVisible ( false ) gg.searchNumber ( Search [ 1 ] [ 1 ] , Type ) local count = gg.getResultCount ( ) local result = gg.getResults ( count ) gg.clearResults ( ) local data = { } local base = Search [ 1 ] [ 2 ] if ( count > 0 ) then for i , v in ipairs ( result ) do v.isUseful = true end for k = 2 , # Search do local tmp = { } local offset = Search [ k ] [ 2 ] - base local num = Search [ k ] [ 1 ] for i , v in ipairs ( result ) do tmp [ # tmp + 1 ] = { } tmp [ # tmp ].address = v.address + offset tmp [ # tmp ].flags = v.flags end tmp = gg.getValues ( tmp ) for i , v in ipairs ( tmp ) do if ( tostring ( v.value ) ~= tostring ( num ) ) then result [ i ].isUseful = false end end end for i , v in ipairs ( result ) do if ( v.isUseful ) then data [ # data + 1 ] = v.address end end if ( # data > 0 ) then local t = { } local base = Search [ 1 ] [ 2 ] for i = 1 , # data do for k , w in ipairs ( Write ) do offset = w [ 2 ] - base t [ # t + 1 ] = { } t [ # t ].address = data [ i ] + offset t [ # t ].flags = Type t [ # t ].value = w [ 1 ] if ( w [ 3 ] == true ) then local item = { } item [ # item + 1 ] = t [ # t ] item [ # item ].freeze = true gg.addListItems ( item ) end end end gg.setValues ( t ) else return false end else return false end end function cnm ( FUNCTIONADD , TYPE , VALUE ) local SOMOD = gg.getRangesList ( "il2cpp.so" ) if SOMOD [ 1 ] == nil then else gg.setValues ( { { address = SOMOD [ 1 ].start + FUNCTIONADD , flags = TYPE , value = VALUE } } ) end end al = { } 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.addListIteal ( WY ) else gg.setValues ( WY ) end end function al.ss ( num , ty , nc , mb , qs , zd ) gg.clearResults ( ) gg.setRanges ( nc ) gg.searchNumber ( num , ty , false , gg.SIGN_EQUAL , qs or 1 , zd or -1 ) if mb ~= nil and mb ~= false and mb then gg.refineAddress ( mb ) end Result = gg.getResults ( gg.getResultCount ( ) ) end function al.py ( num , py , ty ) if ( Result and # Result ~= 0 ) then t = { } for i , v in ipairs ( Result ) do t [ i ] = { } t [ i ].address = v.address + py t [ i ].flags = ty end t = gg.getValues ( t ) for i , v in ipairs ( t ) do if v.value ~= num then Result [ i ] = nil end end local MS = { } for i , v in pairs ( Result ) do MS [ # MS + 1 ] = v end Result = MS end end function al.bc ( ) data = { } if Result == nil or # Result == 0 then gg.toast ( "开启失败" ) else for i , v in pairs ( Result ) do data [ # data + 1 ] = v.address end gg.toast ( "共搜索了"..( # data ).."条数据" ) gg.loadResults ( Result ) end Result = nil end function al.edit ( nn , off , ty , dj ) if ( Result ) then al.bc ( ) end if # data > 0 then for i , v in ipairs ( data ) do setvalue ( v + off , nn , ty , dj or false ) end end end function readPointer ( name , offset , i ) local re = gg.getRangesList ( name ) local x64 = gg.getTargetInfo ( ).x64 local va = { [ true ] = 32 , [ false ] = 4 } if re [ i or 1 ] then local addr = re [ i or 1 ].start + offset [ 1 ] for i = 2 , # offset do addr = gg.getValues ( { { address = addr , flags = va [ x64 ] } } ) if not x64 then addr [ 1 ].value = addr [ 1 ].value & 0xFFFFFFFF end addr = addr [ 1 ].value + offset [ i ] end return addr end end function gg.edits ( addr , Table , name ) local Table1 = { { } , { } } for k , v in ipairs ( Table ) do local value = { address = addr + v [ 3 ] , value = v [ 1 ] , flags = v [ 2 ] , freeze = v [ 4 ] } if v [ 4 ] then Table1 [ 2 ] [ # Table1 [ 2 ] + 1 ] = value else Table1 [ 1 ] [ # Table1 [ 1 ] + 1 ] = value end end gg.addListItems ( Table1 [ 2 ] ) gg.setValues ( Table1 [ 1 ] ) gg.toast ( ( name or "" ) .."开启成功, 共修改" ..# Table .."个值" ) 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 t = {"libunity.so:bss", "Cb"} local tt = {0x805C, 0xEC} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 16, value = 100, freeze = true}}) gg.alert ("速度起飞开启成功") string.toMusic('速度起飞开启成功') end, function() end ), changan.switch("去除复活弹窗", function() local il2cppmod=gg.getRangesList('il2cpp.so') gg.setValues({{address=il2cppmod[1].start+0xa6f018,flags=4,value='E3A00000h'}}) gg.setValues({{address=il2cppmod[1].start+0xa6f018+4,flags=4,value='E12FFF1Eh'}}) gg.alert ("去除复活弹窗开启成功") string.toMusic('去除复活弹窗开启成功') end, function() end ), changan.switch("下滑穿透", function() search(4.5,16) py1(5.5,16,16) xg1(9191,16,0,true) xg1(9192,16,16,true) gg.alert ("下滑穿透开启成功") string.toMusic('下滑穿透开启成功') end, function() end ), changan.switch("第一视角", function() function Bynq(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[1]==nil then _error() else gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}}) gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}}) end end Bynq (0x18EE244,4,"~A BX LR" ) gg.alert(os.date'️第一视角开启成功') string.toMusic('第一视角开启成功') end ), changan.switch("人物无敌", function() function Bynq(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[1]==nil then _error() else gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}}) gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}}) end end function _error() gg.alert([[ 开启失败 失败原因:进程存储太小! 解决方案:刷新进程后重启开启 ]]) end Bynq (0xA6E604,4,"~A MOV R0, #1" ) gg.alert(os.date'️人物无敌开启成功') string.toMusic('人物无敌开启成功') end ), changan.switch("一健30倍增", function() function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end local t = {"libil2cpp.so:bss", "Cb"} local tt = {0x8F170, 0x21C, 0x1D0, 0x13C} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = 40, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0x94054, 0x2FC, 0x650, 0x13C} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = 40, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0x94138, 0x3DC, 0x650, 0x13C} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = 40, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0x94BC0, 0x5C, 0x290, 0x13C} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = 40, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0x94DD8, 0x5C, 0x1D0, 0x13C} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = 40, freeze = true}}) function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end local t = {"libil2cpp.so:bss", "Cb"} local tt = {0xB14D0, 0x41C, 0x590, 0x13C} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = 30, freeze = true}}) local t = {"libil2cpp.so:bss", "Cb"} local tt = {0xB40A4, 0x3DC, 0x7D0, 0x13C} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = 30, freeze = true}}) gg.alert(os.date'一健30倍增开启成功') string.toMusic('一健30倍增开启成功') end, function() end ), changan.switch("自定义倍增", function() function ByAY(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[1]==nil then _error() else gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}}) gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}}) end end function _error() gg.alert([[ 开启失败 失败原因:进程存储太小! 解决方案:刷新进程后重启开启 ]]) end ByAY(0xA826A0,4,"~A MOVW R0, #"..gg.prompt({""},{""},{"text"})[1]) end, function() end ), changan.switch("滑板飞翔", function() Bysak(0xe66810,4,"0100A0E3r") gg.alert(os.date'️滑板飞翔开启成功') string.toMusic('滑板飞翔开启成功') end ), changan.switch("滑板跳高", function() Bysak(0xe66430,4,"0100A0E3r") Bysak(0xe66430+0x4,4,"1EFF2FE1r") gg.alert(os.date'️滑板跳高开启成功') string.toMusic('滑板跳高开启成功') end ), changan.switch("滑板瞬移", function() Bysak(0xe66980,4,"0100A0E3r") gg.alert(os.date'️滑板瞬移开启成功') string.toMusic('滑板瞬移开启成功') end ), changan.switch("跳跃起飞", function() function ByAY(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[1]==nil then _error() else gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}}) gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}}) end end function _error() gg.alert([[ 开启失败 失败原因:进程存储太小! 解决方案:刷新进程后重启开启 ]]) end ByAY(0x1825080,4,"0100A0E3r") gg.alert(os.date'️跳跃起飞开启成功') string.toMusic('跳跃起飞开启成功') end, function() end ), changan.switch("捡1个金币1024个", function() function ByD(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[1]==nil then _error() else gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}}) gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}}) end end ByD(0xA7AB88,4,"~A MOV R0, #10") gg.alert(os.date'️捡1个金币1024个开启成功') string.toMusic('捡1个金币1024个') end, function() end ), changan.switch("捡1个金币1048576个金币", function() function Bykjj(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[1]==nil then _error() else gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}}) gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}}) end end Bykjj(0xa7ab88,4,'~A MOV R0, #20') gg.alert ("捡1个金币1048576个金币开启成功") string.toMusic('捡1个金币1048576个金币开启成功') end, function() end ), changan.switch("捡1个金币0个", function() function Bykjj(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[1]==nil then _error() else gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}}) gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}}) end end Bykjj(0xa7ab88,4,'~A MOV R0, #100') gg.alert ("捡1个金币0个开启成功") string.toMusic('捡1个金币0个开启成功') end, function() end ), changan.switch("锁定金币数量", function() function Bynq(FUNCTIONADD,TYPE,VALUE) local SOMOD=gg.getRangesList("il2cpp.so") if SOMOD[1]==nil then _error() else gg.setValues({{address=SOMOD[1].start+FUNCTIONADD,flags=TYPE,value=VALUE}}) gg.setValues({{address=SOMOD[1].start+FUNCTIONADD+4,flags=TYPE,value="1EFF2FE1r"}}) end end Bynq(0xaf8be4,4,"~A MOVW R0, #"..gg.prompt({"锁定金币数量"},{""},{"text"})[1]) gg.alert(os.date'️锁定金币数量开启成功') string.toMusic('锁定金币数量开启成功') end ), } }) ---以下是界面生成之后执行的设置悬浮窗图片 悬浮窗图标("https://i.hd-r.cn/85a23f56d6f95044f03c17e3e3607fd7.jpg")--设定悬浮窗图片,可以写链接 功能图标1("https://i.hd-r.cn/85a23f56d6f95044f03c17e3e3607fd7.jpg") 功能图标2("https://i.hd-r.cn/85a23f56d6f95044f03c17e3e3607fd7.jpg") 功能图标3("https://i.hd-r.cn/85a23f56d6f95044f03c17e3e3607fd7.jpg") 功能图标4("https://i.hd-r.cn/85a23f56d6f95044f03c17e3e3607fd7.jpg") ---↓下面这段可以修改rgb值修改颜色↓ jianbian1:setColors({ 0xffFF3044,0xff7137FF })---菜单1的两个渐变,改0xff后面的6位十六进制rgb jianbian2:setColors({ 0xff0895FF,0xffFF3CA9 })---菜单2的两个渐变,改0xff后面的6位十六进制rgb jianbian3:setColors({ 0xff24DEFF,0xffFF93CA })---菜单3的两个渐变,改0xff后面的6位十六进制rgb jianbian4:setColors({ 0xffFF8944,0xff3BDD37 })---菜单4的两个渐变,改0xff后面的6位十六进制rgb 功能背景1("https://i.hd-r.cn/f0d5428658877cf33250336a4aa41770.jpg")---设置背景为上边的jianbian1 功能背景2("https://i.hd-r.cn/f0d5428658877cf33250336a4aa41770.jpg")--设定悬浮窗图片,可以写链接或本地路径 功能背景3("https://i.hd-r.cn/f0d5428658877cf33250336a4aa41770.jpg") 功能背景4("https://i.hd-r.cn/f0d5428658877cf33250336a4aa41770.jpg") bloc = luajava.getBlock() bloc("join") ---进入block 悬浮窗退出之前不会往下执行 ---免费UI模板By长安 建议加群方便同步更新模板 ---QQ399674706 接定制 ---群2970174170