do if type(getrlyunyz) ~= 'function' then gg.alert('请使用RLGG执行') os.exit() return end local info = { example_version = '1.0.3', name = '神天过检', appid = '95230', appkey = '5632NgU67ZR9GG19', rc4key = 'Mmu373n73u3RR8D3', version = '1.0', mi_type = '3' } local rlyunyz = getrlyunyz(info) local ret = rlyunyz.start() if not ret or not isTable(ret) or ret.sign ~= '85e7866da6176e355f5e03d629f9e696' then os.exit() return end end -- 把以上代码复制到你脚本最前面即可 gg.alert('RLGG') draw.setSize(30)draw.setStyle('填充') vibra = context:getSystemService(Context.VIBRATOR_SERVICE) 黑川巳一配置文件3 =io.open('/sdcard/黑川巳一配置文件/图片/黑川巳一配置文件check开','r') if 黑川巳一配置文件3 == nil then download("http://jiami.guimei.work/a/1703072780.png", "/sdcard/黑川巳一配置文件/图片/黑川巳一配置文件check开" ) --方持续添加你要下载的东西 else --不用添加 end 黑川巳一配置文件4 =io.open('/sdcard/黑川巳一配置文件/图片/黑川巳一配置文件check关','r') if 黑川巳一配置文件3 == nil then download("http://jiami.guimei.work/a/1703090528.png", "/sdcard/黑川巳一配置文件/图片/黑川巳一配置文件check关" ) --方持续添加你要下载的东西 else --不用添加 end function panduan(rec ) fille , err = io.open(rec ) if fille == nil then return false else return true end end function 获取图片(txt) ntxt=string.sub(string.gsub(txt,"/","."),-10,-1) if string.find(tostring(txt),"http")~=nil then if panduan("/sdcard/黑川巳一配置文件/图片/"..ntxt)==false then file.download(txt,"/sdcard/黑川巳一配置文件/图片/"..ntxt) end txt="/sdcard/黑川巳一配置文件/图片/"..ntxt --txt="https://www.baidu.com/img/flexible/logo/pc/result.png" end return luajava.getBitmapDrawable(txt) end function pdcf(lujing ) rec = "/storage/emulated/0/黑川巳一配置文件/配置文件/"..lujing fille , err = io.open(rec ) if fille == nil then return false else return true end end sleep = gg.sleep function read(fileName ) f = assert(io.open(fileName , 'r' ) ) content = f : read("*all" ) f : close() return content end function wtcf(lujing , neirong ) write("/storage/emulated/0/黑川巳一配置文件/配置文件/"..lujing , neirong ) end function rdcf(lujing ) return read("/storage/emulated/0/黑川巳一配置文件/配置文件/"..lujing ) end function checkimg(tmp ) if panduan("/sdcard/黑川巳一配置文件/图片/"..tmp ) ~= true then gg.toast("正在下载资源"..tmp.."\n请耐心等待" ) download("https://escape2020-1303126286.cos.ap-shenzhen-fsi.myqcloud.com/"..tmp , "/sdcard/黑川巳一配置文件/图片/"..tmp ) end end 黑川巳一配置文件 = { } 黑川巳一配置文件2 = { } local 黑川巳一配置文件 = 黑川巳一配置文件 local android = import('android.*' ) function write(fileName , content ) -- f = assert( io.open( fileName, 'w')) f:write( content ) f:close() if file.write(fileName , content ) == false then end end function panduan(rec ) fille , err = io.open(rec ) if fille == nil then return false else return true end end function pdcf(lujing ) rec = "/sdcard/黑川巳一配置文件/配置文件/"..lujing fille , err = io.open(rec ) if fille == nil then return false else return true end end sleep = gg.sleep function read(fileName ) f = assert(io.open(fileName , 'r' ) ) content = f : read("*all" ) f : close() return content end function wtcf(lujing , neirong ) write("/sdcard/黑川巳一配置文件/配置文件/"..lujing , neirong ) end function rdcf(lujing ) return read("/sdcard/黑川巳一配置文件/配置文件/"..lujing ) end function pmusic(x ) if audiokg == "开" then tmp1 = 0 gg.playMusic(x ) tmp1 = 1 end end if pdcf("audio" ) ~= true then wtcf("audio" , "开" ) end audiokg = rdcf("audio" ) function camusic(ress ) tmp1 = 0 if audiokg == "开" then if panduan("/sdcard/黑川巳一配置文件/音频/"..ress ) == true then pmusic("/sdcard/黑川巳一配置文件/音频/"..ress ) tmp1 = 1 else download("https://escape2020-1303126286.cos.ap-shenzhen-fsi.myqcloud.com/"..ress , "/sdcard/黑川巳一配置文件/音频/"..ress ) pmusic("/sdcard/黑川巳一配置文件/音频/"..ress ) tmp1 = 1 end end end function checkimg(tmp ) if panduan("/sdcard/黑川巳一配置文件/图片/"..tmp ) ~= true then gg.toast("正在下载资源"..tmp.."\n请耐心等待" ) download("https://escape2020-1303126286.cos.ap-shenzhen-fsi.myqcloud.com/"..tmp , "/sdcard/黑川巳一配置文件/图片/"..tmp ) end end ckimg = { "sj" , "hsj", "right" } for i = 1 , # ckimg do jindu = i checkimg(ckimg [ i ] ) end local context = app.context local 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 layoutParams.gravity = Gravity.TOP | Gravity.LEFT -- 重力设置 layoutParams.width = LayoutParams.WRAP_CONTENT -- 布局宽度 layoutParams.height = LayoutParams.WRAP_CONTENT -- 布局高度 return layoutParams end jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(10) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({0xEE0D05,0xEE0D05}) jianbians:setStroke(0,"0xaa000000")--边框宽度和颜色 slctb = jianbians jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(10) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({0xEE0D05,0xEE0D05}) jianbians:setStroke(2,"0xEE0D05")--边框宽度和颜色 slcta = jianbians jianbian6 = luajava.new(GradientDrawable) jianbian6:setCornerRadius(10) jianbian6:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbian6:setColors({0xEE0D05,0xEE0D05}) jianbian6:setStroke(0.2,"0xEE0D05")--边框宽度和颜色 黑川巳一配置文件2.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 黑川巳一配置文件2.controlWater = function(control,time) luajava.runUiThread(function() import "android.animation.ObjectAnimator" ObjectAnimator():ofFloat(control,"scaleX",{1, 0.8, 0.9, 1}):setDuration(time):start() ObjectAnimator():ofFloat(control,"scaleY",{1,0.8,0.9,1}):setDuration(time):start() end) end 黑川巳一配置文件2.controlWater2 = function(control,time) luajava.runUiThread(function() import "android.animation.ObjectAnimator" ObjectAnimator():ofFloat(control,"scaleX",{1, 0.9, 0.95, 1}):setDuration(time):start() ObjectAnimator():ofFloat(control,"scaleY",{1,0.9,0.95,1}):setDuration(time):start() end) end 黑川巳一配置文件2.controlSmall = function(control,time) luajava.runUiThread(function() import "android.animation.ObjectAnimator" ObjectAnimator():ofFloat(control,"scaleX",{1, 0.7, 0.4, 0}):setDuration(time):start() ObjectAnimator():ofFloat(control,"scaleY",{1, 0.7, 0.4, 0}):setDuration(time):start() end) end 黑川巳一配置文件2.controlBig = function(control,time) luajava.runUiThread(function() import "android.animation.ObjectAnimator" ObjectAnimator():ofFloat(control,"scaleX",{0, 0.4, 0.7, 1}):setDuration(time):start() ObjectAnimator():ofFloat(control,"scaleY",{0, 0.4, 0.7, 1}):setDuration(time):start() end) end slctc = luajava.loadlayout { GradientDrawable , color = "#EE0D05" , cornerRadius = 30 } slctd = luajava.loadlayout { GradientDrawable , color = "#EE0D05" , cornerRadius = 30 } slcte = luajava.loadlayout { GradientDrawable , color = "#EE0D05" , cornerRadius = 30 } slctf = luajava.loadlayout { GradientDrawable , color = "#EE0D05" , cornerRadius = 30 } jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(10) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({0xEE0D05,0xEE0D05}) jianbians:setStroke(2,"0xEE0D05")--边框宽度和颜色 t9s=jianbians function t9() beij = luajava.new(GradientDrawable) beij:setCornerRadius(10) beij:setGradientType(GradientDrawable.LINEAR_GRADIENT) beij:setColors(({0x56000000,0x56000000}))---修改背景图颜色 beij:setStroke(1,"0xEE0D05")--边框宽度和颜色 return beij end t3s=jianbians t4s=luajava.loadlayout { GradientDrawable, color = "#87000000", cornerRadius = 90 } t5s=jianbians t6s=luajava.loadlayout { GradientDrawable, color = "#87000000", cornerRadius = 12 } function getSelector3() selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, t4s) -- 点击时候的背景 selector:addState({ -android.R.attr.state_pressed }, t9s) -- 没点击的背景 return selector end function getSelector4() selector = luajava.getStateListDrawable() selector : addState({ android.R.attr.state_checked } , slcte ) -- 点击时候的背景 selector : addState({ - android.R.attr.state_checked } , slctf ) -- 没点击的背景 return selector end function getSelector() beij = luajava.new(GradientDrawable) beij:setCornerRadius(5) beij:setGradientType(GradientDrawable.LINEAR_GRADIENT) beij:setColors(({0xEE0D05,0xEE0D05}))---修改背景图颜色 selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, luajava.loadlayout { GradientDrawable, color = "#14381275", }) -- 点击时候的背景 selector:addState({ -android.R.attr.state_pressed }, beij) -- 没点击的背景 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 function getcolor(cl ) cl [ 1 ] = tonumber(math.ceil(cl [ 1 ] * 2.6 , 0 , 5 ) ) if cl [ 1 ] > 255 then cl [ 1 ] = "0xff" else cl [ 1 ] = "0x"..string.format("%x" , cl [ 1 ] ) end for i = 1 , 3 do cl [ i + 1 ] = string.format("%x" , cl [ i + 1 ] ) if string.len(cl [ i + 1 ] ) == 1 then cl [ i + 1 ] = "0"..cl [ i + 1 ] end end cl = cl [ 1 ]..cl [ 2 ]..cl [ 3 ]..cl [ 4 ] return cl end function particle() local webView = luajava.webView(function(webView) webView:loadData([[

