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')