gg.alert("æ²¡å›¾æ ‡çš„é‡å¯å³å¯") draw.text("傻逼科技\n", 175,215)--å—体 draw.setColor("#FFC0CB")--颜色 string.toMusic('功能为快手è‹å·žç‰ˆæœ¬') j={} xgz={} ZY='Main' gg.toast('欢迎使用') gg.clearResults() sj={} xgz={} gg.toast("傻逼科技") local floatingWindowManager = require('floatingWindowManager') function dy_wt() local File = io.open ( '/sdcard/_wt' , 'w+' ) : write ( ry_wt ) gg.processResume ( ) gg.loadList ( "/sdcard/_wt" , gg.LOAD_VALUES ) os.remove ( "/sdcard/_wt" ) gg.clearList ( ) end function byzx(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 function CYC(ADD,TYPE,VALUE) local il2cpp_so=gg.getRangesList("il2cpp.so") if il2cpp_so[1]==nil then il2cpp_error() else gg.setValues({{address=il2cpp_so[1].start+ADD,flags=TYPE,value=VALUE}}) gg.processResume() end end 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 ( "å¼€å¯å¤±è´¥" ) 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.."æˆåŠŸ" ) end end function ZX(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 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 mods=gg.alert('未å˜åœ¨il2cpp.so\n\nè¯·æ£€æŸ¥ä½ çš„è¿›ç¨‹','ç»§ç»','Exit') 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 ( ) --gg.toast(name..'\nOpenedSuccessfully') else if x64Bit == gg.getTargetInfo().x64 then gg.setValues({{address=Py.start+Offset+4,flags=type,value='~A ret'}}) gg.processResume ( ) --gg.toast(name..'\nOpenedSuccessfully') end end end 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 al={} ld = function ( functionadd , value ) local SOmod = gg.getRangesList ( "il2cpp.so" ) if SOmod[1] == nil then _cw() else gg.setValues ({{ address = SOmod[1].start+functionadd , flags = 4 , value = value }}) gg.setValues ({{ address = SOmod[1].start+functionadd+4 , flags = 4 , value = "E12FFF1Eh" }}) end end _cw = function ( ) gg.alert ([[ å¼€å¯å¤±è´¥ å¤±è´¥åŽŸå› ï¼šè¿›ç¨‹å˜å‚¨å¤ªå°ï¼ 解决方案:é‡é€‰è¿›ç¨‹åŽå†æ¬¡å¼€å¯ ]]) end function SearchWrite(Search, Write, Type, Name) local time=os.clock() 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) local time=string.sub(os.clock()-time,0,5) gg.toast("yes 已修改:"..#t.."æ¡æ•°æ® 本次å¯åŠ¨è€—æ—¶:"..time.."ç§’") gg.addListItems(t) else gg.toast("no", false) return false end else gg.toast("no") return false end end function XG(ADD,TYPE,VALUE) local il2cpp_so=gg.getRangesList("il2cpp.so") if il2cpp_so[1]==nil then il2cpp_error() else gg.setValues({{address=il2cpp_so[1].start+ADD,flags=TYPE,value=VALUE}}) gg.processResume() end end function JQ(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 function Start(Name,Memory,Search,Refine,Write) local time=os.clock() gg.clearResults() gg.setRanges(Memory) gg.setVisible(false) gg.searchNumber(Search[1][2],Search[1][1]) 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=1, #Refine do local tmp = {} local offset = Refine[k][1] local num = Refine[k][3] for i, v in ipairs(result) do tmp[#tmp+1] = {} tmp[#tmp].address = v.address + offset tmp[#tmp].flags = Refine[k][2] 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 = {} for i=1, #data do for k, w in ipairs(Write) do offset = w[1] t[#t+1] = {} t[#t].address = data[i] + offset t[#t].flags = Write[i][2] t[#t].value = w[3] 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) local time=string.sub(os.clock()-time,0,5) gg.toast("yes 已修改:"..#t.."æ¡æ•°æ® 本次å¯åŠ¨è€—æ—¶:"..time.."ç§’") gg.addListItems(t) else gg.toast("no", false) return false end else gg.toast("no") return false end end j = { } xgz = { } ZY = 'Main' gg.toast ( '傻逼' ) gg.clearResults ( ) sj = { } xgz = { } gg.toast ( "傻逼" ) 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 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 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 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 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 ( "æœç´¢å¤±è´¥" , false ) return false end else gg.toast ( "æœç´¢å¤±è´¥" ) return false end 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 ( "å¼€å¯å¤±è´¥" ) 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.."æˆåŠŸ" ) 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.alert("\n"..Name.."æœç´¢æˆåŠŸï¼\nå移到"..#data.."æ¡æ•°æ®"..tg..th) 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 gg.clearResults ( ) sj = { } xgz = { } gg.toast ( "酱" ) function BYCY ( 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 ( [[ å¼€å¯å¤±è´¥ å¤±è´¥åŽŸå› ï¼šè¿›ç¨‹å˜å‚¨å¤ªå°ï¼ 解决方案:刷新进程åŽé‡å¯å¼€å¯ ]] ) gg.setProcessX ( ) end function BYCYA ( 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 ( [[å¼€å¯å¤±è´¥]] ) gg.alert ( "â¤ï¸è¯·é€‰æ‹©å¤§äºŽâ–¶ï¸300mbâ—€ï¸å†…å˜çš„地é“跑酷进程确ä¿è„šæœ¬å®‰å…¨è¿è¡Œâ¤ï¸" ) end DWORD = gg.TYPE_DWORD DOUBLE = gg.TYPE_DOUBLE FLOAT = gg.TYPE_FLOAT WORD = gg.TYPE_WORD BYTE = gg.TYPE_BYTE XOR = gg.TYPE_XOR QWORD = gg.TYPE_QWORD 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 xqmnb(qmnb) gg.clearResults() gg.setRanges(qmnb[1]["memory"]) if gg.searchNumber(qmnb[3]["value"],qmnb[3]["type"],false,gg.SIGN_EQUAL,0,-1)~=true then gg.searchAddress(qmnb[3]["value"],-1,qmnb[3]["type"]) end if gg.getResultCount()==0 then gg.toast(qmnb[2]["name"].."å¼€å¯å¤±è´¥")return end szxx=gg.getResults(gg.getResultCount()) szpd={} a=0 for i=4,#qmnb do for s=1,#szxx do if szpd[s]~="false" then if gg.getValues({{address=szxx[s].address+qmnb[i]["offset"],flags=qmnb[i]["type"]}})[1].value+0~=qmnb[i]["lv"]then szpd[s]="false" a=a+1 end end end end if a==#szxx then gg.toast(qmnb[2]["name"].."å¼€å¯å¤±è´¥")return end b=0 t={} for x=1,#qmxg do if qmxg[x]["freeze"]==true then a=1 end for i=1,#szxx do if szpd[i]==nil then b=b+1 table.insert(t,{address=szxx[i].address+qmxg[x]["offset"],flags=qmxg[x]["type"],freeze=qmxg[x]["freeze"],value=qmxg[x]["value"]}) end end end gg.setValues(t) gg.addListItems(t) gg.clearResults() if a~=1 then gg.clearList()else a=nil end gg.toast(qmnb[2]["name"].."开坿ˆåŠŸ,共修改了"..b.."æ¡æ•°æ®") 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 luoxuell ( 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.alert ( "\n"..Name.."æœç´¢æˆåŠŸï¼\nå移到"..# data.."æ¡æ•°æ®"..tg..th ) tg_ , th_ = nil , nil else gg.toast ( "\n"..Name.."å¼€å¯å¤±è´¥" , false ) return false end else gg.toast ( Name.."å¼€å¯å¤±è´¥" ) 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 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 readValue(address, flags) return gg.getValues({{address = address, flags = flags}})[1]["value"]end sy = { } 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 sy.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 sy.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 sy.bc ( ) data = { } if Result == nil or # Result == 0 then gg.alert ( "å¼€å¯å¤±è´¥" ) else for i , v in pairs ( Result ) do data [ # data + 1 ] = v.address end end Result = nil end function sy.edit ( nn , off , ty , dj ) if ( Result ) then sy.bc ( ) end if # data > 0 then for i , v in ipairs ( data ) do setvalue ( v + off , nn , ty , dj or false ) end gg.alert ( Name.."æˆåŠŸ" ) end end Sy_x32 = 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 = "1EFF2FE1r" } } ) gg.processResume ( ) end end -->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> function dy_wt (ry_wt ) local File = io.open ( '/sdcard/_wt' , 'w+' ) : write ( ry_wt ) gg.processResume ( ) gg.loadList ( "/sdcard/_wt" , gg.LOAD_VALUES ) os.remove ( "/sdcard/_wt" ) gg.clearList ( ) 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 ZX(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 function BYWD(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() gg.alert([[å¼€å¯å¤±è´¥]]) gg.alert("â¤ï¸è¯·é€‰æ‹©å¤§äºŽâ–¶ï¸300mbâ—€ï¸å†…å˜çš„地é“跑酷进程确ä¿è„šæœ¬å®‰å…¨è¿è¡Œâ¤ï¸") end 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 = 'Main0' 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 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 function S_Pointer(t_So,t_Offset,_bit)--åŸºå€ local gg=gg 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 ld = function ( functionadd , value ) local SOmod = gg.getRangesList ( "il2cpp.so" ) if SOmod[1] == nil then _cw() else gg.setValues ({{ address = SOmod[1].start+functionadd , flags = 4 , value = value }}) gg.setValues ({{ address = SOmod[1].start+functionadd+4 , flags = 4 , value = "E12FFF1Eh" }}) end end _cw = function ( ) gg.alert ([[ å¼€å¯å¤±è´¥ å¤±è´¥åŽŸå› ï¼šè¿›ç¨‹å˜å‚¨å¤ªå°ï¼ 解决方案:é‡é€‰è¿›ç¨‹åŽå†æ¬¡å¼€å¯ ]]) end function Modification(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 So_X32 = function ( Address , Value ) local Somod = gg.getRangesList ( 'il2cpp.so' ) [ 1 ] if Somod == nil then gg.alert ( 'è¯·é‡æ–°é€‰æ‹©åœ°é“跑酷进程' ) gg.setProcessX ( ) 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 = "1EFF2FE1r" } } ) gg.processResume ( ) end end 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 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 ) gg.clearResults ( ) gg.setRanges ( nc ) gg.searchNumber ( num , ty , false , gg.SIGN_EQUAL , 0x3000000 , 0xFFA40FFF , 0 ) 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 ( "å¼€å¯å¤±è´¥" ) 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 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.."æˆåŠŸ" ) 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 So_X32 = 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 = "1EFF2FE1r" } } ) gg.processResume ( ) end end SoSet = function ( ADdress , VAlue ) local Somod = gg.getRangesList ( 'il2cpp.so' ) [ 1 ] if Somod == nil then gg.alert ( 'è¯·é‡æ–°é€‰æ‹©åœ°é“跑酷进程' ) gg.setProcessX ( ) else local So = Somod.start local Add = So + ADdress gg.processPause ( ) gg.setValues ( { { address = Add , flags = 4 , value = VAlue } } ) 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 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 return _A end function il2cpp_so_x32(ADD,TYPE,VALUE) local il2cpp_so=gg.getRangesList("il2cpp.so") if il2cpp_so[1]==nil then il2cpp_error() else gg.setValues({{address=il2cpp_so[1].start+ADD,flags=TYPE,value=VALUE}}) gg.setValues({{address=il2cpp_so[1].start+ADD+4,flags=TYPE,value="1EFF2FE1r"}}) end end function CYC(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 gg.clearResults() sj={} xgz={} gg.toast("🙃欢迎进入🙃") 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 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 readValue(address, flags) return gg.getValues({{address = address, flags = flags}})[1]['value']end function xg1(value,lx,py,dj) if sj~=nil and #sj>0 then z={} for i=1,#sj do z[i]={} z[i].address=sj[i].address+py z[i].flags=lx if value == nil then value = readValue(z[i].address, lx) end z[i].value= value z[i].freeze = dj and true or false end if dj == true or dj == false then gg.addListItems(z) else 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 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 gg.clearResults() j={} xgz={} ZY='Main' gg.toast('👀欢迎使用👀') gg.clearResults() sj={} xgz={} gg.toast("脚本") 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 editData(qmnb,qmxg)gg.setVisible(false)gg.clearResults()qmnbv=qmnb[3]["value"]or qmnb[3][1]qmnbt=qmnb[3]["type"]or qmnb[3][2]qmnbn=qmnb[2]["name"]or qmnb[2][1]gg.setRanges(qmnb[1]["memory"]or qmnb[1][1])gg.searchNumber(qmnbv,qmnbt)gg.refineNumber(qmnbv,qmnbt)sz=gg.getResultCount()if sz==0 then gg.toast(qmnbn.."å¼€å¯å¤±è´¥")else sl=gg.getResults(999999)for i=1,sz do pdsz=true for v=4,#qmnb do if pdsz==true then pysz={{}}pysz[1].address=sl[i].address+(qmnb[v]["offset"]or qmnb[v][2])pysz[1].flags=qmnb[v]["type"]or qmnb[v][3]szpy=gg.getValues(pysz)tzszpd=tostring(qmnb[v]["lv"]or qmnb[v][1]):gsub(",","")pyszpd=tostring(szpy[1].value):gsub(",","")if tzszpd==pyszpd then pdjg=true pdsz=true else pdjg=false pdsz=false end end end if pdjg==true then szpy=sl[i].address for x=1,#qmxg do xgsz=qmxg[x]["value"]or qmxg[x][1]xgpy=szpy+(qmxg[x]["offset"]or qmxg[x][2])xglx=qmxg[x]["type"]or qmxg[x][3]xgdj=qmxg[x]["freeze"]or qmxg[x][4]xg={{address=xgpy,flags=xglx,value=xgsz}}if xgdj==true then xg[1].freeze=xgdj gg.addListItems(xg)else gg.setValues(xg)end end xgjg=true end end if xgjg==true then gg.toast(qmnbn.."开坿ˆåŠŸ")else gg.toast(qmnbn.."å¼€å¯å¤±è´¥")end end end 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 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 if value == nil then value = readValue(z[i].address, lx) end z[i].value= value z[i].freeze = dj and true or false end if dj == true or dj == false then gg.addListItems(z) else 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 function setvalue(address,flags,value) local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end function il2cpp_error() gg.alert("il2cppæœªåŠ è½½") end function SetValue256() local MemoryNum = gg.getResults(114514) for i, v in ipairs(MemoryNum) do if v.flags == gg.TYPE_DWORD then v.value = 256 v.freeze = true end end gg.addListItems(MemoryNum) MemoryNum = nil gg.clearResults() end function SetValue131328() local MemoryNum = gg.getResults(114514) for i, v in ipairs(MemoryNum) do if v.flags == gg.TYPE_DWORD then v.value = 131328 v.freeze = true end end gg.addListItems(MemoryNum) MemoryNum = nil gg.clearResults() end DWORD=gg.TYPE_DWORD DOUBLE=gg.TYPE_DOUBLE FLOAT=gg.TYPE_FLOAT WORD=gg.TYPE_WORD BYTE=gg.TYPE_BYTE XOR=gg.TYPE_XOR QWORD=gg.TYPE_QWORD hzs = {} local hzs = hzs local android = import('android.*') function write(fileName, content) --f = assert( io.open( fileName, 'w')) f:write( content ) f:close() if file.write(fileName, content) == false then gg.alert("请给框架和修改器 æ–‡ä»¶å‚¨å˜æƒé™\nå¦åˆ™æ— 法æ£å¸¸è¿è¡Œ") os.exit() end end function panduan(rec) fille,err = io.open(rec) if fille == nil then return false else return true end end function pdcf(lujing) rec = "/sdcard/长安/é…置文件/"..lujing fille,err = io.open(rec) if fille == nil then return false else return true end end sleep = gg.sleep --if gg.isHTTPdump()==true and panduan("/sdcard/长安/é…置文件/vpn.txt") == false then gg.alert("\n抓包?") os.exit() end function read(fileName) f = assert(io.open(fileName, 'r')) content = f:read("*all") f:close() return content end function wtcf(lujing,neirong) write("/sdcard/长安/é…置文件/"..lujing,neirong) end function rdcf(lujing) return read("/sdcard/长安/é…置文件/"..lujing) end function pmusic(x) if audiokg == "å¼€" then tmp1 = 0 gg.playMusic(x) tmp1 = 1 end end if pdcf("audio") ~= true then wtcf("audio","å¼€") end audiokg = rdcf("audio") function camusic(ress) tmp1 = 0 if audiokg == "å¼€" then if panduan("/sdcard/长安/音频/"..ress) == true then pmusic("/sdcard/长安/音频/"..ress) tmp1 = 1 else download("https://escape2020-1303126286.cos.ap-shenzhen-fsi.myqcloud.com/"..ress ,"/sdcard/长安/音频/"..ress) pmusic("/sdcard/长安/音频/"..ress) tmp1 = 1 end end end å¼€ = "å¼€" å…³ = "å…³" function checkimg(tmp) if panduan("/sdcard/长安/图片/"..tmp) ~= true then gg.toast("æ£åœ¨ä¸‹è½½èµ„æº"..tmp.."\n请è€å¿ƒç‰å¾…") download("https://escape2020-1303126286.cos.ap-shenzhen-fsi.myqcloud.com/"..tmp,"/sdcard/长安/图片/"..tmp) end end file.getdirs("/sdcard/长安/状æ€è¯»å–/") ckimg = { "dz3logo", "pink", "blue", "check1", "check2", "exit", } for i = 1,#ckimg do jindu = i 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({0x66FF2C22,0x998600FF}) jianbian6:setStroke(4,"0xdd282F4B")--边框宽度和颜色 return jianbian6 end slctb2 = luajava.loadlayout({ GradientDrawable, color = "#7f7fd5", cornerRadius = 10 }) function getseekgra() jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(20) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({0x66FF2C22,0x998600FF}) jianbians:setStroke(2,"0x44000000")--边框宽度和颜色 return jianbians end slctb=getseekgra() slcta = luajava.loadlayout({ GradientDrawable, color = "#616161", cornerRadius = 20 }) slctc = luajava.loadlayout { GradientDrawable, color = "#11ffffff", cornerRadius = 8 } slctd = luajava.loadlayout { GradientDrawable, color = "#55ffffff", cornerRadius = 8 } slcte = luajava.loadlayout { GradientDrawable, color = "#11ffffff", cornerRadius = 12 } slctf = luajava.loadlayout { GradientDrawable, color = "#aa1E1C27", cornerRadius = 12 } function getSelector3() jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(10) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({0x66FF2C22,0x998600FF}) jianbians:setStroke(2,"0x44000000")--边框宽度和颜色 selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, luajava.loadlayout { GradientDrawable, color = "#88000000", cornerRadius = 12 }) -- 点击时候的背景 selector:addState({ -android.R.attr.state_pressed }, jianbians) -- 没点击的背景 return selector 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() hzs.menu = function(sview) if isswitch then return false end isswitch = true cebian ={ LinearLayout, id = "ä¾§è¾¹", visibility = "gone", layout_height = "250dp", layout_width = "68dp", orientation = "vertical", background = { GradientDrawable, color = "#00ffffff", cornerRadius = 10 }, } gund= {LinearLayout, orientation="vertical", } for i=1,#stab do gund[#gund+1]={ LinearLayout, id = "jm"..i, layout_height = "28dp", layout_width = "68dp", layout_marginTop = "3dp", layout_marginBottom = "3dp", background=getSelector(), { TextView, gravity="center", text = stab[i][1], layout_height = "28dp", layout_width = "68dp", onClick=function() 切æ¢(i) end }} end cebian[#cebian+1]={ScrollView, layout_height = "190dp", layout_width = "68dp", gund} cebian[#cebian+1]={ ImageView, id = "exit", src = "/sdcard/长安/图片/exit", layout_width = "20dp", layout_height = "20dp", layout_marginTop = "10dp", layout_marginLeft = "14dp", } cebian=luajava.loadlayout(cebian) for i=1,#stab do _ENV["layout"..i] = luajava.loadlayout({ ScrollView, fillViewport = "true", padding = "10dp", id = "layout"..i, visibility = "gone", layout_width = "250dp", layout_height = "250dp", orientation = "horizontal", { LinearLayout, id = "layoutm"..i, background = getj6(), gravity = "top", layout_width = "210dp", orientation = "vertical", gravity = "center_horizontal", } }) end ckou = { LinearLayout, id = "chuangk", visibility = "gone", layout_width = "wrap_content", layout_height = "match_parent", orientation = "horizontal", 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", textColor="#616161", visibility = "gone", text = stab[1][2], gravity = "center", textSize = "24sp", layout_marginLeft = "30dp", layout_width = "fill_parent", }) floatWindow = { LinearLayout, id = "motion", layout_width = "wrap_content", orientation = "vertical", gravity = "center_vertical", layout_height = "wrap_content", { LinearLayout, layout_width = "match_parent", layout_height = "wrap_content", orientation = "horizontal", gravity = "center_vertical", { LinearLayout, layout_width = "48dp", layout_height = "wrap_content", layout_marginLeft = "0dp", layout_marginTop = "6dp", layout_marginBottom = "2dp", gravity = "center", { ImageView, id = "control", background = xfcpic, layout_width = "40dp", layout_height = "40dp", }}, 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,#stab 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 = function() éšè—() end exit.onClick = function() gg.toast("悬浮窗已退出") window:removeView(floatWindow) luajava.setFloatingWindowHide(false) luajava.newThread(function() os.exit() end):start() bloc("end") end local isMove 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 motion.onTouch = hanshu control.onTouch = hanshu exit.onTouch = hanshu for i=1,#stab do _ENV["jm"..i].onTouch = hanshu end end invoke(swib1,swib2) jm1:setBackground(slcta) gg.setVisible(false) luajava.setFloatingWindowHide(true) end corbk = true 当å‰ui = 1 function 切æ¢(x) 当å‰ui = x luajava.runUiThread(function() for i=1,#stab do _ENV["jm"..i]:setBackground(slctb) _ENV["layout"..i]:setVisibility(View.GONE) end title:setText(stab[当å‰ui][2]) _ENV["layout"..当å‰ui]:setVisibility(View.VISIBLE) _ENV["jm"..当å‰ui]:setBackground(slcta) YoYoImpl:with("FadeIn"):duration(200):playOn(_ENV["layout"..当å‰ui]) end) end 显示 = 0 beij = luajava.new(GradientDrawable) beij:setCornerRadius(40) beij:setGradientType(GradientDrawable.LINEAR_GRADIENT) beij:setColors(({0x66FF2C22,0x998600FF})) beij:setStroke(0,"0x44FFffff")--边框宽度和颜色 beij2 = luajava.loadlayout({ GradientDrawable, color = "#001E1C27", cornerRadius = 10 }) function getcolor(cl) cl[1] = tonumber(math.ceil(cl[1]*2.6,0,5)) if cl[1] > 255 then cl[1] = "0xff" else cl[1] = "0x"..string.format("%x",cl[1]) end for i = 1,3 do cl[i+1] = string.format("%x",cl[i+1]) if string.len(cl[i+1]) == 1 then cl[i+1] = "0"..cl[i+1] end end cl = cl[1]..cl[2]..cl[3]..cl[4] return cl end function getrgb(cl) if string.sub(cl,1,1) == "#" then cl = "0x"..string.sub(cl,2,-1) end cl = { tonumber(string.sub(cl,0,4)),tonumber("0x"..string.sub(cl,5,6)),tonumber("0x"..string.sub(cl,7,8))} return cl end function éšè—() luajava.runUiThread(function() control:setBackground(luajava.getBitmapDrawable("http://vip.kyun.top/view.php/6eb17d7f3c1700545330687db21bd585.jpeg")) if tonumber(tostring(cebian:getVisibility())) == 8.0 then chuangk:setVisibility(View.VISIBLE) cebian:setVisibility(View.VISIBLE) title:setVisibility(View.VISIBLE) mainLayoutParams.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL window:updateViewLayout(floatWindow, mainLayoutParams) YoYoImpl:with("SlideInDown"):duration(200):playOn(cebian) _ENV["layout"..当å‰ui]:setVisibility(View.VISIBLE) YoYoImpl:with("FadeIn"):duration(800):playOn(_ENV["layout"..当å‰ui]) floatWindow:setBackground(beij) else luajava.runUiThread(function()mainLayoutParams.flags = LayoutParams.FLAG_NOT_FOCUSABLE window:updateViewLayout(floatWindow, mainLayoutParams) end) control:setBackground(luajava.getBitmapDrawable("http://vip.kyun.top/view.php/6eb17d7f3c1700545330687db21bd585.jpeg")) title:setVisibility(View.GONE) floatWindow:setBackground(beij2) chuangk:setVisibility(View.GONE) cebian:setVisibility(View.GONE) _ENV["layout"..当å‰ui]:setVisibility(View.GONE) end 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 hzs.seek(name,bian,smin,smax,nows) _ENV[bian] =nows 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_hight = "fill_parent", { LinearLayout, layout_width = 'fill_parent', layout_hight = "fill_parent", layout_marginTop = "5dp", layout_marginBottom = "5dp", layout_marginLeft = "10dp", layout_marginRight = "10dp", gravity = "center_vertical", background = getseekgra(), { TextView, gravity = "top", text = name..":"..nows, id = luajava.newId(names), layout_width = '70dp', layout_marginLeft = "5dp", layout_marginRight = "0dp", }, { SeekBar, layout_width = '120dp', min = truesmin, max = truesmax, progress=tnows, 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 ]] chazhi={} chajv={} function hzs.seek(name,bian,smin,smax,nows) _ENV[bian] =nows thum=getseekgra() thum:setSize(60, 60) 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_hight = "fill_parent", { LinearLayout, layout_width = 'fill_parent', layout_hight = "fill_parent", layout_marginTop = "5dp", layout_marginBottom = "5dp", layout_marginLeft = "10dp", layout_marginRight = "10dp", gravity = "center_vertical", background = getseekgra(), { TextView, gravity = "top", text = name..":"..nows, textColor="#616161", id = luajava.newId(names), layout_width = '70dp', layout_marginLeft = "5dp", layout_marginRight = "0dp", }, { SeekBar, layout_width = '120dp', id=luajava.newId(name.."seekbar"), min = truesmin, max = truesmax, progress=tnows, --paddingStart="0dp", --paddingEnd="0dp", -- progressDrawable={getseekgra3()}, thumb=thum, progressHeight="10dp", 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 hzs.switch(name,func1,func2) if type(func1) == "table" then gg.alert("出现错误\nå¦‚æžœä½ æ˜¯ç”¨çš„æ˜¯æ—§ç‰ˆ\n请将开头第一个chagan.switch改æˆhzs.menu") gg.copyText("") os.exit() end local func = 开关(name,func1,func2) if not name then name = "未设置" end rest = luajava.loadlayout({ LinearLayout, layout_width = 'fill_parent', layout_hight = "fill_parent", { LinearLayout, layout_width = 'fill_parent', layout_hight = "fill_parent", layout_marginTop = "5dp", layout_marginBottom = "5dp", layout_marginLeft = "10dp", layout_marginRight = "10dp", gravity = "center_vertical", background = getseekgra(), { TextView, gravity = "top", text = name, layout_width = '100dp', layout_marginLeft = "10dp", layout_marginRight = "10dp", }, { Switch, gravity = "top", layout_width = 'match_parent', layout_hight = "10dp", --id=luajava.newId(tid), switchMinWidth = "20dp", onCheckedChange = function(Switch,var2,var3) if var2 == true then var2 = "å¼€" else var2 = "å…³" end luajava.newThread(function() func() end):start() end, }} }) return rest end function hzs.edit(name) _ENV[name] = name..guid() if not name then name = "UI" end rest = luajava.loadlayout({ LinearLayout, layout_width = 'fill_parent', layout_hight = "fill_parent", { LinearLayout, layout_width = 'fill_parent', layout_hight = "fill_parent", layout_marginTop = "5dp", layout_marginBottom = "5dp", layout_marginLeft = "10dp", layout_marginRight = "10dp", gravity = "center_vertical", background = getseekgra(), { EditText, gravity = "top", hint = name, gravity="center", id = luajava.newId(_ENV[name]), layout_width = 'fill', layout_marginLeft = "10dp", layout_marginRight = "10dp", }} }) return rest end function hzs.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 = getseekgra(), 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 hzs.check(cklist) rest = { LinearLayout, layout_width = 'match_parent', layout_height = "30dp", gravity = "center" } for i = 1,#cklist do local name = cklist[i][1] local func1 = cklist[i][2] local func2 = cklist[i][3] local nid = cklist[i][4] if type(func1) == "table" then gg.alert("") gg.copyText("") os.exit() end if not name then name = "未设置" end nid = name..guid() local func = 开关2(nid,func1,func2,nid) rstt = luajava.loadlayout({ LinearLayout, layout_width = 'wrap_content', layout_height = "30dp", layout_marginTop = "5dp", layout_marginBottom = "5dp", layout_marginLeft = "0dp", layout_marginRight = "10dp", gravity = "center_vertical", onClick = function() luajava.newThread(function() func() end):start() end, {ImageView, id = luajava.newId(nid), layout_width = '20dp', layout_height = "20dp", background = "/sdcard/长安/图片/check1", },{ TextView, gravity = "top", text = name, textColor="#616161", layout_width = 'wrap_content', layout_height = 'wrap_content', layout_marginLeft = "4dp", layout_marginRight = "5dp", }}) rest[#rest+1] = rstt end return luajava.loadlayout(rest) end function hzs.button(txt,func) if not txt then txt = "UI" end return luajava.loadlayout( { LinearLayout, layout_width = 'fill_parent', layout_hight = "wrap_content", { LinearLayout, layout_width = "fill_parent", gravity = "center_horizontal", layout_marginRight="10dp", layout_marginLeft="10dp", layout_marginTop = "5dp", layout_marginBottom = "5dp", background = getSelector3(), onClick = function() luajava.newThread(function() pcall(func) end):start() end, { TextView, --id = luajava.newId(tid), text = txt, textSize = "16sp", layout_width = "wrap_content", }, }}) end function hzs.text(txt,color,size) if not txt then txt = "UI" end if not color then color = "#616161" 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 hzs.setedit(name,txt) txt = tostring(txt) luajava.runUiThread(function() luajava.getIdValue(_ENV[name]):setText(txt) end) end function hzs.getedit(name) --gg.alert(edit) 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 开关2(name,func1,func2,nid) 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):setBackground(luajava.getBitmapDrawable("")) end) _ENV[name] = "å¼€" func1() else luajava.runUiThread(function() luajava.getIdValue(nid):setBackground(luajava.getBitmapDrawable("/sdcard/长安/图片/")) end) _ENV[name] = "å…³" func2() end end end end xfcpic="http://vip.kyun.top/view.php/6eb17d7f3c1700545330687db21bd585.jpeg" stab={--èœå•å --å¯åˆ å¯å‡æ²¡æœ‰é™åˆ¶ {"防å°åŠŸèƒ½","酱情科技"}, {"刷å·åŠŸèƒ½","酱情科技"}, {"分数竞赛","酱情科技"}, {"é“具竞赛","酱情科技"}, {"人物美化","酱情科技"}, {"éŸ³ä¹æ”¾æ¾","酱情科技"}, } hzs.menu( { { hzs.button('选择地é“跑酷进程', function() gg.setConfig("éšè—辅助", 23) gg.setConfig("è¿è¡Œå®ˆæŠ¤", 2) gg.setConfig("冻结间隔", 0) gg.setProcessX() toMusic('请选择地é“跑酷进程') end), hzs.switch("大厅全防", function() local t = {"libunity.so:bss", "Cb"} local tt = {0x3E144, 0x1E0, 0x0, 0x1C} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libunity.so:bss", "Cb"} local tt = {0x3E144, 0x1E0, 0x0, 0x30} 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 t = {"libtersafe2.so", "Cd"} local tt = {0x3FFE8} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtersafe2.so", "Cd"} local tt = {0x3FFF0} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libunity.so", "Cd"} local tt = {0x27BF8} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libunity.so", "Cd"} local tt = {0x27BFC} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtprt.so", "Cd"} local tt = {0xFC30} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = 9999, freeze = true}}) local t = {"libtersafe2.so", "Cd"} local tt = {0xA8} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = 9999, freeze = true}}) local t = {"libtersafe2.so", "Cd"} local tt = {0x8} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtersafe2.so", "Cd"} local tt = {0xC} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtersafe2.so", "Cd"} local tt = {0x10} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtersafe2.so", "Cd"} local tt = {0x14} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtersafe2.so", "Cd"} local tt = {0x3C} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtersafe2.so", "Cd"} local tt = {0x40} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtersafe2.so", "Cd"} local tt = {0x58} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtersafe2.so", "Cd"} local tt = {0x60} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtersafe2.so", "Cd"} local tt = {0x74} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtersafe2.so", "Cd"} local tt = {0x78} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtersafe2.so", "Cd"} local tt = {0x7C} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtersafe2.so", "Cd"} local tt = {0x84} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtersafe2.so", "Cd"} local tt = {0xAC} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtersafe2.so", "Cd"} local tt = {0xB0} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtersafe2.so", "Cd"} local tt = {0xB4} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtersafe2.so", "Cd"} local tt = {0xB8} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtersafe2.so", "Cd"} local tt = {0x128} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtersafe2.so", "Cd"} local tt = {0x12C} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtersafe2.so", "Cd"} local tt = {0x130} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtersafe2.so", "Cd"} local tt = {0x134} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtersafe2.so", "Cd"} local tt = {0x200} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtersafe2.so", "Cd"} local tt = {0x204} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtersafe2.so", "Cd"} local tt = {0x208} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtprt.so", "Cd"} local tt = {0x114D0} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = 9999, freeze = true}}) io.open("/sdcard/防æ¢é—ªé€€","w+"):write([[ 14381 Var #B56D10A8|b56d10a8|4|270f|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-Ws2GHQ7DLGT8rv4l5rk6Rg==/lib/arm/libtersafe2.so|a8 Var #BBDEF4D0|bbdef4d0|4|270f|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-Ws2GHQ7DLGT8rv4l5rk6Rg==/lib/arm/libtprt.so|114d0 ]]) gg.loadList("/sdcard/防æ¢é—ªé€€", gg.LOAD_VALUES) os.remove("/sdcard/防æ¢é—ªé€€") local addr = readPointer("libtersafe2.so", {168}, 3) gg.edits(addr, {{9999, 4, 0, true}}) local addr = readPointer("libtprt.so", {70864}, 3) gg.edits(addr, {{9999, 4, 0, true}}) local addr = readPointer("libtersafe2.so", {262036}, 3)--æŸäººæŠ“å–--群153025751 gg.edits(addr, {{0, 4, 0, true}}) --libtersafe2.so + 0x3FDF8 local addr = readPointer("libtersafe2.so", {261624}, 3)--æŸäººæŠ“å–--群153025751 gg.edits(addr, {{0, 4, 0, true}}) --libsecsdk.so + 0x2280 local addr = readPointer("libsecsdk.so", {8832}, 3)--æŸäººæŠ“å–--群153025751 gg.edits(addr, {{0, 4, 0, true}}) --libtersafe2.so + 0x3FFD8 local addr = readPointer("libtersafe2.so", {262104}, 3)--æŸäººæŠ“å–--群153025751 gg.edits(addr, {{0, 4, 0, true}}) --libmain.so + 0x1574 local addr = readPointer("libmain.so", {5492}, 4)--æŸäººæŠ“å–--群153025751 gg.edits(addr, {{0, 4, 0, true}}) --libtersafe2.so + 0x1D370 local addr = readPointer("libtersafe2.so", {119664}, 3)--æŸäººæŠ“å–--群153025751 gg.edits(addr, {{0, 4, 0, true}}) --libunity.so + 0x27DD8 local addr = readPointer("libunity.so", {163288}, 2)--æŸäººæŠ“å–--群153025751 gg.edits(addr, {{0, 4, 0, true}}) --libmain.so + 0x574 local addr = readPointer("libmain.so", {1396}, 5)--æŸäººæŠ“å–--群153025751 gg.edits(addr, {{0, 4, 0, true}}) local addr = readPointer("libtersafe2.so", {262016}, 3) gg.edits(addr, {{0, 4, 0, true}}) --libtersafe2.so + 0x3F07C local addr = readPointer("libtersafe2.so", {258172}, 3) gg.edits(addr, {{0, 4, 0, true}}) --libtersafe2.so + 0x3F0A8 local addr = readPointer("libtersafe2.so", {258216}, 3) gg.edits(addr, {{0, 4, 0, true}}) --libtersafe2.so + 0x3F02C local addr = readPointer("libtersafe2.so", {258092}, 3) gg.edits(addr, {{0, 4, 0, true}}) --libtersafe2.so + 0x3F084 local addr = readPointer("libtersafe2.so", {258180}, 3) gg.edits(addr, {{0, 4, 0, true}}) --libtersafe2.so + 0x3F1A8 local addr = readPointer("libtersafe2.so", {258472}, 3) gg.edits(addr, {{0, 4, 0, true}}) --libtersafe2.so + 0x3F080 local addr = readPointer("libtersafe2.so", {258176}, 3) gg.edits(addr, {{0, 4, 0, true}}) --libtersafe2.so + 0x3F094 local addr = readPointer("libtersafe2.so", {258196}, 3) gg.edits(addr, {{0, 4, 0, true}}) --libtersafe2.so + 0x3F044 local addr = readPointer("libtersafe2.so", {258116}, 3) gg.edits(addr, {{0, 4, 0, true}}) --libtersafe2.so + 0x3F064 local addr = readPointer("libtersafe2.so", {258148}, 3) gg.edits(addr, {{0, 4, 0, true}}) --libtersafe2.so + 0x3F09C local addr = readPointer("libtersafe2.so", {258204}, 3) gg.edits(addr, {{0, 4, 0, true}}) --libtersafe2.so + 0x3F000 local addr = readPointer("libtersafe2.so", {258048}, 3) gg.edits(addr, {{0, 4, 0, true}}) --libtersafe2.so + 0x3FF7C local addr = readPointer("libtersafe2.so", {262012}, 3) gg.edits(addr, {{0, 4, 0, true}}) --libtersafe2.so + 0x3F040 local addr = readPointer("libtersafe2.so", {258112}, 3) gg.edits(addr, {{0, 4, 0, true}}) --libtersafe2.so + 0x3F03C local addr = readPointer("libtersafe2.so", {258108}, 3) gg.edits(addr, {{0, 4, 0, true}}) --libtersafe2.so + 0x3F034 local addr = readPointer("libtersafe2.so", {258100}, 3) gg.edits(addr, {{0, 4, 0, true}}) --libtersafe2.so + 0x3F00C local addr = readPointer("libtersafe2.so", {258060}, 3) gg.edits(addr, {{0, 4, 0, true}}) --libtersafe2.so + 0x3F01C local addr = readPointer("libtersafe2.so", {258076}, 3) gg.edits(addr, {{0, 4, 0, true}}) --libtersafe2.so + 0x3F04C local addr = readPointer("libtersafe2.so", {258124}, 3) gg.edits(addr, {{0, 4, 0, true}}) --libtersafe2.so + 0x3F024 local addr = readPointer("libtersafe2.so", {258084}, 3) gg.edits(addr, {{0, 4, 0, true}}) --libtersafe2.so + 0x3F028 local addr = readPointer("libtersafe2.so", {258088}, 3) gg.edits(addr, {{0, 4, 0, true}}) --libtersafe2.so + 0x3F08C local addr = readPointer("libtersafe2.so", {258188}, 3) gg.edits(addr, {{0, 4, 0, true}}) --libtersafe2.so + 0x3F074 local addr = readPointer("libtersafe2.so", {258164}, 3) gg.edits(addr, {{0, 4, 0, true}}) --libtersafe2.so + 0x3F05C local addr = readPointer("libtersafe2.so", {258140}, 3) gg.edits(addr, {{0, 4, 0, true}}) --libtersafe2.so + 0x3F06C local addr = readPointer("libtersafe2.so", {258156}, 3) gg.edits(addr, {{0, 4, 0, true}}) --libtersafe2.so + 0x3F014 local addr = readPointer("libtersafe2.so", {258068}, 3) gg.edits(addr, {{0, 4, 0, true}}) --libtersafe2.so + 0x3F004 local addr = readPointer("libtersafe2.so", {258052}, 3) gg.edits(addr, {{0, 4, 0, true}}) --libtersafe2.so + 0x3F054 local addr = readPointer("libtersafe2.so", {258132}, 3) gg.edits(addr, {{0, 4, 0, true}}) --libtersafe2.so + 0x3F0E0 local addr = readPointer("libtersafe2.so", {258272}, 3) gg.edits(addr, {{0, 4, 0, true}}) CYC(0x25669ec,4,"~A MOV R0, #1") CYC(0x25669ec,4,"~A bx lr") CYC(0x25669ec,4,"~A MOV R0, #1") CYC(0x25669ec,4,"~A bx lr") CYC(0x256693c,4,"~A MOV R0, #1") CYC(0x256693c,4,"~A bx lr") CYC(0x2566a9c,4,"~A MOV R0, #1") CYC(0x2566a9c,4,"~A bx lr") CYC(0x2566bfc,4,"~A MOV R0, #1") CYC(0x2566bfc,4,"~A bx lr") CYC(0x2566cac,4,"~A MOV R0, #1") CYC(0x2566cac,4,"~A bx lr") CYC(0x2566d5c,4,"~A MOV R0, #1") CYC(0x2566d5c,4,"~A bx lr") toMusic('开坿ˆåŠŸ') end), hzs.switch("进度æ¡ä¸€", 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}}) 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() local t = {"libtersafe2.so", "Cd"} local tt = {0xA8} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtprt.so", "Cd"} local tt = {0xFC30} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) gg.processResume() gg.processPause() local t={"libtersafe2.so:bss", "Cb"} local tt={0x146A0} local ttt=S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -0, freeze = true}}) local t={"libtersafe2.so:bss", "Cb"} local tt={0x18768} local ttt=S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -0, freeze = true}}) local t={"libtersafe2.so:bss", "Cb"} local tt={0x21D30} local ttt=S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -0, freeze = true}}) local t={"libtersafe2.so:bss", "Cb"} local tt={0x32F58} local ttt=S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -0, freeze = true}}) local t={"libtersafe2.so:bss", "Cb"} local tt={0x383D4} local ttt=S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -0, freeze = true}}) gg.processResume ( ) 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 t = {"libtersafe2.so", "Cd"} local tt = {0xA8} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtprt.so", "Cd"} local tt = {0xFC30} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) toMusic('开坿ˆåŠŸ') end), hzs.switch("进度æ¡äºŒ", function() local t = {"libtersafe2.so", "Cd"} local tt = {0xA8} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = 9999, freeze = true}}) local t = {"libtersafe2.so", "Cd"} local tt = {0x8} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtersafe2.so", "Cd"} local tt = {0xC} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtersafe2.so", "Cd"} local tt = {0x10} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtersafe2.so", "Cd"} local tt = {0x14} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtersafe2.so", "Cd"} local tt = {0x3C} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtersafe2.so", "Cd"} local tt = {0x40} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtersafe2.so", "Cd"} local tt = {0x58} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtersafe2.so", "Cd"} local tt = {0x60} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtersafe2.so", "Cd"} local tt = {0x74} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtersafe2.so", "Cd"} local tt = {0x78} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtersafe2.so", "Cd"} local tt = {0x7C} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtersafe2.so", "Cd"} local tt = {0x84} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtersafe2.so", "Cd"} local tt = {0xAC} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtersafe2.so", "Cd"} local tt = {0xB0} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtersafe2.so", "Cd"} local tt = {0xB4} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtersafe2.so", "Cd"} local tt = {0xB8} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtersafe2.so", "Cd"} local tt = {0x128} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtersafe2.so", "Cd"} local tt = {0x12C} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtersafe2.so", "Cd"} local tt = {0x130} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtersafe2.so", "Cd"} local tt = {0x134} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtersafe2.so", "Cd"} local tt = {0x200} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtersafe2.so", "Cd"} local tt = {0x204} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libtersafe2.so", "Cd"} local tt = {0x208} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) io.open("/sdcard/防æ¢é—ªé€€","w+"):write([[ 14381 Var #B56D10A8|b56d10a8|4|270f|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-Ws2GHQ7DLGT8rv4l5rk6Rg==/lib/arm/libtersafe2.so|a8 Var #BBDEF4D0|bbdef4d0|4|270f|1|0|0|0|rw-p|/data/app/com.kiloo.subwaysurf-Ws2GHQ7DLGT8rv4l5rk6Rg==/lib/arm/libtprt.so|114d0 ]]) gg.loadList("/sdcard/防æ¢é—ªé€€", gg.LOAD_VALUES) os.remove("/sdcard/防æ¢é—ªé€€") local addr = readPointer("libtersafe2.so", {168}, 3) gg.edits(addr, {{9999, 4, 0, true}}) local addr = readPointer("libtprt.so", {70864}, 3) gg.edits(addr, {{9999, 4, 0, true}}) toMusic('开坿ˆåŠŸ') end), }, {--第三页 hzs.switch("快速全满", function() CYC(0xa7db38,4,"~A MOV R0, #1")--æ»‘æ¿ CYC(0xa7cb38,4,"~A MOV R0, #1")--人物 CYC(0xaa6f64,4,"~A MOV R0, #1")--背饰 CYC(0xa6f5e8,4,"~A MOV R0, #1")--皮肤 CYC(0x18e1624,4,"~A MOV R0, #1")--å¤´åƒ CYC(0x30ad898,4,"~A MOV R0, #1")--技能 toMusic('开坿ˆåŠŸ') end), hzs.switch("奖æ¯å…¨æ»¡", function() 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 ( "å¼€å¯å¤±è´¥" ) 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.."æˆåŠŸ" ) end end Name = "奖æ¯" ms.ss ( "65537" , 4 , 32 ) ms.py ( 1 , 0x6c , 4 ) ms.py ( 1 , 0x80 , 4 ) ms.py ( 1 , 0x60 , 4 ) ms.edit ( 0 , 0x74 , 4 ) ms.edit ( 0 , 0x68 , 4 ) ms.edit ( 1999 , 0x64 , 4 ) toMusic('开坿ˆåŠŸ') end), hzs.switch("内è´", function() gg.setValues({{address=gg.getRangesList("libil2cpp.so")[1]. start+0xfe1498,flags=4,value="~A B +0x102CC"}}) gg.setValues({{address=gg.getRangesList("libil2cpp.so")[1]. start+0xfe1498+4,flags=4,value="~A BX LR"}}) toMusic('开坿ˆåŠŸ') end), hzs.switch("åå€å¾—分", function() CYC(0x18141a0,4,"0100A0E3r") CYC(0x16a918c,4,"0100A0E3r") toMusic('开坿ˆåŠŸ') end), hzs.button("åæŠ½å®ç‰©", function() JQ(0x11f2fd4,4,"~A B +0x17F0")---åæŠ½å…¨å®ç‰© toMusic('开坿ˆåŠŸ') end), hzs.button("åæŠ½å®ç‰©å¤‡ä»½", function() JQ(0x11f2fd4,4,"~A B -0x2410")---åæŠ½å…¨å®ç‰©å¤‡ä»½ toMusic('开坿ˆåŠŸ') end), hzs.button("备份数æ®", function() JQ(0x180a1fc,4,"~A MOV R0, #1")--备份 toMusic('开坿ˆåŠŸ') end), hzs.switch("金å¸äººç‰©", function() JQ(0x17ba0f0,4,"~A MOV R0, #1") toMusic('开坿ˆåŠŸ') end), hzs.switch("金叿»‘æ¿", function() JQ(0x17ba644,4,"~A MOV R0, #1")--金叿»‘æ¿ toMusic('开坿ˆåŠŸ') end), }, {--第四页 hzs.button("0é’¥åŒ™å¤æ´»", function() 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,536870912,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[i]={} z1[i].address=sj[i].address+py z1[i].flags=lx end z1=gg.getValues(z1) for i=1,#sj do if z1[i].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[i]={} z1[i].address=sj[i].address+py z1[i].flags=lx end z1=gg.getValues(z1) for i=1,#sj do if z1[i].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[i]={} z1[i].address=sj[i].address+py z1[i].flags=lx end z1=gg.getValues(z1) for i=1,#sj do if z1[i].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 search(18888,4,32) py1(8,4,-4) py1(3,4,16) xg1(9999,4,12,true) toMusic("开坿ˆåŠŸ") end), hzs.switch("æ— è§†å¢™ä½“", function() function xqmnb(qmnb) gg.clearResults() gg.setRanges(qmnb[1]["memory"]) if gg.searchNumber(qmnb[3]["value"],qmnb[3]["type"],false,gg.SIGN_EQUAL,0,-1)~=true then gg.searchAddress(qmnb[3]["value"],-1,qmnb[3]["type"]) end if gg.getResultCount()==0 then gg.toast(qmnb[2]["name"].."å¼€å¯å¤±è´¥")return end szxx=gg.getResults(gg.getResultCount()) szpd={} a=0 for i=4,#qmnb do for s=1,#szxx do if szpd[s]~="false" then if gg.getValues({{address=szxx[s].address+qmnb[i]["offset"],flags=qmnb[i]["type"]}})[1].value+0~=qmnb[i]["lv"]then szpd[s]="false" a=a+1 end end end end if a==#szxx then gg.toast(qmnb[2]["name"].."å¼€å¯å¤±è´¥")return end b=0 t={} for x=1,#qmxg do if qmxg[x]["freeze"]==true then a=1 end for i=1,#szxx do if szpd[i]==nil then b=b+1 table.insert(t,{address=szxx[i].address+qmxg[x]["offset"],flags=qmxg[x]["type"],freeze=qmxg[x]["freeze"],value=qmxg[x]["value"]}) end end end gg.setValues(t) gg.addListItems(t) gg.clearResults() if a~=1 then gg.clearList()else a=nil end gg.toast(qmnb[2]["name"].."开坿ˆåŠŸ,共修改了"..b.."æ¡æ•°æ®") end qmnb = { {["memory"] = 32}, {["name"] = "æ— è§†å¢™ä½“"}, {["value"] = 4.5, ["type"] = 16}, {["lv"] = 5.5, ["offset"] = 16, ["type"] = 16}, } qmxg = { {["value"] = 9191, ["offset"] = 0, ["type"] = 16}, {["value"] = 9192, ["offset"] = 16, ["type"] = 16}, } xqmnb(qmnb) end, function() qmnb = { {["memory"] = 32}, {["name"] = "æ¢å¤ç©¿é€"}, {["value"] = 9191.0, ["type"] = 16}, {["lv"] = 9192.0, ["offset"] = 16, ["type"] = 16}, } qmxg = { {["value"] = 4.5, ["offset"] = 0, ["type"] = 16}, {["value"] = 5.5, ["offset"] = 16, ["type"] = 16}, } xqmnb(qmnb) end), hzs.switch("滑æ¿çž¬ç§»", function() JQ(0x30d7fc8,4,"~A MOV R0, #1")--瞬移 toMusic('开坿ˆåŠŸ') end), hzs.switch("滑æ¿è·³é«˜", function() JQ(0x30d7a78,4,"~A MOV R0, #1")--跳高 toMusic('开坿ˆåŠŸ') end), hzs.switch("æ— é™è·³", function() JQ(0x1925b90,4,"~A MOV R0, #1")--è·³ toMusic('开坿ˆåŠŸ') end), },{ hzs.switch("过检èšèƒ½", function() function readValue(address, flags) return gg.getValues({{address = address, flags = flags}})[1]["value"]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 if value == nil then value = readValue(z[i].address, lx) end z[i].value= value z[i].freeze = dj and true or false end if dj == true or dj == false then gg.addListItems(z) else 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 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 DWORD=gg.TYPE_DWORD DOUBLE=gg.TYPE_DOUBLE FLOAT=gg.TYPE_FLOAT WORD=gg.TYPE_WORD BYTE=gg.TYPE_BYTE XOR=gg.TYPE_XOR QWORD=gg.TYPE_QWORD DWORD=gg.TYPE_DWORD DOUBLE=gg.TYPE_DOUBLE FLOAT=gg.TYPE_FLOAT WORD=gg.TYPE_WORD BYTE=gg.TYPE_BYTE XOR=gg.TYPE_XOR QWORD=gg.TYPE_QWORD 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 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 gg.clearResults() sj={} xgz={} 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 bf = gg.prompt({"扇å","å«è¡£","æ ¡æœ","相机","选择ç‰çº§[1;10]","选择17[1;20]","选择2[1;6]",}, {}, {"checkbox","checkbox","checkbox","checkbox","number","number","number"}) if bf == nil then Main0() end if bf[1] == true then if bf[5] == "10" then search(2910,4,32) py1(1,4,0x4) py1(1,4,-0x4) xg1(1,16,0x74) xg1(0,16,0x64) xg1(0,16,0x60) xg1(0,16,0xA8) xg1(0,16,0x98) xg1(bf[6],16,0x94) xg1(0,4,0x5C) xg1(0,4,0x50) xg1(bf[7],4,0x4C) gg.clearResults() gg.clearList() else search("290"..bf[1],4,32) py1(1,4,0x4) py1(1,4,-0x4) xg1(1,16,0x74) xg1(0,16,0x64) xg1(0,16,0x60) xg1(0,16,0xA8) xg1(0,16,0x98) xg1(bf[6],16,0x94) xg1(0,4,0x5C) xg1(0,4,0x50) xg1(bf[7],4,0x4C) gg.toast("Done✔ï¸") toMusic('开坿ˆåŠŸ') gg.clearResults() gg.clearList() end end if bf[2] == true then if bf[5] == "10" then search(3010,4,32) py1(1,4,0x4) py1(1,4,-0x4) xg1(1,16,0x74) xg1(0,16,0x64) xg1(0,16,0x60) xg1(0,16,0xA8) xg1(0,16,0x98) xg1(bf[6],16,0x94) xg1(0,4,0x5C) xg1(0,4,0x50) xg1(bf[7],4,0x4C) gg.clearResults() gg.clearList() else search("300"..bf[1],4,32) py1(1,4,0x4) py1(1,4,-0x4) xg1(1,16,0x74) xg1(0,16,0x64) xg1(0,16,0x60) xg1(0,16,0xA8) xg1(0,16,0x98) xg1(bf[6],16,0x94) xg1(0,4,0x5C) xg1(0,4,0x50) xg1(bf[7],4,0x4C) gg.toast("Done✔ï¸") toMusic('开坿ˆåŠŸ') gg.clearResults() gg.clearList() end end if bf[3] == true then if bf[5] == "10" then search(3110,4,32) py1(1,4,0x4) py1(1,4,-0x4) xg1(1,16,0x74) xg1(0,16,0x64) xg1(0,16,0x60) xg1(0,16,0xA8) xg1(0,16,0x98) xg1(bf[6],16,0x94) xg1(0,4,0x5C) xg1(0,4,0x50) xg1(bf[7],4,0x4C) gg.clearResults() gg.clearList() else search("310"..bf[1],4,32) py1(1,4,0x4) py1(1,4,-0x4) xg1(1,16,0x74) xg1(0,16,0x64) xg1(0,16,0x60) xg1(0,16,0xA8) xg1(0,16,0x98) xg1(bf[6],16,0x94) xg1(0,4,0x5C) xg1(0,4,0x50) xg1(bf[7],4,0x4C) gg.toast("Done✔ï¸") toMusic('开坿ˆåŠŸ') gg.clearResults() gg.clearList() end end if bf[4] == true then if bf[5] == "10" then search(3210,4,32) py1(1,4,0x4) py1(1,4,-0x4) xg1(1,16,0x74) xg1(0,16,0x64) xg1(0,16,0x60) xg1(0,16,0xA8) xg1(0,16,0x98) xg1(bf[6],16,0x94) xg1(0,4,0x5C) xg1(0,4,0x50) xg1(bf[7],4,0x4C) gg.clearResults() gg.clearList() else search("320"..bf[1],4,32) py1(1,4,0x4) py1(1,4,-0x4) xg1(1,16,0x74) xg1(0,16,0x64) xg1(0,16,0x60) xg1(0,16,0xA8) xg1(0,16,0x98) xg1(bf[6],16,0x94) xg1(0,4,0x5C) xg1(0,4,0x50) xg1(bf[7],4,0x4C) end end end), hzs.switch("è‡ªå®šä¹‰æ— CD", 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 ms = { } function setvalue ( add , value , falgs) qx={} qx[#qx+1]={} qx[#qx].value=value qx[#qx].flags=falgs qx[#qx].freeze=true qx[#qx].address=add gg.addListItems (qx) end function search(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 py1(num,ty,py) 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 ( "å¼€å¯å¤±è´¥" ) else for i , v in pairs ( Result ) do data [ # data + 1 ] = v.address end end Result = nil end function xg1(nn,ty,off) if ( Result ) then ms.bc ( ) end if # data > 0 then for i , v in ipairs ( data ) do setvalue ( v + off , nn , ty) end end 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}}) end end function _error() gg.alert([[ å¼€å¯å¤±è´¥ å¤±è´¥åŽŸå› ï¼šè¿›ç¨‹å˜å‚¨å¤ªå°ï¼ 解决方案:刷新进程åŽé‡å¯å¼€å¯ ]]) end local a=gg.prompt({"🥀1å°ä¸‘é¢å…·ðŸ¥€2露西耳环🥀3紫色花çƒðŸ¥€4é‡‘å±žå‘æ¡ðŸ¥€5ç«ç„°çº¹ç« 🥀6星星项链🥀7机械手表🥀8金色耳环🥀9é»„é‡‘çš‡å† ðŸ¥€10摩托头盔🥀11狼牙项链🥀12纯金手表🥀13金ç®ðŸ¥€14ä¹¾å¤åœˆðŸ¥€15水手猫🥀16积木🥀17çµç¬¦ðŸ¥€18黄金盔甲🥀19令牌🥀20龙蛋🥀21å—瓜🥀22月兔🥀23舞狮头🥀24甜心项链🥀25圣诞帽🥀26夹克🥀27红色战衣🥀28ç«çº¢ç¯ç¬¼ðŸ¥€29美人折扇🥀30å«è¡£ðŸ¥€31æ ¡æœðŸ¥€32相机🥀33耳机🥀34眼镜\næ³¨æ„æ¯æ¬¡ä¿®æ”¹ä»£ç ,åŽé¢éƒ½è¦åŠ 10\n举个例å相机的代ç 32åŠ ä¸Š10就得3210ï¼Œè¿™å°±æ˜¯æ— CD"},{"酱情ç¥ä½ 天天开心â¤ï¸â¤ï¸"},{"number"}) local b=gg.prompt({"请输入触å‘èšèƒ½æ–¹å¼\n2自动èšèƒ½\n3æ—¶é—´èšèƒ½\n4跳跃èšèƒ½\n5下滑èšèƒ½\n6撞墙èšèƒ½"},{"酱情ç¥ä½ 天天开心😘😘"},{'number'}) gg.setRanges(32) local Name="å…¨å®ç‰©æ’žå¢™èšèƒ½" local dataType = 4 local tb1 = {{a[1],0}, {18,0x14},{50000,0x28},}--副特å¾ç å’Œåç§»é‡ local tb2 = {{0,0x6c},{0,0x74},{0,0x50},{b[1],0x4c},{0,0xa0},{0,0xa8},{0,0x98},{0,0x5c},}--修改的值和åç§»é‡ SearchWrite(tb1, tb2, dataType) gg.clearResults() gg.clearList() end, function() end), hzs.switch("åŠ å…¥æ€»ç¾¤", function() gg.QQgroup("857675226") end), hzs.switch("防æ–网", function() function JQ(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 JQ(0xc2bb0c,4,"~A MOV R0, #1")--防æ–网 toMusic('开坿ˆåŠŸ') end), hzs.switch("é”定é“å…·", function() JQ(0xdedc78,4,'~A MOV R0, #'..gg.prompt({"é“具类型\næ— = 0 导弹 = 1 è“æ³¡ = 2 护盾 = 4 香蕉 = 8\nç« é±¼ = 16 眩晕 = 32 绿泡 = 64 ç‹—å = 128 èƒ½é‡ = 256\n乌龟 = 272 云雾 = 288 净化 = 320 ç£é“ = 384"},{""},{"number"})[1])--é”定é“å…· toMusic('开坿ˆåŠŸ') end), hzs.switch("防é“å…·", function() sz = 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 sz(0x12d4c34,'~A MOV R0, #1') toMusic('开坿ˆåŠŸ') end), hzs.switch("å¼€å±€è¶…çº§åŠ é€Ÿ", function() gg.alert("请在准备阶段开å¯/nå¼€å¯åŽç¬¬ä¸€ä¸ªåŠ é€Ÿå¸¦ä¸èƒ½ç¢°å¦åˆ™ä¼šæ–网") search(300,16,32) py1(1,4,0x4) py1(1,4,-0x4) xg1(0,4,0x4c) xg1(0,4,0x3c) xg1(1400,16,0x38) toMusic('开坿ˆåŠŸ') end), hzs.switch("滑æ¿åŠ é€Ÿ", function() gg.alert("请ä¸è¦å¤šæ¬¡è¿žç»å¼€æ»‘æ¿/n速度太快会被踢") gg.setRanges(32) local Name="滑æ¿åŠ é€Ÿ" local dataType = 16 local tb1 = {{6000.0, 0x0}} local tb2 = {{0,0xC},{0,0x1C},{2015,0x8}} SearchWrite(tb1, tb2, dataType) gg.clearResults() gg.clearList() toMusic('开坿ˆåŠŸ') end, function() end), hzs.switch("滑æ¿å»¶é•¿", function() gg.alert("请ä¸è¦å¤šæ¬¡è¿žç»å¼€æ»‘æ¿/n速度太快会被踢") gg.setRanges(32) local Name="滑æ¿å»¶é•¿" local dataType = 16 local tb1 = {{6000.0, 0x0}} local tb2 = {{0,0x4},{0,-0xC},{11000,-0x10}} SearchWrite(tb1, tb2, dataType) gg.clearResults() gg.clearList() toMusic('开坿ˆåŠŸ') end, function() end), hzs.switch("下滑瞬移", function() search(-8388608,4,32) py1(-1082130432,4,-16) py1(2139095040,4,-8) xg1(120,16,-64,true) toMusic('开坿ˆåŠŸ') end), },{--第å…页 hzs.switch("è“色人物" , function() gg.clearResults() gg.setRanges(gg.REGION_VIDEO) gg.searchNumber("196,610;163,840;16,384;1,280;32,768;393,220;327,681;65,536", gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1) gg.searchNumber("196,610;163,840;16,384;1,280;32,768;393,220;327,681;65,536", gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0,-1) gg.getResults(10) gg.editAll("1000000000",gg.TYPE_DWORD) end, function() gg.clearResults() gg.setRanges(gg.REGION_VIDEO) gg.searchNumber("1000000000;1000000000;1000000000;1000000000;1000000000;1000000000;1000000000;1000000000", gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1) gg.searchNumber("1000000000;1000000000;1000000000;1000000000;1000000000;1000000000;1000000000;1000000000", gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0,-1) gg.getResults(10) gg.editAll("196,610;163,840;16,384;1,280;32,768;393,220;327,681;65,536",gg.TYPE_DWORD) end), hzs.switch("马赛克人物" , function() gg.clearResults() gg.setRanges(gg.REGION_VIDEO) gg.searchNumber("196,610;163,840;16,384;1,280;32,768;393,220;327,681;65,536", gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1) gg.searchNumber("196,610;163,840;16,384;1,280;32,768;393,220;327,681;65,536", gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0,-1) gg.getResults(10) gg.editAll("50",gg.TYPE_DWORD) end, function() gg.clearResults() gg.setRanges(gg.REGION_VIDEO) gg.searchNumber("50;50;50;50;50;50;50;50", gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1) gg.searchNumber("50;50;50;50;50;50;50;50", gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0,-1) gg.getResults(10) gg.editAll("196,610;163,840;16,384;1,280;32,768;393,220;327,681;65,536",gg.TYPE_DWORD) end) , hzs.switch("3D人物" , function() gg.clearResults() gg.setRanges(gg.REGION_VIDEO) gg.searchNumber("196,610;163,840;16,384;1,280;32,768;393,220;327,681;65,536", gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1) gg.searchNumber("196,610;163,840;16,384;1,280;32,768;393,220;327,681;65,536", gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0,-1) gg.getResults(10) gg.editAll("9",gg.TYPE_DWORD) end, function() gg.clearResults() gg.setRanges(gg.REGION_VIDEO) gg.searchNumber("9;9;9;9;9;9;9;9", gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1) gg.searchNumber("9;9;9;9;9;9;9;9", gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0,-1) gg.getResults(10) gg.editAll("196,610;163,840;16,384;1,280;32,768;393,220;327,681;65,536",gg.TYPE_DWORD) end) , hzs.switch("纯黑人物" , function() gg.clearResults() gg.setRanges(gg.REGION_VIDEO) gg.searchNumber("196,610;163,840;16,384;1,280;32,768;393,220;327,681;65,536", gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1) gg.searchNumber("196,610;163,840;16,384;1,280;32,768;393,220;327,681;65,536", gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0,-1) gg.getResults(10) gg.editAll("10",gg.TYPE_DWORD) end, function() gg.clearResults() gg.setRanges(gg.REGION_VIDEO) gg.searchNumber("10;10;10;10;10;10;10;10", gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1) gg.searchNumber("10;10;10;10;10;10;10;10", gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0,-1) gg.getResults(10) gg.editAll("196,610;163,840;16,384;1,280;32,768;393,220;327,681;65,536",gg.TYPE_DWORD) end), hzs.switch("纯白人物" , function() gg.clearResults() gg.setRanges(gg.REGION_VIDEO) gg.searchNumber("196,610;163,840;16,384;1,280;32,768;393,220;327,681;65,536", gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1) gg.searchNumber("196,610;163,840;16,384;1,280;32,768;393,220;327,681;65,536", gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0,-1) gg.getResults(10) gg.editAll("15",gg.TYPE_DWORD) end, function() gg.clearResults() gg.setRanges(gg.REGION_VIDEO) gg.searchNumber("15;15;15;15;15;15;15;15", gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1) gg.searchNumber("15;15;15;15;15;15;15;15", gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0,-1) gg.getResults(10) gg.editAll("196,610;163,840;16,384;1,280;32,768;393,220;327,681;65,536",gg.TYPE_DWORD) end) , }, {--第四页 hzs.switch("ä½ çœ‹åˆ°äº†æˆ‘", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=1377530437.mp3") end, function() gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end), hzs.switch("å¯ä¸å¯ä»¥", function() gg.playMusic("https://tc.1haodh.com/view.php/b62320eca1a8df9958fd26773d499105.mp3") end, function() gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end), hzs.switch("Neeva", function() gg.playMusic("https://out.zxglife.top/view.php/16fa44c6165f5828dff9cfd7cecb84d9.mp3") end, function() gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end), hzs.switch("旋律åˆé›†", function() gg.playMusic("https://stream.lestream.cn/streams/build/audio/2023/09/22/17/95da57c88db51f63985014f40b27c008.mp3") end, function() gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end), hzs.switch("nightcruising", function() gg.playMusic("https://out.zxglife.top/view.php/f22c860d17cbb2f5718cbd5a9b68ae42.mp3") end, function() gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end), hzs.switch("ä¸é—®åˆ«ç¦»", function() gg.playMusic("https://out.zxglife.top/view.php/c92f3eb063ae9ee9ff28018bb3b8f847.mp3") end, function() gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end), hzs.switch("æ‰“åŽ‹é”æ€”", function() gg.playMusic("https://cloud.lestream.cn/oss/group1/storage/20230922/17/06/7/c3814d3221fb35868b6d2b9fd1a8fb1a.mp3?h=æ‰“åŽ‹é”æ€”.mp3_out") end, function() gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end), hzs.switch("压迫感", function() gg.playMusic("https://out.zxglife.top/view.php/f923557b0bb36ab3968503202964db1b.mp3") end, function() gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end), hzs.switch("Walk", function() gg.playMusic('http://music.163.com/song/media/outer/url?id=1873321491.mp3') end, function() gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end), hzs.switch("catch", function() gg.playMusic('http://music.163.com/song/media/outer/url?id=26286214.mp3') end, function() gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end), hzs.switch("Me", function() gg.playMusic('https://music.163.com/song/media/outer/url?id=1990363532.mp3') end, function() gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end), hzs.switch("已锿€”求打压", function() gg.playMusic("https://tc.1haodh.com/view.php/81685e1fe940f87d9b03f5e831dfe5e2.mp3") end, function() for i=1,100 do gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end end), hzs.switch("锿€”了è€å¼ŸðŸ¤“", function() gg.playMusic("https://tc.1haodh.com/view.php/be40342567bfef8d0a69056ca0cdddc0.mp3") end, function() for i=1,100 do gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end end), hzs.switch("烧酒æŒ", function() gg.playMusic("https://tc.1haodh.com/view.php/0f6ae6a555ad6e1869208e7b81ad9804.mp3") end, function() for i=1,100 do gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end end), hzs.switch("䏿˜¯å“¥ä»¬ä½ 有啥实力", function() gg.playMusic("https://tc.1haodh.com/view.php/7a56ed4a29b425d731ea54c0e114fec4.mp3") end, function() for i=1,100 do gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end end), hzs.switch("旋律", function() gg.playMusic("https://cloud.lestream.cn/oss/group1/storage/20230922/17/00/7/8ef47fd8261953d52750a886b716fe69.mp3?h=旋律1.mp3_out") end, function() for i=1,100 do gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end end), hzs.switch("心åš", function() gg.playMusic("https://tc.1haodh.com/view.php/941841d6be10e0450d71a8af19d21cd0.mp3") end, function() for i=1,100 do gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end end), hzs.switch("å¿ƒå¦‚æ¢æ°´", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=1928002636.mp3") end, function() gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end), hzs.switch("ç¯ç«æ—", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=518725853.mp3") end, function() gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end), hzs.switch( "å‡ä»€ä¹ˆè§‰å¾— I LOVE YOU", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=2020310968.mp3") end, function() gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end), hzs.switch( "月亮之矢", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=419375250.mp3") end, function() gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end), hzs.switch("æŠŠç¾Žå¥½çš„å›žå¿†æ‹¼ç»™ä½ ", function() gg.playMusic("https://tc.1haodh.com/view.php/a05030257801c32066a5e9ba7b49f438.mp3") end, function() for i=1,100 do gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end end), hzs.switch("爱人错过", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=1972445487.mp3") end, function() for i=1,100 do gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end end), hzs.switch("旧金山", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=2024109979.mp3") end, function() for i=1,100 do gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end end), }, }) bloc = luajava.getBlock() bloc('join')