ST过检

]], 'text/html', 'UTF-8') webView:setBackgroundColor(0x0) webView:setVerticalScrollBarEnabled(false) webView:setHorizontalScrollBarEnabled(false) webView:setScrollContainer(false) end) return webView end jianbian = luajava.new(GradientDrawable ) jianbian : setCornerRadius(30 ) jianbian : setGradientType(GradientDrawable.LINEAR_GRADIENT ) local isswitch YoYoImpl = luajava.getYoYoImpl() 黑川巳一配置文件.menu = function(sview ) if # sview < # stab then gg.alert("错误:菜单配置表少于菜单导航栏数量" ) return false end isswitch = true cebian = { LinearLayout , id = "侧边" , visibility = "gone" , layout_height = "170dp" , layout_width = "75dp" , layout_marginTop = "20dp", layout_marginBottom = "10dp", orientation = "vertical" , } --css扫光 for i = 1 , # stab do _ENV["jm"..i]=luajava.loadlayout({ LinearLayout , id = "jm"..i , elevation = "5dp", layout_height = "32dp" , layout_width = "65dp" , layout_marginTop = "4dp", gravity = "center_vertical", onClick = function() 切换(i ) 黑川巳一配置文件2.controlBig(_ENV["jm"..i],100) end, background=getSelector(), --gravity = "center" , { TextView , id = "jm"..i.."tu" , text = stab [ i ] , gravity = "center" , layout_height = "29dp" , layout_width = "62dp" , } }) cebian [ # cebian + 1 ] = _ENV["jm"..i] end cebian = luajava.loadlayout(cebian ) for i = 1 , # stab do _ENV [ "layout"..i ] = luajava.loadlayout({ ScrollView , fillViewport = "true" , id = "layout"..i , visibility = "gone" , layout_width = "236dp" , layout_height = "wrap_content" , orientation = "horizontal" , { LinearLayout , id = "layoutm"..i , gravity = "top" , padding = "8dp" , layout_width = 'fill_parent' , layout_height = "wrap_content" , orientation = "vertical" , } } ) end title = luajava.loadlayout({ LinearLayout , id = "titl" , visibility = "gone" , layout_width = "wrap_content" , layout_height = "58dp" , gravity = "center" , { LinearLayout , layout_marginLeft = "70dp" , layout_width = "100dp" , gravity = "center" , orientation="vertical", {LinearLayout, id="webv_", layout_height="wrap_content", layout_width="wrap_content", gravity="center", layout_marginTop = "0dp" , } } } ) gnlist = { LinearLayout , orientation = "vertical" , title , } for i = 1 , # stab do gnlist [ # gnlist + 1 ] = _ENV [ "layout"..i ] end beij = luajava.new(GradientDrawable) beij:setCornerRadius(18) beij:setGradientType(GradientDrawable.LINEAR_GRADIENT) beij:setColors(({0x66000000,0x66000000}))---修改背景图颜色 beij:setStroke(7.5,"0xEE0D05")--边框宽度和颜色 beij2 = luajava.new(GradientDrawable) beij2:setCornerRadius(15) beij2:setGradientType(GradientDrawable.LINEAR_GRADIENT) beij2:setColors(({0xEE0D05,0x00CCA3})) beij2:setStroke(0,"0xaae0ecf7")--边框宽度和颜色 xfccc=luajava.loadlayout({ ImageView , id = "control" , background = 获取图片(xfcpic), layout_width = "44dp" , layout_height = "44dp" , }) xfc=luajava.loadlayout({ LinearLayout , layout_width = "match_parent" , layout_height = "48dp" , id = "xfc" , orientation = "horizontal" , -- background = jianbian2, gravity = "center_vertical" , { LinearLayout , layout_width = "65dp" , layout_height = "48dp" , gravity = "center" , xfccc } , }) ckou = luajava.loadlayout({ LinearLayout , id = "chuangk" , layout_width = "match_parent" , layout_height = "match_parent" , orientation = "horizontal" , background = beij2 , {LinearLayout, orientation="vertical", xfc, {TextView, text = stitle, id="stt", textColor="#FFFFFF", visibility="gone", gravity = "center" , layout_width="64dp", textSize = "10sp" , }, {TextView, text = stxt, id="stt2", textColor="#FFFFFF", visibility="gone", gravity = "center" , layout_width="64dp", textSize = "8sp" , }, cebian , }, gnlist , } ) floatWindow = { LinearLayout , id = "motion" , layout_width = "236dp" , orientation = "vertical" , gravity = "center_vertical" , layout_height = "wrap_content" , ckou } floatWindow = luajava.loadlayout(floatWindow ) stitle2=particle() local function invoke() local ok local RawX , RawY , x , y mainLayoutParams = getLayoutParams() -- floatWindow = luajava.loadlayout(floatWindow) local function invoke2() block('start' ) for k = 1 , # stab do for i = 1 , # sview [ k ] do _ENV [ "layoutm"..k ] : addView(sview [ k ] [ i ] ) end end window:addView(floatWindow,mainLayoutParams) webv_:addView(stitle2) block('end' ) end local runnable = luajava.getRunnable(invoke2 ) local handler = luajava.getHandler() handler : post(runnable ) block('join' ) control.onClick = function() 隐藏() end local isMove control.onLongClick = function(v ) if isMove then return false end gg.toast("悬浮窗已退出" ) window : removeView(floatWindow ) isswitch = nil 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 motion.onTouch = hanshu control.onTouch = hanshu for i = 1 , # stab do _ENV [ "jm"..i ].onTouch = hanshu end end return invoke(swib1 , swib2 ) 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(7,tmp3)--边框宽度和颜色 return jianbians end checkbg = getShape( 45, { 0x0035BE45,0x0035BE45 }, 4,0xffffffff) checkbg0 = getShape( 45, { 0x0035BE45,0x0035BE45 }, 4,0xffffffff) checkbga = getShape( 45, { 0xffffffff,0xffffffff }, 4,0x00ffffff) checkbg1 = getShape( 45, { 0x0035BE45,0x0035BE45 }, 4,0xffffffff) checkbg2 = getShape( 45, { 0x0035BE45,0x0035BE45 }, 4,0xffffffff) 当前ui = 1 function 切换(x ) 当前ui = x luajava.runUiThread(function() for i = 1 , # stab do _ENV [ "jm"..i ] : setBackground(slctb ) _ENV [ "layout"..i ] : setVisibility(View.GONE ) end _ENV [ "layout"..当前ui ] : setVisibility(View.VISIBLE ) _ENV [ "jm"..当前ui ] : setBackground(slcta ) YoYoImpl : with("FadeIn" ) : duration(600 ) : playOn(_ENV [ "layout"..当前ui ] ) end ) end 显示 = 0 function 隐藏() luajava.newThread(function() if tonumber(tostring(cebian : getVisibility() ) ) == 8.0 then luajava.runUiThread(function() chuangk : setBackground(beij) cebian : setVisibility(View.VISIBLE ) stt : setVisibility(View.VISIBLE ) stt2 : setVisibility(View.VISIBLE ) titl : setVisibility(View.VISIBLE ) _ENV [ "layout"..当前ui ] : setVisibility(View.VISIBLE ) 黑川巳一配置文件2.controlFlip(xfccc , 1000) YoYoImpl:with("FadeIn"):duration(1000):playOn(xfccc) YoYoImpl:with("FadeIn"):duration(1000):playOn(_ENV [ "layout"..当前ui ]) YoYoImpl:with("FadeIn"):duration(1000):playOn(title) YoYoImpl:with("FadeIn"):duration(1000):playOn(cebian) YoYoImpl:with("FadeIn"):duration(1000):playOn(xfccc) mainLayoutParams.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL window:updateViewLayout(floatWindow, mainLayoutParams) end) else luajava.runUiThread(function() 黑川巳一配置文件2.controlWater(xfccc , 400 ) mainLayoutParams.flags = LayoutParams.FLAG_NOT_FOCUSABLE window:updateViewLayout(floatWindow, mainLayoutParams) end) luajava.runUiThread(function() titl : setVisibility(View.GONE ) chuangk : setBackground(beij2) cebian : setVisibility(View.GONE ) _ENV [ "layout"..当前ui ] : setVisibility(View.GONE ) stt : setVisibility(View.GONE ) stt2 : setVisibility(View.GONE ) YoYoImpl:with("FadeIn"):duration(800):playOn(_ENV [ "layout"..当前ui ]) YoYoImpl:with("FadeIn"):duration(800):playOn(title) YoYoImpl:with("FadeIn"):duration(800):playOn(cebian) YoYoImpl:with("FadeIn"):duration(800):playOn(xfccc) end) end end):start() 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 function 黑川巳一配置文件.radio(radio ) firadio = { LinearLayout , layout_width = 'fill_parent' , layout_height = "wrap_content" , orientation = "vertical" } radios = { RadioGroup , background = t9(), layout_width = 'fill_parent' , layout_height = "wrap_content" , } for i = 2 , # radio do radios [ # radios + 1 ] = { RadioButton , layout_width = 'fill_parent' , text = radio [ i ] [ 1 ] , textColor = "#ffffff" , textSize = "16sp" , onClick = function() luajava.newThread(function() radio [ i ] [ 2 ]() end ) : start() end , } end firadio [ # firadio + 1 ] = radios return luajava.loadlayout(firadio ) end function 黑川巳一配置文件.button(txt , func ) if not txt then txt = "未设置" end local tid=guid()..guid() _ENV[tid]=luajava.loadlayout ( { LinearLayout , layout_width = 'fill_parent' , layout_height="29dp", { LinearLayout , layout_width = "fill_parent" , gravity = "center_horizontal" , layout_marginTop = "4dp" , layout_marginBottom = "0dp", layout_height="25dp", background = t9() , onClick = function() 黑川巳一配置文件2.controlWater(_ENV[tid],200) luajava.newThread(function() pcall(func ) end ) : start() end , { TextView , text = txt , textSize = "17sp" , layout_width = "wrap_content" , } , } } ) return _ENV[tid] end function 黑川巳一配置文件.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 , gravity = "center" , textColor = color , layout_width = "fill_parent" , } ) end function 黑川巳一配置文件.switchs(cklist) rest = { GridLayout, layout_width = 'wrap_content', layout_height = "wrap_content", columnCount = '2', gravity = "center", background=t9() } for i = 1,#cklist do local name = cklist[i][1] local func1 = cklist[i][2] local func2 = cklist[i][3] local nid = cklist[i][4] if not name then name = "未设置" end nid = name..guid() local func = 开关(nid,func1,func2,nid) _ENV[nid.."swc"] = luajava.loadlayout({ LinearLayout, layout_width = 'wrap_content', layout_height = "25dp", layout_marginTop = "4dp", layout_marginBottom = "0dp", layout_marginLeft = "0dp", layout_marginRight = "0dp", gravity = "center", { TextView, gravity = "top", text = name, gravity="center", textColor=txtco, layout_width = '65dp', layout_height = 'wrap_content', },{ Switch, layout_width = '50dp', layout_height = "20dp", onClick = function() 黑川巳一配置文件2.controlWater(_ENV[nid.."swc"],300) luajava.newThread(function() func() end):start() end, }}) rest[#rest+1] = _ENV[nid.."swc"] end return luajava.loadlayout(rest) end switches = {} function 黑川巳一配置文件.switch(name,func1,func2,miaoshu) nid = name..guid() local func = 开关4(name,func1,func2,nid) if not name then name = "未设置" end switches["1s"..nid] = luajava.loadlayout { FrameLayout, layout_width = '45dp', layout_marginRight = "10dp", layout_marginLeft = "-10dp", layout_height = '24dp', gravity = "center_vertical", padding = { "6dp","0dp","6dp","0dp" }, { LinearLayout, layout_gravity = "left|center_vertical", id = luajava.newId(nid.."k"), background = checkbg1, onClick = function() luajava.newThread(function() func() end):start() end, layout_width = '14dp', layout_height = '14dp', elevation = "10dp", }, } switches["2s"..nid] = luajava.loadlayout { FrameLayout, onClick = function() luajava.newThread(function() func() end):start() end, layout_width = '45dp', layout_marginRight = "10dp", layout_marginLeft = "-10dp", layout_height = '24dp', gravity = "center_vertical", padding = { "6dp","0dp","6dp","0dp" } , { LinearLayout, visibility = "gone", layout_gravity = "right|center_vertical", id = luajava.newId(nid.."g"), background = checkbg2, onClick = function() luajava.newThread(function() func() end):start() end, layout_width = '14dp', layout_height = '14dp', elevation = "10dp", } } rest = luajava.loadlayout({ LinearLayout, elevation = "5dp", layout_width = 'fill_parent', layout_height = "40dp", gravity = "center_vertical", { LinearLayout, layout_width = 'fill_parent', layout_height = "32dp", gravity = "center_vertical", background = t9(), { TextView, gravity = "top", text = name, textColor = "#ffffff", textSize = "13sp", layout_weight = 1, layout_width = '80dp', layout_marginLeft = "10dp", layout_marginRight = "20dp", }, { TextView, gravity = "center", layout_height = "match_parent", text = miaoshu, textSize = "11sp", layout_width = "130dp", layout_marginLeft = "-50dp", layout_weight = 1, textColor = "#d9d9d9", }, { FrameLayout, background = checkbg, elevation = "10dp", onClick = function() luajava.newThread(function() func() end):start() end, layout_width = '45dp', layout_height = '24dp', gravity = "center", switches["1s"..nid],switches["2s"..nid] }} }) return rest end 黑川巳一配置文件.controlRotation1 = function(control, time) luajava.runUiThread(function() import "android.view.animation.Animation" import "android.animation.ObjectAnimator" xuanzhuandonghua = ObjectAnimator:ofFloat(control, "rotation", { 0, -360 }) xuanzhuandonghua:setRepeatCount(0) xuanzhuandonghua:setRepeatMode(Animation.RESTART) xuanzhuandonghua:setDuration(time) xuanzhuandonghua:start() end) end 黑川巳一配置文件.controlRotation2 = function(control, time) luajava.runUiThread(function() import "android.view.animation.Animation" import "android.animation.ObjectAnimator" xuanzhuandonghua = ObjectAnimator:ofFloat(control, "rotation", { 0, 360 }) xuanzhuandonghua:setRepeatCount(0) xuanzhuandonghua:setRepeatMode(Animation.RESTART) xuanzhuandonghua:setDuration(time) xuanzhuandonghua:start() end) end 黑川巳一配置文件.controlRotation3 = function(control, to1,to2) luajava.runUiThread(function() import "android.view.animation.Animation" import "android.animation.ObjectAnimator" xuanzhuandonghua = ObjectAnimator:ofFloat(control, "rotation", { to1, to2 }) xuanzhuandonghua:setRepeatCount(0) xuanzhuandonghua:setRepeatMode(Animation.RESTART) xuanzhuandonghua:setDuration(300) xuanzhuandonghua:start() end) end function 开关(name , func1 , func2 ) if func1 == nil then func1 = "" end if func2 == nil then func2 = "" end if type(func1 ) == "function" then return function() namers = _ENV [ name ] if namers ~= "开" then _ENV [ name ] = "开" pcall(func1 ) else _ENV [ name ] = "关" pcall(func2 ) end end end end function 开关2(name , func1 , func2 , nid ) _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 ) : setBackground(luajava.getBitmapDrawable("/sdcard/黑川巳一配置文件/图片/rswitchgreen" ) ) end ) _ENV [ name ] = "开" pcall(func1 ) else luajava.runUiThread(function() luajava.getIdValue(nid ) : setBackground(luajava.getBitmapDrawable("/sdcard/黑川巳一配置文件/图片/rswitch1" ) ) end ) _ENV [ name ] = "关" pcall(func2 ) end end end end function 开关3(name , func1 , func2 , nid ) _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 ) : setBackground(luajava.getBitmapDrawable("/sdcard/黑川巳一配置文件/图片/黑川巳一配置文件check开" ) ) end ) _ENV [ name ] = "开" pcall(func1 ) else luajava.runUiThread(function() luajava.getIdValue(nid ) : setBackground(luajava.getBitmapDrawable("/sdcard/黑川巳一配置文件/图片/黑川巳一配置文件check关" ) ) end ) _ENV [ name ] = "关" pcall(func2 ) end end end end function 开关4(name,func1,func2,nid) local sname = nid local localname=name 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 vibra:vibrate(14) luajava.runUiThread(function() luajava.getIdValue(nid.."k"):setVisibility(View.GONE) YoYoImpl:with("FadeInLeft"):duration(300):playOn(switches["2s"..sname]) luajava.getIdValue(nid.."g"):setVisibility(View.VISIBLE) --luajava.getIdValue(nid):setBackground(checkbga) end) _ENV[name] = "开" pcall(func1) else vibra:vibrate(14) luajava.runUiThread(function() luajava.getIdValue(nid.."g"):setVisibility(View.GONE) YoYoImpl:with("FadeInRight"):duration(300):playOn(switches["1s"..sname]) luajava.getIdValue(nid.."k"):setVisibility(View.VISIBLE) --luajava.getIdValue(nid):setBackground(checkbg) end) _ENV[name] = "关" pcall(func2) end end end end jianbian2 = luajava.new(GradientDrawable ) jianbian2 : setCornerRadius(30 ) jianbian2 : setGradientType(GradientDrawable.LINEAR_GRADIENT ) jianbian2 : setColors({ 0xdd20FF9B , 0xdd32A2FF } ) function 黑川巳一配置文件.edit(name) if not hint then local hint = "" end _ENV [ name ] = name..guid() if not name then name = "点击输入文字" end rest = luajava.loadlayout({ LinearLayout , layout_width = 'fill_parent' , layout_hight = "fill_parent" , { LinearLayout , layout_width = 'fill_parent' , layout_hight = "fill_parent" , layout_marginTop = "5dp" , layout_marginBottom = "5dp" , layout_marginLeft = "0dp" , layout_marginRight = "0dp" , gravity = "center" , background = t9(), { EditText , gravity = "top" , hint = name , id = luajava.newId(_ENV [ name ] ) , layout_width = 'fill' , gravity="center", layout_marginLeft = "10dp" , layout_marginRight = "10dp" , } } } ) return rest end function 黑川巳一配置文件.getedit(name ) edit = tostring(luajava.getIdValue(_ENV [ name ] ) : getText() ) return edit end function 黑川巳一配置文件.setedit(name , txt ) txt = tostring(txt ) luajava.runUiThread(function() luajava.getIdValue(_ENV [ name ] ) : setText(txt ) end ) end chazhi = { } chajv = { } function 黑川巳一配置文件.seek(name , bian , smin , smax , nows ) _ENV [ bian ] = nows smin = tonumber(smin ) smax = tonumber(smax ) chajv [ bian ] = smax - smin chazhi [ bian ] = 1 - smin if smin == nil then smin = 1 smax = 10 end truesmin = 1 truesmax = truesmin + chajv [ bian ] if not nows then nows = smin tnows =(smin - nows ) else tnows =(nows - smin ) + 1 end if _ENV [ bian ] == nil then _ENV [ bian ] = nows end if not name then name = "未设置" end local names = name..guid() rest = luajava.loadlayout({ LinearLayout , layout_width = 'fill_parent' , gravity = "center" , layout_height = "wrap_content" , { LinearLayout , layout_width = 'fill_parent' , layout_height = "fill_parent" , layout_marginTop = "5dp" , layout_marginBottom = "5dp" , layout_marginLeft = "0dp" , layout_marginRight = "0dp" , gravity = "center_vertical" , background = t9(), { TextView , gravity = "top" , text = name..":"..nows , id = luajava.newId(names ) , layout_width = '70dp' , layout_marginLeft = "5dp" , layout_marginRight = "0dp" , } , { SeekBar , layout_width = '140dp' , min = truesmin , max = truesmax , progress = tnows , onSeekBarChange = { onProgressChanged = function(SeekBar , var2 , var3 ) if not var3 then return end local resultvar = tonumber(string.sub(var2 , 0 , -3 ) ) - chazhi [ bian ] luajava.runUiThread(function() luajava.getIdValue(names ) : setText(name..":"..resultvar ) end ) _ENV [ bian ] = resultvar end } } } } ) return rest end function visi (tid , ttid) local tview = luajava.getIdValue (tid) local ttview = luajava.getIdValue (ttid) if not tview then return 0 end vibra:vibrate(13) if tonumber (tostring (tview : getVisibility ())) == 8.0 then tview : setVisibility (View.VISIBLE) 黑川巳一配置文件.controlRotation3(boxpic[tid],0,90) else tview : setVisibility (View.GONE) 黑川巳一配置文件.controlRotation3(boxpic[tid],90,0) end end boxes = {} boxpic = {} function 黑川巳一配置文件.box (views,st) local tid = "box"..guid () boxpic[tid] = luajava.loadlayout { ImageView , background = "/sdcard/黑川巳一配置文件/图片/right" , layout_width = "20dp" , layout_height = "20dp" , } local ttid = tid.."6" local t1id = guid () firadio = { LinearLayout , elevation = "5dp", layout_width = 'fill_parent' , 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 = "38dp" , gravity = "center_vertical" , layout_marginTop = "2dp" , layout_marginBottom = "4dp" , onClick = function () visi (tid , ttid) end , background = t9(), { TextView , text = views [1] , textSize = "13sp" , layout_marginLeft = "8dp" , layout_width = "90dp" , textColor = "#ffffff" , gravity = "left" , }, { TextView , text = st, textSize = "11sp" , layout_marginLeft = "-40dp" , layout_width = "150dp" , textColor = "#d9d9d9" , gravity = "center" , }, { LinearLayout , layout_marginLeft = "-10dp" , layout_width = "30dp" , layout_height = "30dp" , gravity = "center", boxpic[tid], } } else gg.alert ("黑川巳一配置文件.box第一个参数必须是string") os.exit () end radios = { LinearLayout , layout_marginLeft = "0dp" , layout_marginRight = "0dp" , orientation = "vertical" , visibility = "gone" , id = luajava.newId (tid) , padding = "0dp" , layout_width = 'fill_parent' , } for i = 2 , # views do radios [# radios + 1] = views [i] end boxes[tid] = luajava.loadlayout(radios) firadio [# firadio + 1] = boxes[tid] _ENV [t1id] = luajava.loadlayout (firadio) return _ENV [t1id] end function 黑川巳一配置文件.check(cklist ) rest = { LinearLayout , layout_width = 'match_parent' , layout_height = "wrap_content" , layout_marginTop = "10dp" , gravity = "top" , orientation = "vertical" , } if type(cklist [ 1 ] ) == "string" then rest [ # rest + 1 ] = { TextView , gravity = "left" , text = cklist [ 1 ] , textSize = "16sp" , textColor = "#FFFFFF" , layout_width = 'wrap_content' , layout_height = 'wrap_content' , layout_marginLeft = "4dp" , layout_marginRight = "5dp" , layout_marginTop = "0dp" , layout_marginBottom = "0dp" , } end for i = 2 , # cklist do local name = cklist [ i ] [ 1 ] local func1 = cklist [ i ] [ 2 ] local func2 = cklist [ i ] [ 3 ] local nid = cklist [ i ] [ 4 ] if type(func1 ) == "table" then os.exit() end if not name then name = "未设置" end nid = name..guid() local func = 开关3(nid , func1 , func2 , nid ) local tid=nid..guid() _ENV[tid] = luajava.loadlayout({ LinearLayout , layout_width = '250dp' , layout_height = "30dp" , layout_marginTop = "5dp" , layout_marginBottom = "15dp" , layout_marginLeft = "4dp" , layout_marginRight = "10dp" , gravity = "center_vertical" , onClick = function() 黑川巳一配置文件2.controlWater(_ENV[tid],200) luajava.newThread(function() func() end ) : start() end , { ImageView , id = luajava.newId(nid ) , layout_width = '20dp' , layout_height = "20dp" , layout_marginLeft = "10dp" , layout_marginRight = "10dp" , background = "/sdcard/黑川巳一配置文件/图片/黑川巳一配置文件check关" , } , { TextView , gravity = "top" , text = name , textColor = "#FFFFFF" , layout_width = 'wrap_content' , layout_height = 'wrap_content' , layout_marginLeft = "4dp" , layout_marginRight = "5dp" , } } ) rest [ # rest + 1 ] = _ENV[tid] end return luajava.loadlayout(rest ) end function 黑川巳一配置文件.text2(txt,color,size) if not txt then txt = "未设置文字" end if not color then color = "#FFFFFF" end if not size then size = "16sp" end return luajava.loadlayout( { TextView, text = txt, textSize = size, textColor = color, layout_width = "wrap_content", }) end function 退出() window : removeView(floatWindow ) luajava.setFloatingWindowHide(false ) bloc("end" ) gg.setVisible(true ) end 黑川巳一配置文件.setso = function ( Ad , Value , IF ) local Ret = "~A BX LR" local So = gg.getRangesList ( 'libil2cpp.so' ) if not ( Ad or Value ) then return else if not So then gg.alert ( "请重新选择游戏进程" ) else for key , value in pairs ( So ) do if value.state ~= "Xa" then return else local Soad = value.start local Add = Soad + Ad gg.setValues ( { { address = Add , flags = 4 , value = Value } } ) if IF == true then gg.setValues ( { { address = Add + 4 , flags = 4 , value = Ret } } ) elseif IF == nil then gg.setValues ( { { address = Add + 4 , flags = 4 , value = Ret } } ) elseif IF == false then break end end end end end end function readWrite(Search,Get,Type,Range,Name) gg.clearResults() gg.setRanges(Range) gg.setVisible(false) if Search[1][1]~=false then gg.searchAddress(Search[1][1],0xFFFFFFFF,Search[1][4] or Type,gg.SIGN_EQUAL,Search[1][5] or 1,Search[1][6] or -1) end gg.searchNumber(Search[1][2],Search[1][4] or Type,false,gg.SIGN_EQUAL,Search[1][5] or 1,Search[1][6] or -1) local count=gg.getResultCount() local result=gg.getResults(count) gg.clearResults() local data={} local base=Search[1][3] if (count > 0) then for i,v in ipairs(result) do v.isUseful=true end for k=2,#Search do local tmp={} local offset=Search[k][2] - base local num=Search[k][1] for i,v in ipairs(result) do tmp[#tmp+1]={} tmp[#tmp].address=v.address+offset tmp[#tmp].flags=Search[k][3] or Type end tmp=gg.getValues(tmp) for i,v in ipairs(tmp) do if v.flags==16 or v.flags==64 then values=tostring(v.value):sub(1,6) num=tostring(num):sub(1,6) else values=v.value end if tostring(values)~=tostring(num) then result[i].isUseful=false end end end for i,v in ipairs(result) do if (v.isUseful) then data[#data+1]=v.address end end if (#data > 0) then local t,t_={},{} local base=Search[1][3] for i=1,#data do for k,w in ipairs(Get) do offset=w[2] - base if w[1]==false then t_[#t_+1]={} t_[#t_].address=data[i]+offset t_[#t_].flags=Type th_=(th_) and th_+1 or 1 else t[#t+1]={} t[#t].address=data[i]+offset t[#t].flags=w[3] or Type t[#t].value=w[1] tg_=(tg_) and tg_+1 or 1 if (w[4]==true) then local item={} item[#item+1]=t[#t] item[#item].freeze=w[4] gg.addListItems(item) end end end end tg=(tg_) and "\n已修改"..tg_.."条数据" or "" th=(th_) and "\n已获取"..th_.."条数据" or "" gg.setValues(t) t_=gg.getValues(t_) gg.loadResults(t_) tg_,th_=nil,nil else return false end else return false end end function readValue(address, flags) return gg.getValues({{address = address, flags = flags}})[1]["value"]end ms = { } function setvalue ( add , value , falgs , dj ) local WY = { } WY [ 1 ] = { } WY [ 1 ].address = add WY [ 1 ].value = value WY [ 1 ].flags = falgs if dj == true then WY [ 1 ].freeze = true gg.addListItems ( WY ) else gg.setValues ( WY ) end end function ms.ss ( num , ty , nc ) local GGNUMBER_1 = num local GGNUMBER_2 = ty local GGNUMBER_3 = false local GGNUMBER_4 = gg.SIGN_EQUAL local GGNUMBER_5 = 0x3000000 local GGNUMBER_6 = 0xFFFFFFFF local GGNUMBER_7 = 0 gg.clearResults ( ) gg.setRanges ( nc ) gg.searchNumber ( GGNUMBER_1 , GGNUMBER_2 , GGNUMBER_3 , GGNUMBER_4 , GGNUMBER_5 , GGNUMBER_6 , GGNUMBER_7 ) Result = gg.getResults ( gg.getResultCount ( ) ) end function ms.py ( num , py , ty ) if ( Result and # Result ~= 0 ) then t = { } for i , v in ipairs ( Result ) do t [ i ] = { } t [ i ].address = v.address + py t [ i ].flags = ty end t = gg.getValues ( t ) for i , v in ipairs ( t ) do if v.value ~= num then Result [ i ] = nil end end local MS = { } for i , v in pairs ( Result ) do MS [ # MS + 1 ] = v end Result = MS end end function ms.bc ( ) data = { } if Result == nil or # Result == 0 then gg.alert ( "开启失败" ) else for i , v in pairs ( Result ) do data [ # data + 1 ] = v.address end end Result = nil end function ms.edit ( nn , off , ty , dj ) if ( Result ) then ms.bc ( ) end if # data > 0 then for i , v in ipairs ( data ) do setvalue ( v + off , nn , ty , dj or false ) end end end function readPointer(name, offset, i) local re = gg.getRangesList(name) local x64 = gg.getTargetInfo().x64 local va = {[true] = 32, [false] = 4} if re[i or 1] then local addr = re[i or 1].start + offset[1] for i = 2, #offset do addr = gg.getValues({{address = addr, flags = va[x64]}}) if not x64 then addr[1].value = addr[1].value & 0xFFFFFFFF end addr = addr[1].value + offset[i] end return addr end end function gg.edits(addr, Table, name) local Table1 = {{}, {}} for k, v in ipairs(Table) do local value = {address = addr + v[3], value = v[1], flags = v[2], freeze = v[4]} if v[4] then Table1[2][#Table1[2] + 1] = value else Table1[1][#Table1[1] + 1] = value end end gg.addListItems(Table1[2]) gg.setValues(Table1[1]) end function 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 PS() end function setvalue(address,flags,value) PS('修改地址数值(地址,数值类型,要修改的值)') local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end--静态 local Ranges=gg.getRangesList('/') local function Read(module,type) for k,v in pairs(Ranges) do if v['internalName']:match('[^/]*$')==module and v['type']==type then return v['start'] end end end local Table={} local function Modify(address,value,flags) Table[#Table+1]={address=address,value=value,flags=flags} end function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end xfcpic="http://jiami.guimei.work/a/1780143098.png" function PS() end function setvalue(address,flags,value) PS('修改地址数值(地址,数值类型,要修改的值)') local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end--静态 local Ranges=gg.getRangesList('/') local function Read(module,type) for k,v in pairs(Ranges) do if v['internalName']:match('[^/]*$')==module and v['type']==type then return v['start'] end end end local Table={} local function Modify(address,value,flags) Table[#Table+1]={address=address,value=value,flags=flags} end function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end local function readD ( a ) return gg.getValues ( { { address = a , flags = 4 } } ) [ 1 ].value end function setvalue(address,flags,value) local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end function addListltems(address,flags,value,freeze) t={} t[1]={} t[1].address=address t[1].flags=flags t[1].value=value t[1].freeze=freeze gg.addListItems(t) end function xfnb(add,lx) return gg.getValues({ { address=add,flags = lx } })[1].value end local function RUI(address) return gg.getValues({{address = address, flags = gg.TYPE_QWORD}})[1].value end function setvalue(address,flags,value) local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end function addListltems(address,flags,value,freeze) t={} t[1]={} t[1].address=address t[1].flags=flags t[1].value=value t[1].freeze=freeze gg.addListItems(t) end local function RUI(address) return gg.getValues({{address = address, flags = gg.TYPE_QWORD}})[1].value end function readPointer(name, offset, i) local re = gg.getRangesList(name) local x64 = gg.getTargetInfo().x64 local va = {[true] = 32, [false] = 4} if re[i or 1] then local addr = re[i or 1].start + offset[1] for i = 2, #offset do addr = gg.getValues({{address = addr, flags = va[x64]}}) if not x64 then addr[1].value = addr[1].value & 0xFFFFFFFF end addr = addr[1].value + offset[i] end return addr end end function gg.edits(addr, Table, name) local Table1 = {{}, {}} for k, v in ipairs(Table) do local value = {address = addr + v[3], value = v[1], flags = v[2], freeze = v[4]} if v[4] then Table1[2][#Table1[2] + 1] = value else Table1[1][#Table1[1] + 1] = value end end gg.addListItems(Table1[2]) gg.setValues(Table1[1]) gg.toast((name or "") .. "开启成功, 共修改" .. #Table .. "个值") end function Format(tab, format, value, type, Function) if format == "查看" then tab[1]["flags"] = type return gg.getValues(tab) elseif format == "修改" then tab[1]["flags"] = type tab[1]["value"] = value return gg.setValues(tab) elseif format == "冻结" then tab[1]["flags"] = type tab[1]["freeze"] = true tab[1]["value"] = value tab[1]["name"] = Function or "功能" return gg.addListItems(tab) elseif format == "加载" then tab[1]["flags"] = type return gg.loadResults(tab) end end function Unfreeze() --获取保存列表 local t = gg.getListItems() for k, v in pairs(t) do t[k]["freeze"] = false end return gg.addListItems(t) end function xqmnb(Search,Modification) gg.clearResults() gg.setRanges(Search[1].memory) gg.searchNumber(Search[3].value,Search[3].type,false,536870912,0,-1) if gg.getResultCount()==0 then gg.toast(Search[2].name..'开启失败') return end local Result=gg.getResults(gg.getResultCount()) local sum for index=4,#Search do sum=0 for i=1,#Result do if gg.getValues({{address=Result[i].address+Search[index].offset,flags=Search[index].type}})[1].value~=Search[index].lv then Result[i].Usable=true sum=sum+1 end end if sum==#Result then gg.toast(Search[2].name..'开启失败') return end end local Data,Freeze,Freezes={},{},0 sum=0 for index,value in ipairs(Modification)do for index=1,#Result do if not Result[index].Usable then local Value={address=Result[index].address+value.offset,flags=value.type,value=value.value,freeze=true} if value.freeze then Freeze[#Freeze+1]=Value Freezes=Freezes+1 else Data[#Data+1]=Value end sum=sum+1 end end end gg.setValues(Data) gg.addListItems(Freeze) if Freezes==0 then gg.toast(Search[2].name..'开启成功,共修改'..sum..'条数据') else gg.toast(Search[2].name..'开启成功,共修改'..sum..'条数据,冻结'..Freezes..'条数据') end gg.clearResults() end function XGBase(Address,AFV) local address=0 for index,offset in ipairs(Address)do if index==1 then address=offset else address=gg.getValues({{address=address+offset,flags=4}})[1].value end end local Value,Freeze={},{} for index,value in ipairs(AFV)do local VALUE={address=address+value[3],flags=value[2],value=value[1],freeze=true} if value[4]then Freeze[#Freeze+1]=VALUE else Value[#Value+1]=VALUE end end gg.setValues(Value) gg.addListItems(Freeze) end function Format(tab, format, value, type, Function) if format == "查看" then tab[1]["flags"] = type return print(gg.getValues(tab)) elseif format == "修改" then tab[1]["flags"] = type tab[1]["value"] = value return gg.setValues(tab) elseif format == "冻结" then tab[1]["flags"] = type tab[1]["freeze"] = true tab[1]["value"] = value tab[1]["name"] = Function or "功能" return gg.addListItems(tab) elseif format == "加载" then tab[1]["flags"] = type return gg.loadResults(tab) end end function LSQ_Chain(so, offset, format, value, type, Function)--模块设置, 偏移量, 功能参数, 修改值, 类型, 功能 getRanges = getRanges or (function() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v["type"]:sub(2, 2) == 'w' then--判断so是否可读可写 ranges[#ranges+1] = v end end return ranges end) local rest, ranges, sostart, valtype = {}, getRanges(), nil , gg.TYPE_DWORD if gg.getTargetInfo()["x64"] then--判断应用程序是否为64位 valtype = gg.TYPE_QWORD end for i in pairs(ranges) do local _name = ranges[i]["internalName"]:gsub('^.*/', '') if so[1] == _name and so[2] == ranges[i]["state"] then sostart = ranges[i]["start"] break end end if sostart then if offset[1] then for i = 1, #offset do rest = {{flags = valtype,address = sostart + offset[i]}} rest = gg.getValues(rest) if i == #offset then break end if valtype == gg.TYPE_DWORD then sostart = rest[1].value & 0xFFFFFFFF--对值进行补位操作 else sostart = rest[1].value end end end if #rest == 1 then end return Format(rest, format, value, type, Function) end gg.toast("功能:" .. Function .. "开启失败") print("功能开启失败原因: 未找到基址头") return os.exit() end function setvalue(address,flags,value) local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end function split(szFullString, szSeparator) local nFindStartIndex = 1 local nSplitIndex = 1 local nSplitArray = {} while true do local nFindLastIndex = string.find(szFullString, szSeparator, nFindStartIndex) if not nFindLastIndex then nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, string.len(szFullString)) break end nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, nFindLastIndex - 1) nFindStartIndex = nFindLastIndex + string.len(szSeparator) nSplitIndex = nSplitIndex + 1 end return nSplitArray end function xgxc(szpy, qmxg) for x = 1, #(qmxg) do xgpy = szpy + qmxg[x]["offset"] xglx = qmxg[x]["type"] xgsz = qmxg[x]["value"] gg.setValues({[1] = {address = xgpy, flags = xglx, value = xgsz}}) xgsl = xgsl + 1 end end function xqmnb(qmnb) gg.clearResults() gg.setRanges(qmnb[1]["memory"]) gg.searchNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. "开启失败") 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) xgjg = true end end if xgjg == true then gg.toast(qmnb[2]["name"] .. "开启成功,共修改" .. xgsl .. "条数据") else gg.toast(qmnb[2]["name"] .. "开启失败") end end end end function setvalue(address, flags, value) local tt = {} tt[1] = {} tt[1].address = address tt[1].flags = flags tt[1].value = value gg.setValues(tt) end function read(address, flags) local tt = {} tt[1] = {} tt[1].address = address tt[1].flags = flags filzer = gg.getValues(tt)[1].value return filzer end function getbase(address) local tt = {} tt[1] = {} tt[1].address = address tt[1].flags = 32 filzer = gg.getValues(tt)[1].value return filzer end local json =json--调用 local g = {} g.file = gg.getFile() g.sel = nil gqlb={"请先搜索歌曲",} idb={"1010"} SN,gc=1,nil g.config = gg.getFile():gsub("%lua$", "").."cfg" function bei() g.data = loadfile("音乐配置"..g.config) if g.data ~= nil then g.sel = g.data() g.data = nil end if g.sel == nil then g.sel = {"","10"} end end bei() local Ranges=gg.getRangesList('/') local function Read(module,type) for k,v in pairs(Ranges) do if v['internalName']:match('[^/]*$')==module and v['type']==type then return v['start'] end end end local Table={} local function Modify(address,value,flags) Table[#Table+1]={address=address,value=value,flags=flags} end function start(name,sl) fw=gg.makeRequest("http://music.163.com/api/search/get?s="..name.."&type=1&offset=0&total=true&limit="..sl) return fw end function play(id,name) gg.toast("正在播放音乐:"..name,true) gg.playMusic("http://music.163.com/song/media/outer/url?id="..id..".mp3") end function Play(gqlb,idb) SN = gg.choice(gqlb,nil,ts) if SN == nil then XGCK =-1 else sn=gg.choice({"播放歌曲","播放并下载"},nil,"歌曲:"..gqlb[SN]) if sn == nil then end if sn == 1 then play(idb[SN],gqlb[SN]) end if sn == 2 then local XEY=gg.makeRequest("http://music.163.com/song/media/outer/url?id="..idb[SN]..".mp3").content local XEY1=gg.getFile():gsub("[^/]+$","")..gqlb[SN]..".mp3" io.open(XEY1,"w"):write(XEY) gg.alert("提示:\n\n音乐已成功下载位置:\n\n"..XEY1) end XGCK=-1 end end function zjson(jsonr) local str = jsonr local pattern = "\"[%w]+\":" string.gsub(str, pattern, function(v) if string.find(str, v) then str = string.gsub(str, v, string.gsub(v, "\"", "")) end end) str = string.gsub(str, ":", "=") str = string.gsub(str, "%[", "{") str = string.gsub(str, "%]", "}") local data = "-- WSG PRO 1.0.9(109)\nreturn " .. str local res = load(data)() return res end function json(con) res=zjson(con) zd=res.result.songCount pd=go3-zd if pd <= 0 then else go3=zd end ts="《"..go1.."》找到"..zd.."首歌曲,当前显示"..go3.."首" gqlb={} idb={} for i=1,go3 do gqlb[i]=res.result.songs[i].name idb[i]=res.result.songs[i].id 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(0x2C4D6BCE) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end ----动态基址写法配置 function PS() end function setvalue(address,flags,value) PS('修改地址数值(地址,数值类型,要修改的值)') local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end ---静态基址写法配置 function 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 --仿XS写法配置 function xqmnb(Search,Modification) gg.clearResults() gg.setRanges(Search[1].memory) gg.searchNumber(Search[3].value,Search[3].type,false,536870912,0,-1) if gg.getResultCount()==0 then gg.toast(Search[2].name..'开启失败') return end local Result=gg.getResults(gg.getResultCount()) local sum for index=4,#Search do sum=0 for i=1,#Result do if gg.getValues({{address=Result[i].address+Search[index].offset,flags=Search[index].type}})[1].value~=Search[index].lv then Result[i].Usable=true sum=sum+1 end end if sum==#Result then gg.toast(Search[2].name..'开启失败') return end end local Data,Freeze,Freezes={},{},0 sum=0 for index,value in ipairs(Modification)do for index=1,#Result do if not Result[index].Usable then local Value={address=Result[index].address+value.offset,flags=value.type,value=value.value,freeze=true} if value.freeze then Freeze[#Freeze+1]=Value Freezes=Freezes+1 else Data[#Data+1]=Value end sum=sum+1 end end end gg.setValues(Data) gg.addListItems(Freeze) if Freezes==0 then gg.toast(Search[2].name..'开启成功,共修改'..sum..'条数据') else gg.toast(Search[2].name..'开启成功,共修改'..sum..'条数据,冻结'..Freezes..'条数据') end gg.clearResults() end -- 读取内存地址的函数 function readPointer(name, offset, i) local re = gg.getRangesList(name) local x64 = gg.getTargetInfo().x64 local va = {[true]=32, [false]=4} if re[i or 1] then local addr = re[i or 1].start + offset[1] for i = 2, #offset do addr = gg.getValues({{address=addr, flags=va[x64]}}) if not x64 then addr[1].value = addr[1].value & 0xFFFFFFFF end addr = addr[1].value + offset[i] end return addr end end -- 修改内存地址的函数 function gg.edits(addr, Table, name) local Table1 = {{}, {}} for k, v in ipairs(Table) do local value = {address = addr+v[3], value = v[1], flags = v[2], freeze = v[4]} if v[4] then Table1[2][#Table1[2]+1] = value else Table1[1][#Table1[1]+1] = value end end gg.addListItems(Table1[2]) gg.setValues(Table1[1]) gg.toast((name or "") .. "开启成功, 共修改"..#Table.."个值") end local Ranges=gg.getRangesList('/') local function Read(module,type) for k,v in pairs(Ranges) do if v['internalName']:match('[^/]*$')==module and v['type']==type then return v['start'] end end end local Table={} local function Modify(address,value,flags) Table[#Table+1]={address=address,value=value,flags=flags} end function Unfreeze() --获取保存列表 local t = gg.getListItems() for k, v in pairs(t) do t[k]["freeze"] = false end return gg.addListItems(t) end function xqmnb(Search,Modification) gg.clearResults() gg.setRanges(Search[1].memory) gg.searchNumber(Search[3].value,Search[3].type,false,536870912,0,-1) if gg.getResultCount()==0 then gg.toast(Search[2].name..'开启失败') return end local Result=gg.getResults(gg.getResultCount()) local sum for index=4,#Search do sum=0 for i=1,#Result do if gg.getValues({{address=Result[i].address+Search[index].offset,flags=Search[index].type}})[1].value~=Search[index].lv then Result[i].Usable=true sum=sum+1 end end if sum==#Result then gg.toast(Search[2].name..'开启失败') return end end local Data,Freeze,Freezes={},{},0 sum=0 for index,value in ipairs(Modification)do for index=1,#Result do if not Result[index].Usable then local Value={address=Result[index].address+value.offset,flags=value.type,value=value.value,freeze=true}----频道:@//开源频道@RG660 if value.freeze then Freeze[#Freeze+1]=Value Freezes=Freezes+1 else Data[#Data+1]=Value end sum=sum+1 end end end gg.setValues(Data) gg.addListItems(Freeze) if Freezes==0 then gg.toast(Search[2].name..'开启成功,共修改'..sum..'条数据') else gg.toast(Search[2].name..'开启成功,共修改'..sum..'条数据,冻结'..Freezes..'条数据') end gg.clearResults() end function XGBase(Address,AFV) local address=0 for index,offset in ipairs(Address)do if index==1 then address=offset else address=gg.getValues({{address=address+offset,flags=4}})[1].value end end local Value,Freeze={},{} for index,value in ipairs(AFV)do local VALUE={address=address+value[3],flags=value[2],value=value[1],freeze=true} if value[4]then Freeze[#Freeze+1]=VALUE else Value[#Value+1]=VALUE end end gg.setValues(Value) gg.addListItems(Freeze) end function Format(tab, format, value, type, Function) if format == "查看" then tab[1]["flags"] = type return print(gg.getValues(tab)) elseif format == "修改" then tab[1]["flags"] = type tab[1]["value"] = value return gg.setValues(tab) elseif format == "冻结" then tab[1]["flags"] = type tab[1]["freeze"] = true tab[1]["value"] = value tab[1]["name"] = Function or "功能" return gg.addListItems(tab) elseif format == "加载" then tab[1]["flags"] = type return gg.loadResults(tab) end end function LSQ_Chain(so, offset, format, value, type, Function)--模块设置, 偏移量, 功能参数, 修改值, 类型, 功能 getRanges = getRanges or (function() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v["type"]:sub(2, 2) == 'w' then--判断so是否可读可写 ranges[#ranges+1] = v end end return ranges end) local rest, ranges, sostart, valtype = {}, getRanges(), nil , gg.TYPE_DWORD if gg.getTargetInfo()["x64"] then--判断应用程序是否为64位 valtype = gg.TYPE_QWORD end for i in pairs(ranges) do local _name = ranges[i]["internalName"]:gsub('^.*/', '') if so[1] == _name and so[2] == ranges[i]["state"] then sostart = ranges[i]["start"] break end end if sostart then if offset[1] then for i = 1, #offset do rest = {{flags = valtype,address = sostart + offset[i]}} rest = gg.getValues(rest) if i == #offset then break end if valtype == gg.TYPE_DWORD then sostart = rest[1].value & 0xFFFFFFFF--对值进行补位操作 else sostart = rest[1].value end end end if #rest == 1 then end return Format(rest, format, value, type, Function) end gg.toast("功能:" .. Function .. "开启失败") print("功能开启失败原因: 未找到基址头") return os.exit() end function setvalue(address,flags,value) local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end local function setvalue ( address , flags , value , freeze ) local t = { } t [ 1 ] = { } t [ 1 ].address = address t [ 1 ].flags = flags t [ 1 ].value = value t [ 1 ].freeze = freeze gg.setValues ( t ) gg.addListItems ( 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 t = { } local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs ( S_list ) do local _N = S_list [ i ].internalName : gsub ( '^.*/' , '' ) if N_So [ 1 ] == _N and N_So [ 2 ] == S_list [ i ].state then _S = S_list [ i ] break end end if _S then t [ # t + 1 ] = { } t [ # t ].address = _S.start + Offset [ 1 ] t [ # t ].flags = _t if # Offset ~= 1 then for i = 2 , # Offset do local S = gg.getValues ( t ) t = { } for _ in pairs ( S ) do if not ti.x64 then S [ _ ].value = S [ _ ].value & 0xFFFFFFFF end t [ # t + 1 ] = { } t [ # t ].address = S [ _ ].value + Offset [ i ] t [ # t ].flags = _t end end end _S = t [ # t ].address end return _S end local _A = string.format ( '0x%X' , Get_Address ( t_So , t_Offset , _bit ) ) return _A end function Unfreeze ( ) -- 获取保存列表 local t = gg.getListItems ( ) for k , v in pairs ( t ) do t [ k ] [ "freeze" ] = false end return gg.addListItems ( t ) end local function readD(a) return gg.getValues({{ address=a, flags=gg.TYPE_DWORD }})[1].value end local function readF(a) return gg.getValues({{ address=a, flags=gg.TYPE_FLOAT }})[1].value end local function setvalue(address,flags,value,freeze) local t={} t[1]={} t[1].address=address t[1].flags=flags t[1].value=value t[1].freeze=freeze gg.setValues(t) gg.addListItems(t) end stab = { -- 菜单标题,添加页数需要与下表对应 "过检测" , "三服偷箱" , } stitle="神天过检 stxt="@没" stxt2="支持PUBG4.4" 黑川巳一配置文件.menu( { {----1 黑川巳一配置文件.button("选择进程", function () gg.setProcessX ( ) end), 黑川巳一配置文件.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 = {"libanogs.so:bss", "Cb"} local tt = {0x300} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 64, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x3F8} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 64, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x430} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 64, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x550} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 64, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x5D8} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 64, freeze = true}}) end,"case17"), 黑川巳一配置文件.switch("logo过检-wow", function () if gg.getRangesList("libUE4.so")[1] then local t = {} t[1] = gg.getRangesList("libUE4.so")[1]["start"] + 0xEDEB220; -- 数值地址:0x75D65F0220 gg.setValues({ [1] = { address = t[1], flags = 4, value = -698416192, }, }) gg.toast("开启成功") end if gg.getRangesList("libUE4.so")[1] then local t = {} t[1] = gg.getRangesList("libUE4.so")[1]["start"] + 0x6AF66F8; -- 数值地址:0x75CE2FB6F8 t[2] = gg.getRangesList("libUE4.so")[1]["start"] + 0x6AF7E5C; -- 数值地址:0x75CE2FCE5C gg.setValues({ [1] = { address = t[1], flags = 4, value = -698416192, }, [2] = { address = t[2], flags = 4, value = -721215457, }, }) gg.toast("开启成功") end if gg.getRangesList("libUE4.so")[1] then local t = {} t[1] = gg.getRangesList("libUE4.so")[1]["start"] + 0x2E678D4; -- 数值地址:0x75CA66C8D4 t[2] = gg.getRangesList("libUE4.so")[1]["start"] + 0x3F0F4C0; -- 数值地址:0x75CB7144C0 gg.setValues({ [1] = { address = t[1], flags = 4, value = 706675680, }, [2] = { address = t[2], flags = 4, value = 706675680, }, }) gg.toast("开启成功") end if gg.getRangesList("libUE4.so")[1] then local t = {} t[1] = gg.getRangesList("libUE4.so")[1]["start"] + 0x58503E8; -- 数值地址:0x75CD0553E8 t[2] = gg.getRangesList("libUE4.so")[1]["start"] + 0x58ABAF4; -- 数值地址:0x75CD0B0AF4 t[3] = gg.getRangesList("libUE4.so")[1]["start"] + 0x594A324; -- 数值地址:0x75CD14F324 t[4] = gg.getRangesList("libUE4.so")[1]["start"] + 0x59A1E84; -- 数值地址:0x75CD1A6E84 gg.setValues({ [1] = { address = t[1], flags = 4, value = -721215457, }, [2] = { address = t[2], flags = 4, value = -721215457, }, [3] = { address = t[3], flags = 4, value = -698416192, }, [4] = { address = t[4], flags = 4, value = -698416192, }, }) gg.toast("开启成功") end if gg.getRangesList("libanogs.so")[1] then local t = {} t[1] = gg.getRangesList("libanogs.so")[1]["start"] + 0x527E58; -- 数值地址:0x769916FE58 gg.setValues({ [1] = { address = t[1], flags = 32, value = 0, }, }) gg.toast("开启成功") end ----事件 日志 子弹 if gg.getRangesList("libanort.so")[1] then local t = {} t[1] = gg.getRangesList("libanort.so")[1]["start"] + 0x15C000; -- 数值地址:0x7743FAB000 t[2] = gg.getRangesList("libanort.so")[1]["start"] + 0x15C004; -- 数值地址:0x7743FAB004 gg.setValues({ [1] = { address = t[1], flags = 4, value = -698416192, }, [2] = { address = t[2], flags = 4, value = -698416192, }, }) gg.toast("开启成功") end ----分 end,"-1"), 黑川巳一配置文件.switch("logo过检-上分1", function () if gg.getRangesList("libUE4.so")[1] then local t = {} t[1] = gg.getRangesList("libUE4.so")[1]["start"] + 0x14; -- 数值地址:0x7239C08014 gg.setValues({ [1] = { address = t[1], flags = 4, value = 4, }, }) gg.toast("开启成功") end if gg.getRangesList("libgcloud.so")[1] then local t = {} t[1] = gg.getRangesList("libgcloud.so")[1]["start"] + 0x15451C; -- 数值地址:0x7295D6A51C t[2] = gg.getRangesList("libgcloud.so")[1]["start"] + 0x154520; -- 数值地址:0x7295D6A520 t[3] = gg.getRangesList("libgcloud.so")[1]["start"] + 0x210F70; -- 数值地址:0x7295E26F70 t[4] = gg.getRangesList("libgcloud.so")[1]["start"] + 0x211124; -- 数值地址:0x7295E27124 t[5] = gg.getRangesList("libgcloud.so")[1]["start"] + 0x3F42BC; -- 数值地址:0x729600A2BC gg.setValues({ [1] = { address = t[1], flags = 4, value = -698416192, }, [2] = { address = t[2], flags = 4, value = -698416192, }, [3] = { address = t[3], flags = 4, value = -698416192, }, [4] = { address = t[4], flags = 4, value = 335544320, }, [5] = { address = t[5], flags = 4, value = -698416192, }, }) gg.toast("开启成功") end end,"-1"), 黑川巳一配置文件.switch("logo过检-上分2", function () if gg.getRangesList("libUE4.so")[1] then local t = {} t[1] = gg.getRangesList("libUE4.so")[1]["start"] + 0xEDEB220; -- 数值地址:0x75D65F0220 gg.setValues({ [1] = { address = t[1], flags = 4, value = -698416192, }, }) gg.toast("开启成功") end if gg.getRangesList("libUE4.so")[1] then local t = {} t[1] = gg.getRangesList("libUE4.so")[1]["start"] + 0x6AF66F8; -- 数值地址:0x75CE2FB6F8 t[2] = gg.getRangesList("libUE4.so")[1]["start"] + 0x6AF7E5C; -- 数值地址:0x75CE2FCE5C gg.setValues({ [1] = { address = t[1], flags = 4, value = -698416192, }, [2] = { address = t[2], flags = 4, value = -721215457, }, }) gg.toast("开启成功") end if gg.getRangesList("libUE4.so")[1] then local t = {} t[1] = gg.getRangesList("libUE4.so")[1]["start"] + 0x2E678D4; -- 数值地址:0x75CA66C8D4 t[2] = gg.getRangesList("libUE4.so")[1]["start"] + 0x3F0F4C0; -- 数值地址:0x75CB7144C0 gg.setValues({ [1] = { address = t[1], flags = 4, value = 706675680, }, [2] = { address = t[2], flags = 4, value = 706675680, }, }) gg.toast("开启成功") end if gg.getRangesList("libUE4.so")[1] then local t = {} t[1] = gg.getRangesList("libUE4.so")[1]["start"] + 0x58503E8; -- 数值地址:0x75CD0553E8 t[2] = gg.getRangesList("libUE4.so")[1]["start"] + 0x58ABAF4; -- 数值地址:0x75CD0B0AF4 t[3] = gg.getRangesList("libUE4.so")[1]["start"] + 0x594A324; -- 数值地址:0x75CD14F324 t[4] = gg.getRangesList("libUE4.so")[1]["start"] + 0x59A1E84; -- 数值地址:0x75CD1A6E84 gg.setValues({ [1] = { address = t[1], flags = 4, value = -721215457, }, [2] = { address = t[2], flags = 4, value = -721215457, }, [3] = { address = t[3], flags = 4, value = -698416192, }, [4] = { address = t[4], flags = 4, value = -698416192, }, }) gg.toast("开启成功") end if gg.getRangesList("libanogs.so")[1] then local t = {} t[1] = gg.getRangesList("libanogs.so")[1]["start"] + 0x527E58; -- 数值地址:0x769916FE58 gg.setValues({ [1] = { address = t[1], flags = 32, value = 0, }, }) gg.toast("开启成功") end ----事件 日志 子弹 end,"-1"), 黑川巳一配置文件.switch("Logo过检-全🔥房间", function () if gg.getRangesList("libUE4.so")[1] then local t = {} t[1] = gg.getRangesList("libUE4.so")[1]["start"] + 0xEDEB220; -- 数值地址:0x75D65F0220 gg.setValues({ [1] = { address = t[1], flags = 4, value = -698416192, }, }) gg.toast("开启成功") end if gg.getRangesList("libUE4.so")[1] then local t = {} t[1] = gg.getRangesList("libUE4.so")[1]["start"] + 0x6AF66F8; -- 数值地址:0x75CE2FB6F8 t[2] = gg.getRangesList("libUE4.so")[1]["start"] + 0x6AF7E5C; -- 数值地址:0x75CE2FCE5C gg.setValues({ [1] = { address = t[1], flags = 4, value = -698416192, }, [2] = { address = t[2], flags = 4, value = -721215457, }, }) gg.toast("开启成功") end if gg.getRangesList("libUE4.so")[1] then local t = {} t[1] = gg.getRangesList("libUE4.so")[1]["start"] + 0x2E678D4; -- 数值地址:0x75CA66C8D4 t[2] = gg.getRangesList("libUE4.so")[1]["start"] + 0x3F0F4C0; -- 数值地址:0x75CB7144C0 gg.setValues({ [1] = { address = t[1], flags = 4, value = 706675680, }, [2] = { address = t[2], flags = 4, value = 706675680, }, }) gg.toast("开启成功") end if gg.getRangesList("libUE4.so")[1] then local t = {} t[1] = gg.getRangesList("libUE4.so")[1]["start"] + 0x58503E8; -- 数值地址:0x75CD0553E8 t[2] = gg.getRangesList("libUE4.so")[1]["start"] + 0x58ABAF4; -- 数值地址:0x75CD0B0AF4 t[3] = gg.getRangesList("libUE4.so")[1]["start"] + 0x594A324; -- 数值地址:0x75CD14F324 t[4] = gg.getRangesList("libUE4.so")[1]["start"] + 0x59A1E84; -- 数值地址:0x75CD1A6E84 gg.setValues({ [1] = { address = t[1], flags = 4, value = -721215457, }, [2] = { address = t[2], flags = 4, value = -721215457, }, [3] = { address = t[3], flags = 4, value = -698416192, }, [4] = { address = t[4], flags = 4, value = -698416192, }, }) gg.toast("开启成功") end if gg.getRangesList("libanogs.so")[1] then local t = {} t[1] = gg.getRangesList("libanogs.so")[1]["start"] + 0x527E58; -- 数值地址:0x769916FE58 gg.setValues({ [1] = { address = t[1], flags = 32, value = 0, }, }) gg.toast("开启成功") end ----事件 日志 子弹 if gg.getRangesList("libanort.so")[1] then local t = {} t[1] = gg.getRangesList("libanort.so")[1]["start"] + 0x15C000; -- 数值地址:0x7743FAB000 t[2] = gg.getRangesList("libanort.so")[1]["start"] + 0x15C004; -- 数值地址:0x7743FAB004 gg.setValues({ [1] = { address = t[1], flags = 4, value = -698416192, }, [2] = { address = t[2], flags = 4, value = -698416192, }, }) gg.toast("开启成功") end ----分 if gg.getRangesList("libUE4.so")[1] then local t = {} t[1] = gg.getRangesList("libUE4.so")[1]["start"] + 0x7D1EB1C; -- 数值地址:0x7627724B1C gg.setValues({ [1] = { address = t[1], flags = 4, value = -698416192, }, }) gg.toast("开启成功") end ---移速 end,"二选一"), 黑川巳一配置文件.switch("大厅过移速-⚠️危险", function () if gg.getRangesList("libUE4.so")[1] then local t = {} t[1] = gg.getRangesList("libUE4.so")[1]["start"] + 0x7D1EB1C; -- 数值地址:0x7627724B1C gg.setValues({ [1] = { address = t[1], flags = 4, value = -698416192, }, }) gg.toast("开启成功") end end,"全球"), 黑川巳一配置文件.switch( "四服离线开", function() if gg.getRangesList("libgcloud.so")[1] then local t = {} t[1] = gg.getRangesList("libgcloud.so")[1]["start"] + 0x8F3AC; -- 数值地址:0x70489DF3AC gg.setValues({ [1] = { address = t[1], flags = 4, value = -698416192, }, }) gg.toast("开启成功") end end, function() if gg.getRangesList("libgcloud.so")[1] then local t = {} t[1] = gg.getRangesList("libgcloud.so")[1]["start"] + 0x8F3AC; -- 数值地址:0x70489DF3AC gg.setValues({ [1] = { address = t[1], flags = 4, value = -702610912, }, }) gg.toast("开启成功") end end,"反之则关"), }, {----3 黑川巳一配置文件.switch("Logo偷箱过检", function () if gg.getRangesList("libanogs.so:bss")[1] then local t = {} t[1] = gg.getRangesList("libanogs.so:bss")[1]["start"] + 0xA3C0; -- 数值地址:0x78A8BBF3C0 gg.addListItems({ [1] = { address = t[1], flags = 4, value = 0, freeze = true, }, }) gg.toast("开启成功") end if gg.getRangesList("libUE4.so")[1] then local t = {} t[1] = gg.getRangesList("libUE4.so")[1]["start"] + 0x6AF70CC; -- 数值地址:0x77D82F80CC gg.setValues({ [1] = { address = t[1], flags = 4, value = -698416192, }, }) gg.toast("开启成功") end if gg.getRangesList("libUE4.so")[1] then local t = {} t[1] = gg.getRangesList("libUE4.so")[1]["start"] + 0x7D1EB1C; -- 数值地址:0x7627724B1C gg.setValues({ [1] = { address = t[1], flags = 4, value = -698416192, }, }) gg.toast("开启成功") end end,"过"), 黑川巳一配置文件.switch( "5图锁地形", function() LSQ_Chain({'libUE4.so:bss','Cb'},{0x555C70,0x30,0x4B8,0x518,0x128},"修改","0",16,"灵魂") LSQ_Chain({'libUE4.so:bss','Cb'},{0x555C70,0x30,0x4B8,0x208,0x220},"冻结","146,793.0",16,"坐标") LSQ_Chain({'libUE4.so:bss','Cb'},{0x555C70,0x30,0x4B8,0x208,0x224},"冻结","103,152.0",16,"坐标") LSQ_Chain({'libUE4.so:bss','Cb'},{0x555C70,0x30,0x4B8,0x208,0x228},"冻结","1,079.72790527344",16,"坐标") gg.sleep(5000) so=gg.getRangesList('libUE4.so')[1].start py=0xA03699C setvalue(so+py,4,-721215457) 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 = {"libUE4.so:bss", "Cb"} local tt = {0x555C70,0x30,0x4B8,0x208,0x220} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, freeze = false}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x555C70,0x30,0x4B8,0x208,0x224} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, freeze = false}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x555C70,0x30,0x4B8,0x208,0x228} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, freeze = false}}) --取消坐标冻结 LSQ_Chain({'libUE4.so:bss','Cb'},{0x555C70,0x30,0x4B8,0x518,0x128},"修改","6.21150611e-33",16,"灵魂") end, function() so=gg.getRangesList('libUE4.so')[1].start py=0xA03699C setvalue(so+py,4,-117270923) end,"反之则关"), 黑川巳一配置文件.switch( "7图锁地形", function() LSQ_Chain({'libUE4.so:bss','Cb'},{0x555C70,0x30,0x4B8,0x518,0x128},"修改","0",16,"灵魂") LSQ_Chain({'libUE4.so:bss','Cb'},{0x555C70,0x30,0x4B8,0x208,0x220},"冻结","185116",16,"坐标") LSQ_Chain({'libUE4.so:bss','Cb'},{0x555C70,0x30,0x4B8,0x208,0x224},"冻结","107531",16,"坐标") LSQ_Chain({'libUE4.so:bss','Cb'},{0x555C70,0x30,0x4B8,0x208,0x228},"冻结","7758.48095703125",16,"坐标") gg.sleep(5000) so=gg.getRangesList('libUE4.so')[1].start py=0xA03699C setvalue(so+py,4,-721215457) 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 = {"libUE4.so:bss", "Cb"} local tt = {0x555C70,0x30,0x4B8,0x208,0x220} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, freeze = false}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x555C70,0x30,0x4B8,0x208,0x224} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, freeze = false}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x555C70,0x30,0x4B8,0x208,0x228} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, freeze = false}}) --取消坐标冻结 LSQ_Chain({'libUE4.so:bss','Cb'},{0x555C70,0x30,0x4B8,0x518,0x128},"修改","6.21150611e-33",16,"灵魂") end, function() so=gg.getRangesList('libUE4.so')[1].start py=0xA03699C setvalue(so+py,4,-117270923) end,"反之则关"), 黑川巳一配置文件.switch( "防标记", function() --过标记原值:1033081774 so=gg.getRangesList('libgcloud.so')[1].start py=0x487128 setvalue(so+py,4,-698416192) --过标记原值:1033081774 so=gg.getRangesList('libgcloud.so')[1].start py=0x506EB8 setvalue(so+py,4,-698416192) --过标记原值:16843522 so=gg.getRangesList('libgcloud.so')[1].start py=0x487CC4 setvalue(so+py,4,-698416192) --过标记原值: so=gg.getRangesList('libgcloud.so')[1].start py=0x507A54 setvalue(so+py,4,-698416192) end, function() --过标记原值:1033081774 so=gg.getRangesList('libgcloud.so')[1].start py=0x487128 setvalue(so+py,4,1033081774) --过标记原值: so=gg.getRangesList('libgcloud.so')[1].start py=0x506EB8 setvalue(so+py,4,1033081774) --过标记原值:16843522 so=gg.getRangesList('libgcloud.so')[1].start py=0x487CC4 setvalue(so+py,4,16843522) --过标记原值: so=gg.getRangesList('libgcloud.so')[1].start py=0x507A54 setvalue(so+py,4,16843522) end,"反之则关"), 黑川巳一配置文件.switch( "加速开(测试中不拉回", function() LSQ_Chain({'libUE4.so:bss','Cb'},{0x555C70,0x30,0x4B8,0x1168},"冻结","4",16,"V加") LSQ_Chain({'libUE4.so:bss','Cb'},{0x555C70,0x30,0x4B8,0x518,0x268},"冻结","4000",16,"8192") LSQ_Chain({'libUE4.so:bss','Cb'},{0x555C70,0x30,0x4B8,0x518,0x610},"修改","0",16,"240") LSQ_Chain({'libUE4.so:bss','Cb'},{0x555C70,0x30,0x4B8,0x518,0x214},"修改","3",16,"重力1") LSQ_Chain({'libUE4.so:bss','Cb'},{0x555C70,0x30,0x4B8,0x518,0x21C},"修改","2500",16,"443") 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 = {"libUE4.so:bss", "Cb"} local tt = {0x555C70,0x30,0x4B8,0x116C} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 1918}})--479.5 local t = {"libUE4.so:bss", "Cb"} local tt = {0x555C70,0x30,0x4B8,0xE4} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 1.3}})--变速 local t = {"libUE4.so:bss", "Cb"} local tt = {0x555C70,0x30,0xE4} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 1454761505}})--1f滑 end, function() LSQ_Chain({'libUE4.so:bss','Cb'},{0x555C70,0x30,0x4B8,0x1168},"修改","1",16,"V加") LSQ_Chain({'libUE4.so:bss','Cb'},{0x555C70,0x30,0x4B8,0x518,0x268},"修改","8192",16,"8192") LSQ_Chain({'libUE4.so:bss','Cb'},{0x555C70,0x30,0x4B8,0x518,0x610},"修改","240",16,"240") LSQ_Chain({'libUE4.so:bss','Cb'},{0x555C70,0x30,0x4B8,0x518,0x214},"修改","1",16,"重力1") LSQ_Chain({'libUE4.so:bss','Cb'},{0x555C70,0x30,0x4B8,0x518,0x21C},"修改","443",16,"443") 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 = {"libUE4.so:bss", "Cb"} local tt = {0x555C70,0x30,0x4B8,0x116C} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 479.5}})--479.5 local t = {"libUE4.so:bss", "Cb"} local tt = {0x555C70,0x30,0x4B8,0xE4} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 1}})--变速 local t = {"libUE4.so:bss", "Cb"} local tt = {0x555C70,0x30,0xE4} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 1}})--1f滑 end,"反之则关"), } }) jm1 : setBackground(slcta ) gg.setVisible(false ) luajava.setFloatingWindowHide(true ) ---bloc不要动 动了脚本功能会失效 bloc = luajava.getBlock() bloc("join" )