lde={} lde.gre,lde.sbr,lde.srg,lde.crs=gg.getResults,gg.searchNumber,gg.setRanges,gg.clearResults function bv(a,b) if not b then b=","end if not tostring(a):find(b)then return{a}end local tab={}local i=0 while true do j=string.find(a,b,i+1) if not j then table.insert(tab,a:sub(i+1,#a)) break end table.insert(tab,a:sub(i+1,j-1)) i=j end return tab end function so(a,b,c) gg.setVisible(false) local csn=gg.getRanges() lde.srg(a[3]) lde.crs() lde.sbr(a[2],a[4]) local js=gg.getResultCount() local count=lde.gre(js) lde.crs() if #count~=0 then local lode,lope,lobe={},{},{} for p=1,#b do lode[p]={} for i=1,#count do lode[p][i]={} lode[p][i].address=count[i].address+b[p][2] if not b[p][3] then b[p][3]=a[4] end lode[p][i].flags=b[p][3] end lode[p]=gg.getValues(lode[p]) db=bv(b[p][1],"~") if not db[2] then db[2]=db[1] end for i=1,#lode[p] do if tonumber(lode[p][i].value)>=tonumber(db[1]) and tonumber(lode[p][i].value)<=tonumber(db[2]) then lope[#lope+1]={} lope[#lope]=count[i] end end if #lope==0 then lde.srg(csn) if p>11 then p=11 end return a[1].."开启失败" end count=lope lope={} end for i=1,#c do for n=1,#count do lope[#lope+1]={} lope[#lope].address=count[n].address+c[i][2] if not c[i][3] then c[i][3]=a[4] end lope[#lope].flags=c[i][3] if c[i][1] then lope[#lope].value=c[i][1] else lope[#lope].value=gg.getValues(lope)[#lope].value end if c[i][4] then lobe[#lobe+1]={} lobe[#lobe]=lope[#lope] table.remove(lope,#lope) end if c[i][4]==1 then lobe[#lobe].freeze=true else if c[i][4]==2 then lobe[#lobe].freeze=false end end if c[i][5] then lobe[#lobe].name=c[i][5] end end end gg.setValues(lope) gg.addListItems(lobe) lde.srg(csn) return a[1].."开启成功" else lde.srg(csn) return a[1].."开启失败" end end function gg.FMatrix(value) local GT=gg.getListItems() local t={} for i,v in pairs(GT) do if v.value==value then table.insert(t,v) end end gg.removeListItems(t) end function hqmz(a) local b='' for i=1,50 do local c=gg.getValues({{address=a+(i-1)*1,flags=1}})[1].value if c==0 then break end b=b..string.char(c<0 and 256+c or c) end if b=="" then b="昵称获取失败" end return b end function xe(name,offset,i) local re=gg.getRangesList(name) 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=32}}) 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]) if name then gg.toast((name or "") .. "开启成功") end end local so_bss='liblibGameApp.so:bss' RE={ {0x6B6E70, 0x550, 0xB8},--[跳高] {0x6B6E70, 0x538, 0x84},--[连跳] {0x832020, 0x3B0, 0x150},--[重力] {0x6B6E70, 0x570, 0x78},--[骑人] {0x6B6E70, 0x538, 0xD8},--[高度坐标] {0x6B6E70, 0x538, 0x130},--[视角坐标] {0x3BA4D8, 0xC0},--[模式] {0xE1A8, 0x880},--[房间模式] {0x33C0, 0x4B4},--[速度] {0x6B6E70, 0x3C0, 0x4A8},--[对准玩家数据] {0x6B6E70, 0x618, 0x708},--[攻击状态] {0x6B6E70, 0x410, 0x6DC},--[人物技能] } ------------------------------------------------------------------------------------------------------------------------------------- vibra = context:getSystemService(Context.VIBRATOR_SERVICE) changan = {} local changan = changan local android = import('android.*') write=file.write function panduan(rec) fille,err = io.open(rec) if fille == nil then return false else return true end end read=file.read function checkimg(tmp) if panduan("/sdcard/changan/图片/"..tmp) ~= true then gg.toast("正在加载资源"..tmp) download("https://escape2020-1303126286.cos.ap-shenzhen-fsi.myqcloud.com/"..tmp,"/sdcard/changan/图片/"..tmp) end end function 获取图片(txt) ntxt=string.sub(string.gsub(txt,"/","."),-10,-1) if string.find(tostring(txt),"http")~=nil then if panduan("/sdcard/changan/图片/"..ntxt)==false then download(txt,"/sdcard/changan/图片/"..ntxt) end txt="/sdcard/changan/图片/"..ntxt end return luajava.getBitmapDrawable(txt) end ckimg = { "xflog", "arblackx", } for i = 1,#ckimg do checkimg(ckimg[i]) end context = app.context window = context:getSystemService("window") -- 获取窗口管理器 function getLayoutParams() LayoutParams = WindowManager.LayoutParams layoutParams = luajava.new(LayoutParams) if (Build.VERSION.SDK_INT >= 26) then -- 设置悬浮窗方式 layoutParams.type = LayoutParams.TYPE_APPLICATION_OVERLAY else layoutParams.type = LayoutParams.TYPE_PHONE end layoutParams.format = PixelFormat.RGBA_8888 -- 设置背景 layoutParams.flags = LayoutParams.FLAG_NOT_FOCUSABLE -- 焦点设置Finish layoutParams.gravity = Gravity.TOP|Gravity.LEFT -- 重力设置 layoutParams.width = LayoutParams.WRAP_CONTENT -- 布局宽度 layoutParams.height = LayoutParams.WRAP_CONTENT -- 布局高度 return layoutParams end function getj6() jianbian6 = luajava.new(GradientDrawable) jianbian6:setCornerRadius(20) jianbian6:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbian6:setColors({0xffffffff,0xffffffff}) jianbian6:setStroke(0,"0xdd000000")--边框宽度和颜色 return jianbian6 end hanshu = function(v, event) local Action = event:getAction() if Action == MotionEvent.ACTION_DOWN then isMove = false RawX = event:getRawX() RawY = event:getRawY() x = mainLayoutParams.x y = mainLayoutParams.y elseif Action == MotionEvent.ACTION_MOVE then isMove = true mainLayoutParams.x = tonumber(x) + (event:getRawX() - RawX) mainLayoutParams.y = tonumber(y) + (event:getRawY() - RawY) window:updateViewLayout(floatWindow, mainLayoutParams) end end slctb1 = luajava.loadlayout({ GradientDrawable, color = "#661E1C27", cornerRadius = 20 }) slcta1 = luajava.loadlayout({ GradientDrawable, color = "#331E1C27", cornerRadius = 20 }) function getSelector3() selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, slcta1) -- 点击时候的背景 selector:addState({ -android.R.attr.state_pressed }, slctb1) -- 没点击的背景 return selector end slctb = luajava.loadlayout({ GradientDrawable, color = "#001E1C27", cornerRadius = 0 }) slcta = luajava.loadlayout({ GradientDrawable, color = "0xff0086F1", cornerRadius = 4 }) slctc = luajava.loadlayout { GradientDrawable, color = "#ffffffff", cornerRadius = 16 } slctd = luajava.loadlayout { GradientDrawable, color = "#ddE0E0E0", cornerRadius = 16 } slcte = luajava.loadlayout { GradientDrawable, color = "#11ffffff", cornerRadius = 12 } slctf = luajava.loadlayout { GradientDrawable, color = "#aa1E1C27", cornerRadius = 12 } changan.controlFlip = function(control,time) luajava.runUiThread(function() import "android.view.animation.Animation" import "android.animation.ObjectAnimator" xuanzhuandonghua = ObjectAnimator:ofFloat(control, "rotationY", {0, 360}) xuanzhuandonghua:setRepeatCount(0) xuanzhuandonghua:setRepeatMode(Animation.REVERSE) xuanzhuandonghua:setDuration(time) xuanzhuandonghua:start() end) end function getSelector() selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, slcta) -- 点击时候的背景 selector:addState({ -android.R.attr.state_pressed }, slctb) -- 没点击的背景 return selector end function getSelector2() selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, slctd) -- 点击时候的背景 selector:addState({ -android.R.attr.state_pressed }, slctc) -- 没点击的背景 return selector end jianbian = luajava.new(GradientDrawable) jianbian:setCornerRadius(30) jianbian:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbian2 = luajava.new(GradientDrawable) jianbian2:setCornerRadius(30) jianbian2:setGradientType(GradientDrawable.LINEAR_GRADIENT) local isswitch YoYoImpl = luajava.getYoYoImpl() changan.menu = function(sview) if isswitch then return false end for i=1,#stab do _ENV["jmb"..i]=getSelector() end isswitch = true cebian = { LinearLayout, id = "侧边", gravity = "center", visibility = "gone", layout_height = "wrap_content", layout_width = "match_parent", } gund = { LinearLayout, background=getblue(), gravity = "center", orientation = "horizontal", layout_height = "wrap_content", layout_width = "wrap_content", } for i = 1,#stab do _ENV["jm"..i]=luajava.loadlayout({ LinearLayout, id = "jm"..i, layout_height = "28dp", layout_width = "68dp", gravity = "center", layout_marginTop = "2dp", layout_marginBottom = "2dp", background = _ENV["jmb"..i], onClick=function() --changan.controlFlip(_ENV["jm"..i],500) 切换(i) end, { TextView, id="jm"..i.."t", gravity = "center", textColor="#0086F1", text = stab[i], --onClick = function() 切换(i) end }}) gund[#gund+1] = _ENV["jm"..i] if i< #stab then gund[#gund+1] = luajava.loadlayout({ LinearLayout, layout_height="match_parent", layout_width="1.3dp", background="#0086F1" }) end end cebian[#cebian+1] = { HorizontalScrollView, gravity = "center", fillViewport = "true", layout_height = "wrap_content", layout_width = "wrap_content", gund, } cebian = luajava.loadlayout(cebian) for i = 1,#stab do _ENV["layout"..i] = luajava.loadlayout( { ScrollView, --background = getj6(), fillViewport = "true", padding = "3dp", id = "layout"..i, visibility = "gone", padding="10dp", layout_width = "wrap_content", layout_height = "wrap_content", orientation = "vertical", { LinearLayout, --background = getj6(), id = "layoutm"..i, gravity = "top", layout_width = "250dp", orientation = "vertical", gravity = "center_horizontal", }, }) end ckou = { LinearLayout, id = "chuangk", padding="4dp", visibility = "gone", layout_width = "wrap_content", layout_height = "wrap_content", orientation = "vertical", cebian, } for i = 1,#stab do ckou[#ckou+1] = _ENV["layout"..i] end --luajava.newThread(function() develo(ckou) end):start() ckou = luajava.loadlayout(ckou) title = luajava.loadlayout({ TextView, id = "title", visibility = "gone", text = stitle, --background="#80FF00", textColor="#000000", gravity = "center", textSize = "19sp", layout_marginTop = "20dp", layout_width = "280dp", }) floatWindow = { LinearLayout, id = "motion", orientation="vertical", {FrameLayout, layout_width="wrap_content", --background="#ffffff", { LinearLayout, gravity = "center", { ImageView, id = "control", background = 获取图片(xfcpic), layout_width = "50dp", layout_height = "50dp", }}, { ImageView, id = "exit", layout_gravity="right", visibility="gone", src = "/sdcard/changan/图片/arblackx", layout_width = "20dp", layout_height = "20dp", layout_marginTop = "10dp", layout_marginRight = "20dp", }, {LinearLayout, layout_width = "wrap_content", orientation = "vertical", gravity = "center_vertical", layout_height = "wrap_content", { LinearLayout, layout_width = "wrap_content", layout_height = "wrap_content", orientation = "horizontal", gravity = "center", title, }, }}, ckou } local function invoke() local ok local RawX, RawY, x, y mainLayoutParams = getLayoutParams() floatWindow = luajava.loadlayout(floatWindow) local function invoke2() block('start') for k = 1,#sview do for i = 1,#sview[k] do _ENV["layoutm"..k]:addView(sview[k][i]) end end window:addView(floatWindow, mainLayoutParams) block('end') end local runnable = luajava.getRunnable(invoke2) local handler = luajava.getHandler() handler:post(runnable) block('join') control.onClick = 隐藏 exit.onClick = 隐藏 local isMove motion.onTouch = hanshu control.onTouch = hanshu exit.onTouch = hanshu end invoke(swib1,swib2) gg.setVisible(false) luajava.setFloatingWindowHide(true) 切换(1) end function changan.line() rest = luajava.loadlayout({ LinearLayout, layout_width = 'fill_parent', layout_height = "1dp", background = "#C2CAD7", }) return rest end function changan.line2() rest = luajava.loadlayout({ LinearLayout, layout_width = '180dp', layout_height = "5dp", layout_marginLeft="35dp", background = "#0087FF", layout_marginTop="10dp", }) return rest end function getblue() jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(6) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({0xffffffff,0xffffffff}) jianbians:setStroke(4,"0xff0086F1")--边框宽度和颜色 return jianbians end function getShape3() jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(10) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({0xffffffff,0xffffffff}) jianbians:setStroke(4,"0x77000000")--边框宽度和颜色 return jianbians end function getShape5() jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(4) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({0xffffffff,0xff007AFF}) jianbians:setOrientation(GradientDrawable.Orientation.TL_BR) jianbians:setStroke(2,"0x77000000")--边框宽度和颜色 return jianbians end function getShape() jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(90) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({0xff49C263,0xff49C263}) jianbians:setStroke(0,"0xffffffff")--边框宽度和颜色 return jianbians end function getShape2() jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(10) jianbians:setShape(GradientDrawable.RECTANGLE) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({0xffffffff,0xffffffff}) jianbians:setStroke(8,"0xff000000")--边框宽度和颜色 return jianbians end corbk = true 当前ui = 1 显示 = 0 beij = luajava.new(GradientDrawable) beij:setCornerRadius(25) beij:setGradientType(GradientDrawable.LINEAR_GRADIENT) beij:setColors({0xfeEFEFEF,0xfeEFEFEF,}) beij:setStroke(0,"0x44FFffff")--边框宽度和颜色 --beijw beij2 = luajava.loadlayout({ GradientDrawable, color = "#001E1C27", cornerRadius = 10 }) function visi(tid,ttid) local tview = luajava.getIdValue(tid) local ttview = luajava.getIdValue(ttid) if not tview then return 0 end if tonumber(tostring(tview:getVisibility())) == 8.0 then tview:setVisibility(View.VISIBLE) ttview:setBackground(luajava.getBitmapDrawable("/sdcard/changan/图片/hsj")) else tview:setVisibility(View.GONE) ttview:setBackground(luajava.getBitmapDrawable("/sdcard/changan/图片/sj")) end end function changan.box2(views,boxi) local tid = "box"..guid() local ttid = tid.."678" firadio = { LinearLayout, layout_width = '250dp', layout_height = "wrap_content", layout_marginTop = "2dp", layout_marginBottom = "2dp", orientation = "vertical", } if type(views[1]) == "string" or type(views[1]) == "number" then firadio[#firadio+1] = { LinearLayout, layout_width = 'fill_parent', layout_height = "28dp", gravity = "center_vertical", layout_marginTop = "2dp", layout_marginBottom = "4dp", onClick = function() visi(tid,ttid) end, background = getSelector3(), { ImageView, layout_marginLeft = "10dp", id = luajava.newId(ttid), background = "/sdcard/changan/图片/hsj", layout_width = "20dp", layout_height = "20dp", layout_marginTop = "0dp", }, { TextView,text = views[1], textSize = "16sp", layout_marginLeft = "15dp", layout_width = "100dp", textColor = "#ffffff", gravity = "left", }} else gg.alert("changan.box第一个参数必须是string") os.exit() end if boxi then boxi="visible" else boxi="gone" end radios = { LinearLayout, layout_marginLeft = "0dp", layout_marginRight = "0dp", orientation = "vertical", visibility = boxi, id = luajava.newId(tid), padding = "0dp", layout_width = 'fill_parent', } for i = 2,#views do radios[#radios+1] = views[i] end firadio[#firadio+1] = radios return luajava.loadlayout(firadio) end function changan.box(views) local tid = "box"..guid() local ttid = tid.."6" firadio = { LinearLayout, gravity = "center", layout_width = 'fill_parent', layout_height = "wrap_content", orientation = "vertical", } if type(views[1]) == "string" or type(views[1]) == "number" then if views[1]~="" then tsiz="14sp" else tsiz="0sp"end firadio[#firadio+1] = { LinearLayout, layout_height = "wrap_content", layout_width = "fill_parent", { TextView, text = views[1], textSize = tsiz, layout_width = "match_parent", textColor = "#000000", gravity = "center", }} else end radios = { LinearLayout, layout_marginLeft = "0dp", layout_marginRight = "0dp", orientation = "vertical", padding = "0dp", background = getj6(), layout_width = 'fill_parent', } for i = 2,#views do radios[#radios+1] = views[i] if i~=#views then radios[#radios+1] = changan.line() end end firadio[#firadio+1] = radios return luajava.loadlayout(firadio) end 当前ui = 1 function 切换(x) 当前ui = x luajava.runUiThread(function() for i = 1,#stab do _ENV["jm"..i]:setBackground(_ENV["jmb"..i]) _ENV["jm"..i.."t"]:setTextColor(0xff0086F1) _ENV["layout"..i]:setVisibility(View.GONE) end _ENV["layout"..当前ui]:setVisibility(View.VISIBLE) _ENV["jm"..当前ui]:setBackground(slcta) _ENV["jm"..当前ui.."t"]:setTextColor(0xffffffff) --YoYoImpl:with("FadeIn"):duration(200):playOn(_ENV["layout"..当前ui]) end) end function 隐藏() luajava.runUiThread(function() if tonumber(tostring(exit:getVisibility())) == 8.0 then control:setVisibility(View.GONE) chuangk:setVisibility(View.VISIBLE) exit:setVisibility(View.VISIBLE) title:setVisibility(View.VISIBLE) cebian:setVisibility(View.VISIBLE) mainLayoutParams.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL window:updateViewLayout(floatWindow, mainLayoutParams) --YoYoImpl:with("FadeIn"):duration(300):playOn(title) _ENV["layout"..当前ui]:setVisibility(View.VISIBLE) YoYoImpl:with("FadeIn"):duration(200):playOn(floatWindow) floatWindow:setBackground(beij) else control:setVisibility(View.VISIBLE) mainLayoutParams.flags = LayoutParams.FLAG_NOT_FOCUSABLE window:updateViewLayout(floatWindow, mainLayoutParams) title:setVisibility(View.GONE) cebian:setVisibility(View.GONE) floatWindow:setBackground(beij2) chuangk:setVisibility(View.GONE) exit:setVisibility(View.GONE) YoYoImpl:with("FadeIn"):duration(200):playOn(floatWindow) _ENV["layout"..当前ui]:setVisibility(View.GONE) end end) end function 退出UI() window:removeView(floatWindow) luajava.setFloatingWindowHide(false) bloc("end") end function guid() seed = { 'e','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f' } tb = {} for i = 1,32 do table.insert(tb,seed[math.random(1,16)]) end sid = table.concat(tb) return string.format('%s%s%s%s%s', string.sub(sid,1,8), string.sub(sid,10,12), string.sub(sid,21,22)) ..string.format('%s%s%s%s%s', string.sub(sid,1,6), string.sub(sid,21,25) ) end chazhi={} chajv={} function changan.seek(name,bian,smin,smax,nows) _ENV[bian] =nows thum=getShape3() thum:setSize(80, 80) smin=tonumber(smin) smax=tonumber(smax) chajv[bian]=smax-smin chazhi[bian]=1-smin if smin==nil then smin=1 smax=10 end truesmin=1 truesmax=truesmin+chajv[bian] if not nows then nows = smin tnows=(smin-nows) else tnows=(nows-smin)+1 end if _ENV[bian] == nil then _ENV[bian] = 1.0 end if not name then name = "未设置" end local names = name..guid() rest = luajava.loadlayout({ LinearLayout, layout_width = 'fill_parent', layout_height = "36dp", { LinearLayout, layout_width = 'fill_parent', layout_hight = "fill_parent", layout_marginTop = "5dp", layout_marginBottom = "5dp", gravity = "center_vertical", --background = getShape(), { TextView, gravity = "top", textColor="#00A4FF", textSize="16sp", text = name..":"..nows, id = luajava.newId(names), layout_width = '100dp', layout_marginLeft = "10dp", layout_marginRight = "0dp", }, { SeekBar, layout_width = '140dp', id=luajava.newId(name.."seekbar"), min = truesmin, max = truesmax, progress=tnows, --paddingStart="0dp", --paddingEnd="0dp", progressDrawable={getShape5()}, thumb=thum, progressHeight="2dp", onSeekBarChange = { onProgressChanged = function(SeekBar, var2, var3) if not var3 then return end local resultvar=tonumber(string.sub(var2,0,-3))-chazhi[bian] luajava.runUiThread(function() luajava.getIdValue(names):setText(name..":".. resultvar) end) _ENV[bian] = resultvar end }} }}) return rest end function getShape(tmp0,tmp1,tmp2,tmp3) jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(tmp0) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors(tmp1) jianbians:setOrientation(GradientDrawable.Orientation.LEFT_RIGHT) jianbians:setStroke(4,tmp3)--边框宽度和颜色 return jianbians end function getShape2(tmp0,tmp1,tmp2,tmp3) jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(tmp0) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors(tmp1) jianbians:setOrientation(GradientDrawable.Orientation.LEFT_RIGHT) jianbians:setStroke(8,tmp3)--边框宽度和颜色 return jianbians end checkbg=getShape( 45, {0xffB8B8B8,0xffB8B8B8}, 4,0xffB8B8B8) checkbga=getShape( 45, {0xff0086F1,0xff0086F1}, 4,0xff0086F1) checkbg1=getShape2( 45, {0xffffffff,0xffffffff}, 4,0xffffffff) checkbg2=getShape2( 45, {0xffffffff,0xffffffff}, 4,0xffffffff) function 开关3(name,func1,func2,nid) name=name..guid() _ENV[name] = "关" if func1 == nil then func1 = "" end if func2 == nil then func2 = "" end if type(func1) == "function" then return function() namers = _ENV[name] if namers ~= "开" then luajava.runUiThread(function() luajava.getIdValue(nid.."k"):setVisibility(View.GONE) luajava.getIdValue(nid.."g"):setVisibility(View.VISIBLE) luajava.getIdValue(nid):setBackground(checkbga) end) _ENV[name] = "开" vibra:vibrate(10) pcall(func1) else luajava.runUiThread(function() luajava.getIdValue(nid.."g"):setVisibility(View.GONE) luajava.getIdValue(nid.."k"):setVisibility(View.VISIBLE) luajava.getIdValue(nid):setBackground(checkbg) end) _ENV[name] = "关" vibra:vibrate(10) pcall(func2) end end end end function changan.switch(name,func1,func2,yans) nid = name..guid() if not yans then yans="#00A4FF" end local func = 开关3(name,func1,func2,nid) if not name then name = "未设置" end rest = luajava.loadlayout({ LinearLayout, layout_width = 'fill_parent', layout_height = "36dp", gravity = "center_vertical", { LinearLayout, layout_width = 'fill_parent', layout_height = "35dp", gravity = "center_vertical", { TextView, gravity = "top", text = name, textColor=yans, textSize="16sp", layout_width = '170dp', layout_marginLeft = "10dp", layout_marginRight = "10dp", }, { FrameLayout, id = luajava.newId(nid), background = checkbg, onClick = function() luajava.newThread(function() func() end):start() end, layout_width = '43dp', layout_height = 'wrap_content', padding="1dp", { LinearLayout, layout_gravity="left", id = luajava.newId(nid.."k"), background = checkbg1, onClick = function() luajava.newThread(function() func() end):start() end, layout_width = '21dp', layout_height = '21dp', },{ LinearLayout, visibility="gone", layout_gravity="right", id = luajava.newId(nid.."g"), background = checkbg2, onClick = function() luajava.newThread(function() func() end):start() end, layout_width = '21dp', layout_height = '21dp', } }} }) return rest end function changan.edit(name) _ENV[name] = name..guid() if not name then name = "点击输入文字" end rest = luajava.loadlayout({ LinearLayout, layout_width = 'fill_parent', layout_height = "40dp", { FrameLayout, layout_width = 'fill_parent', layout_hight = "fill_parent", gravity = "center", --orientation="vertical", { EditText, gravity = "top", background = getShape(), hint = name, textColor="#383C3F", gravity="center", textSize="15sp", --layout_marginBottom="-20dp", id = luajava.newId(_ENV[name]), layout_width = 'fill_parent', }, { LinearLayout, layout_width = '220dp', layout_height = "2dp", layout_gravity="center", background = "#0087FF", layout_marginTop="10dp", } } }) luajava.getIdValue(_ENV[name]):setHintTextColor(0xff787878) return rest end function changan.radio(radio) firadio = { LinearLayout, layout_width = 'fill_parent', layout_hight = "fill_parent", padding="10dp", orientation = "vertical" } if type(radio[1]) == "string" or type(radio[1]) == "number" then firadio[#firadio+1] = { TextView,text = radio[1]} end radios = { RadioGroup,background = getShape(), layout_width = 'fill_parent', } for i = 2,#radio do radios[#radios+1] = { RadioButton, layout_width = 'fill_parent', text = radio[i][1], onClick = function() luajava.newThread(function() pcall(radio[i][2]) end):start() end, } end firadio[#firadio+1] = radios return luajava.loadlayout(firadio) end function changan.button(txt,func,yans) if not yans then yans="#00A4FF" end if not txt then txt = "未设置" end return luajava.loadlayout( {LinearLayout, layout_width = 'fill_parent', layout_hight = "30dp", background=getSelector2(), onClick=function() luajava.newThread(func):start() end, { LinearLayout, layout_width = "fill_parent", layout_hight="wrap_content", gravity="center_horizontal", layout_marginTop = "6dp", layout_marginBottom = "6dp", { TextView, textStyle="bold", textColor=yans, --id = luajava.newId(tid), text = txt, textSize="15sp", layout_width = "wrap_content", }, }}) end function changan.text(txt,color,size) if not txt then txt = "未设置文字" end if not color then color = "#ffffff" end if not size then size = "18sp" end return luajava.loadlayout( { TextView, text = txt, textSize = size, textColor = color, layout_width = "wrap_content", }) end corb = true function changan.setedit(name,txt) txt = tostring(txt) luajava.runUiThread(function() luajava.getIdValue(_ENV[name]):setText(txt) end) end function changan.getedit(name) edit = tostring(luajava.getIdValue(_ENV[name]):getText()) return edit end function 开关(name,func1,func2) if func1 == nil then func1 = "" end if func2 == nil then func2 = "" end if type(func1) == "function" then return function() namers = _ENV[name] if namers ~= "开" then _ENV[name] = "开" pcall(func1) else _ENV[name] = "关" pcall(func2) end end end end gg.alert("本辅助是寒假测试版,正式版将在一个月后发布 测试辅助将在一个星期后关闭服务器") draw.text('辅助仅是寒假测试版,一个星期后关闭服务器',300,300)draw.setColor('#FF0D47A1') gg.alert("退房必开,每次进入游戏,进入房间,退出房间的时候都需要开一次,差不多就是关闭功能的") gg.toast(so({"迷你防闪退",1853321060,8,4},{{1953390894,4}},{{0,-0x3C,4},{0,-0x38,4}})) function XGBase(Address,AFV) local address=0 for index,offset in ipairs(Address)do if index==1 then address=offset else address=gg.getValues({{address=address+offset,flags=4}})[1].value end end local Value,Freeze={},{}for index,value in ipairs(AFV)do local VALUE={address=address+value[3],flags=value[2],value=value[1],freeze=true} if value[4]then Freeze[#Freeze+1]=VALUE else Value[#Value+1]=VALUE end end gg.setValues(Value)gg.addListItems(Freeze)end XGBase({gg.getRangesList("libtersafe2.so")[3].start}, {{0,4,0x4E958,false},{0,4,0x4E960,false},{0,4,0x4EA78,false},{0,4,0x4EDE8,false}, {0,4,0x4EE1C,false},{0,4,0x4EE20,false},{0,4,0x4EF44,false},}) XGBase({gg.getRangesList("libtersafe2.so:bss")[1].start}, {{0,4,0x60,false},{0,4,0xE0,false},{0,4,0x134,false}, {0,4,0x158,false},{0,4,0x270,false},}) gg.toast("💧超强迷你防闪已注入💧") string.toMusic('辅助点快速冻结,改成“是”,冻结间隔输入成“1000”,内存范围一点,绿色的和最下面的三个,运行守护选择“否(默认)”,接下来祝你稳定奔放') gg.alert("辅助点快速冻结,改成“是”,冻结间隔输入成“1000”,内存范围一点,绿色的和最下面的三个,运行守护选择“否(默认)”,接下来祝你稳定奔放") ---↑↑↑你的脚本放在这里,下面菜单调用 stitle = "不知名寒假公益(测试一星期)"--←大标题 stab = {--←菜单导航栏 "稳定", "功能", "其他", --"功能4",--可自行拓展,需要对应下边菜单配置 } xfcpic = "https://escape2020-1303126286.cos.ap-shenzhen-fsi.myqcloud.com/WB/rank1" --↑悬浮窗链接或路径↑ --changan.button 按钮 --changan.switch 开关 --changan.box 区域框 --changan.text 文字 --changan.seek 拖动条 --changan.edit 输入框(changan.getedit和changan.setedit调用 --以上是本UI模块包含的控件,在下面都有示例参考 changan.menu( { {----1 --changan.text("欢迎使用changanUI","#008EFF","20sp"), changan.button("选择进程", function() gg.setProcessX() end), changan.button("收起面板",隐藏), changan.button("退出房间必开", function() local jsp = os.clock() gg.clearList() gg.toast("清理完成") gg.sleep(100) gg.toast("执行耗时\n"..os.clock()-jsp.."s") end), changan.button("防闪退", function() gg.alert("如果开启后还是闪退就别开") function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() local _Q = tonumber(0x167ba0fe) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address print(string.char(231,190,164,58).._Q) end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end local t = {"libtersafe2.so", "Cd"} local tt = {0x4E960} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = 0}}) gg.toast("防闪已注入") end), changan.box2({--如果不需要请删除box2,注意括号的对应。如果需要请注意用box2套box,不然会很丑 "实用功能", changan.box({--box开头 "",--box名字 changan.switch("专属水印", function() draw.text('不知名寒假公益辅助', 200,150)--藍报防二改 draw.setColor('#00fff9') draw.text('Q群:866300615', 260,260) draw.setColor('#00fff9') draw.text('不知名寒假辅助 遥遥领先', 260,200) draw.circle(290, 245, 256)--圆1 draw.text('是公益版本不要钱! ! !',250,50)draw.setColor('#00fff9') draw.text("不", 60,215)--字体 draw.setColor("#00fff9")--颜色 draw.circle(80, 200, 50)--圆1 draw.setColor("#00fff9") draw.circle(80, 200, 60)--圆2 draw.setColor("#00fff9") draw.text("知", 150,215)--字 draw.setColor("#00fff9")--颜色 draw.circle(170, 200, 50)--圆1 draw.setColor("#00fff9") draw.text("名", 240,215)--字 draw.setColor("#00fff9")--颜色 draw.circle(260, 200, 50)--圆1 draw.setColor("#00fff9") draw.circle(260, 200, 60)--圆1 draw.setColor("#00fff9") draw.circle(170, 200, 60)--圆 draw.setColor("#00fff9") local floatingWindowManager = require('floatingWindowManager') floatingWindowManager:init() function interruptThread(thread) if thread then pcall(function() thread:interrupt() end) end end end, function() gg.alert(" ") end), changan.switch("无 限 连 跳", function() gg.toast(so({"无限连跳",180,4,32},{{-1082130432,-0xC,4}},{{-1,-0x3C,4,1}})) gg.toast("不知名[连跳飞天开启成功]") string.toMusic('开启成功') end, function() gg.alert("关闭") end ), changan.switch("飞 行 按 钮", function() F = gg.alert("💰🌟飞行按钮🌟💰","开启","关闭") if F== 1 then gg.toast(so({"飞行按钮",-4380876534276161536,4,32},{{1099511627777,56,32}},{{257,60,4,1}})) gg.toast("💰🍺飞行按钮开启成功🍺💰") elseif F== 2 then gg.toast(so({"飞行按钮",-4380876534276161536,4,32},{{1103806595073,56,32}},{{256,60,4,1}})) gg.toast("🔥🐳飞行按钮关闭成功🐳🔥")end string.toMusic('开启成功') end, function() gg.alert("关闭") end ), changan.switch("人 物 加 速", function() AA3 = gg.prompt({"😰🤒输入加数倍数🤒😰"},{[1]=10},{[1]="number"})[1] if not AA3 then return end gg.toast(so({"速度",4812096202965778432,4,32},{{1065353216,0xD8,4}},{{AA3,0x84,16},{AA3,0x7C,16}})) end, function() end), changan.switch("人 物 滑 翔", function() gg.clearResults() qmnb = { {["memory"] = 16384}, {["name"] = "滑翔[开]"}, {["value"] = 4.0, ["type"] = 16}, {["lv"] = 8.0, ["offset"] = -4, ["type"] = 16}, } qmxg = { {["value"] = 0.1, ["offset"] = -4, ["type"] = 16}, } xqmnb(qmnb) gg.clearResults() string.toMusic('开启成功') end, function() gg.alert("关闭") end ), changan.switch("人 物 穿 墙", function() F = gg.alert("🏹🏉人物穿墙🏉🏹","开启","关闭") if F== 1 then gg.toast(so({"人物穿墙",944892805240,4,32},{{120,8,4},{220,4,4}},{{-9999,-8,4,1}})) gg.toast("😨😚人物穿墙开启成功😚😨") elseif F== 2 then gg.toast(so({"人物穿墙",944892805240,4,32},{{120,8,4},{220,4,4}},{{1,-8,4,1}})) gg.toast("😛😎人物穿墙关闭成功😎😛")end function XGBase(Address,AFV) local address=0 for index,offset in ipairs(Address)do if index==1 then address=offset else address=gg.getValues({{address=address+offset,flags=4}})[1].value end end local Value,Freeze={},{}for index,value in ipairs(AFV)do local VALUE={address=address+value[3],flags=value[2],value=value[1],freeze=true} if value[4]then Freeze[#Freeze+1]=VALUE else Value[#Value+1]=VALUE end end gg.setValues(Value)gg.addListItems(Freeze)end --64位防闪 XGBase({gg.getRangesList("libtersafe2.so")[3].start},{{"0",4,0x4E960,false},}) XGBase({gg.getRangesList("libtersafe2.so")[3].start},{{"0",4,0x4EE4C,false},}) XGBase({gg.getRangesList("libtersafe2.so")[3].start},{{"0",4,0x4EAE4,false},}) XGBase({gg.getRangesList("libtersafe2.so")[3].start},{{"0",4,0x4EA78,false},}) XGBase({gg.getRangesList("libtersafe2.so")[3].start},{{"0",4,0x4EDE8,false},}) XGBase({gg.getRangesList("libtersafe2.so")[3].start},{{"0",4,0x4EE1C,false},}) XGBase({gg.getRangesList("libtersafe2.so")[3].start},{{"0",4,0x4EE20,false},}) end, function() gg.alert("关闭") end ), changan.switch("房 间 崩 溃", function() F = gg.alert("😂😏房间崩溃😏😂","开启","关闭️️") if F== 1 then so({"房间崩溃",773094113340,4,32},{{220,16,4}},{{-10000,28,4,1}}) gg.toast("😱房间崩溃开启成功😱") elseif F == 2 then so({"房间崩溃",773094113340,4,32},{{220,16,4}},{{-10000,28,4,2}}) gg.toast("😂房间崩溃关闭成功😂")end string.toMusic('小老弟小心闪退') function XGBase(Address,AFV) local address=0 for index,offset in ipairs(Address)do if index==1 then address=offset else address=gg.getValues({{address=address+offset,flags=4}})[1].value end end local Value,Freeze={},{}for index,value in ipairs(AFV)do local VALUE={address=address+value[3],flags=value[2],value=value[1],freeze=true} if value[4]then Freeze[#Freeze+1]=VALUE else Value[#Value+1]=VALUE end end gg.setValues(Value)gg.addListItems(Freeze)end --64位防闪 XGBase({gg.getRangesList("libtersafe2.so")[3].start},{{"0",4,0x4E960,false},}) XGBase({gg.getRangesList("libtersafe2.so")[3].start},{{"0",4,0x4EE4C,false},}) XGBase({gg.getRangesList("libtersafe2.so")[3].start},{{"0",4,0x4EAE4,false},}) XGBase({gg.getRangesList("libtersafe2.so")[3].start},{{"0",4,0x4EA78,false},}) XGBase({gg.getRangesList("libtersafe2.so")[3].start},{{"0",4,0x4EDE8,false},}) XGBase({gg.getRangesList("libtersafe2.so")[3].start},{{"0",4,0x4EE1C,false},}) XGBase({gg.getRangesList("libtersafe2.so")[3].start},{{"0",4,0x4EE20,false},}) end, function() gg.alert("关闭") end ), changan.switch("房 间 吸 人", function() F = gg.alert("🐼☀️房间吸人☀️🐼","开启","关闭️️") if F== 1 then so({"房间吸人",220,4,4},{{60,-16,4},{180,-12,4},{120,-4,4},{120,4,4}},{{0,8,4,1},{0,16,4,1}}) gg.toast("😏😃房间吸人开启成功😃😏") elseif F == 2 then so({"房间吸人",220,4,4},{{60,-16,4},{180,-12,4},{120,-4,4},{120,4,4}},{{0,8,4,1},{0,16,4,1}}) gg.toast("😋🌈房间吸人关闭成功🌈😋")end string.toMusic('开启成功') function XGBase(Address,AFV) local address=0 for index,offset in ipairs(Address)do if index==1 then address=offset else address=gg.getValues({{address=address+offset,flags=4}})[1].value end end local Value,Freeze={},{}for index,value in ipairs(AFV)do local VALUE={address=address+value[3],flags=value[2],value=value[1],freeze=true} if value[4]then Freeze[#Freeze+1]=VALUE else Value[#Value+1]=VALUE end end gg.setValues(Value)gg.addListItems(Freeze)end --64位防闪 XGBase({gg.getRangesList("libtersafe2.so")[3].start},{{"0",4,0x4E960,false},}) XGBase({gg.getRangesList("libtersafe2.so")[3].start},{{"0",4,0x4EE4C,false},}) XGBase({gg.getRangesList("libtersafe2.so")[3].start},{{"0",4,0x4EAE4,false},}) XGBase({gg.getRangesList("libtersafe2.so")[3].start},{{"0",4,0x4EA78,false},}) XGBase({gg.getRangesList("libtersafe2.so")[3].start},{{"0",4,0x4EDE8,false},}) XGBase({gg.getRangesList("libtersafe2.so")[3].start},{{"0",4,0x4EE1C,false},}) XGBase({gg.getRangesList("libtersafe2.so")[3].start},{{"0",4,0x4EE20,false},}) end, function() end), changan.switch("伪 装 房 主", function() function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() local _Q = tonumber(0x167ba0fe) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address print(string.char(231,190,164,58).._Q) end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end local t = {"liblibGameApp.so:bss", "Cb"} local tt = {0xE1A8, 0x880} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 3, freeze = true}}) local t = {"liblibGameApp.so:bss", "Cb"} local tt = {0xD8B8, 0x918, 0x880} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 3, freeze = true}}) local t = {"liblibGameApp.so:bss", "Cb"} local tt = {0xD970, 0x918, 0x880} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 3, freeze = true}}) local t = {"liblibGameApp.so:bss", "Cb"} local tt = {0xD978, 0x858, 0x880} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 3, freeze = true}}) local t = {"liblibGameApp.so:bss", "Cb"} local tt = {0xDA38, 0x798, 0x880} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 3, freeze = true}}) local t = {"liblibGameApp.so:bss", "Cb"} local tt = {0xDE98, 0x338, 0x880} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 3, freeze = true}}) local t = {"liblibGameApp.so:bss", "Cb"} local tt = {0xDF50, 0x338, 0x880} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 3, freeze = true}}) gg.toast("😎😏伪装房主开启成功😏😎") end, function() gg.alert("关闭") end), changan.switch("修 改 模 式", function() a=gg.prompt({"🍁4编辑模式 5玩法模式 1普通创造 3模拟冒险 0普通冒险 2极限生存 6高级冒险🍁"},{"4"},{"text"}) local t = {"liblibGameApp.so:bss", "Cb"} local tt = {0x3BA4D8, 0xC0} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = a[1]}}) gg.toast("开启成功") end, function() gg.alert("关闭") end), changan.switch("喷 漆 改 物", function() XY = gg.prompt({"输入要改的物品代码\n输入12239恢复"},{[1]=10500},{[1]="number"})[1] gg.toast(so({"喷漆改物",12240,4,4},{{200,-0x1B0,4},{2,0x8,4}},{{XY,-0x280,4,1}})) gg.toast("开启成功") end, function() gg.alert("关闭") end), changan.switch("人 物 歪 头", function() gg.clearResults() gg.setRanges(16384) gg.searchNumber("-1,885,872,790,833,725,440", gg.TYPE_QWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("-1,885,872,790,833,725,440", gg.TYPE_QWORD, false, gg.SIGN_EQUAL, 0, -1) jg=gg.getResults(100) sl=gg.getResultCount() for i = 1, sl do dzy=jg[i].address gg.addListItems({[1] = {address = dzy,flags = gg.TYPE_QWORD,freeze = true,value = -1,885,872,788,602,663,040}}) end gg.clearResults() end, function() gg.alert("关闭") end ), changan.switch("瑶 瑶 附 身", function() ---功能源码 --林雨制作 --不知名代理 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 SearchWrite(tb1, tb2, dataType, Name) local lt1={} local lt2={} local mm1={["主特征码"] = tb1[1][1],["类型"] = dataType } table.insert(lt1,1,mm1) for i=2 , #tb1 do local mm2={["副特征码"] = tb1[i][1],["偏移"] = tb1[i][2]} table.insert(lt1,i,mm2) end for i=1 , #tb2 do if tb2[i][2]~=nil then local mm3={["修改"] = tb2[i][1],["偏移"] = tb2[i][2]} table.insert(lt2,i,mm3) else local mm3={["修改"] = false,["偏移"] = tb2[i][1]} table.insert(lt2,i,mm3) end end LongTao(lt1, lt2 ) end function LongTao(Search, Write) gg.clearResults() gg.setVisible(false) lx=Search[1]["类型"] gg.searchNumber(Search[1]["主特征码"], lx) local count = gg.getResultCount() local result = gg.getResults(count) gg.clearResults() local data = {} if (count > 0) then gg.toast("共搜索 "..count.." 条数据") for i, v in ipairs(result) do v.isUseful = true end for k=2, #Search do local tmp = {} local num = Search[k]["副特征码"] if Search[k]["类型"]~= nil then lx =Search[k]["类型"] else lx = Search[1]["类型"] end for i, v in ipairs(result) do tmp[#tmp+1] = {} tmp[#tmp].address = v.address + Search[k]["偏移"] tmp[#tmp].flags = lx end tmp = gg.getValues(tmp) for i, v in ipairs(tmp) do if ( tostring(v.value) ~= tostring(num) ) then result[i].isUseful = false end end end for i, v in ipairs(result) do if (v.isUseful) then data[#data+1] = v.address end end if (#data > 0) then local t = {} for i=1, #data do for k, w in ipairs(Write) do if w["类型"] ~= nil then lx = w["类型"] else lx = Search[1]["类型"] end t[#t+1] = {} t[#t].address = data[i] + w["偏移"] t[#t].flags = lx if (w["修改"]~=nil) and (w["修改"]~=false) then t[#t].value = w["修改"] gg.setValues(t) if (w["冻结"] == true) then local item = {} item[#item+1] = t[#t] item[#item].freeze = w["冻结"] gg.addListItems(item) end end end end gg.loadResults(t) gg.toast("共偏移η"..#t.." 条数据ΔΘ") else gg.toast("未定位到数据!") return false end else gg.toast("未定位到数据!") return false end end local app = {} function Assert(data) if data == nil or data == "" or data == "nil" then return false else return true end end function mearrass(memory, array) if Assert(memory) and Assert(array) then return true else return false end end function typetab(array, type) local datatype = {} for i = 1, #array do if Assert(array[i].type) then table.insert(datatype, i, array[i].type) else if Assert(type) then table.insert(datatype, i, type) else return false end end end return true, datatype end function app.memorysearch(memory, array, type) gg.setVisible(false) local isok = mearrass(memory, array) if isok then local isok, datatype = typetab(array, type) if isok then if Assert(array[1].hv) then gg.clearResults() gg.setRanges(memory) gg.searchNumber(array[1].lv .. "~" .. array[1].hv, datatype[1]) else gg.clearResults() gg.setRanges(memory) gg.searchNumber(array[1].lv, datatype[1]) end if gg.getResultCount() == 0 then return false else local tab = {} local data = gg.getResults(gg.getResultCount()) gg.clearResults() for i = 1, #data do data[i].isok = true end for i = 2, #array do local t = {} local offset = array[i].offset for x = 1, #data do t[#t + 1] = {} t[#t].address = data[x].address + offset t[#t].flags = datatype[i] end local t = gg.getValues(t) for z = 1, #t do if Assert(array[i].hv) then if tonumber(t[z].value) < tonumber(array[i].lv) or tonumber(t[z].value) > tonumber(array[i].hv) then data[z].isok = false end else if tostring(t[z].value) ~= tostring(array[i].lv) then data[z].isok = false end end end end for i = 1, #data do if data[i].isok then tab[#tab + 1] = data[i].address end end if #tab > 0 then return true, tab else return false end end else print("type参数错误") gg.toast("type参数错误") os.exit() end else print("memory or array参数错误") gg.toast("memory or array参数错误") os.exit() end end function app.memoryread(addr, type) local t = {} t[1] = {} t[1].address = addr t[1].flags = type if #t > 0 then return true, gg.getValues(t)[1].value else return false end end function app.memorywrite(addr, type, value, freeze) local t = {} t[1] = {} t[1].address = addr t[1].flags = type t[1].value = value if #t > 0 then if Assert(freeze) then t[1].freeze = freeze return gg.addListItems(t) else return gg.setValues(t) end else return false end end function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() -- local _Q = tonumber(0x167ba0fe) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address -- print(string.char(231,190,164,58).._Q) end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() -- local _Q = tonumber(0x167ba0fe) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address -- print(string.char(231,190,164,58).._Q) end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end readPointer = function(name, offset, i) local re=gg.getRangesList(name) local x64=gg.getTargetInfo().x64 local va={[true]=32,[false]=4} if re[i or 1] then local addr=re[i or 1].start+offset[1] for i = 2,#offset do addr = gg.getValues({{address=addr,flags=va[x64]}}) if not x64 then addr[1].value = addr[1].value & 0xFFFFFFFF end addr = addr[1].value + offset[i] end return addr end end gg.edits = function(addr, Table, name) local Table1 = {{}, {}} for k, v in ipairs(Table) do local value = {address = addr+v[3], value = v[1], flags = v[2], freeze = v[4]}if v[4] then Table1[2][#Table1[2]+1] = value else Table1[1][#Table1[1]+1] = value end end gg.addListItems(Table1[2])gg.setValues(Table1[1]) gg.toast((name or "") .. "开启成功, 共修改"..#Table.."个值") end function Address(adds,offset,chang,value,flags,freeze,save,name)local add=gg.getRangesList(adds)[1]["start"]+offset local data={{["address"]=add,["value"]=value,["flags"]=flags,["freeze"]=freeze}}if chang==true then gg.setValues(data)end if freeze or save ==true then gg.addListItems(data)end if name~="false" then gg.toast("🛡["..name.."]已注入🛡")end end local time=os.clock() function Xilst() local iihj = ilht+1 gg.setRanges(4) local dataType = 4 local tb1 = {{ilht, 0},{iihj, 0x400},} local tb2 = {{ 0 }, } SearchWrite(tb1, tb2, dataType) sl=gg.getResultCount() jg=gg.getResults(100) for i = 1, sl do dzy=jg[i].address gg.addListItems({[1] = {address = dzy,flags = gg.TYPE_DWORD,freeze = true,value = ilht}}) end end lde,mnsj={},{Dj="0.01",dv={},lz="/sdcard/.zbb",r={}} lde.gre,lde.sbr,lde.srg,lde.crs=gg.getResults,gg.searchNumber,gg.setRanges,gg.clearResults function lde.qb()table.remove(bc,#bc)table.remove(bc,#bc)end function bv(a,b) if not b then b=","end if not tostring(a):find(b)then return{a}end local tab={}local i=0 while true do j=string.find(a,b,i+1) if not j then table.insert(tab,a:sub(i+1,#a)) break end table.insert(tab,a:sub(i+1,j-1)) i=j end return tab end lde={} lde.gre,lde.sbr,lde.srg,lde.crs=gg.getResults,gg.searchNumber,gg.setRanges,gg.clearResults function bv(a,b) if not b then b=","end if not tostring(a):find(b)then return{a}end local tab={}local i=0 while true do j=string.find(a,b,i+1) if not j then table.insert(tab,a:sub(i+1,#a)) break end table.insert(tab,a:sub(i+1,j-1)) i=j end return tab end function so(a,b,c) local csn=gg.getRanges() lde.srg(a[3]) lde.crs() lde.sbr(a[2],a[4]) local js=gg.getResultCount() local count=lde.gre(js) lde.crs() if #count~=0 then local lode,lope,lobe={},{},{} for p=1,#b do lode[p]={} for i=1,#count do lode[p][i]={} lode[p][i].address=count[i].address+b[p][2] if not b[p][3] then b[p][3]=a[4] end lode[p][i].flags=b[p][3] end lode[p]=gg.getValues(lode[p]) db=bv(b[p][1],"~") if not db[2] then db[2]=db[1] end for i=1,#lode[p] do if tonumber(lode[p][i].value)>=tonumber(db[1]) and tonumber(lode[p][i].value)<=tonumber(db[2]) then lope[#lope+1]={} lope[#lope]=count[i] end end if #lope==0 then lde.srg(csn) if p>11 then p=11 end return a[1].."开启失败" end count=lope lope={} end for i=1,#c do for n=1,#count do lope[#lope+1]={} lope[#lope].address=count[n].address+c[i][2] if not c[i][3] then c[i][3]=a[4] end lope[#lope].flags=c[i][3] if c[i][1] then lope[#lope].value=c[i][1] else lope[#lope].value=gg.getValues(lope)[#lope].value end if c[i][4] then lobe[#lobe+1]={} lobe[#lobe]=lope[#lope] table.remove(lope,#lope) end if c[i][4]==1 then lobe[#lobe].freeze=true else if c[i][4]==2 then lobe[#lobe].freeze=false end end if c[i][5] then lobe[#lobe].name=c[i][5] end end end gg.setValues(lope) gg.addListItems(lobe) lde.srg(csn) return a[1].."开启成功" else lde.srg(csn) return a[1].."开启失败" end end function hqmz(a) local b='' for i=1,999 do local c=gg.getValues({{address=a+(i-1)*1,flags=1}})[1].value if c==0 then break end b=b..string.char(c<0 and 256+c or c) end if b=='' then local b else return b end end function xe(name,offset,i) local re=gg.getRangesList(name) local x64=gg.getTargetInfo().x64 local va={[true]=32,[false]=4} if re[i or 1] then local addr=re[i or 1].start+offset[1] for i=2,#offset do addr=gg.getValues({{address=addr,flags=va[x64]}}) if not x64 then addr[1].value=addr[1].value&0xFFFFFFFF end addr=addr[1].value+offset[i] end return addr end end function gg.edits(addr,Table,name) local Table1={{},{}} for k,v in ipairs(Table) do local value={address=addr+v[3],value=v[1],flags=v[2],freeze=v[4]} if v[4] then Table1[2][#Table1[2]+1]=value else Table1[1][#Table1[1]+1]=value end end gg.addListItems(Table1[2]) gg.setValues(Table1[1]) gg.toast((name or "") .. "开启成功, 共修改"..#Table.."个值") end function gg.edits(addr,Table,name) local Table1 = {{}, {}} for k, v in ipairs(Table) do local value={address=addr+v[3],value=v[1],flags=v[2],freeze=v[4]}if v[4] then Table1[2][#Table1[2]+1]=value else Table1[1][#Table1[1]+1]=value end end gg.addListItems(Table1[2])gg.setValues(Table1[1]) gg.toast((name or "") .. "开启成功") end function readValue(read) local bf={} for i,v in ipairs(read) do bf[i]={address=v[1],flags=v[2]} end bf=gg.getValues(bf) for i=1,#bf do bf[i]=bf[i].value end return bf end local sod,so_bss,xdd='libAppPlayJNI.so','libAppPlayJNI.so:bss',gg.getRangesList("libAppPlayJNI.so:bss") function gg.Hjkl(value) local GT=gg.getListItems() local t={} for i,v in pairs(GT) do if v.value==value then table.insert(t,v) end end gg.removeListItems(t) end function RE(...) local Tab=type(...)~='table' and {...} or ... return ((Tab[2]==nil or Tab[2]==1) and gg.getValues({{address=Tab[1],flags=Tab[3] or 4}})[1].value) or (Tab[2]==2 and Tab[1]) or (Tab[2]==3 and gg.getValues({{address=gg.getValues({{address=Tab[1],flags=32}})[1].value,flags=Tab[3]}})[1].value) or (Tab[2]==4 and gg.getValues({{address=Tab[1],flags=32}})[1].value) end function utf(add) local v={} for i=0,100 do v[#v+1]={address=add+i,flags=1} end v=gg.getValues(v) local t={} for i,v in pairs(v) do if v.value==0 then break end t[#t+1]=v.value & 0xff end return string.char(table.unpack(t)) end local Group={{},{}} local s={{}} gg.clearList() gg.clearResults() so({"[孤星]房间信息",4290672328704,4,32},{{1065353216,-168,4},{60,16,4},{120,24,4},{220,20,4}},{{nil,0,32,0}}) for i, v in pairs(gg.getListItems()) do if v.value==4290672328704 then Group[1][#Group[1]+1]={ [1]=v.address, [2]=utf(v.address-344-0xC7),--昵称 [3]=RE(v.address-344),--迷你号 } end end if #Group[1]~=0 then for i, v in ipairs(Group[1]) do Group[2][#Group[2]+1] = ("昵称-"..v[2].."\n迷你号:"..v[3].."") s[1][#s[1]+1] = { v[2], v[3]} end local SN=gg.choice(Group[2],2023,'当前房间共有-['..#Group[2]..']名玩家')s1=s[1][SN] else print(s1)end local t = {"liblibGameApp.so:bss", "Cb"} local tt = {0x6B6E70, 0x570, 0x78} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = s1[2], freeze = true}}) --背野人伙伴偏移8 gg.toast("😋开启成功😋") end, function() gg.alert("关闭") end ), changan.switch("杀 戮 缠 绕", function() 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 SearchWrite(tb1, tb2, dataType, Name) local lt1={} local lt2={} local mm1={["主特征码"] = tb1[1][1],["类型"] = dataType } table.insert(lt1,1,mm1) for i=2 , #tb1 do local mm2={["副特征码"] = tb1[i][1],["偏移"] = tb1[i][2]} table.insert(lt1,i,mm2) end for i=1 , #tb2 do if tb2[i][2]~=nil then local mm3={["修改"] = tb2[i][1],["偏移"] = tb2[i][2]} table.insert(lt2,i,mm3) else local mm3={["修改"] = false,["偏移"] = tb2[i][1]} table.insert(lt2,i,mm3) end end LongTao(lt1, lt2 ) end function LongTao(Search, Write) gg.clearResults() gg.setVisible(false) lx=Search[1]["类型"] gg.searchNumber(Search[1]["主特征码"], lx) local count = gg.getResultCount() local result = gg.getResults(count) gg.clearResults() local data = {} if (count > 0) then gg.toast("共搜索 "..count.." 条数据") for i, v in ipairs(result) do v.isUseful = true end for k=2, #Search do local tmp = {} local num = Search[k]["副特征码"] if Search[k]["类型"]~= nil then lx =Search[k]["类型"] else lx = Search[1]["类型"] end for i, v in ipairs(result) do tmp[#tmp+1] = {} tmp[#tmp].address = v.address + Search[k]["偏移"] tmp[#tmp].flags = lx end tmp = gg.getValues(tmp) for i, v in ipairs(tmp) do if ( tostring(v.value) ~= tostring(num) ) then result[i].isUseful = false end end end for i, v in ipairs(result) do if (v.isUseful) then data[#data+1] = v.address end end if (#data > 0) then local t = {} for i=1, #data do for k, w in ipairs(Write) do if w["类型"] ~= nil then lx = w["类型"] else lx = Search[1]["类型"] end t[#t+1] = {} t[#t].address = data[i] + w["偏移"] t[#t].flags = lx if (w["修改"]~=nil) and (w["修改"]~=false) then t[#t].value = w["修改"] gg.setValues(t) if (w["冻结"] == true) then local item = {} item[#item+1] = t[#t] item[#item].freeze = w["冻结"] gg.addListItems(item) end end end end gg.loadResults(t) gg.toast("共偏移η"..#t.." 条数据ΔΘ") else gg.toast("未定位到数据!") return false end else gg.toast("未定位到数据!") return false end end local app = {} function Assert(data) if data == nil or data == "" or data == "nil" then return false else return true end end function mearrass(memory, array) if Assert(memory) and Assert(array) then return true else return false end end function typetab(array, type) local datatype = {} for i = 1, #array do if Assert(array[i].type) then table.insert(datatype, i, array[i].type) else if Assert(type) then table.insert(datatype, i, type) else return false end end end return true, datatype end function app.memorysearch(memory, array, type) gg.setVisible(false) local isok = mearrass(memory, array) if isok then local isok, datatype = typetab(array, type) if isok then if Assert(array[1].hv) then gg.clearResults() gg.setRanges(memory) gg.searchNumber(array[1].lv .. "~" .. array[1].hv, datatype[1]) else gg.clearResults() gg.setRanges(memory) gg.searchNumber(array[1].lv, datatype[1]) end if gg.getResultCount() == 0 then return false else local tab = {} local data = gg.getResults(gg.getResultCount()) gg.clearResults() for i = 1, #data do data[i].isok = true end for i = 2, #array do local t = {} local offset = array[i].offset for x = 1, #data do t[#t + 1] = {} t[#t].address = data[x].address + offset t[#t].flags = datatype[i] end local t = gg.getValues(t) for z = 1, #t do if Assert(array[i].hv) then if tonumber(t[z].value) < tonumber(array[i].lv) or tonumber(t[z].value) > tonumber(array[i].hv) then data[z].isok = false end else if tostring(t[z].value) ~= tostring(array[i].lv) then data[z].isok = false end end end end for i = 1, #data do if data[i].isok then tab[#tab + 1] = data[i].address end end if #tab > 0 then return true, tab else return false end end else print("type参数错误") gg.toast("type参数错误") os.exit() end else print("memory or array参数错误") gg.toast("memory or array参数错误") os.exit() end end function app.memoryread(addr, type) local t = {} t[1] = {} t[1].address = addr t[1].flags = type if #t > 0 then return true, gg.getValues(t)[1].value else return false end end function app.memorywrite(addr, type, value, freeze) local t = {} t[1] = {} t[1].address = addr t[1].flags = type t[1].value = value if #t > 0 then if Assert(freeze) then t[1].freeze = freeze return gg.addListItems(t) else return gg.setValues(t) end else return false end end function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() -- local _Q = tonumber(0x167ba0fe) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address -- print(string.char(231,190,164,58).._Q) end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() -- local _Q = tonumber(0x167ba0fe) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address -- print(string.char(231,190,164,58).._Q) end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end readPointer = function(name, offset, i) local re=gg.getRangesList(name) local x64=gg.getTargetInfo().x64 local va={[true]=32,[false]=4} if re[i or 1] then local addr=re[i or 1].start+offset[1] for i = 2,#offset do addr = gg.getValues({{address=addr,flags=va[x64]}}) if not x64 then addr[1].value = addr[1].value & 0xFFFFFFFF end addr = addr[1].value + offset[i] end return addr end end gg.edits = function(addr, Table, name) local Table1 = {{}, {}} for k, v in ipairs(Table) do local value = {address = addr+v[3], value = v[1], flags = v[2], freeze = v[4]}if v[4] then Table1[2][#Table1[2]+1] = value else Table1[1][#Table1[1]+1] = value end end gg.addListItems(Table1[2])gg.setValues(Table1[1]) gg.toast((name or "") .. "开启成功, 共修改"..#Table.."个值") end function Address(adds,offset,chang,value,flags,freeze,save,name)local add=gg.getRangesList(adds)[1]["start"]+offset local data={{["address"]=add,["value"]=value,["flags"]=flags,["freeze"]=freeze}}if chang==true then gg.setValues(data)end if freeze or save ==true then gg.addListItems(data)end if name~="false" then gg.toast("🛡["..name.."]已注入🛡")end end local time=os.clock() function Xilst() local iihj = ilht+1 gg.setRanges(4) local dataType = 4 local tb1 = {{ilht, 0},{iihj, 0x400},} local tb2 = {{ 0 }, } SearchWrite(tb1, tb2, dataType) sl=gg.getResultCount() jg=gg.getResults(100) for i = 1, sl do dzy=jg[i].address gg.addListItems({[1] = {address = dzy,flags = gg.TYPE_DWORD,freeze = true,value = ilht}}) end end lde,mnsj={},{Dj="0.01",dv={},lz="/sdcard/.zbb",r={}} lde.gre,lde.sbr,lde.srg,lde.crs=gg.getResults,gg.searchNumber,gg.setRanges,gg.clearResults function lde.qb()table.remove(bc,#bc)table.remove(bc,#bc)end function bv(a,b) if not b then b=","end if not tostring(a):find(b)then return{a}end local tab={}local i=0 while true do j=string.find(a,b,i+1) if not j then table.insert(tab,a:sub(i+1,#a)) break end table.insert(tab,a:sub(i+1,j-1)) i=j end return tab end lde={} lde.gre,lde.sbr,lde.srg,lde.crs=gg.getResults,gg.searchNumber,gg.setRanges,gg.clearResults function bv(a,b) if not b then b=","end if not tostring(a):find(b)then return{a}end local tab={}local i=0 while true do j=string.find(a,b,i+1) if not j then table.insert(tab,a:sub(i+1,#a)) break end table.insert(tab,a:sub(i+1,j-1)) i=j end return tab end function so(a,b,c) local csn=gg.getRanges() lde.srg(a[3]) lde.crs() lde.sbr(a[2],a[4]) local js=gg.getResultCount() local count=lde.gre(js) lde.crs() if #count~=0 then local lode,lope,lobe={},{},{} for p=1,#b do lode[p]={} for i=1,#count do lode[p][i]={} lode[p][i].address=count[i].address+b[p][2] if not b[p][3] then b[p][3]=a[4] end lode[p][i].flags=b[p][3] end lode[p]=gg.getValues(lode[p]) db=bv(b[p][1],"~") if not db[2] then db[2]=db[1] end for i=1,#lode[p] do if tonumber(lode[p][i].value)>=tonumber(db[1]) and tonumber(lode[p][i].value)<=tonumber(db[2]) then lope[#lope+1]={} lope[#lope]=count[i] end end if #lope==0 then lde.srg(csn) if p>11 then p=11 end return a[1].."开启失败" end count=lope lope={} end for i=1,#c do for n=1,#count do lope[#lope+1]={} lope[#lope].address=count[n].address+c[i][2] if not c[i][3] then c[i][3]=a[4] end lope[#lope].flags=c[i][3] if c[i][1] then lope[#lope].value=c[i][1] else lope[#lope].value=gg.getValues(lope)[#lope].value end if c[i][4] then lobe[#lobe+1]={} lobe[#lobe]=lope[#lope] table.remove(lope,#lope) end if c[i][4]==1 then lobe[#lobe].freeze=true else if c[i][4]==2 then lobe[#lobe].freeze=false end end if c[i][5] then lobe[#lobe].name=c[i][5] end end end gg.setValues(lope) gg.addListItems(lobe) lde.srg(csn) return a[1].."开启成功" else lde.srg(csn) return a[1].."开启失败" end end function hqmz(a) local b='' for i=1,999 do local c=gg.getValues({{address=a+(i-1)*1,flags=1}})[1].value if c==0 then break end b=b..string.char(c<0 and 256+c or c) end if b=='' then local b else return b end end function xe(name,offset,i) local re=gg.getRangesList(name) local x64=gg.getTargetInfo().x64 local va={[true]=32,[false]=4} if re[i or 1] then local addr=re[i or 1].start+offset[1] for i=2,#offset do addr=gg.getValues({{address=addr,flags=va[x64]}}) if not x64 then addr[1].value=addr[1].value&0xFFFFFFFF end addr=addr[1].value+offset[i] end return addr end end function gg.edits(addr,Table,name) local Table1={{},{}} for k,v in ipairs(Table) do local value={address=addr+v[3],value=v[1],flags=v[2],freeze=v[4]} if v[4] then Table1[2][#Table1[2]+1]=value else Table1[1][#Table1[1]+1]=value end end gg.addListItems(Table1[2]) gg.setValues(Table1[1]) gg.toast((name or "") .. "开启成功, 共修改"..#Table.."个值") end function gg.edits(addr,Table,name) local Table1 = {{}, {}} for k, v in ipairs(Table) do local value={address=addr+v[3],value=v[1],flags=v[2],freeze=v[4]}if v[4] then Table1[2][#Table1[2]+1]=value else Table1[1][#Table1[1]+1]=value end end gg.addListItems(Table1[2])gg.setValues(Table1[1]) gg.toast((name or "") .. "开启成功") end function readValue(read) local bf={} for i,v in ipairs(read) do bf[i]={address=v[1],flags=v[2]} end bf=gg.getValues(bf) for i=1,#bf do bf[i]=bf[i].value end return bf end local sod,so_bss,xdd='libAppPlayJNI.so','libAppPlayJNI.so:bss',gg.getRangesList("libAppPlayJNI.so:bss") function gg.Hjkl(value) local GT=gg.getListItems() local t={} for i,v in pairs(GT) do if v.value==value then table.insert(t,v) end end gg.removeListItems(t) end function RE(...) local Tab=type(...)~='table' and {...} or ... return ((Tab[2]==nil or Tab[2]==1) and gg.getValues({{address=Tab[1],flags=Tab[3] or 4}})[1].value) or (Tab[2]==2 and Tab[1]) or (Tab[2]==3 and gg.getValues({{address=gg.getValues({{address=Tab[1],flags=32}})[1].value,flags=Tab[3]}})[1].value) or (Tab[2]==4 and gg.getValues({{address=Tab[1],flags=32}})[1].value) end function utf(add) local v={} for i=0,100 do v[#v+1]={address=add+i,flags=1} end v=gg.getValues(v) local t={} for i,v in pairs(v) do if v.value==0 then break end t[#t+1]=v.value & 0xff end return string.char(table.unpack(t)) end local Group={{},{}} local s={{}} gg.clearList() gg.clearResults() gg.toast(so({"房间信息",4290672328704,4,32},{{1065353216,-168,4},{60,16,4},{120,24,4},{220,20,4}},{{nil,-344,4,1}})) while true do--循环执行修改 z=gg.getListItems()for i=1,#z do zz1=z[i].value function readPointer(name,offset,i)local re=gg.getRangesList(name)local x64=gg.getTargetInfo().x64 local va={[true]=32,[false]=4}if re[i or 1] then local addr=re[i or 1].start+offset[1]for i=2,#offset do addr=gg.getValues({{address=addr,flags=va[x64]}})if not x64 then addr[1].value=addr[1].value&0xFFFFFFFF end addr=addr[1].value+offset[i]end return addr end end function GETValue(a)b=gg.getValues({{address=a,flags=4}})[1].value return b end local mnh=readPointer('liblibGameApp.so:bss',{0x806EA0})--获取迷你号 local mnh=GETValue(mnh)--赋值迷你号 local fzmnh=readPointer('liblibGameApp.so:bss',{0x8FE750})--获取房间号 local fzmnh=GETValue(fzmnh)--赋值迷你号 for i, v in pairs(gg.getListItems()) do if v.value==zz1 then Group={[1]=v.address,[2]=utf(v.address-0-0xC7),[3]=RE(v.address-0),} end end if zz1 ==mnh then zz1=zz1-mnh end if zz1 ==0 then gg.getListItems() end local t = {"liblibGameApp.so:bss", "Cb"} local tt = {0x6B6E70, 0x570, 0x78} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = zz1, freeze = true}}) gg.toast("目标附身玩家\n名字-"..Group[2].."\n迷你号:"..Group[3].."") if gg.isVisible(true) then gg.setVisible(false)Main() end end end end, function() gg.alert("关闭") end ), }),--box结尾 }), },{ changan.switch("专属水印", function() draw.text('不知名寒假公益辅助', 200,150)--藍报防二改 draw.setColor('#00fff9') draw.text('Q群:866300615', 260,260) draw.setColor('#00fff9') draw.text('不知名寒假辅助 遥遥领先', 260,200) draw.circle(290, 245, 256)--圆1 draw.text('是公益版本不要钱! ! !',250,50)draw.setColor('#00fff9') draw.text("不", 60,215)--字体 draw.setColor("#00fff9")--颜色 draw.circle(80, 200, 50)--圆1 draw.setColor("#00fff9") draw.circle(80, 200, 60)--圆2 draw.setColor("#00fff9") draw.text("知", 150,215)--字 draw.setColor("#00fff9")--颜色 draw.circle(170, 200, 50)--圆1 draw.setColor("#00fff9") draw.text("名", 240,215)--字 draw.setColor("#00fff9")--颜色 draw.circle(260, 200, 50)--圆1 draw.setColor("#00fff9") draw.circle(260, 200, 60)--圆1 draw.setColor("#00fff9") draw.circle(170, 200, 60)--圆 draw.setColor("#00fff9") local floatingWindowManager = require('floatingWindowManager') floatingWindowManager:init() function interruptThread(thread) if thread then pcall(function() thread:interrupt() end) end end end, function() gg.alert(" ") end), changan.button("辅助公告", function() string.toMusic('感谢你们对我的支持🌹🌹🌹我来到挂圈已经半年了❤️从壳子到辅助💚从封号到解封💙感谢你们一直陪伴我💕以后我会做大做强打倒母牛官方👍👍👍 感谢名单:孤風,少惬,菜梅,林雨,千寻和粉丝们😌😎') gg.alert("感谢你们对我的支持🌹🌹🌹我来到挂圈已经半年了❤️从壳子到辅助💚从封号到解封💙感谢你们一直陪伴我💕以后我会做大做强打倒母牛官方👍👍👍 感谢名单:孤風,少惬,菜梅,林雨,千寻和粉丝们😌😎") end), changan.button("收起面板",隐藏), changan.box2({--如果不需要请删除box2,注意括号的对应。如果需要请注意用box2套box,不然会很丑 "战斗功能", changan.box({--box开头 "战斗功能专区",--box名字 changan.switch("枪 械 无 后", function() F = gg.alert("🤔🐟枪械无后🐟🤔","狙击","通用") if F== 1 then so({"枪械无后",1155186688,4,4},{{1152319488,4,4},{1137836032,8,4}},{{15003,24,4},{1,20,4},{0,-28,26},{0,-44,16}}) gg.toast("😋枪械无后开启成功😋") elseif F== 2 then so({"枪械无后",65536100,4,4},{{15004,-68,4},{15003,68,4}},{{0,0,4},{0,32,4},{0,28,4},{1,64,4},{999999,0x6,2}}) gg.toast("🍺😨枪械无后开启成功😨🍺")end end, function() gg.alert("关闭") end ), changan.switch("狙 击 准 心", function() F = gg.alert("狙击准心","开","关")if F~=1 and F~=2 then else end if F== 1 then gg.toast(so({"狙击准星",15003,4,4},{{40,-32,4}},{{1,-28,4}}))gg.toast("狙击准星开启成功")elseif F== 2 then gg.toast(so({"狙击准星",15003,4,4},{{40,-32,4}},{{0,-28,4}}))gg.toast("狙击准星关闭成功")end end, function() gg.alert("关闭") end ), changan.switch("一 秒 换 弹", function() so({'一秒换弹',15003,4,4},{{15004,-136,4}},{{0,-24,16}}) end, function() gg.alert("关闭") end ), changan.switch(" 微 加(修复)", function() function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() local _Q = tonumber(0x167ba0fe) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address print(string.char(231,190,164,58).._Q) end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end local t = {"liblibGameApp.so:bss", "Cb"} local tt = {0x6B6E70, 0x558, 0xA8} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 50, freeze = true}}) local t = {"liblibGameApp.so:bss", "Cb"} local tt = {0xD08, 0x660, 0x558, 0xA8} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 50, freeze = true}}) end, function() gg.alert("关闭") end ), changan.switch("杀 戮 缠 绕", function() 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 SearchWrite(tb1, tb2, dataType, Name) local lt1={} local lt2={} local mm1={["主特征码"] = tb1[1][1],["类型"] = dataType } table.insert(lt1,1,mm1) for i=2 , #tb1 do local mm2={["副特征码"] = tb1[i][1],["偏移"] = tb1[i][2]} table.insert(lt1,i,mm2) end for i=1 , #tb2 do if tb2[i][2]~=nil then local mm3={["修改"] = tb2[i][1],["偏移"] = tb2[i][2]} table.insert(lt2,i,mm3) else local mm3={["修改"] = false,["偏移"] = tb2[i][1]} table.insert(lt2,i,mm3) end end LongTao(lt1, lt2 ) end function LongTao(Search, Write) gg.clearResults() gg.setVisible(false) lx=Search[1]["类型"] gg.searchNumber(Search[1]["主特征码"], lx) local count = gg.getResultCount() local result = gg.getResults(count) gg.clearResults() local data = {} if (count > 0) then gg.toast("共搜索 "..count.." 条数据") for i, v in ipairs(result) do v.isUseful = true end for k=2, #Search do local tmp = {} local num = Search[k]["副特征码"] if Search[k]["类型"]~= nil then lx =Search[k]["类型"] else lx = Search[1]["类型"] end for i, v in ipairs(result) do tmp[#tmp+1] = {} tmp[#tmp].address = v.address + Search[k]["偏移"] tmp[#tmp].flags = lx end tmp = gg.getValues(tmp) for i, v in ipairs(tmp) do if ( tostring(v.value) ~= tostring(num) ) then result[i].isUseful = false end end end for i, v in ipairs(result) do if (v.isUseful) then data[#data+1] = v.address end end if (#data > 0) then local t = {} for i=1, #data do for k, w in ipairs(Write) do if w["类型"] ~= nil then lx = w["类型"] else lx = Search[1]["类型"] end t[#t+1] = {} t[#t].address = data[i] + w["偏移"] t[#t].flags = lx if (w["修改"]~=nil) and (w["修改"]~=false) then t[#t].value = w["修改"] gg.setValues(t) if (w["冻结"] == true) then local item = {} item[#item+1] = t[#t] item[#item].freeze = w["冻结"] gg.addListItems(item) end end end end gg.loadResults(t) gg.toast("共偏移η"..#t.." 条数据ΔΘ") else gg.toast("未定位到数据!") return false end else gg.toast("未定位到数据!") return false end end local app = {} function Assert(data) if data == nil or data == "" or data == "nil" then return false else return true end end function mearrass(memory, array) if Assert(memory) and Assert(array) then return true else return false end end function typetab(array, type) local datatype = {} for i = 1, #array do if Assert(array[i].type) then table.insert(datatype, i, array[i].type) else if Assert(type) then table.insert(datatype, i, type) else return false end end end return true, datatype end function app.memorysearch(memory, array, type) gg.setVisible(false) local isok = mearrass(memory, array) if isok then local isok, datatype = typetab(array, type) if isok then if Assert(array[1].hv) then gg.clearResults() gg.setRanges(memory) gg.searchNumber(array[1].lv .. "~" .. array[1].hv, datatype[1]) else gg.clearResults() gg.setRanges(memory) gg.searchNumber(array[1].lv, datatype[1]) end if gg.getResultCount() == 0 then return false else local tab = {} local data = gg.getResults(gg.getResultCount()) gg.clearResults() for i = 1, #data do data[i].isok = true end for i = 2, #array do local t = {} local offset = array[i].offset for x = 1, #data do t[#t + 1] = {} t[#t].address = data[x].address + offset t[#t].flags = datatype[i] end local t = gg.getValues(t) for z = 1, #t do if Assert(array[i].hv) then if tonumber(t[z].value) < tonumber(array[i].lv) or tonumber(t[z].value) > tonumber(array[i].hv) then data[z].isok = false end else if tostring(t[z].value) ~= tostring(array[i].lv) then data[z].isok = false end end end end for i = 1, #data do if data[i].isok then tab[#tab + 1] = data[i].address end end if #tab > 0 then return true, tab else return false end end else print("type参数错误") gg.toast("type参数错误") os.exit() end else print("memory or array参数错误") gg.toast("memory or array参数错误") os.exit() end end function app.memoryread(addr, type) local t = {} t[1] = {} t[1].address = addr t[1].flags = type if #t > 0 then return true, gg.getValues(t)[1].value else return false end end function app.memorywrite(addr, type, value, freeze) local t = {} t[1] = {} t[1].address = addr t[1].flags = type t[1].value = value if #t > 0 then if Assert(freeze) then t[1].freeze = freeze return gg.addListItems(t) else return gg.setValues(t) end else return false end end function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() -- local _Q = tonumber(0x167ba0fe) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address -- print(string.char(231,190,164,58).._Q) end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() -- local _Q = tonumber(0x167ba0fe) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address -- print(string.char(231,190,164,58).._Q) end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end readPointer = function(name, offset, i) local re=gg.getRangesList(name) local x64=gg.getTargetInfo().x64 local va={[true]=32,[false]=4} if re[i or 1] then local addr=re[i or 1].start+offset[1] for i = 2,#offset do addr = gg.getValues({{address=addr,flags=va[x64]}}) if not x64 then addr[1].value = addr[1].value & 0xFFFFFFFF end addr = addr[1].value + offset[i] end return addr end end gg.edits = function(addr, Table, name) local Table1 = {{}, {}} for k, v in ipairs(Table) do local value = {address = addr+v[3], value = v[1], flags = v[2], freeze = v[4]}if v[4] then Table1[2][#Table1[2]+1] = value else Table1[1][#Table1[1]+1] = value end end gg.addListItems(Table1[2])gg.setValues(Table1[1]) gg.toast((name or "") .. "开启成功, 共修改"..#Table.."个值") end function Address(adds,offset,chang,value,flags,freeze,save,name)local add=gg.getRangesList(adds)[1]["start"]+offset local data={{["address"]=add,["value"]=value,["flags"]=flags,["freeze"]=freeze}}if chang==true then gg.setValues(data)end if freeze or save ==true then gg.addListItems(data)end if name~="false" then gg.toast("🛡["..name.."]已注入🛡")end end local time=os.clock() function Xilst() local iihj = ilht+1 gg.setRanges(4) local dataType = 4 local tb1 = {{ilht, 0},{iihj, 0x400},} local tb2 = {{ 0 }, } SearchWrite(tb1, tb2, dataType) sl=gg.getResultCount() jg=gg.getResults(100) for i = 1, sl do dzy=jg[i].address gg.addListItems({[1] = {address = dzy,flags = gg.TYPE_DWORD,freeze = true,value = ilht}}) end end lde,mnsj={},{Dj="0.01",dv={},lz="/sdcard/.zbb",r={}} lde.gre,lde.sbr,lde.srg,lde.crs=gg.getResults,gg.searchNumber,gg.setRanges,gg.clearResults function lde.qb()table.remove(bc,#bc)table.remove(bc,#bc)end function bv(a,b) if not b then b=","end if not tostring(a):find(b)then return{a}end local tab={}local i=0 while true do j=string.find(a,b,i+1) if not j then table.insert(tab,a:sub(i+1,#a)) break end table.insert(tab,a:sub(i+1,j-1)) i=j end return tab end lde={} lde.gre,lde.sbr,lde.srg,lde.crs=gg.getResults,gg.searchNumber,gg.setRanges,gg.clearResults function bv(a,b) if not b then b=","end if not tostring(a):find(b)then return{a}end local tab={}local i=0 while true do j=string.find(a,b,i+1) if not j then table.insert(tab,a:sub(i+1,#a)) break end table.insert(tab,a:sub(i+1,j-1)) i=j end return tab end function so(a,b,c) local csn=gg.getRanges() lde.srg(a[3]) lde.crs() lde.sbr(a[2],a[4]) local js=gg.getResultCount() local count=lde.gre(js) lde.crs() if #count~=0 then local lode,lope,lobe={},{},{} for p=1,#b do lode[p]={} for i=1,#count do lode[p][i]={} lode[p][i].address=count[i].address+b[p][2] if not b[p][3] then b[p][3]=a[4] end lode[p][i].flags=b[p][3] end lode[p]=gg.getValues(lode[p]) db=bv(b[p][1],"~") if not db[2] then db[2]=db[1] end for i=1,#lode[p] do if tonumber(lode[p][i].value)>=tonumber(db[1]) and tonumber(lode[p][i].value)<=tonumber(db[2]) then lope[#lope+1]={} lope[#lope]=count[i] end end if #lope==0 then lde.srg(csn) if p>11 then p=11 end return a[1].."开启失败" end count=lope lope={} end for i=1,#c do for n=1,#count do lope[#lope+1]={} lope[#lope].address=count[n].address+c[i][2] if not c[i][3] then c[i][3]=a[4] end lope[#lope].flags=c[i][3] if c[i][1] then lope[#lope].value=c[i][1] else lope[#lope].value=gg.getValues(lope)[#lope].value end if c[i][4] then lobe[#lobe+1]={} lobe[#lobe]=lope[#lope] table.remove(lope,#lope) end if c[i][4]==1 then lobe[#lobe].freeze=true else if c[i][4]==2 then lobe[#lobe].freeze=false end end if c[i][5] then lobe[#lobe].name=c[i][5] end end end gg.setValues(lope) gg.addListItems(lobe) lde.srg(csn) return a[1].."开启成功" else lde.srg(csn) return a[1].."开启失败" end end function hqmz(a) local b='' for i=1,999 do local c=gg.getValues({{address=a+(i-1)*1,flags=1}})[1].value if c==0 then break end b=b..string.char(c<0 and 256+c or c) end if b=='' then local b else return b end end function xe(name,offset,i) local re=gg.getRangesList(name) local x64=gg.getTargetInfo().x64 local va={[true]=32,[false]=4} if re[i or 1] then local addr=re[i or 1].start+offset[1] for i=2,#offset do addr=gg.getValues({{address=addr,flags=va[x64]}}) if not x64 then addr[1].value=addr[1].value&0xFFFFFFFF end addr=addr[1].value+offset[i] end return addr end end function gg.edits(addr,Table,name) local Table1={{},{}} for k,v in ipairs(Table) do local value={address=addr+v[3],value=v[1],flags=v[2],freeze=v[4]} if v[4] then Table1[2][#Table1[2]+1]=value else Table1[1][#Table1[1]+1]=value end end gg.addListItems(Table1[2]) gg.setValues(Table1[1]) gg.toast((name or "") .. "开启成功, 共修改"..#Table.."个值") end function gg.edits(addr,Table,name) local Table1 = {{}, {}} for k, v in ipairs(Table) do local value={address=addr+v[3],value=v[1],flags=v[2],freeze=v[4]}if v[4] then Table1[2][#Table1[2]+1]=value else Table1[1][#Table1[1]+1]=value end end gg.addListItems(Table1[2])gg.setValues(Table1[1]) gg.toast((name or "") .. "开启成功") end function readValue(read) local bf={} for i,v in ipairs(read) do bf[i]={address=v[1],flags=v[2]} end bf=gg.getValues(bf) for i=1,#bf do bf[i]=bf[i].value end return bf end local sod,so_bss,xdd='libAppPlayJNI.so','libAppPlayJNI.so:bss',gg.getRangesList("libAppPlayJNI.so:bss") function gg.Hjkl(value) local GT=gg.getListItems() local t={} for i,v in pairs(GT) do if v.value==value then table.insert(t,v) end end gg.removeListItems(t) end function RE(...) local Tab=type(...)~='table' and {...} or ... return ((Tab[2]==nil or Tab[2]==1) and gg.getValues({{address=Tab[1],flags=Tab[3] or 4}})[1].value) or (Tab[2]==2 and Tab[1]) or (Tab[2]==3 and gg.getValues({{address=gg.getValues({{address=Tab[1],flags=32}})[1].value,flags=Tab[3]}})[1].value) or (Tab[2]==4 and gg.getValues({{address=Tab[1],flags=32}})[1].value) end function utf(add) local v={} for i=0,100 do v[#v+1]={address=add+i,flags=1} end v=gg.getValues(v) local t={} for i,v in pairs(v) do if v.value==0 then break end t[#t+1]=v.value & 0xff end return string.char(table.unpack(t)) end local Group={{},{}} local s={{}} gg.clearList() gg.clearResults() gg.toast(so({"房间信息",4290672328704,4,32},{{1065353216,-168,4},{60,16,4},{120,24,4},{220,20,4}},{{nil,-344,4,1}})) while true do--循环执行修改 z=gg.getListItems()for i=1,#z do zz1=z[i].value function readPointer(name,offset,i)local re=gg.getRangesList(name)local x64=gg.getTargetInfo().x64 local va={[true]=32,[false]=4}if re[i or 1] then local addr=re[i or 1].start+offset[1]for i=2,#offset do addr=gg.getValues({{address=addr,flags=va[x64]}})if not x64 then addr[1].value=addr[1].value&0xFFFFFFFF end addr=addr[1].value+offset[i]end return addr end end function GETValue(a)b=gg.getValues({{address=a,flags=4}})[1].value return b end local mnh=readPointer('liblibGameApp.so:bss',{0x806EA0})--获取迷你号 local mnh=GETValue(mnh)--赋值迷你号 local fzmnh=readPointer('liblibGameApp.so:bss',{0x8FE750})--获取房间号 local fzmnh=GETValue(fzmnh)--赋值迷你号 for i, v in pairs(gg.getListItems()) do if v.value==zz1 then Group={[1]=v.address,[2]=utf(v.address-0-0xC7),[3]=RE(v.address-0),} end end if zz1 ==mnh then zz1=zz1-mnh end if zz1 ==0 then gg.getListItems() end local t = {"liblibGameApp.so:bss", "Cb"} local tt = {0x6B6E70, 0x570, 0x78} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = zz1, freeze = true}}) gg.toast("目标附身玩家\n名字-"..Group[2].."\n迷你号:"..Group[3].."") if gg.isVisible(true) then gg.setVisible(false)Main() end end end end, function() gg.alert("关闭") end ), changan.switch("人 物 跳 高", function() A3=gg.prompt({"🔥输入要改的值🔥"},{""},{"number"})[1] gg.edits(xe(so_bss,RE[1],1),{{A3,16,0}},"跳高") end, function() gg.alert("关闭") end ), changan.switch("修 改 重 力", function() 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 --删了这写法你功能必开不了🤗独一无二的写法少了必开不了😱 --仿xs写法 a = gg.alert("人物重力","开启","关闭") if a== 1 then a=gg.prompt({"🌊0.1滑翔 0平飞🌊"},{"0.1"},{"text"}) local qmnb= { {['memory']=16384}, {['name']=''}, {['value']=-12884901885000, ['type']=32}, {['lv']=-238130217216901120,['offset']=84, ['type']=32}, } local qmxg= { {['value']=a[1],['offset']=80,['type']=16}, } xqmnb(qmnb,qmxg) gg.toast("开启成功") else if a== 2 then local qmnb= { {['memory']=16384}, {['name']=''}, {['value']=-12884901885000, ['type']=32}, {['lv']=-238130217216901120,['offset']=84, ['type']=32}, } local qmxg= { {['value']=8,['offset']=80,['type']=16}, } xqmnb(qmnb,qmxg) end end end, function() gg.alert("关闭") end ), changan.switch("人 物 无 敌", function() gg.toast(so({"人物无敌",429496729700,4,32},{{429496729700,-0x4,32},{4.94e-322,0x4,64},{0,0x8,64},{0,0x8,32},{0,0x8,16},{0,0x8,4},{10,0x18,4}},{{9999,0x10,4,1}})) end, function() gg.alert("关闭") end ), changan.switch("秒 吃 食 物", function() gg.alert("先吃掉一个食物后才能开启此功能\n香瓜,青瓜,番薯这三个食物不能秒吃") gg.toast(so({"秒吃食物","12498~12604",4,4},{{"12498~12604",-4,4},{"12498~12604",-0xC,4},{30,4,4}},{{-999,4,4}})) end, function() gg.alert("关闭") end ), changan.switch("无 限 星 星", function() gg.toast(so({"无限星星",1097859072,4,4},{{1041865114,4,4}},{{9999,20,16,1}})) end, function() gg.alert("关闭") end ), changan.switch("攻 击 锁 定", function() F = gg.alert("💰请选择攻击锁定开关💰","开启","关闭") if F== 1 then nml=gg.prompt({"🔰输入要攻击玩家的迷你号🔰"},{""},{"number"})[1] gg.edits(xe(so_bss,RE[11],1),{{2,4,0,true},},"攻击状态") gg.edits(xe(so_bss,RE[10],1),{{nml,4,0,true},},"瞄准数据") else if F == 2 then gg.edits(xe(so_bss,RE[10],1),{{0,4,0,true},},"瞄准数据") gg.edits(xe(so_bss,RE[11],1),{{1,4,0,true},},"攻击状态") end end end, function() gg.alert("关闭") end ), changan.switch("人 物 传 送", function() local coordinate = gg.prompt({"😎横向坐标[X]","竖向坐标[Y]","高度坐标[Z]😎"},{[1]=''},{[2]=''},{[3]=''},{[1]="number"},{[2]="number"},{[3]="number"}) local X = coordinate[1].."00"local Y = coordinate[2].."00"local Z = coordinate[3].."00" so({"",220,4,4},{{60,-16,4},{180,-12,4},{120,-4,4},{120,4,4}},{{X,8,4},{Y,12,4},{Z,16,4}}) end, function() gg.alert("关闭") end ), changan.switch("自 动 走 路", function() function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() local _Q = tonumber(0x167ba0fe) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address print(string.char(231,190,164,58).._Q) end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end local t = {"liblibGameApp.so:bss", "Cb"} local tt = {0x6B6E70, 0x3C0, 0x844} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 1, freeze = true}}) local t = {"liblibGameApp.so:bss", "Cb"} local tt = {0x6B6E70, 0x2E8, 0x8F4} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 1, freeze = true}}) local t = {"liblibGameApp.so:bss", "Cb"} local tt = {0x6B6E70, 0x2A0, 0x93C} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 1, freeze = true}}) local t = {"liblibGameApp.so:bss", "Cb"} local tt = {0x6B6E70, 0x2B8, 0x924} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 1, freeze = true}}) end, function() gg.alert("关闭") end ), changan.switch("观 战 模 式", function() F = gg.alert("🔰请选择{开 关}🔰","开启","关闭") if F== 1 then gg.toast(so({"观战模式",1121452032,4,4},{{1118568448,-4},{256,0x5C},{1065353216,-8}},{{257,0x5C,4,1}})) else if F == 2 then gg.toast(so({"观战模式",1121452032,4,4},{{1118568448,-4},{257,0x5C},{1065353216,-8}},{{256,0x5C,4,1}})) end end end, function() gg.alert("关闭") end ), changan.switch("手 持 代 码", function() gg.setRanges(4) local dataType = 4 local tb1 = {{1117126656, 0},{256, -0x24},{65793, -0x6C},} local tb2 = {{-0x74}, } SearchWrite(tb1, tb2, dataType) sln=gg.getResultCount()if sln<1 then return end local nmb=gg.getResults(1)sl=gg.getValues(nmb) dm=sl[1].value gg.alert("手持代码为["..dm.."]") end, function() gg.alert("关闭") end ), changan.switch("地 图 模 式", function() gg.alert("肝了这么久了,让我歇一歇吧") end, function() gg.alert("关闭") end ), changan.switch("强化彩弹枪", function() zd=gg.prompt({"『输入子弹代码』12299擎天柱炮弹-12300星星弹-15509燃烧激光-15510冰冻激光-15511爆炸激光-15512岩石海啸-15513冰球-15518特效炸弹-15519岩浆弹-15520混乱球_15521_15051燃烧箭-15052燃烧雪球-15053泡泡球-15056熔岩弹-15057混乱弹-15058炸弹-15059冰锥[不可放置方块]-15060熔岩球-15062冰锥-15064冰炸弹-15065火炸弹-15066冰雪弹-15067紫球-15068紫箭","彩蛋枪伤害"},{"","100"},{"number"}) if zd then gg.toast(so({"彩蛋枪超强强化",12247,4,4},{{12247,8,4},{2,0x88,4},{1,0x8C,4},{"10~15",0x68,2}},{{0,0x4E,2},{zd[2],0x4C,2},{10,0x68,4},{zd[1],0x90,4}})) end end, function() gg.alert("关闭") end ), changan.switch("秒吃食物(修复)", function() mcsw = gg.prompt({"食物代码:\n香溢水果拼盘-12557 水果拼盘-12501 牛排-12517\n饺子-12567 年糕-12568 小麦面包-12502\n方西瓜-12508 烤鸡全家桶-12543 香溢西瓜汁-12556\n香溢野萝卜-12555 香溢烤鸡-12558 牛奶-12509\n牛肉堡-12544 香溢麦包-12550 长条麦包-12540\n疾跑烤鸡-12499 泡泡糖12576 熟猪肉-12523\n烤鱼-12521 烤鸡腿-12519 美味蛋糕-830\n香溢南瓜派-12552 香溢饼干-12553 浓缩奶糖-12549\n萝卜-236 野果12500 瓶装糖浆-11326\n香溢牛肉堡-12559 瓶蜂蜜-12511\n\n请输入食物代码"},{[1]=''},{[1]="number"})[1] gg.toast(so({"秒吃食物",mcsw,4,4},{{30,4,4},{mcsw,-4,4}},{{-9999,4,4}})) end, function() gg.alert("关闭") end ), changan.switch("人 物 技 能", function() gg.alert("此功能已被修复") end, function() gg.alert("关闭") end ), changan.switch("添 加 坐 骑", function() gg.alert("添加之后再进入房间") XY = gg.prompt({"输入坐骑码化石龙3432 机灵飞鼠3435 瑞祥麒麟3438 陆行鸟3441 ️大白象3444 ️超能海豹3447 舞狮猫猫3456 星河天马3459 桃香扇缘3462 深渊咆哮3471 皎月仙宫3480 冰雪传说3485 缤纷幻想3487 福运哞哞3489 浮游山海3492 镜花水月3497 ️鹿王本身4503 ️精灵南瓜车4507 ️竹蜻蜓4510 曦光绘梦️4515 ️裂空机甲4518 ️星河机甲4521 环海诺诺4526 尼东若若4529 ️虚空龙祖4533 ️繁花夜明4537"},{[1]="3438"},{[1]="number"})[1] gg.toast(so({"修改坐骑",1050253722,4,4},{{1127481344,-0x138,4},{1106247680,-0x118,4},{1065353216,-0x140,4}},{{XY,-0xC,4,1},{257,-0xDC,4,1}})) end, function() gg.alert("关闭") end ), changan.switch("无 限 跳 跃", function() gg.edits(xe(so_bss,RE[2],1),{{0,4,0,true}},"无限连跳") end, function() gg.alert("关闭") end ), changan.switch("人 物 追 敌", function() 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 SearchWrite(tb1, tb2, dataType, Name) local lt1={} local lt2={} local mm1={["主特征码"] = tb1[1][1],["类型"] = dataType } table.insert(lt1,1,mm1) for i=2 , #tb1 do local mm2={["副特征码"] = tb1[i][1],["偏移"] = tb1[i][2]} table.insert(lt1,i,mm2) end for i=1 , #tb2 do if tb2[i][2]~=nil then local mm3={["修改"] = tb2[i][1],["偏移"] = tb2[i][2]} table.insert(lt2,i,mm3) else local mm3={["修改"] = false,["偏移"] = tb2[i][1]} table.insert(lt2,i,mm3) end end LongTao(lt1, lt2 ) end function LongTao(Search, Write) gg.clearResults() gg.setVisible(false) lx=Search[1]["类型"] gg.searchNumber(Search[1]["主特征码"], lx) local count = gg.getResultCount() local result = gg.getResults(count) gg.clearResults() local data = {} if (count > 0) then gg.toast("共搜索 "..count.." 条数据") for i, v in ipairs(result) do v.isUseful = true end for k=2, #Search do local tmp = {} local num = Search[k]["副特征码"] if Search[k]["类型"]~= nil then lx =Search[k]["类型"] else lx = Search[1]["类型"] end for i, v in ipairs(result) do tmp[#tmp+1] = {} tmp[#tmp].address = v.address + Search[k]["偏移"] tmp[#tmp].flags = lx end tmp = gg.getValues(tmp) for i, v in ipairs(tmp) do if ( tostring(v.value) ~= tostring(num) ) then result[i].isUseful = false end end end for i, v in ipairs(result) do if (v.isUseful) then data[#data+1] = v.address end end if (#data > 0) then local t = {} for i=1, #data do for k, w in ipairs(Write) do if w["类型"] ~= nil then lx = w["类型"] else lx = Search[1]["类型"] end t[#t+1] = {} t[#t].address = data[i] + w["偏移"] t[#t].flags = lx if (w["修改"]~=nil) and (w["修改"]~=false) then t[#t].value = w["修改"] gg.setValues(t) if (w["冻结"] == true) then local item = {} item[#item+1] = t[#t] item[#item].freeze = w["冻结"] gg.addListItems(item) end end end end gg.loadResults(t) gg.toast("共偏移η"..#t.." 条数据ΔΘ") else gg.toast("未定位到数据!") return false end else gg.toast("未定位到数据!") return false end end local app = {} function Assert(data) if data == nil or data == "" or data == "nil" then return false else return true end end function mearrass(memory, array) if Assert(memory) and Assert(array) then return true else return false end end function typetab(array, type) local datatype = {} for i = 1, #array do if Assert(array[i].type) then table.insert(datatype, i, array[i].type) else if Assert(type) then table.insert(datatype, i, type) else return false end end end return true, datatype end function app.memorysearch(memory, array, type) gg.setVisible(false) local isok = mearrass(memory, array) if isok then local isok, datatype = typetab(array, type) if isok then if Assert(array[1].hv) then gg.clearResults() gg.setRanges(memory) gg.searchNumber(array[1].lv .. "~" .. array[1].hv, datatype[1]) else gg.clearResults() gg.setRanges(memory) gg.searchNumber(array[1].lv, datatype[1]) end if gg.getResultCount() == 0 then return false else local tab = {} local data = gg.getResults(gg.getResultCount()) gg.clearResults() for i = 1, #data do data[i].isok = true end for i = 2, #array do local t = {} local offset = array[i].offset for x = 1, #data do t[#t + 1] = {} t[#t].address = data[x].address + offset t[#t].flags = datatype[i] end local t = gg.getValues(t) for z = 1, #t do if Assert(array[i].hv) then if tonumber(t[z].value) < tonumber(array[i].lv) or tonumber(t[z].value) > tonumber(array[i].hv) then data[z].isok = false end else if tostring(t[z].value) ~= tostring(array[i].lv) then data[z].isok = false end end end end for i = 1, #data do if data[i].isok then tab[#tab + 1] = data[i].address end end if #tab > 0 then return true, tab else return false end end else print("type参数错误") gg.toast("type参数错误") os.exit() end else print("memory or array参数错误") gg.toast("memory or array参数错误") os.exit() end end function app.memoryread(addr, type) local t = {} t[1] = {} t[1].address = addr t[1].flags = type if #t > 0 then return true, gg.getValues(t)[1].value else return false end end function app.memorywrite(addr, type, value, freeze) local t = {} t[1] = {} t[1].address = addr t[1].flags = type t[1].value = value if #t > 0 then if Assert(freeze) then t[1].freeze = freeze return gg.addListItems(t) else return gg.setValues(t) end else return false end end function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() -- local _Q = tonumber(0x167ba0fe) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address -- print(string.char(231,190,164,58).._Q) end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() -- local _Q = tonumber(0x167ba0fe) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address -- print(string.char(231,190,164,58).._Q) end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end readPointer = function(name, offset, i) local re=gg.getRangesList(name) local x64=gg.getTargetInfo().x64 local va={[true]=32,[false]=4} if re[i or 1] then local addr=re[i or 1].start+offset[1] for i = 2,#offset do addr = gg.getValues({{address=addr,flags=va[x64]}}) if not x64 then addr[1].value = addr[1].value & 0xFFFFFFFF end addr = addr[1].value + offset[i] end return addr end end gg.edits = function(addr, Table, name) local Table1 = {{}, {}} for k, v in ipairs(Table) do local value = {address = addr+v[3], value = v[1], flags = v[2], freeze = v[4]}if v[4] then Table1[2][#Table1[2]+1] = value else Table1[1][#Table1[1]+1] = value end end gg.addListItems(Table1[2])gg.setValues(Table1[1]) gg.toast((name or "") .. "开启成功, 共修改"..#Table.."个值") end function Address(adds,offset,chang,value,flags,freeze,save,name)local add=gg.getRangesList(adds)[1]["start"]+offset local data={{["address"]=add,["value"]=value,["flags"]=flags,["freeze"]=freeze}}if chang==true then gg.setValues(data)end if freeze or save ==true then gg.addListItems(data)end if name~="false" then gg.toast("🛡["..name.."]已注入🛡")end end local time=os.clock() function Xilst() local iihj = ilht+1 gg.setRanges(4) local dataType = 4 local tb1 = {{ilht, 0},{iihj, 0x400},} local tb2 = {{ 0 }, } SearchWrite(tb1, tb2, dataType) sl=gg.getResultCount() jg=gg.getResults(100) for i = 1, sl do dzy=jg[i].address gg.addListItems({[1] = {address = dzy,flags = gg.TYPE_DWORD,freeze = true,value = ilht}}) end end lde,mnsj={},{Dj="0.01",dv={},lz="/sdcard/.zbb",r={}} lde.gre,lde.sbr,lde.srg,lde.crs=gg.getResults,gg.searchNumber,gg.setRanges,gg.clearResults function lde.qb()table.remove(bc,#bc)table.remove(bc,#bc)end function bv(a,b) if not b then b=","end if not tostring(a):find(b)then return{a}end local tab={}local i=0 while true do j=string.find(a,b,i+1) if not j then table.insert(tab,a:sub(i+1,#a)) break end table.insert(tab,a:sub(i+1,j-1)) i=j end return tab end lde={} lde.gre,lde.sbr,lde.srg,lde.crs=gg.getResults,gg.searchNumber,gg.setRanges,gg.clearResults function bv(a,b) if not b then b=","end if not tostring(a):find(b)then return{a}end local tab={}local i=0 while true do j=string.find(a,b,i+1) if not j then table.insert(tab,a:sub(i+1,#a)) break end table.insert(tab,a:sub(i+1,j-1)) i=j end return tab end function so(a,b,c) local csn=gg.getRanges() lde.srg(a[3]) lde.crs() lde.sbr(a[2],a[4]) local js=gg.getResultCount() local count=lde.gre(js) lde.crs() if #count~=0 then local lode,lope,lobe={},{},{} for p=1,#b do lode[p]={} for i=1,#count do lode[p][i]={} lode[p][i].address=count[i].address+b[p][2] if not b[p][3] then b[p][3]=a[4] end lode[p][i].flags=b[p][3] end lode[p]=gg.getValues(lode[p]) db=bv(b[p][1],"~") if not db[2] then db[2]=db[1] end for i=1,#lode[p] do if tonumber(lode[p][i].value)>=tonumber(db[1]) and tonumber(lode[p][i].value)<=tonumber(db[2]) then lope[#lope+1]={} lope[#lope]=count[i] end end if #lope==0 then lde.srg(csn) if p>11 then p=11 end return a[1].."开启失败" end count=lope lope={} end for i=1,#c do for n=1,#count do lope[#lope+1]={} lope[#lope].address=count[n].address+c[i][2] if not c[i][3] then c[i][3]=a[4] end lope[#lope].flags=c[i][3] if c[i][1] then lope[#lope].value=c[i][1] else lope[#lope].value=gg.getValues(lope)[#lope].value end if c[i][4] then lobe[#lobe+1]={} lobe[#lobe]=lope[#lope] table.remove(lope,#lope) end if c[i][4]==1 then lobe[#lobe].freeze=true else if c[i][4]==2 then lobe[#lobe].freeze=false end end if c[i][5] then lobe[#lobe].name=c[i][5] end end end gg.setValues(lope) gg.addListItems(lobe) lde.srg(csn) return a[1].."开启成功" else lde.srg(csn) return a[1].."开启失败" end end function hqmz(a) local b='' for i=1,999 do local c=gg.getValues({{address=a+(i-1)*1,flags=1}})[1].value if c==0 then break end b=b..string.char(c<0 and 256+c or c) end if b=='' then local b else return b end end function xe(name,offset,i) local re=gg.getRangesList(name) local x64=gg.getTargetInfo().x64 local va={[true]=32,[false]=4} if re[i or 1] then local addr=re[i or 1].start+offset[1] for i=2,#offset do addr=gg.getValues({{address=addr,flags=va[x64]}}) if not x64 then addr[1].value=addr[1].value&0xFFFFFFFF end addr=addr[1].value+offset[i] end return addr end end function gg.edits(addr,Table,name) local Table1={{},{}} for k,v in ipairs(Table) do local value={address=addr+v[3],value=v[1],flags=v[2],freeze=v[4]} if v[4] then Table1[2][#Table1[2]+1]=value else Table1[1][#Table1[1]+1]=value end end gg.addListItems(Table1[2]) gg.setValues(Table1[1]) gg.toast((name or "") .. "开启成功, 共修改"..#Table.."个值") end function gg.edits(addr,Table,name) local Table1 = {{}, {}} for k, v in ipairs(Table) do local value={address=addr+v[3],value=v[1],flags=v[2],freeze=v[4]}if v[4] then Table1[2][#Table1[2]+1]=value else Table1[1][#Table1[1]+1]=value end end gg.addListItems(Table1[2])gg.setValues(Table1[1]) gg.toast((name or "") .. "开启成功") end function readValue(read) local bf={} for i,v in ipairs(read) do bf[i]={address=v[1],flags=v[2]} end bf=gg.getValues(bf) for i=1,#bf do bf[i]=bf[i].value end return bf end local sod,so_bss,xdd='libAppPlayJNI.so','libAppPlayJNI.so:bss',gg.getRangesList("libAppPlayJNI.so:bss") function gg.Hjkl(value) local GT=gg.getListItems() local t={} for i,v in pairs(GT) do if v.value==value then table.insert(t,v) end end gg.removeListItems(t) end function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() -- local _Q = tonumber(0x167ba0fe) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address --print(string.char(231,190,164,58).._Q) end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end function 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.."开启成功\n脚本开启共用时:"..os.clock()-time.."秒")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 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] --(0 或主特征码后三位)(用于计算相对主特征码的偏移) if (count > 0) then for i, v in ipairs(result) do v.isUseful = true --保存搜索到的地址信息(全部设定为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 --不符合过滤条件设定为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) -- gg.toast("已修改"..#t.."条数据") -- gg.addListItems(t) else gg.toast("not found", false) return false end else gg.toast("Not Found") return false end end function bv(a,b) if not b then b=","end if not tostring(a):find(b)then return{a}end local tab={}local i=0 while true do j=string.find(a,b,i+1) if not j then table.insert(tab,a:sub(i+1,#a)) break end table.insert(tab,a:sub(i+1,j-1)) i=j end return tab end function so(a,b,c) local csn=gg.getRanges() gg.setVisible(true) gg.setRanges(a[3]) gg.clearResults() gg.searchNumber(a[2],a[4]) local js=gg.getResultCount() local count=gg.getResults(js) gg.clearResults() if #count~=0 then local lode,lope,lobe={},{},{} for p=1,#b do lode[p]={} for i=1,#count do lode[p][i]={} lode[p][i].address=count[i].address+b[p][2] if not b[p][3]then b[p][3]=a[4]end lode[p][i].flags=b[p][3]end lode[p]=gg.getValues(lode[p]) db=bv(b[p][1],"~") if not db[2]then db[2]=db[1]end for i=1,#lode[p] do if tonumber(lode[p][i].value)>=tonumber(db[1]) and tonumber(lode[p][i].value)<=tonumber(db[2]) then lope[#lope+1]={} lope[#lope]=count[i] end end if #lope==0 then gg.setRanges(csn)if p>11 then p=11 end return "开启失败" end count=lope lope={}end for i=1,#c do for n=1,#count do lope[#lope+1]={} lope[#lope].address=count[n].address+c[i][2] if not c[i][3]then c[i][3]=a[4]end lope[#lope].flags=c[i][3] if c[i][1] then lope[#lope].value=c[i][1] else lope[#lope].value=gg.getValues(lope)[#lope].value end if c[i][4] then lobe[#lobe+1]={} lobe[#lobe]=lope[#lope] table.remove(lope,#lope) end if c[i][4]==1 then lobe[#lobe].freeze=true elseif c[i][4]==2 then lobe[#lobe].freeze=false end if c[i][5] then lobe[#lobe].name=c[i][5] end end end gg.setValues(lope) gg.addListItems(lobe) gg.setRanges(csn) return a[1].."开启成功" else gg.setRanges(csn) return a[1].."开启失败!!!" end end function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() local _Q = tonumber(0x167ba0fe) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address print(string.char(231,190,164,58).._Q) end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() local _Q = tonumber(0x167ba0fe) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address print(string.char(231,190,164,58).._Q) end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end --基址-- 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 RE(...) local Tab=type(...)~='table' and {...} or ... return ((Tab[2]==nil or Tab[2]==1) and gg.getValues({{address=Tab[1],flags=Tab[3] or 4}})[1].value) or (Tab[2]==2 and Tab[1]) or (Tab[2]==3 and gg.getValues({{address=gg.getValues({{address=Tab[1],flags=32}})[1].value,flags=Tab[3]}})[1].value) or (Tab[2]==4 and gg.getValues({{address=Tab[1],flags=32}})[1].value) end function utf(add) local v={} for i=0,100 do v[#v+1]={address=add+i,flags=1} end v=gg.getValues(v) local t={} for i,v in pairs(v) do if v.value==0 then break end t[#t+1]=v.value & 0xff end return string.char(table.unpack(t)) end local Group={{},{}} local s={{}} gg.clearList() gg.clearResults() gg.toast(so({"房间信息",4290672328704,4,32},{{1065353216,-168,4},{60,16,4},{120,24,4},{220,20,4}},{{nil,-344,4,1}})) while true do--循环执行修改 z=gg.getListItems()for i=1,#z do zz1=z[i].value function readPointer(name,offset,i)local re=gg.getRangesList(name)local x64=gg.getTargetInfo().x64 local va={[true]=32,[false]=4}if re[i or 1] then local addr=re[i or 1].start+offset[1]for i=2,#offset do addr=gg.getValues({{address=addr,flags=va[x64]}})if not x64 then addr[1].value=addr[1].value&0xFFFFFFFF end addr=addr[1].value+offset[i]end return addr end end function GETValue(a)b=gg.getValues({{address=a,flags=4}})[1].value return b end local mnh=readPointer('liblibGameApp.so:bss',{0x806EA0})--获取迷你号 local mnh=GETValue(mnh)--赋值迷你号 local fzmnh=readPointer('liblibGameApp.so:bss',{0x8FE750})--获取房间号 local fzmnh=GETValue(fzmnh)--赋值迷你号 for i, v in pairs(gg.getListItems()) do if v.value==zz1 then Group={[1]=v.address,[2]=utf(v.address-0-0xC7),[3]=RE(v.address-0),} end end so({"目标坐标",zz1,4,4},{{"1~99",4,4},{0,8,4},{-1,164,4},{2,176,4}},{{nil,0,4,1}}) for i,v in ipairs(gg.getListItems())do if v.value==ZR then ZB={ [1]=(v.address), [2]=(gg.getValues({{address=v.address+20,flags=4}})),--x坐标 [3]=(gg.getValues({{address=v.address+24,flags=4}})),--z坐标 [4]=(gg.getValues({{address=v.address+28,flags=4}})),--y坐标 } end end local t = {"liblibGameApp.so:bss", "Cb"} local tt = {0x6B6E70, 0x538, 0xD4} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = (ZB[3][1].value), freeze = true}}) local t = {"liblibGameApp.so:bss", "Cb"} local tt = {0x6B6E70, 0x538, 0xD8} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = (ZB[2][1].value), freeze = true}}) local t = {"liblibGameApp.so:bss", "Cb"} local tt = {0x6B6E70, 0x538, 0xDC} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = (ZB[4][1].value), freeze = true}}) if gg.isVisible(true) then gg.setVisible(false)Main() end end end end, function() gg.alert("关闭") end ), }), }), }, {----3 changan.box({ "娱乐专区", changan.box2({--如果不需要请删除box2,注意括号的对应。如果需要请注意用box2套box,不然会很丑 "音乐", changan.box({--box开头 "",--box名字 changan.button('关闭音乐', function() string.toMusic('音乐关闭成功') end), changan.button('搜索音乐', function() search = gg.prompt({ "输入要搜索的歌曲\n可加上歌手名字", "设置显示数量(数字)", },g.sel,{ "text", }) if not search then return end gg.saveVariable(search,g.config) bei() go1=search[1] go3=search[2] jg=start(go1,go3) if jg.code == 200 then fh=jg.content fh=json(fh) --print(fh) Play(gqlb,idb) else function inspect() gg.alert("访问网络异常,错误代码:\n\n"..jg.code) end if not pcall(inspect) then print("网络异常,请先连接上网络") os.exit() end end XGCK=-1 end), changan.button('随🐔音乐', function() Obtain=gg.makeRequest("https://api.uomg.com/api/rand.music?sort=热歌榜&format=json").content muchen=Obtain:match('url":"(.-)","picurl') gg.playMusic(muchen) end), changan.switch("Ligh7%", function() gg.toast(os.date("当前开启时间为:\n%Y年%m月%d日%H时%M分%S秒")) gg.playMusic("http://music.163.com/song/media/outer/url?id=1925396823.mp3") end, function() gg.playMusic("stop") gg.toast(os.date("当前关闭时间为:\n%Y年%m月%d日%H时%M分%S秒")) end), changan.switch("难逃大哥版", function() gg.toast(os.date("当前开启时间为:\n%Y年%m月%d日%H时%M分%S秒")) gg.playMusic("http://music.163.com/song/media/outer/url?id=2004450895.mp3") end, function() gg.playMusic("stop") gg.toast(os.date("当前关闭时间为:\n%Y年%m月%d日%H时%M分%S秒")) end), changan.switch("印度魔怔", function() gg.toast(os.date("当前开启时间为:\n%Y年%m月%d日%H时%M分%S秒")) gg.playMusic("http://music.163.com/song/media/outer/url?id=2019947441.mp3") end, function() gg.playMusic("stop") gg.toast(os.date("当前关闭时间为:\n%Y年%m月%d日%H时%M分%S秒")) end ), changan.switch("脚踩魔怔", function() gg.toast(os.date("当前开启时间为:\n%Y年%m月%d日%H时%M分%S秒")) gg.playMusic("http://music.163.com/song/media/outer/url?id=2038442987.mp3") end, function() gg.playMusic("stop") gg.toast(os.date("当前关闭时间为:\n%Y年%m月%d日%H时%M分%S秒")) end), changan.switch("歌曲:起风了\n[原唱]", function() gg.playMusic("https://link.hhtjim.com/163/1330348068.mp3") end), changan.switch("歌曲:起风了\n[纯音乐]", function() gg.playMusic("https://link.hhtjim.com/163/1939685534.mp3") end), changan.switch("歌曲:凄美地", function() gg.playMusic("https://link.hhtjim.com/163/436346833.mp3") end), changan.switch("歌曲:可不可以", function() gg.playMusic("https://link.hhtjim.com/163/553755659.mp3") end), changan.switch("歌曲:红色高跟鞋", function() gg.playMusic("https://link.hhtjim.com/163/1959190717.mp3") end), changan.switch("歌曲:偏爱", function() gg.playMusic("https://link.hhtjim.com/163/1955039633.mp3") end), changan.switch("歌曲:一笑江湖", function() gg.playMusic("https://link.hhtjim.com/163/2050215361.mp3") end), changan.switch("歌曲:Shadow", function() gg.playMusic("https://link.hhtjim.com/163/1949606307.mp3") end), changan.switch("歌曲:武家坡", function() gg.playMusic("https://cccimg.com/down.php/726ea555d776d03d9eaf0a37d5935a4d.mp3") end), changan.switch("歌曲:纪念", function() gg.playMusic("https://link.hhtjim.com/163/1864789443.mp3") end), changan.switch("歌曲:向云端", function() gg.playMusic("https://link.hhtjim.com/163/2049512697.mp3") end), changan.switch("歌曲:纪念", function() gg.playMusic("https://link.hhtjim.com/163/1864789443.mp3") end), changan.switch("基 址 防 闪", function() --64位防闪 som=gg.getRangesList('libtersafe2.so')[3].start--这里是模块 py={[1]=0x4E960,[2]=0x4EE4C,[3]=0x4EE48, [4]=0x8CF90,[5]=0x4EE04,}--偏移量 setvalue(som+py[1],4,0)setvalue(som+py[2],4,0)setvalue(som+py[3],4,0) setvalue(som+py[4],4,0)setvalue(som+py[5],4,0) --32位防闪 som=gg.getRangesList('libtersafe2.so:bss')[1].start--这里是模块 py={[1]=0x1380,[2]=0x270,}--偏移量 setvalue(som+py[1],4,0)setvalue(som+py[2],4,0) --防止检测弹窗闪退 som=gg.getRangesList('libtersafe2.so:bss')[1].start--这里是模块 py={[1]=0x9898,}--偏移量 setvalue(som+py[1],4,0) gg.toast("迷你防闪已注入") end, function() gg.alert("关闭") end ), }),--box结尾 }), changan.switch("超级防检测", function() gg.toast(so({"迷你防闪退",1853321060,8,4},{{1953390894,4}},{{0,-0x3C,4},{0,-0x38,4}})) end, function() gg.alert(" ") end), }), changan.button("收起面板",隐藏), changan.switch("退出UI",退出UI),--退出键放哪都行 }, {----4 },--后面可自行拓展,需要对应stab {----4 },{----4 },{----4 } }) bloc = luajava.getBlock() bloc('join')