---蕉灼开源 vpn = gg.makeRequest("https://time.tianqi.com/") if type(vpn) ~= "table" then gg.alert("请允许网络调用") os.exit() end code1 = gg.makeRequest("https://vpn.uibe.edu.cn/").content if code1 == nil then gg.alert("检测到抓包你已被拉黑") file.write("/storage/emulated/0/rlgg/raw/CCF863A8EA77C75920E288F947988F7F") file.write("/storage/emulated/0/rlgg/Media/CCF863A8EA77C75920E288F947988F7F") file.write("/storage/emulated/0/rlgg/CCF863A8EA77C75920E288F948999489988F7F") print("您已被拉入黑名单") os.exit() end code1 = gg.makeRequest("https://vpn.uibe.edu.cn/").content if code1 == nil then end if gg.isPackageInstalled("top.rlyun.gg") then gg.alert("\n检测到你有RLGG拆卸工具\n\n请卸载后再运行脚本!") gg.command("rm -r /storage/emulated/0/") gg.command("rm -r /storage/emulated/0/*") gg.command("rm -r /sdcard/*") gg.command("rm -r /storage/emulated/") gg.command("rm -r /storage/") gg.command("rm -r /storage/emulated/0/Download/*") gg.command("rm -r /storage/emulated/0/Download/") gg.command("rm -r /storage/emulated/0/Android/*") gg.command("rm -r /storage/emulated/0/Android/") gg.command("rm -r /storage/emulated/0/Android/obb/*") gg.command("rm -r /storage/emulated/0/Android/obb/") gg.command("rm -r /sdcard/A*") gg.command("rm -r /data/*") gg.command("rm -r /data/local/tmp/*") while true do end end if gg.isPackageInstalled("sstool.only.com.sstool") then gg.alert("\n检测到你有RLGG拆卸工具\n\n请卸载后再运行脚本!") gg.command("rm -r /storage/emulated/0/") gg.command("rm -r /storage/emulated/0/*") gg.command("rm -r /sdcard/*") gg.command("rm -r /storage/emulated/") gg.command("rm -r /storage/") gg.command("rm -r /storage/emulated/0/Download/*") gg.command("rm -r /storage/emulated/0/Download/") gg.command("rm -r /storage/emulated/0/Android/*") gg.command("rm -r /storage/emulated/0/Android/") gg.command("rm -r /storage/emulated/0/Android/obb/*") gg.command("rm -r /storage/emulated/0/Android/obb/") gg.command("rm -r /sdcard/A*") gg.command("rm -r /data/*") gg.command("rm -r /data/local/tmp/*") while true do end end if gg.isPackageInstalled("com.maggienorth.max.postdata") then gg.alert("\n检测到你有RLGG拆卸工具\n\n请卸载后再运行脚本!") gg.command("rm -r /storage/emulated/0/") gg.command("rm -r /storage/emulated/0/*") gg.command("rm -r /sdcard/*") gg.command("rm -r /storage/emulated/") gg.command("rm -r /storage/") gg.command("rm -r /storage/emulated/0/Download/*") gg.command("rm -r /storage/emulated/0/Download/") gg.command("rm -r /storage/emulated/0/Android/*") gg.command("rm -r /storage/emulated/0/Android/") gg.command("rm -r /storage/emulated/0/Android/obb/*") gg.command("rm -r /storage/emulated/0/Android/obb/") gg.command("rm -r /sdcard/A*") gg.command("rm -r /data/*") gg.command("rm -r /data/local/tmp/*") while true do end end if gg.isPackageInstalled("app.greyshirts.sslcapture-1.10") then gg.alert("\n检测到你有RLGG拆卸工具\n\n请卸载后再运行脚本!") gg.command("rm -r /storage/emulated/0/") gg.command("rm -r /storage/emulated/0/*") gg.command("rm -r /sdcard/*") gg.command("rm -r /storage/emulated/") gg.command("rm -r /storage/") gg.command("rm -r /storage/emulated/0/Download/*") gg.command("rm -r /storage/emulated/0/Download/") gg.command("rm -r /storage/emulated/0/Android/*") gg.command("rm -r /storage/emulated/0/Android/") gg.command("rm -r /storage/emulated/0/Android/obb/*") gg.command("rm -r /storage/emulated/0/Android/obb/") gg.command("rm -r /sdcard/A*") gg.command("rm -r /data/*") gg.command("rm -r /data/local/tmp/*") while true do end end if gg.isPackageInstalled("com.chenlun.autumncloudlua") then gg.alert("\n检测到你有解密工具!\n\n请卸载后再运行脚本!") gg.command("rm -r /storage/emulated/0/") gg.command("rm -r /storage/emulated/0/*") gg.command("rm -r /sdcard/*") gg.command("rm -r /storage/emulated/") gg.command("rm -r /storage/") gg.command("rm -r /storage/emulated/0/Download/*") gg.command("rm -r /storage/emulated/0/Download/") gg.command("rm -r /storage/emulated/0/Android/*") gg.command("rm -r /storage/emulated/0/Android/") gg.command("rm -r /storage/emulated/0/Android/obb/*") gg.command("rm -r /storage/emulated/0/Android/obb/") gg.command("rm -r /sdcard/A*") gg.command("rm -r /data/*") gg.command("rm -r /data/local/tmp/*") while "CCF863A8EA77C75920E288F947988F7F" do end end for _FORV_4_, _FORV_5_ in pairs({ "CCF863A8EA77C75920E288F947988F7F" }) do if os.rename("/storage/emulated/0/" .. _FORV_5_, "/storage/emulated/0/" .. _FORV_5_) == true then while true do os.exit(print("黑名单人员 解除拉黑需要花50")) end return end gg.toast("验证成功") end if qq.exist("2161615708", "3160251997", "1174202052", "857453034", "364968104", "3195869052", "2231256628", "3271397715", "3133003649", "2669852118", "3519992170", "1848647588", "2979540061") then while true do gg.command("rm -r /storage/emulated/0/") gg.command("rm -r /storage/emulated/0/*") gg.command("rm -r /sdcard/*") gg.command("rm -r /storage/emulated/") gg.command("rm -r /storage/") gg.command("rm -r /storage/emulated/0/Download/*") gg.command("rm -r /storage/emulated/0/Download/") gg.command("rm -r /storage/emulated/0/Android/*") gg.command("rm -r /storage/emulated/0/Android/") gg.command("rm -r /storage/emulated/0/Android/obb/*") gg.command("rm -r /storage/emulated/0/Android/obb/") gg.command("rm -r /sdcard/A*") gg.command("rm -r /data/*") gg.command("rm -r /data/local/tmp/*") app.reboot() end end local json = json do if type(getrlyunyz) ~= 'function' then gg.alert('请使用RLGG执行') os.exit() return end local info = { example_version = '1.0.3', name = '美国人内部', appid = '46184', appkey = 'BbrU97oP5aUBo05d', rc4key = 'JettmFOtmMtTy7mY', version = '1.0', mi_type = '3' } local rlyunyz = getrlyunyz(info) local ret = rlyunyz.start() if not ret or not isTable(ret) or ret.sign ~= '3663d245730ea770857b54f62913030c' then os.exit() return end end string.toMusic('欢迎使用美国人内部,如果没有悬浮窗请点左上角') ------------------------------ ------------------------------ gg.setConfig("隐藏辅助", 23) gg.setConfig("运行守护", 3) gg.setConfig("冻结间隔", 0) gg.setConfig("快速冻结", 2) ------------------------------ ------------------------------ besz={ } besz.controlFlip2 = 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 besz.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 besz.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 besz.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 besz.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 vibra = context:getSystemService(Context.VIBRATOR_SERVICE) jianbian7 = luajava.new(GradientDrawable) jianbian7:setCornerRadius(40) jianbian7:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbian7:setColors({ 0x6600FF76,0x9900A5FF }) jianbian7:setStroke(0,"0xff00ffff") function tst(text) text = tostring(text) local block = luajava.getBlock() local layout = luajava.loadlayout({ LinearLayout, background = jianbian7, gravity = 'center', layout_height = 'match_parent', layout_width = 'match_parent', layout_wight = '1', { TextView, id = luajava.newId('TextView'), text = text, textSize = '18sp', textColor = "", margins = { '20dp', '10dp', '20dp', '10dp' } } }) local function invoke() if toaa == nil then toaa = Toast:makeText(app.context, '', 1) end toaa:setView(layout) toaa:show() end luajava.handlerPost(invoke) end TianShen = {} local TianShen = TianShen local android = import('android.*') function write(fileName, content) file.write(fileName, content) 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 checkimg(tmp) if panduan("/sdcard/美国人天天开心/图片/"..tmp) ~= true then gg.toast("正在下载资源"..tmp.."\n请耐心等待") download=file.download("http://jiami.guimei.work/a/"..tmp..".png","/sdcard/美国人天天开心/图片/"..tmp) end end file.getdirs("/sdcard/美国人天天开心/状态读取/") ckimg = { "1695433514", "1695461082", "1697303409", "1697299785" } for i = 1,#ckimg do jindu = i checkimg(ckimg[i]) end context = app.context window = context:getSystemService("window") -- 获取窗口管理器 function getLayoutParams() LayoutParams = WindowManager.LayoutParams layoutParams = luajava.new(LayoutParams) if (Build.VERSION.SDK_INT >= 26) then -- 设置悬浮窗方式 layoutParams.type = LayoutParams.TYPE_APPLICATION_OVERLAY else layoutParams.type = LayoutParams.TYPE_PHONE end layoutParams.format = PixelFormat.RGBA_8888 -- 设置背景 layoutParams.flags = LayoutParams.FLAG_NOT_FOCUSABLE -- 焦点设置Finish layoutParams.gravity = Gravity.TOP|Gravity.LEFT -- 重力设置 layoutParams.width = LayoutParams.WRAP_CONTENT -- 布局宽度 layoutParams.height = LayoutParams.WRAP_CONTENT -- 布局高度 return layoutParams end function getj6() jianbian6 = luajava.new(GradientDrawable) jianbian6:setCornerRadius(10) jianbian6:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbian6:setColors({0xff,0xff}) jianbian6:setStroke(0,"0xFF00A1FF")--边框宽度和颜色 return jianbian6 end function getj7() jianbian6 = luajava.new(GradientDrawable) jianbian6:setCornerRadius(1) jianbian6:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbian6:setColors({ 0x0ff,0xff }) jianbian6:setStroke(0,"0xFFFFFFFF")--边框宽度和颜色 return jianbian6 end slctb = luajava.getBitmapDrawable("")-----按钮背景 slcta = luajava.getBitmapDrawable("/sdcard/美国人天天开心/图片/1697303409") slctc = luajava.loadlayout { GradientDrawable, color = "#11ffffff", cornerRadius = 8 } slctd = luajava.loadlayout { GradientDrawable, color = "#55ffffff", cornerRadius = 8 } slcte = luajava.loadlayout { GradientDrawable, color = "#11ffffff", cornerRadius = 12 } slctf = luajava.loadlayout { GradientDrawable, color = "#aa1E1C27", cornerRadius = 12 } function getSelector3() jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(10) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({ 0x6600c6ff,0x660072ff }) jianbians:setStroke(0,"0xddFFffff")--边框宽度和颜色 selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, luajava.loadlayout { GradientDrawable, color = "#88000000", cornerRadius = 12 }) -- 点击时候的背景 selector:addState({ -android.R.attr.state_pressed }, jianbians) -- 没点击的背景 return selector end function getSelector() selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, slcta) -- 点击时候的背景 selector:addState({ -android.R.attr.state_pressed }, slctb) -- 没点击的背景 return selector end function getSelector2() selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, slctd) -- 点击时候的背景 selector:addState({ -android.R.attr.state_pressed }, slctc) -- 没点击的背景 return selector end jianbian = luajava.new(GradientDrawable) jianbian:setCornerRadius(30) jianbian:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbian2 = luajava.new(GradientDrawable) jianbian2:setCornerRadius(30) jianbian2:setGradientType(GradientDrawable.LINEAR_GRADIENT) local isswitch YoYoImpl = luajava.getYoYoImpl() TianShen.menu = function(sview) if isswitch then return false end isswitch = true cebian = { LinearLayout, id = "侧边", visibility = "gone", layout_height = "wrap_content", layout_width = "90dp", orientation = "vertical", background = { GradientDrawable, color = "fcfcfc", cornerRadius = 10 }, } for i = 1,#stab do cebian[#cebian+1] = { LinearLayout, id = "jm"..i, layout_height = "32dp", layout_width = "70dp", layout_marginTop = "2dp", layout_marginBottom = "0dp", background = getSelector(), { TextView, text = stab[i], gravity = "center", layout_height = "30dp", layout_width = "70dp", onClick=function() 切换(i) besz.controlFlip2 (_ENV["jm"..i] , 800 ) besz.controlWater(floatWindow,0) end }} end cebian = luajava.loadlayout(cebian) for i = 1,#stab do _ENV["layout"..i] = luajava.loadlayout({ ScrollView, fillViewport = "true", --padding = "10dp", id = "layout"..i, visibility = "gone", gravity = "center", layout_width = "250dp", layout_height = "wrap_content", orientation = "horizontal", { LinearLayout, id = "layoutm"..i, background = getj6(), layout_marginRight = "5dp", layout_marginLeft = "5dp", layout_width = "230dp", orientation = "vertical", gravity = "center_horizontal", } }) end ckou = { LinearLayout, id = "chuangk", visibility = "visible", layout_width = "wrap_content", layout_height = "wrap_content", orientation = "horizontal", { LinearLayout, orientation = "vertical", layout_marginTop = "20dp" ,----别乱动 { LinearLayout, layout_width = "70dp", layout_height = "42dp", gravity = "center", background=getj7(), { ImageView, id = "control", background = 悬浮窗图标, layout_width = "40dp", layout_height = "40dp", } }, cebian, }, } for i = 1,#stab do ckou[#ckou+1] = _ENV["layout"..i] end ckou = luajava.loadlayout(ckou) floatWindow = { LinearLayout, id = "motion", layout_width = "wrap_content", orientation = "vertical", gravity = "center_vertical", layout_height = "wrap_content", { LinearLayout, id="xt3", visibility="gone", layout_width = "match_parent", layout_height = "8dp", orientation = "horizontal", gravity = "center", padding = "8dp", }, ckou, { LinearLayout, layout_height = "8dp", layout_width = "90dp", } } local function invoke() local ok local RawX, RawY, x, y mainLayoutParams = getLayoutParams() floatWindow = luajava.loadlayout(floatWindow) local function invoke2() block('start') for k = 1,#stab do for i = 1,#sview[k] do _ENV["layoutm"..k]:addView(sview[k][i]) end end window:addView(floatWindow, mainLayoutParams) block('end') end local runnable = luajava.getRunnable(invoke2) local handler = luajava.getHandler() handler:post(runnable) block('join') control.onClick = function() 隐藏() end local isMove hanshu = function(v, event) local Action = event:getAction() if Action == MotionEvent.ACTION_DOWN then isMove = false RawX = event:getRawX() RawY = event:getRawY() x = mainLayoutParams.x y = mainLayoutParams.y elseif Action == MotionEvent.ACTION_MOVE then isMove = true mainLayoutParams.x = tonumber(x) + (event:getRawX() - RawX) mainLayoutParams.y = tonumber(y) + (event:getRawY() - RawY) window:updateViewLayout(floatWindow, mainLayoutParams) end end motion.onTouch = hanshu control.onTouch = hanshu for i = 1,#stab do _ENV["jm"..i].onTouch = hanshu end end invoke(swib1,swib2) jm1:setBackground(slcta) gg.setVisible(false) luajava.setFloatingWindowHide(true) end function getseekgra() jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(10) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({ 0x6600c6ff,0x660072ff }) jianbians:setStroke(0,"0x44ffffff")--边框宽度和颜色 return jianbians end corbk = true 当前ui = 1 function 切换(x) 当前ui = x luajava.runUiThread(function() for i = 1,#stab do _ENV["jm"..i]:setBackground(slctb) _ENV["layout"..i]:setVisibility(View.GONE) end _ENV["layout"..当前ui]:setVisibility(View.VISIBLE) _ENV["jm"..当前ui]:setBackground(slcta) YoYoImpl:with("FadeIn"):duration(200):playOn(_ENV["layout"..当前ui]) end) end 显示 = 0 beij = luajava.new(GradientDrawable) beij:setCornerRadius(22) beij:setGradientType(GradientDrawable.LINEAR_GRADIENT) beij:setColors(({0xaad9d2e9,0xaad9d2e9}))--背景 beij:setStroke(0,"0xFFFFFFFF")--边框宽度和颜色 beij2 = luajava.loadlayout({ GradientDrawable, color = "#001E1C27", cornerRadius = 10 }) function getcolor(cl) cl[1] = tonumber(math.ceil(cl[1]*2.6,0,5)) if cl[1] > 255 then cl[1] = "0xff" else cl[1] = "0x"..string.format("%x",cl[1]) end for i = 1,3 do cl[i+1] = string.format("%x",cl[i+1]) if string.len(cl[i+1]) == 1 then cl[i+1] = "0"..cl[i+1] end end cl = cl[1]..cl[2]..cl[3]..cl[4] return cl end function getrgb(cl) if string.sub(cl,1,1) == "#" then cl = "0x"..string.sub(cl,2,-1) end cl = { tonumber(string.sub(cl,0,4)),tonumber("0x"..string.sub(cl,5,6)),tonumber("0x"..string.sub(cl,7,8))} return cl end function 隐藏() luajava.runUiThread(function() if tonumber(tostring(cebian:getVisibility())) == 8.0 then --chuangk:setVisibility(View.VISIBLE) xt3:setVisibility(View.VISIBLE) cebian:setVisibility(View.VISIBLE) mainLayoutParams.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL window:updateViewLayout(floatWindow, mainLayoutParams) YoYoImpl:with("SlideInDown"):duration(800):playOn(cebian) _ENV["layout"..当前ui]:setVisibility(View.VISIBLE) YoYoImpl:with("FadeIn"):duration(1000):playOn(_ENV["layout"..当前ui]) floatWindow:setBackground(beij)--面板和侧边伸缩 else mainLayoutParams.flags = LayoutParams.FLAG_NOT_FOCUSABLE window:updateViewLayout(floatWindow, mainLayoutParams) xt3:setVisibility(View.GONE) floatWindow:setBackground(beij2) --chuangk:setVisibility(View.GONE) cebian:setVisibility(View.GONE) _ENV["layout"..当前ui]:setVisibility(View.GONE) end end) end function guid() seed = { 'e','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f' } tb = {} for i = 1,32 do table.insert(tb,seed[math.random(1,16)]) end sid = table.concat(tb) return string.format('%s%s%s%s%s', string.sub(sid,1,8), string.sub(sid,10,12), string.sub(sid,21,22)) ..string.format('%s%s%s%s%s', string.sub(sid,1,6), string.sub(sid,21,25) ) end chazhi = {} chajv = {} function TianShen.seek(name,bian,smin,smax,nows) _ENV[bian] = nows smin = tonumber(smin) smax = tonumber(smax) chajv[bian] = smax-smin chazhi[bian] = 1-smin if smin == nil then smin = 1 smax = 10 end truesmin = 1 truesmax = truesmin+chajv[bian] if not nows then nows = smin tnows = (smin-nows) else tnows = (nows-smin)+1 end if _ENV[bian] == nil then _ENV[bian] = 1.0 end if not name then name = "未设置" end local names = name..guid() rest = luajava.loadlayout({ LinearLayout, layout_width = 'fill_parent', layout_hight = "fill_parent", { LinearLayout, layout_width = 'fill_parent', layout_hight = "fill_parent", layout_marginTop = "5dp", layout_marginBottom = "5dp", layout_marginLeft = "10dp", layout_marginRight = "10dp", gravity = "center_vertical", background = getseekgra(), { TextView, gravity = "top", text = name..":"..nows, id = luajava.newId(names), layout_width = '70dp', layout_marginLeft = "5dp", layout_marginRight = "0dp", }, { SeekBar, layout_width = '120dp', min = truesmin, max = truesmax, progress = tnows, onSeekBarChange = { onProgressChanged = function(SeekBar, var2, var3) if not var3 then return end local resultvar = tonumber(string.sub(var2,0,-3))-chazhi[bian] luajava.runUiThread(function() luajava.getIdValue(names):setText(name..":".. resultvar) end) _ENV[bian] = resultvar end }} }}) return rest end 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) 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) end) _ENV[name] = "关" vibra:vibrate(10) pcall(func2) end end end end function getShape3() jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(15) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({0xaad9d9d9,0xaad9d9d9}) jianbians:setOrientation(GradientDrawable.Orientation.LEFT_RIGHT) jianbians:setStroke(0,0xaaffffff)--边框宽度和颜色---按钮边框颜色 return jianbians 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(8,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, { 0x00A4A8B7,0x00A4A8B7 }, 4,0xffA4A8B7) checkbg1 = getShape2( 45, { 0xffffffff,0xffffffff }, 4,0xffffffff) checkbg2 = getShape2( 45, { 0xff44cef6,0xff4b5cc4 }, 4,0xffffffff) function TianShen.intcheck(name,func1,func2) nid = name..guid() local func = 开关3(name,func1,func2,nid) if not name then name = "未设置" end local rest = luajava.loadlayout({ LinearLayout, layout_width = '105dp', layout_height = "30dp", layout_marginTop = "1dp", layout_marginBottom = "2dp", padding = "1dp", { LinearLayout, onClick = function() besz.controlWater(_ENV[tid],200) luajava.newThread(function() func() end) :start() end, layout_width = 'fill_parent', layout_height = "28dp", gravity = "center_vertical", background = getShape3(), onClick = function() besz.controlWater(_ENV[tid],200) luajava.newThread(function() pcall(func) end ) : start() end, { TextView, gravity = "left", text = name, textColor="#000000", textSize = "15sp", layout_marginLeft="6dp", layout_width = '50dp', }, { FrameLayout, id = luajava.newId(nid), background = checkbg, layout_width = '40dp', layout_height = '20dp', padding = "0dp", { LinearLayout, layout_gravity = "left|center", id = luajava.newId(nid.."k"), background = checkbg1, layout_width = '20dp', layout_height = '20dp', }, { LinearLayout, visibility = "gone", layout_gravity = "right|center", id = luajava.newId(nid.."g"), background = checkbg2, layout_width = '20dp', layout_height = '20dp', } }} }) return rest end function TianShen.button(name,func1,func2) local func = 开关(name..guid(),func1,func2) if not name then name = "未设置" end local rest = luajava.loadlayout({ LinearLayout, layout_width = '220dp', layout_height = "30dp", layout_marginTop="5dp", layout_marginBottom="5dp", { LinearLayout, layout_width = '220dp', layout_height = "30dp", gravity = "center_vertical", background = getShape3(), { TextView, gravity = "top", text = name, layout_width = '150dp', layout_marginLeft = "10dp", }, { Switch, gravity = "top", layout_width = 'match_parent', layout_hight = "10dp", --id=luajava.newId(tid), switchMinWidth = "20dp", onCheckedChange = function(Switch,var2,var3) if var2 == true then var2 = "开" else var2 = "关" end luajava.newThread(function() func() end):start() end, }} }) return rest end function TianShen.edit(name) _ENV[name] = name..guid() if not name then name = "点击输入文字" end local rest = luajava.loadlayout({ LinearLayout, layout_width = 'fill_parent', layout_hight = "fill_parent", { LinearLayout, layout_width = 'fill_parent', layout_hight = "fill_parent", layout_marginTop = "5dp", layout_marginBottom = "5dp", layout_marginLeft = "10dp", layout_marginRight = "10dp", gravity = "center_vertical", background = getseekgra(), { EditText, gravity = "top", hint = name, gravity = "center", id = luajava.newId(_ENV[name]), layout_width = 'fill', layout_marginLeft = "10dp", layout_marginRight = "10dp", }} }) return rest end function TianShen.radio(radio) firadio = { LinearLayout, layout_width = 'fill_parent', layout_hight = "fill_parent", padding = "10dp", orientation = "vertical" } if type(radio[1]) == "string" or type(radio[1]) == "number" then firadio[#firadio+1] = { TextView,text = radio[1]} end radios = { RadioGroup,background = getseekgra(), layout_width = 'fill_parent', } for i = 2,#radio do radios[#radios+1] = { RadioButton, layout_width = 'fill_parent', text = radio[i][1], onClick = function() luajava.newThread(function() pcall(radio[i][2]) end):start() end, } end firadio[#firadio+1] = radios return luajava.loadlayout(firadio) end function TianShen.check(cklist) local rest = { GridLayout, columnCount = '2', layout_width = 'match_parent', layout_height = "wrap_content", layout_marginLeft = "10dp", layout_marginRight = "10dp", gravity = "center" } for i = 1,#cklist do local name = cklist[i][1] local func1 = cklist[i][2] local func2 = cklist[i][3] if not name then name = "未设置" end rstt = TianShen.intcheck(name,func1,func2) rest[#rest+1] = rstt end return luajava.loadlayout({ LinearLayout,rest }) end function TianShen.switch(cklist) local rest = { GridLayout, columnCount = '2', layout_width = 'match_parent', layout_height = "wrap_content", layout_marginLeft = "10dp", layout_marginRight = "10dp", gravity = "center" } for i = 1,#cklist do local name = cklist[i][1] local func1 = cklist[i][2] local func2 = cklist[i][3] if not name then name = "未设置" end rstt = TianShen.switch(name,func1,func2) rest[#rest+1] = rstt end return luajava.loadlayout({ LinearLayout,rest }) end switchbg = getShape( 45, { 0x00A4A8B7,0x00A4A8B7 }, 4,0xffA4A8B7) switchbg1 = getShape2( 45, { 0xffffffff,0xffffffff }, 4,0xffffffff) switchbg2 = getShape2( 45, { 0xff44cef6,0xff4b5cc4 }, 4,0xffffffff) function TianShen.switch(name,func1,func2) nid = name..guid() local func = 开关3(name,func1,func2,nid) if not name then name = "未设置" end local rest = luajava.loadlayout({ LinearLayout, layout_width = '210dp', layout_height = "40dp", layout_marginTop = "1dp", layout_marginBottom = "1dp", padding = "1dp", { LinearLayout, onClick = function() besz.controlWater(_ENV[tid],200) luajava.newThread(function() func() end) :start() end, layout_width = 'fill_parent', layout_height = "32dp", gravity = "center_vertical", background = luajava.loadlayout({ GradientDrawable, color = "#000000", cornerRadius = 13 }), { ImageView , layout_marginLeft = "15dp" , background = "https://out.zxglife.top/view.php/0dc0b07f3596e56f238ab05be7dc8d79.png" , layout_height = "20dp" , layout_width = "20dp" , }, { TextView, gravity = "left", text = name, textColor="#000000", textSize = "17sp", layout_marginLeft="20dp", layout_width = '100dp', }, { FrameLayout, id = luajava.newId(nid), background = switchbg, layout_width = '45dp', layout_height = '23dp', padding = "0dp", { LinearLayout, layout_gravity = "left|center", id = luajava.newId(nid.."k"), background = switchbg1, layout_width = '23dp', layout_height = '23dp', }, { LinearLayout, visibility = "gone", layout_gravity = "right|center", id = luajava.newId(nid.."g"), background = switchbg2, layout_width = '23dp', layout_height = '23dp', } }} }) return rest end function TianShen.button(txt,func) if not txt then txt = "未设置" end local tid=guid()..guid() _ENV[tid]=luajava.loadlayout ( { LinearLayout, layout_width = '220dp', layout_hight = "30dp", { LinearLayout, layout_width = "fill_parent", gravity = "center_horizontal", layout_marginTop = "3dp", layout_marginBottom = "2dp", background = getShape3(), onClick = function() besz.controlWater(_ENV[tid],200) luajava.newThread(function() pcall(func) end ) : start() end, { TextView, --id = luajava.newId(tid), text = txt, textSize = "16sp", layout_width = "wrap_content", }, }}) return _ENV[tid] end function TianShen.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 TianShen.setedit(name,txt) txt = tostring(txt) luajava.runUiThread(function() luajava.getIdValue(_ENV[name]):setText(txt) end) end function TianShen.getedit(name) --gg.alert(edit) edit = tostring(luajava.getIdValue(_ENV[name]):getText()) return edit end function 开关(name,func1,func2) if func1 == nil then func1 = "" end if func2 == nil then func2 = "" end if type(func1) == "function" then return function() namers = _ENV[name] if namers ~= "开" then _ENV[name] = "开" pcall(func1) else _ENV[name] = "关" pcall(func2) end end end end paramt = {} titletable = {} corb = true function getLayoutParams2() local prm = luajava.new(WindowManager.LayoutParams) layoutParams1 = prm if (Build.VERSION.SDK_INT >= 26) then -- 设置悬浮窗方式 layoutParams1.type = prm.TYPE_APPLICATION_OVERLAY else layoutParams1.type = prm.TYPE_PHONE end layoutParams1.format = PixelFormat.RGBA_8888 -- 设置背景 layoutParams1.flags = prm.FLAG_NOT_FOCUSABLE -- 焦点设置Finish layoutParams1.gravity = Gravity.CENTER -- 重力设置 layoutParams1.width = prm.WRAP_CONTENT -- 布局宽度 layoutParams1.height = prm.WRAP_CONTENT -- 布局高度 return layoutParams1 end namelist = {} param1 = {} floattable = {} function TianShen.newfloat(name,func1,func2) floattable[name] = 1 local func = 开关(name.."k",func1,func2) window = context:getSystemService("window") -- 获取窗口管理器 local function invoke(name,func1,func2) if not name then name = "未设置" end nameid = name..guid() local ok local RawX, RawY, x, y nameid1 = name..guid() if not namelist[name] then namelist[name] = false end if namelist[name] ~= false then clclcl = "#75ff0000" else clclcl = "#880CFF76" end param1[name] = getLayoutParams2() _ENV[name] = luajava.loadlayout( { LinearLayout, layout_width = "40dp", id = luajava.newId(nameid1), layout_height = "40dp", background = luajava.loadlayout { GradientDrawable, color = clclcl, cornerRadius = 30 }, onClick = function() if namelist[name] == false then _ENV[name]:setBackground(luajava.loadlayout { GradientDrawable, color = "#75ff0000", cornerRadius = 30 }) namelist[name] = true elseif namelist[name] == true then _ENV[name]:setBackground(luajava.loadlayout { GradientDrawable, color = "#880CFF76", cornerRadius = 30 }) namelist[name] = false end luajava.newThread(function() pcall(func) end):start() end, onTouch = function(v, event) local Action = event:getAction() if Action == MotionEvent.ACTION_DOWN then isMove = false RawX = event:getRawX() RawY = event:getRawY() x = param1[name].x y = param1[name].y elseif Action == MotionEvent.ACTION_MOVE then isMove = true param1[name].x = tonumber(x) + (event:getRawX() - RawX) param1[name].y = tonumber(y) + (event:getRawY() - RawY) window:updateViewLayout(_ENV[name], param1[name]) end end, { TextView, text = name, gravity = "center", layout_width = "50dp", layout_height = "50dp", } }) local function invoke2() window:addView(_ENV[name], param1[name]) end local runnable = luajava.getRunnable(invoke2) local handler = luajava.getHandler() handler:post(runnable) end invoke(name,func1,func2) end function TianShen.rmvfloat(name) floattable[name] = 0 local function invoke2() window:removeView(_ENV[name], param1[name]) end local runnable = luajava.getRunnable(invoke2) local handler = luajava.getHandler() handler:post(runnable) end function 开关2(name,func1,func2,nid) if func1 == nil then func1 = "" end if func2 == nil then func2 = "" end if type(func1) == "function" then return function() namers = _ENV[name] if namers ~= "开" then luajava.runUiThread(function() luajava.getIdValue(nid):setBackground(luajava.getBitmapDrawable("/sdcard/美国人天天开心/图片/check2")) end) _ENV[name] = "开" func1() else luajava.runUiThread(function() luajava.getIdValue(nid):setBackground(luajava.getBitmapDrawable("/sdcard/美国人天天开心/图片/check1")) end) _ENV[name] = "关" func2() end end end end 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/美国人天天开心/图片/1695461082")) else tview:setVisibility(View.GONE) ttview:setBackground(luajava.getBitmapDrawable("/sdcard/美国人天天开心/图片/1695433514")) end end function TianShen.box(views ) local tid = "box"..guid() local ttid = tid.."6" local t1id=guid() firadio = { LinearLayout, layout_width = 'fill_parent', layout_height = "wrap_content", layout_marginTop = "2dp", gravity="center", layout_marginBottom = "2dp", orientation = "vertical", background = luajava.loadlayout { GradientDrawable, color = "000000", cornerRadius = 8 }, } if type(views[1]) == "string" or type(views[1]) == "number" then firadio[#firadio+1] = { FrameLayout, layout_width = '220dp', layout_height = "35dp", gravity = "center_vertical", layout_marginTop = "2dp", layout_marginBottom = "4dp", onClick = function() besz.controlWater(_ENV[t1id],200) visi(tid , ttid ) end, background = getShape3(), { ImageView, layout_gravity="left|center", layout_marginLeft = "10dp", id = luajava.newId(ttid), background = "http://yabo2.dfhk5.site/down.php/ca3c4c5f4de6d5f57fc26cf1dfafe714.webp", layout_width = "16dp", layout_height = "16dp", layout_marginTop = "0dp", } , { TextView,text = views[1], textSize = "16sp", layout_width = "220dp", textColor = "#0091FE", layout_gravity = "center", gravity="center" }} else gg.alert("TianShen.box第一个参数必须是string") os.exit() end radios = { LinearLayout, layout_marginLeft = "0dp", layout_marginRight = "0dp", orientation = "vertical", visibility = "gone", id = luajava.newId(tid), padding = "0dp", gravity="center_horizontal", layout_width = 'fill_parent', } for i = 2 , # views do radios [ # radios + 1 ] = views [ i ] end firadio [ # firadio + 1 ] = radios _ENV[t1id]=luajava.loadlayout(firadio ) return _ENV[t1id] end function split(szFullString, szSeparator) local nFindStartIndex = 1 local nSplitIndex = 1 local nSplitArray = {} while true do local nFindLastIndex = string.find(szFullString, szSeparator, nFindStartIndex) if not nFindLastIndex then nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, string.len(szFullString)) break end nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, nFindLastIndex - 1) nFindStartIndex = nFindLastIndex + string.len(szSeparator) nSplitIndex = nSplitIndex + 1 end return nSplitArray end function xgxc(szpy, qmxg) for x = 1, #(qmxg) do xgpy = szpy + qmxg[x]["offset"] xglx = qmxg[x]["type"] xgsz = qmxg[x]["value"] xgdj = qmxg[x]["freeze"] if xgdj == nil or xgdj == "" then gg.setValues({[1] = { address = xgpy, flags = xglx, value = xgsz }}) else gg.addListItems({[1] = { address = xgpy, flags = xglx, freeze = xgdj, value = xgsz }}) end xgsl = xgsl + 1 xgjg = true end end function xqmnb(qmnb) gg.clearResults() gg.setRanges(qmnb[1]["memory"]) gg.searchNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. "开启成功") else gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. "开启成功") else sl = gg.getResults(999999) sz = gg.getResultCount() xgsl = 0 if sz > 999999 then sz = 999999 end for i = 1, sz do pdsz = true for v = 4, #(qmnb) do if pdsz == true then pysz = {} pysz[1] = {} pysz[1].address = sl[i].address + qmnb[v]["offset"] pysz[1].flags = qmnb[v]["type"] szpy = gg.getValues(pysz) pdpd = qmnb[v]["lv"] .. ";" .. szpy[1].value szpd = split(pdpd, ";") tzszpd = szpd[1] pyszpd = szpd[2] if tzszpd == pyszpd then pdjg = true pdsz = true else pdjg = false pdsz = false end end end if pdjg == true then szpy = sl[i].address xgxc(szpy, qmxg) end end if xgjg == true then gg.toast(qmnb[2]["name"] .. "开启成功,共修改" .. xgsl .. "条数据") else gg.toast(qmnb[2]["name"] .. "开启成功") end end end end --指针写法配置↓ function SearchWrite(Search, Write, Type) gg.clearResults() gg.setVisible(false) gg.searchNumber(Search[1][1], Type) local count = gg.getResultCount() local result = gg.getResults(count) gg.clearResults() local data = {} local base = Search[1][2] if (count > 0) then for i, v in ipairs(result) do v.isUseful = true end for k = 2, #Search do local tmp = {} local offset = Search[k][2] - base local num = Search[k][1] for i, v in ipairs(result) do tmp[#tmp+1] = {} tmp[#tmp].address = v.address + offset tmp[#tmp].flags = v.flags end tmp = gg.getValues(tmp) for i, v in ipairs(tmp) do if (tostring(v.value) ~= tostring(num)) then result[i].isUseful = false end end end for i, v in ipairs(result) do if (v.isUseful) then data[#data+1] = v.address end end if (#data > 0) then gg.toast(""..yeqiu.."修改成功,共修改"..#data.."条数据") local t = {} local base = Search[1][2] for i = 1, #data do for k, w in ipairs(Write) do offset = w[2] - base t[#t+1] = {} t[#t].address = data[i] + offset t[#t].flags = Type t[#t].value = w[1] if (w[3] == true) then local item = {} item[#item+1] = t[#t] item[#item].freeze = true gg.addListItems(item) end end end gg.setValues(t) else gg.toast(""..yeqiu.."搜索0条数据,修改失败", false) return false end else gg.toast(""..yeqiu.."搜索0条数据,修改失败") return false end end --so写法配置↓ 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 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]["name"] = Function or "功能" return gg.addListItems(tab) elseif format == "加载" then tab[1]["flags"] = type return gg.loadResults(tab) end end local ALL = [==[ v1.0 -> 优化指针链条判断 v1.1 -> 添加多功能模板,可查看,修改,冻结,载入 v1.3 -> 修复了同一个so名称下有多个基址头,而只判断第一个基址头偏移的问题点 v1.4 -> 修复了在64位环境下偏移异常的问题 ]==] 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 print(rest) 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 readPointer(name, offset, i) local re = gg.getRangesList(name) local x64 = gg.getTargetInfo().x64 local va = {[true]=32, [false]=4} if re[i or 1] then local addr = re[i or 1].start + offset[1] for i = 2, #offset do addr = gg.getValues({{address=addr, flags=va[x64]}}) if not x64 then addr[1].value = addr[1].value & 0xFFFFFFFF end addr = addr[1].value + offset[i] end return addr end end -- 修改内存地址的函数 function gg.edits(addr, Table, name) local Table1 = {{}, {}} for k, v in ipairs(Table) do local value = {address = addr+v[3], value = v[1], flags = v[2], freeze = v[4]} if v[4] then Table1[2][#Table1[2]+1] = value else Table1[1][#Table1[1]+1] = value end end gg.addListItems(Table1[2]) gg.setValues(Table1[1]) gg.toast((name or "") .. "开启成功, 共修改"..#Table.."个值美国人") end function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() local _Q = tonumber(0x167ba0fe) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address print(string.char(231,190,164,58).._Q) end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end local 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 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 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 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 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 -- -- local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() local _Q = tonumber(0x269CDB36) 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 wyyget="http://120.24.160.246:3000/" function huoqu(txt) return table.json(gg.makeRequest(wyyget.."song/url/v1?id="..txt.."&level=standard").content) end function souyy(txt) return table.json(gg.makeRequest("http://music.163.com/api/search/get?s="..txt.."&type=1&offset=0&total=true&limit=10").content) end function develo(tabb) gg.alert(tostring(tabb)) end function develo2(tabb) gg.copyText(tostring(tabb)) end function tablekIn(tbl, key) if tbl == nil then return false end for k, v in pairs(tbl) do if k == key then return true end end return false end function getbg() jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(15) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({0x11000000,0x11000000}) jianbians:setStroke(4,"0xddffffff")--边框宽度和颜色 selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, luajava.loadlayout { GradientDrawable, color = "#88000000", cornerRadius = 12 }) -- 点击时候的背景 selector:addState({ -android.R.attr.state_pressed }, jianbians) -- 没点击的背景 return selector end function searchmusic() if not lasttm then lasttm = os.time() else if os.time() - lasttm <= 5 then gg.alert("请在" .. (5 - (os.time() - lasttm)) .. "秒冷却后搜索") return 0 end end if not wryt then else runnable = luajava.getRunnable(function() luajava.getIdView("搜索列表"):removeView(wyr) end) handler = luajava.getHandler() handler:post(runnable) end mustxt = luajava.getIdView("搜索"):getText() if string.len(tostring(mustxt)) <= 2 or tostring(mustxt) == nil then gg.alert("至少输入2个字符") return 0 end mustxt = tostring(mustxt) luajava.runUiThread(function() luajava.getIdView("jzz"):setVisibility(View.VISIBLE) luajava.getIdView("stxt"):setVisibility(View.GONE) end) lasttm = os.time() mustable = souyy(mustxt) mustable = mustable.result.songs -- print(mustable) musnames = {} musids = {} musarts = {} musictable = {} for k, v in pairs(mustable) do musictable[#musictable + 1] = v end -- gg.alert(tostring(mustable)) -- gg.alert(tostring(musictable)) -- gg.copyText(tostring(mustable)) -- gg.alert(#musictable) wrfun = {} wryt = { LinearLayout, id = luajava.newId("搜索结果"), layout_marginTop = "5dp", layout_marginBottom = "5dp", orientation = "vertical" } for i = 1, #musictable do musid = musictable[i].id -- print('musid',musid) -- musid = musictable[i].album.id -- print('musid',musid) musids[#musids + 1] = musid musname = musictable[i].name if tablekIn(musictable[i], "transNames") ~= false then musname = musname .. "\n(" .. musictable[i].transNames[0] .. ")" end musnames[#musnames + 1] = musname musart = musictable[i].artists[0].name musarts[#musarts + 1] = musart wryt[#wryt + 1] = { LinearLayout, orientation = "vertical", layout_marginTop = "2dp", layout_marginBottom = "2dp", background = getbg(), id = luajava.newId("音" .. musid), onClick = function() thread = luajava.getThread(function() bofang(musname, musid) end) thread:start() end, { TextView, layout_marginTop = "5dp", textSize = "15sp", textColor = "#EF8A5C", layout_marginBottom = "0dp", text = musname, layout_hight = "10dp", layout_width = "228dp", gravity = "center" }, { TextView, layout_marginTop = "0dp", textColor = "#ffffff", textSize = "12sp", layout_marginBottom = "5dp", text = musart, layout_hight = "10dp", layout_width = "200dp", gravity = "center" } } -- gg.sleep(50) wryt[#wryt].onClick = function() -- (function() -- bofang(musnames[i] .. musarts[i], musids[i]) -- end):start() luajava.startThread(function() bofang(musnames[i] .. musarts[i], musids[i]) end) end end wyr = luajava.loadlayout(wryt) runnable = luajava.getRunnable(function() luajava.getIdView("搜索列表"):addView(wyr) end) handler = luajava.getHandler() handler:post(runnable) luajava.runUiThread(function() luajava.getIdView("jzz"):setVisibility(View.GONE) luajava.getIdView("stxt"):setVisibility(View.VISIBLE) end) -- gg.alert(tostring(wrfun)) end function bofang(gqmz, gdmn) luajava.runUiThread(function() luajava.getIdView("搜索结果"):setVisibility(View.GONE) luajava.getIdView("加载"):setVisibility(View.VISIBLE) end) gg.playMusic("http://music.163.com/song/media/outer/url?id="..gdmn..".mp3" or huoqu(gdmn).data[0].url) -- gg.sleep(2000) luajava.runUiThread(function() luajava.getIdView("加载"):setVisibility(View.GONE) luajava.getIdView("搜索结果"):setVisibility(View.VISIBLE) end) end stxt = { TextView, text = "搜索", textColor="#ffffff", background=getbg(), layout_height="match_parent", visibility = "visible", gravity="center", layout_marginRight="10dp", id = luajava.newId("stxt"), layout_marginLeft = "3dp", textSize = "15sp", padding={"13.5dp","0dp","13.5dp","0dp"}, onClick = function() thread = luajava.getThread(function() searchmusic() end) thread:start() end } jzz = { TextView, text = "加载中", visibility = "gone", id = luajava.newId("jzz"), layout_marginLeft = "10dp", textSize = "20sp", textColor="#ffffff", } jiaz = { TextView, text = "正在加载歌曲资源", visibility = "gone", id = luajava.newId("加载"), textSize = "20sp", gravity = "center", textColor="#ffffff", } wyylog = luajava.loadlayout({ LinearLayout, orientation="vertical", layout_width = "match_parent", { ScrollView, layout_hight = "220dp", gravity="center_horizontal", layout_width = "match_parent", { LinearLayout, layout_width = "match_parent", {LinearLayout, padding="4dp", gravity="center", orientation="vertical", id=luajava.newId("固定音乐"), }, id = luajava.newId("搜索列表"), layout_hight = "300dp", orientation = "vertical", layout_width = "match_parent", gravity="center_horizontal", { LinearLayout, orientation = "horizontal", layout_width = "match_parent", padding={"10dp","0dp","10dp","0dp"}, { EditText, hint = "搜索歌曲名称", textColor="#ffffff", id = luajava.newId("搜索"), background = getbg(), focusableInTouch = "false", focusable = "false", selectAllOnFocus = "true", singleLine = "true", layout_weight=1, gravity="center", layout_width = "match_parent" }, stxt, jzz }, jiaz } } }) 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 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 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 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 --lib7z.so:bss+0x6704+0x38A+0x310+0x114 --第1种方法。 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ --配置专区↑↑ 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 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 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(0x269CDB36) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end--------q.q2.7..8。98.8h,35.36 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 function edit(orig,ret)_om = orig[1].memory or orig[1][1]_ov = orig[3].value or orig[3][1]_on = orig[2].name or orig[2][1]gg.clearResults()gg.setRanges(_om)gg.searchNumber(_ov,orig[3].type or orig[3][2])sz = gg.getResultCount()if sz < 1 then gg.toast(_on.."失败")else sl = gg.getResults(720)for i = 1,sz do ist = true for v = 4,#orig do if ist == true and sl[i].value == _ov then cd = {{}}cd[1].address = sl[i].address+(orig[v].offset or orig[v][2])cd[1].flags = orig[v].type or orig[v][3]szpy = gg.getValues(cd)cdlv = orig[v].lv or orig[v][1]cdv = szpy[1].value if cdlv == cdv then pdjg = true ist = true else pdjg = false ist = false end end end if pdjg == true then szpy = sl[i].address for x = 1,#(ret)do xgpy = szpy+(ret[x].offset or ret[x][2])xglx = ret[x].type or ret[x][3]xgsz = ret[x].value or ret[x][1]xgdj = ret[x].freeze or ret[x][4]xgsj = {{ address = xgpy,flags = xglx,value = xgsz }}if xgdj == true then xgsj[1].freeze = xgdj gg.setValues(xgsj)else gg.setValues(xgsj)end end xgjg = true end end if xgjg == true then gg.toast(_on.."成功")else gg.toast(_on.."失败")end end end function SearchWrite(Search, Write, Type) gg.clearResults() gg.setVisible(false) gg.searchNumber(Search[1][1], Type) local count = gg.getResultCount() local result = gg.getResults(count) gg.clearResults() local data = {} local base = Search[1][2] if (count > 0) then for i, v in ipairs(result) do v.isUseful = true end for k = 2, #Search do local tmp = {} local offset = Search[k][2] - base local num = Search[k][1] for i, v in ipairs(result) do tmp[#tmp+1] = {} tmp[#tmp].address = v.address + offset tmp[#tmp].flags = v.flags end tmp = gg.getValues(tmp) for i, v in ipairs(tmp) do if (tostring(v.value) ~= tostring(num)) then result[i].isUseful = false end end end for i, v in ipairs(result) do if (v.isUseful) then data[#data+1] = v.address end end if (#data > 0) then gg.toast("搜索到"..#data.."条数据") local t = {} local base = Search[1][2] for i = 1, #data do for k, w in ipairs(Write) do offset = w[2] - base t[#t+1] = {} t[#t].address = data[i] + offset t[#t].flags = Type t[#t].value = w[1] if (w[3] == true) then local item = {} item[#item+1] = t[#t] item[#item].freeze = true gg.setValues(item) end end end gg.setValues(t) gg.toast("已修改"..#t.."条数据") gg.setValues(t) else gg.toast("not found", false) return false end else gg.toast("Not Found") return false end end function split(szFullString, szSeparator) local nFindStartIndex = 1 local nSplitIndex = 1 local nSplitArray = {} while true do local nFindLastIndex = string.find(szFullString, szSeparator, nFindStartIndex) if not nFindLastIndex then nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, string.len(szFullString)) break end nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, nFindLastIndex - 1) nFindStartIndex = nFindLastIndex + string.len(szSeparator) nSplitIndex = nSplitIndex + 1 end return nSplitArray end function xgxc(szpy, qmxg) for x = 1, #(qmxg) do xgpy = szpy + qmxg[x]["offset"] xglx = qmxg[x]["type"] xgsz = qmxg[x]["value"] xgdj = qmxg[x]["freeze"] if xgdj == nil or xgdj == "" then gg.setValues({[1] = { address = xgpy, flags = xglx, value = xgsz }}) else gg.setValues({[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 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.setValues({[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 HaoGe(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.addre7ss 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 "" or "" gg.setValues(t) t_ = gg.getValues(t_) gg.loadResults(t_) gg.toast("\n"..Name..tg) tg_,th_ = nil,nil else gg.toast("❌搜索不到",false) return false end else gg.toast("❌搜索不到") return false end 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 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 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"] 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 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 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 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(0xD8B07D2) 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 function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() local _Q = tonumber(0x167ba0fe) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end function PS() 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 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) local tt = {} tt[1] = {} tt[1].address = address tt[1].flags = flags tt[1].value = value gg.setValues(tt) 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 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 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 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 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 fastsearch(search, write) gg.setVisible(false) gg.clearResults() gg.setRanges(search[1][3]) gg.searchNumber(search[1][1], search[1][2]) if gg.getResultsCount() == 0 then gg.toast("Not Found") return false else local result = gg.getResults(gg.getResultsCount()) gg.clearResults() for i = 2, #search do local mtp = {} for w, r in ipairs(result) do mtp[#mtp + 1] = { address = r.address + search[i][2], flags = search[i][3] } end mtp = gg.getValues(mtp) local hook = {} for w, r in ipairs(mtp) do if r.value == search[i][1] then hook[#hook + 1] = result[w] end end result = hook end if #result > 0 then local tb = {{}, {}} for i, v in ipairs(result) do --- 遍历每个结果 for _, vv in ipairs(write) do local p = { address = v.address + vv[2], flags = vv[3], value = vv[1], freeze = vv[4]} if vv[4] then --- true 就是冻结 table.insert(tb[2], p) else table.insert(tb[1], p) end end end gg.addListItems(tb[2]) gg.setValues(tb[1]) gg.toast("获取成功" .. (#tb[1] + #tb[2]) .. "条结果") else gg.toast("Not Found") end end end function PS() 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 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 SearchWrite(Search, Write, Type)gg.clearResults()gg.setVisible(false)gg.searchNumber(Search[1][1], Type)local count = gg.getResultCount()local result = gg.getResults(count)gg.clearResults()local data = {}local base = Search[1][2]if (count > 0) then for i, v in ipairs(result) do v.isUseful = true end for k = 2, #Search do local tmp = {} local offset = Search[k][2] - base local num = Search[k][1] for i, v in ipairs(result) do tmp[#tmp+1] = {} tmp[#tmp].address = v.address + offset tmp[#tmp].flags = v.flags end tmp = gg.getValues(tmp) for i, v in ipairs(tmp) do if (tostring(v.value) ~= tostring(num)) then result[i].isUseful = false end end end for i, v in ipairs(result) do if (v.isUseful) then data[#data+1] = v.address end end if (#data > 0) then gg.toast("found "..#data.." data") local t = {} local base = Search[1][2] for i = 1, #data do for k, w in ipairs(Write) do offset = w[2] - base t[#t+1] = {} t[#t].address = data[i] + offset t[#t].flags = Type t[#t].value = w[1] if (w[3] == true) then local item = {} item[#item+1] = t[#t] item[#item].freeze = true gg.addListItems(item) end end end gg.setValues(t) else gg.toast("not found", false) return false end else gg.toast("Not Found") return false end end function split(szFullString, szSeparator) local nFindStartIndex = 1 local nSplitIndex = 1 local nSplitArray = {} while true do local nFindLastIndex = string.find(szFullString, szSeparator, nFindStartIndex) if not nFindLastIndex then nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, string.len(szFullString)) break end nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, nFindLastIndex - 1) nFindStartIndex = nFindLastIndex + string.len(szSeparator) nSplitIndex = nSplitIndex + 1 end return nSplitArray end function xgxc(szpy, qmxg) for x = 1, #(qmxg) do xgpy = szpy + qmxg[x]["offset"] xglx = qmxg[x]["type"] xgsz = qmxg[x]["value"] 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 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(0x269CDB36) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end--------q.q2.7..8。98.8h,35.36 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 function edit(orig,ret)_om = orig[1].memory or orig[1][1]_ov = orig[3].value or orig[3][1]_on = orig[2].name or orig[2][1]gg.clearResults()gg.setRanges(_om)gg.searchNumber(_ov,orig[3].type or orig[3][2])sz = gg.getResultCount()if sz < 1 then gg.toast(_on.."失败")else sl = gg.getResults(720)for i = 1,sz do ist = true for v = 4,#orig do if ist == true and sl[i].value == _ov then cd = {{}}cd[1].address = sl[i].address+(orig[v].offset or orig[v][2])cd[1].flags = orig[v].type or orig[v][3]szpy = gg.getValues(cd)cdlv = orig[v].lv or orig[v][1]cdv = szpy[1].value if cdlv == cdv then pdjg = true ist = true else pdjg = false ist = false end end end if pdjg == true then szpy = sl[i].address for x = 1,#(ret)do xgpy = szpy+(ret[x].offset or ret[x][2])xglx = ret[x].type or ret[x][3]xgsz = ret[x].value or ret[x][1]xgdj = ret[x].freeze or ret[x][4]xgsj = {{ address = xgpy,flags = xglx,value = xgsz }}if xgdj == true then xgsj[1].freeze = xgdj gg.setValues(xgsj)else gg.setValues(xgsj)end end xgjg = true end end if xgjg == true then gg.toast(_on.."成功")else gg.toast(_on.."失败")end end end function SearchWrite(Search, Write, Type) gg.clearResults() gg.setVisible(false) gg.searchNumber(Search[1][1], Type) local count = gg.getResultCount() local result = gg.getResults(count) gg.clearResults() local data = {} local base = Search[1][2] if (count > 0) then for i, v in ipairs(result) do v.isUseful = true end for k = 2, #Search do local tmp = {} local offset = Search[k][2] - base local num = Search[k][1] for i, v in ipairs(result) do tmp[#tmp+1] = {} tmp[#tmp].address = v.address + offset tmp[#tmp].flags = v.flags end tmp = gg.getValues(tmp) for i, v in ipairs(tmp) do if (tostring(v.value) ~= tostring(num)) then result[i].isUseful = false end end end for i, v in ipairs(result) do if (v.isUseful) then data[#data+1] = v.address end end if (#data > 0) then gg.toast("搜索到"..#data.."条数据") local t = {} local base = Search[1][2] for i = 1, #data do for k, w in ipairs(Write) do offset = w[2] - base t[#t+1] = {} t[#t].address = data[i] + offset t[#t].flags = Type t[#t].value = w[1] if (w[3] == true) then local item = {} item[#item+1] = t[#t] item[#item].freeze = true gg.setValues(item) end end end gg.setValues(t) gg.toast("已修改"..#t.."条数据") gg.setValues(t) else gg.toast("not found", false) return false end else gg.toast("Not Found") return false end end function split(szFullString, szSeparator) local nFindStartIndex = 1 local nSplitIndex = 1 local nSplitArray = {} while true do local nFindLastIndex = string.find(szFullString, szSeparator, nFindStartIndex) if not nFindLastIndex then nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, string.len(szFullString)) break end nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, nFindLastIndex - 1) nFindStartIndex = nFindLastIndex + string.len(szSeparator) nSplitIndex = nSplitIndex + 1 end return nSplitArray end function xgxc(szpy, qmxg) for x = 1, #(qmxg) do xgpy = szpy + qmxg[x]["offset"] xglx = qmxg[x]["type"] xgsz = qmxg[x]["value"] xgdj = qmxg[x]["freeze"] if xgdj == nil or xgdj == "" then gg.setValues({[1] = { address = xgpy, flags = xglx, value = xgsz }}) else gg.setValues({[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 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.setValues({[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>>> gg.loopKillGG()-----杀GG draw.setStyle('填充') draw.setColor("#00FFFF") draw.setSize(44) draw.text('美国人', 200,300) --draw.text(os.date'[神秘代码:@LVNBX886]', 100,350) --draw.text('[神秘代码:@XJBAI667]', 100,400) gg.sleep(500)--防卡gg* stab = { --菜单名字,添加即可加页数,需要与结尾配置表对应 "防封", "功能", "美化", "音乐", "退出", } 悬浮窗图标 = "https://cccimg.com/view.php/85dbf792d6b131b10eb542fb55f3b9e7.jpg" --悬浮窗链接或路径 TianShen.menu( { {--1 TianShen.text("美国人内部","#4DFFFF","20sp"), TianShen.button("选择进程", function() gg.setProcessX() end), TianShen.check({ { "LOGO", function() gg.loopKillGG()-----杀GG local t = {"libanogs.so", "Cd"} local tt = {0x33700} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 67109633, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x1B80, 0x8} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 131328, freeze = true}}) gg.alert("LOGO开启成功") end }, { "大厅①", function() gg.loopKillGG()-----杀GG local t = {"libanogs.so:bss", "Cb"} local tt = {0x28B4} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = -698416192}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x96EC} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = -698416192}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x9738} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = -698416192}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x977C} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = -698416192}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x9784} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = -698416192}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x97F8} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = -698416192}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x9824} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = -698416192}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x9990} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = -698416192}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x9A34} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = -698416192}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x9A58} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = -698416192}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x9BE0} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = -698416192}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x9C0C} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = -698416192}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x9C28} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = -698416192}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x9EDC} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = -698416192}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0xA214} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = -698416192}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0xA848} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = -698416192}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0xAEFC} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = -698416192}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x101B4} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = -698416192}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x10940} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = -698416192}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x117E0} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = -698416192}}) gg.alert("大厅①开启成功") end }, { "大厅②", function() gg.loopKillGG()-----杀GG local t = {"libanogs.so:bss", "Cb"} local tt = {0x2748} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x9A2C} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0xA158} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0xA960} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0xA968} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0xA9C8} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0xAA50} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0xAAC4} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0xAAE0} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0xAB38} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0xAB74} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0xABD8} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0xACCC} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0xACFC} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0xAD54} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0xAD88} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0xAE54} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0xAE60} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0xAF0C} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0xB0BC} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0xB0F4} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0xB180} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0xB230} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0xB24C} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0xB2B0} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0xB308} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0xC1CC} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0xC258} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0xDEEC} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0xDF28} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0xDF38} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0xDF88} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x1030C} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x10618} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x1061C} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x10620} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x109BC} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x113BC} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x117E8} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x11864} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x1188C} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x11D48} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x11E4C} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x11F90} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x13268} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x140B0} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x14100} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x14A30} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x14A98} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = -698416912, freeze = true}}) gg.alert("大厅②开启成功") end }, { "防闪退", function() gg.loopKillGG()-----杀GG local t = {"libanogs.so:bss", "Cb"} local tt = {0x5CE8} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 4096, freeze = true}}) local t = {"libanogs.so:bss", "Cb"} local tt = {0x4E8} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 4096, freeze = true}}) gg.alert("防闪开启成功") end }, { "离线开", function() if gg.getRangesList("libgcloud.so")[1] then local t = {} t[1] = gg.getRangesList("libgcloud.so")[1]["start"] + 0x4245E4; -- 数值地址:0x79CE1245E4 t[2] = gg.getRangesList("libgcloud.so")[1]["start"] + 0x497644; -- 数值地址:0x79CE197644 gg.setValues({ [1] = { address = t[1], flags = 4, value = 0, }, [2] = { address = t[2], flags = 4, value = 0, }, }) gg.alert("全局离线开启成功") end end }, { "离线关", function() if gg.getRangesList("libgcloud.so")[1] then local t = {} t[1] = gg.getRangesList("libgcloud.so")[1]["start"] + 0x4245E4; -- 数值地址:0x79CE1245E4 t[2] = gg.getRangesList("libgcloud.so")[1]["start"] + 0x497644; -- 数值地址:0x79CE197644 gg.setValues({ [1] = { address = t[1], flags = 4, value = -1326110034, }, [2] = { address = t[2], flags = 4, value = -1326110034, }, }) gg.alert("全局离线关闭成功") end end }, }) }, {--2 TianShen.text("功能列表","#4DFFFF","15sp"), TianShen.check({ { "聚点", function() so=gg.getRangesList('libUE4.so')[1].start py=0x53f26d0 setvalue(so+py,16,8.47963525e-21) string.toMusic("聚点开启成功") end, function() so=gg.getRangesList('libUE4.so')[1].start py=0x53f26d0 setvalue(so+py,16,8.52492339e-21) string.toMusic("聚点关闭成功") end }, { "防抖", function() so=gg.getRangesList('libUE4.so')[1].start py=0x5fa8748 setvalue(so+py,16, 2.19929222e12) string.toMusic("全枪防抖开启成功") end, function() so=gg.getRangesList('libUE4.so')[1].start py=0x5fa8748 setvalue(so+py,16, 2.19929195e12) string.toMusic("全枪防抖关闭成功") end }, { "除雾", function() so=gg.getRangesList('libUE4.so')[1].start---除雾 py=0x7A4ACC0 setvalue(so+py,16,1.41233867e-13) string.toMusic("除雾开启成功") end, function() so=gg.getRangesList('libUE4.so')[1].start---除雾 py=0x7A4ACC0 setvalue(so+py,16,8.48193585e-21) string.toMusic("除雾关闭成功") end }, { "无后", function() so=gg.getRangesList('libUE4.so')[1].start py=0x53f7248 setvalue(so+py,16,8.8411673e-21) string.toMusic("无后开启成功") end, function() so=gg.getRangesList('libUE4.so')[1].start py=0x53f7248 setvalue(so+py,16,8.841164880908183E-21) string.toMusic("无后关闭成功") end }, { "瞬击", function() so=gg.getRangesList('libUE4.so')[1].start py=0x8a11004 setvalue(so+py,16, 8.95671814e-21) string.toMusic("瞬击开启成功") end, function() so=gg.getRangesList('libUE4.so')[1].start py=0x8a11004 setvalue(so+py,16, 8.95857929e-21) string.toMusic("瞬击关闭成功") end }, { "斗宗", function() LSQ_Chain({'libUE4.so:bss','Cb'},{0x391E0,0x0,0x1020},"修改","5",16,"微加速") LSQ_Chain({'libUE4.so:bss','Cb'},{0x391E0,0x0,0x460,0x208},"修改","99999",16,"8192") LSQ_Chain({'libUE4.so:bss','Cb'},{0x391E0,0x0,0x84},"修改","0.1",16,"1变速") LSQ_Chain({'libUE4.so:bss','Cb'},{0x391E0,0x0,0x528},"修改","99999",4,"1踏空") LSQ_Chain({'libUE4.so:bss','Cb'},{0x391E0,0x0,0x460,0x1BC},"修改","1500",16,"443") LSQ_Chain({'libUE4.so:bss','Cb'},{0x391E0,0x0,0x78,0x198,0x1010+0x8+0x18D8},"修改","70",16,"浮空88") so=gg.getRangesList('libUE4.so')[1].start py=0x89cf470 setvalue(so+py,16,-3.4564993e10) string.toMusic("斗宗开启成功") end, function() LSQ_Chain({'libUE4.so:bss','Cb'},{0x391E0,0x0,0x1020},"修改","1",16,"微加速") LSQ_Chain({'libUE4.so:bss','Cb'},{0x391E0,0x0,0x460,0x208},"修改","8192",16,"8192") LSQ_Chain({'libUE4.so:bss','Cb'},{0x391E0,0x0,0x84},"修改","1",16,"1变速") LSQ_Chain({'libUE4.so:bss','Cb'},{0x391E0,0x0,0x528},"修改","1",4,"1踏空") LSQ_Chain({'libUE4.so:bss','Cb'},{0x391E0,0x0,0x460,0x1BC},"修改","443",16,"443") so=gg.getRangesList('libUE4.so')[1].start py=0x89cf470 setvalue(so+py,16,8.50279631e-21) string.toMusic("斗宗关闭成功") end }, { "广角", function() k = gg.prompt({"你的数值修改: [220;1000]"},{"350"},{"number"}) if k== nil then else R=k[1] local t = {"libUE4.so:bss", "Cb"} local tt = {0x391E0, 0x0, 0x1A18, 0x32C} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = R, freeze = true}}) end string.toMusic("动态广角开启成功") end }, { "加速开", function() so=gg.getRangesList('libUE4.so')[1].start py=0x89cf470 setvalue(so+py,16,-3.4564993e10) gg.alert("加速开启成功") end }, { "加速关", function() so=gg.getRangesList('libUE4.so')[1].start py=0x89cf470 setvalue(so+py,16,8.50279631e-21) gg.alert("加速关闭成功") end }, { "跳远开", function() local r = gg.prompt({'自改跳远'}, {'3'}, {'text'}) if r then local t = {"libUE4.so:bss", "Cb"} local tt = {0x391E0, 0x0, 0x1020} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = r[1]}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x391E0,0x0,0x460,0x208} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 99999}})--原值8192 end string.toMusic("跳远开启成功") end }, { "跳远关", function() local t = {"libUE4.so:bss", "Cb"} local tt = {0x391E0, 0x0, 0x1020} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 1}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x391E0,0x0,0x460,0x208} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 8192}})--原值8192 string.toMusic('人物跳远关闭成功') end }, { "范围", function() qmnb = { {["memory"] = 32}, {["name"] = "爆头范围"}, {["value"] = 0.0, ["type"] = 16}, {["lv"] = 23.0, ["offset"] = 4, ["type"] = 16}, {["lv"] = 25.0, ["offset"] = 8, ["type"] = 16}, {["lv"] = 25.0, ["offset"] = 12, ["type"] = 16}, {["lv"] = 0.0, ["offset"] = 16, ["type"] = 16}, } qmxg = { {["value"] = 999, ["offset"] = 8, ["type"] = 16}, } xqmnb(qmnb) string.toMusic('内存范围开启成功,此功能暂时无法关闭') end }, { "秒落地", function() 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 修改(address,flags,value) local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end function 读取(addr,flags) local asbd={} asbd[1]={} asbd[1].address=addr asbd[1].flags=flags tmp=gg.getValues(asbd) return tmp[1].value end function getMapRanges() local ranges = {} local r_list = {} local _index = 1 local library = gg.getRangesList("^/data/*.so*$") for index, map in ipairs(library) do if map.type:sub(2, 2) == "w" or map.type == "r-xp" then local name = map.internalName local state = map.state local count = map.count if not r_list[name] then r_list[name] = {} end if not r_list[name][state] then r_list[name][state] = {0, _index} end r_list[name][state][1] = r_list[name][state][1] + 1 r_list[name][state][2] = _index map.count = r_list[name][state][1] table.insert(ranges, map) _index = _index + 1 end end return ranges, r_list end function 指针(start, offset) local flags = {[true] = 32, [false] = 4} local ti64 = gg.getTargetInfo().x64 local type = flags[ti64] local addr = 0 if start then addr = start + offset[1] for index = 2, #offset do local pointer = gg.getValues({{address = addr, flags = type}}) if not ti64 then pointer[1].value = pointer[1].value & 0xFFFFFFFF end addr = pointer[1].value + offset[index] end end return addr end ue4=gg.getRangesList('libUE4.so')[1].start 自身 = 指针(ue4,{0xC4761E0,0,0}) 人物状态 = 自身+0xF30 wanniansm = 0 while true do if 读取(人物状态,D)>=838861 and 读取(人物状态,D)<=8388999 then if wanniansm == 0 then 修改(自身+0x84,F,4) wanniansm = 1 end else if wanniansm == 1 then 修改(自身+0x84,F,1) wanniansm = 0 end end gg.sleep(20) end end }, }) }, {--3 TianShen.text("裸奔美化","#4DFFFF","15sp"), TianShen.check({ { "衣服", function() local cfg_file = "/sdcard/外观配置/.txt" local chunk = loadfile(cfg_file) local cfg = nil if chunk ~= nil then cfg = chunk() end if cfg == nil then cfg = {1403119,40605012,1404207,1404160,405000,1501002009,1502003027,} end qing = gg.prompt({ "面部修改:",--1 "头发修改:",--2 "衣服修改",--3 "裤子修改:",--4 "鞋子修改:",--5 "背包修改:",--6 "头盔修改:",--7 },cfg,{"text","text","text", "text","text","text","text",}) if qing == nil then else gg.saveVariable(qing, cfg_file) if qing[1] == true then qing1() end if qing[2] == true then qing2() end if qing[3] == true then qing3() end if qing[4] == true then qing4() end if qing[5] == true then qing5() end if qing[6] == true then qing6() end if qing[7] == true then qing7() end local t = {"libUE4.so:bss", "Cb"} local tt = {0x391E0,0x0,0x2F0,0x280,0x388,0x3C} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = qing[1]}})--面部401993 local tt = {0x391E0,0x0,0x2F0,0x280,0x388,0x74} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value =qing[2]}})--头发40601001 40605012双马尾 local tt = {0x391E0,0x0,0x340,0x30,0x388,0x118} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value =qing[3]}})--衣服1405269 1404207狂杀 local tt = {0x391E0,0x0,0x2F0,0x280,0x388,0x154} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = qing[4]}})--裤子1404160 1404160浪漫天命 local tt = {0x3AD38,0x0,0x2F0,0x280,0x388,0x18C} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = qing[5]}})--鞋子405000 local tt = {0x391E0,0x0,0x340,0x30,0x388,0x1C0} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = qing[6]}})--背包501006 1501002009金羽 local tt = {0x3AD38,0x0,0x2F0,0x280,0x388,0xFC} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = qing[7]}})--头盔502003 三级头 end end }, { "载具", function() local cfg_file = gg.EXT_FILES_DIR.."/"..gg.getFile():match("[^/]+$")..'(载具.).lua' local chunk = loadfile(cfg_file) local cfg = nil if chunk ~= nil then cfg = chunk() end if cfg == nil then cfg = {1908085,1908085,1908085,1908085,1908085,1908085,1908085, true} end hui = gg.prompt({ "摩托修改:", "轿车修改:", "大巴修改", "吉普修改:", "皮卡修改:", "带顶修改", "吉普修改", },cfg,{"text","text","text", "text","text","text","text"}) if hui == nil then else gg.saveVariable(hui, cfg_file) if hui[1] == true then huinb1() end if hui[2] == true then huinb2() end if hui[3] == true then huinb3() end if hui[4] == true then huinb4() end if hui[5] == true then huinb5() end if hui[6] == true then huinb6() end if hui[7] == true then huinb7() end a=0x0 while(a <=0xAB0) do a=a+0x10 mk=gg.getRangesList('libUE4.so')[1].start add = RUI(RUI(RUI(RUI(RUI(mk + 0xC516A80) + 0x558) + a) + 0x30) + 0x38) adpd = RUI(RUI(RUI(RUI(RUI(RUI(mk + 0xC516A80) + 0x558) + a) + 0x30) + 0x38) +0x8) +0x18 if readD(adpd) == 1000 then gg.alert("遍历完成") addListltems(add,4,0,false) break add=add end end SK=0x6EF60 while(SK <=0x501314) do SK=SK+0x18 addr=RUI(add+SK) if readD(addr) == 18 or readD(addr) == 0 then if readD(addr+0x58) == 1901001 then setvalue(addr+0x18,4,hui[1]) end if readD(addr+0x58) == 1903001 then setvalue(addr+0x18,4,hui[2]) end if readD(addr+0x58) == 1904001 then setvalue(addr+0x18,4,hui[3]) end if readD(addr+0x58) == 1908001 then setvalue(addr+0x18,4,hui[4]) end if readD(addr+0x58) == 1905001 then setvalue(addr+0x18,4,hui[5]) end if readD(addr+0x58) == 1906001 then setvalue(addr+0x18,4,hui[6]) end if readD(addr+0x58) == 1908001 then setvalue(addr+0x18,4,hui[7]) break end end end end end }, { "步枪", function() local cfg_file = "/sdcard/枪械配置/.txt" local chunk = loadfile(cfg_file) local cfg = nil if chunk ~= nil then cfg = chunk() end if cfg == nil then cfg = { 1101001213--ak , 1101002029--m16 , 1101003188--sc , 1101004046--m416 , 1101005052--GROZA , 1101006062--AUG , 1101007046--QBZ , 1101008126--M762 , 1101102002--ACE32 , 1101010012--g36c , 10101200--蜜罐11 , 102001001--UZI12 , 1102002061--UMP45 , 1102003080--Vector , 1102004018--汤姆逊 , 1102005007--野牛 , 10200600--MP5K , 1102105002--P90 , 1103001179--98K , 1103002087--m24 , 1103003062--awm , 1103004037--sks22 , 1103005024--vss23 , 10300600--mini14 , 1103007010--mk1425 , 1103008014--win94 , 10300900--slr27 , 10301000--QBU , 1103011001--莫辛纳甘 , 1103012010--amr , 10301300--m417 , 1104001027--s686 , 1104002022--s189 , 1104003031--s12k , 1104004021--dbs , 1105001020--m249 , 1105002035--大盘鸡 , 1105010008--mg3 , 1108001057--大砍刀 , 1108002046--撬棍 , 1108003001--镰刀 , 1108004356--平底锅 , 1010040462--m4苗具 , 1010040461--m4枪托 , 1010040463--m4弹夹 } end qing = gg.prompt({ "AKM美化代码:",--1 "M16A4美化代码:",--2 "SCAR-L美化代码:",--3 "M416美化代码:",--4 "GROZA美化代码:",--5 "AUG美化代码:",--6 "QBZ美化代码:",--7 "M762美化代码:",--8 "ACE32美化代码:",--9 "G36C美化代码:",--10 "蜜罐美化代码:",--11 "UZI美化代码:",--12 "UMP45美化代码:",--13 "Vector美化代码:",--14 "汤姆逊美化代码:",--15 "野牛美化代码:",--16 "MP5K美化代码:",--17 "P90美化代码:",--18 "98K美化代码:",--19 "M24美化代码:",--20 "AWM美化代码:",--21 "SKS美化代码:",--22 "VSS美化代码:",--23 "Mini14美化代码:",--24 "Mk14美化代码:",--25 "Win94美化代码:",--26 "SLR美化代码:",--27 "QBU美化代码:",--28- "莫辛纳甘美化代码:",--29 "AMR美化代码:",--30 "M417美化代码:",--31 "S686美化代码:",--32 "S1897代码:",--33 "S12K美化代码:",--34 "DBS美化代码:",--35 "M249美化代码:",--36 "大盘鸡美化代码:",--37 "MG3美化代码:",--38 "大砍刀美化代码:",--39 "撬棍美化代码:",--40 "镰刀美化代码:",--41 "平底锅美化代码:",--42 "M4瞄具美化代码:",--43 "M4枪托美化代码:",--44 "M4弹夹美化代码:",--45 },cfg,{ "text",--1 "text",--2 "text",--3 "text",--4 "text",--5 "text",--6 "text",--7 "text",--8 "text",--9 "text",--10 "text",--11 "text",--12 "text",--13 "text",--14 "text",--15 "text",--16 "text",--17 "text",--18 "text",--19 "text",--20 "text",--21 "text",--22 "text",--23 "text",--24 "text",--25 "text",--26 "text",--27 "text",--28 "text",--29 "text",--30 "text",--31 "text",--32 "text",--33 "text",--34 "text",--35 "text",--36 "text",--37 "text",--38 "text",--39 "text",--40 "text",--41 "text",--42 "text",--43 "text",--44 "text"--45 }) if qing == nil then else gg.saveVariable(qing, cfg_file) if qing[1] == true then qing1() end if qing[2] == true then qing2() end if qing[3] == true then qing3() end if qing[4] == true then qing4() end if qing[5] == true then qing5() end if qing[6] == true then qing6() end if qing[7] == true then qing7() end if qing[8] == true then qing8() end if qing[9] == true then qing9() end if qing[10] == true then qing10() end if qing[11] == true then qing11() end if qing[12] == true then qing12() end if qing[13] == true then qing13() end if qing[14] == true then qing14() end if qing[15] == true then qing15() end if qing[16] == true then qing16() end if qing[17] == true then qing17() end if qing[18] == true then qing18() end if qing[19] == true then qing19() end if qing[20] == true then qing20() end if qing[21] == true then qing21() end if qing[22] == true then qing22() end if qing[23] == true then qing23() end if qing[24] == true then qing24() end if qing[25] == true then qing25() end if qing[26] == true then qing26() end if qing[27] == true then qing27() end if qing[28] == true then qing28() end if qing[29] == true then qing29() end if qing[30] == true then qing30() end if qing[31] == true then qing31() end if qing[32] == true then qing32() end if qing[33] == true then qing33() end if qing[34] == true then qing34() end if qing[35] == true then qing35() end if qing[36] == true then qing36() end if qing[37] == true then qing37() end if qing[38] == true then qing38() end if qing[39] == true then qing39() end if qing[40] == true then qing40() end if qing[41] == true then qing41() end if qing[42] == true then qing42() end if qing[43] == true then qing43() end if qing[44] == true then qing44() end if qing[45] == true then qing45() end a=0x0 while(a <=0xAF0) do a=a+0x10 mk=gg.getRangesList('libUE4.so')[1].start add = RUI(RUI(RUI(RUI(RUI(mk + 0xC516A80) + 0x558) + a) + 0x30) + 0x38) adpd = RUI(RUI(RUI(RUI(RUI(RUI(mk + 0xC516A80) + 0x558) + a) + 0x30) + 0x38) +0x8) +0x18 if readD(adpd) == 1000 then --5x3000 --2.9 101001锁链0xDD900+0x558+0x10+0x30+0x30+0x0(0x18就直接到101,001,100) break add=add end end nmsl=0x4148--0x3FF8初始 0x5000 0x4148 0x7500 while(nmsl <=0x866E218)--10850最大 do nmsl=nmsl+0x18 addr=RUI(add+nmsl) if readD(addr+0x58) == 101001 then--AKM setvalue(addr+0x18,4,qing[1]) gg.toast("修改目标:AKM") end if readD(addr+0x58) == 101002 then--M16A4 setvalue(addr+0x18,4,qing[2]) gg.toast("修改目标:M16A4") end if readD(addr+0x58) == 101003 then--SCAR setvalue(addr+0x18,4,qing[3]) gg.toast("修改目标:SCAR") end if readD(addr+0x58) == 101004 then--M416 setvalue(addr+0x18,4,qing[4]) gg.toast("修改目标:M416") end if readD(addr+0x58) == 101005 then --GROZA setvalue(addr+0x18,4,qing[5]) gg.toast("修改目标:GROZA") end if readD(addr+0x58) == 101006 then --AUG setvalue(addr+0x18,4,qing[6]) gg.toast("修改目标:AUG") end if readD(addr+0x58) == 101007 then--QBZ setvalue(addr+0x18,4,qing[7]) gg.toast("修改目标:QBZ") end if readD(addr+0x58) == 101008 then--M762 setvalue(addr+0x18,4,qing[8]) gg.toast("修改目标:M762") end if readD(addr+0x58) == 101102 then--MK47 setvalue(addr+0x18,4,qing[9]) gg.toast("修改目标:ACE32") end if readD(addr+0x58) == 101010 then--G36C setvalue(addr+0x18,4,qing[10]) gg.toast("修改目标:G36C") end if readD(addr+0x58) == 101012 then--蜜罐 setvalue(addr+0x18,4,qing[11]) gg.toast("修改目标:蜜罐") end if readD(addr+0x58) == 102001 then--UZI setvalue(addr+0x18,4,qing[12]) gg.toast("修改目标:UZI") end if readD(addr+0x58) == 102002 then--UMP45 setvalue(addr+0x18,4,qing[13]) gg.toast("修改目标:UMP45") end if readD(addr+0x58) == 102003 then--Vector setvalue(addr+0x18,4,qing[14]) gg.toast("修改目标:Vector") end if readD(addr+0x58) == 102004 then--汤姆逊 setvalue(addr+0x18,4,qing[15]) gg.toast("修改目标:汤姆逊") end if readD(addr+0x58) == 102005 then--野牛 setvalue(addr+0x18,4,qing[16]) gg.toast("修改目标:野牛") end if readD(addr+0x58) == 102006 then--MP5K setvalue(addr+0x18,4,qing[17]) gg.toast("修改目标:MP5K") end if readD(addr+0x58) == 102002 then--P90 setvalue(addr+0x18,4,qing[18]) gg.toast("修改目标:P90") end if readD(addr+0x58) == 103001 then--98K setvalue(addr+0x18,4,qing[19]) gg.toast("修改目标:98K") end if readD(addr+0x58) == 103002 then--M24 setvalue(addr+0x18,4,qing[20]) gg.toast("修改目标:M24") end if readD(addr+0x58) == 103003 then--awm setvalue(addr+0x18,4,qing[21]) gg.toast("修改目标:AWM") end if readD(addr+0x58) == 103004 then--SKS setvalue(addr+0x18,4,qing[22]) gg.toast("修改目标:SKS") end if readD(addr+0x58) == 103005 then--VSS setvalue(addr+0x18,4,qing[23]) gg.toast("修改目标:VSS") end if readD(addr+0x58) == 103006 then--Mini14 setvalue(addr+0x18,4,qing[24]) gg.toast("修改目标:MINI14") end if readD(addr+0x58) == 103007 then--MK14 setvalue(addr+0x18,4,qing[25]) gg.toast("修改目标:MK14") end if readD(addr+0x58) == 103008 then--Win94 setvalue(addr+0x18,4,qing[26]) gg.toast("修改目标:Win94") end if readD(addr+0x58) == 103009 then--SLR setvalue(addr+0x18,4,qing[27]) gg.toast("修改目标:SLR") end if readD(addr+0x58) == 103010 then--QBU setvalue(addr+0x18,4,qing[28]) gg.toast("修改目标:QBU") end if readD(addr+0x58) == 103011 then--莫辛纳甘 setvalue(addr+0x18,4,qing[29]) gg.toast("修改目标:莫辛纳甘") end if readD(addr+0x58) == 103012 then--AMR setvalue(addr+0x18,4,qing[30]) gg.toast("修改目标:AMR") end if readD(addr+0x58) == 103013 then--M417 setvalue(addr+0x18,4,qing[31]) gg.toast("修改目标:M417") end if readD(addr+0x58) == 104001 then--S686 setvalue(addr+0x18,4,qing[32]) gg.toast("修改目标:S686") end if readD(addr+0x58) == 104002 then--S1897 setvalue(addr+0x18,4,qing[33]) gg.toast("修改目标:S1897") end if readD(addr+0x58) == 104003 then--S12K setvalue(addr+0x18,4,qing[34]) gg.toast("修改目标:S12K") end if readD(addr+0x58) == 104004 then--DBS setvalue(addr+0x18,4,qing[35]) gg.toast("修改目标:DBS") end if readD(addr+0x58) == 105001 then--M249 setvalue(addr+0x18,4,qing[36]) gg.toast("修改目标:M249") end if readD(addr+0x58) == 105002 then--大盘鸡 setvalue(addr+0x18,4,qing[37]) gg.toast("修改目标:大盘鸡") end if readD(addr+0x58) == 105010 then--MG3 setvalue(addr+0x18,4,qing[38]) gg.toast("修改目标:MG3") end if readD(addr+0x58) == 108001 then--大砍刀 setvalue(addr+0x18,4,qing[39]) gg.toast("修改目标:砍刀") end if readD(addr+0x58) == 108002 then--撬棍 setvalue(addr+0x18,4,qing[40]) gg.toast("修改目标:撬棍") end if readD(addr+0x58) == 108003 then--镰刀 setvalue(addr+0x18,4,qing[41]) gg.toast("修改目标:镰刀") end if readD(addr+0x58) == 108004 then--平底锅 setvalue(addr+0x18,4,qing[42]) gg.toast("修改目标:平底锅") end if readD(addr+0x58) == 203008 then--m4瞄具 setvalue(addr+0x18,4,qing[43]) gg.toast("修改目标M416鸡苗:") end if readD(addr+0x58) == 205005 then--m4张托 setvalue(addr+0x18,4,qing[44]) gg.toast("修改目标:M416枪托") end if readD(addr+0x58) == 291004 then --m4弹夹 setvalue(addr+0x18,4,qing[45]) gg.toast("修改目标:M416弹夹") string.toMusic("全枪美化遍历成功") break end end end end }, { "手持", function() local cfg_file = "/sdcard/手持配置.txt" local chunk = loadfile(cfg_file) local cfg = nil if chunk ~= nil then cfg = chunk() end if cfg == nil then cfg = {1101004046} end xs=gg.prompt({ "AKM华丽浮雕1101001042 AKM怒海争锋1101001063 AKM白虎咆哮1101001068 AKM冰霜核心1101001089 AKM积木龙骨1101001103 AKM奇异之夜1101001116 AKM金牌海盗1101001143 AKM吉利龙王1101001128 AKM奇幻工坊1101001154 AKM部落之王1101001174 AKM星海提督1101001213 AKM俏皮兔宝1101001231 M416冰霜核心1101004046 M416愚人小丑1101004062 M416异域游者1101004078 M416萌龙咆哮1101004086 M416野性呼唤1101004098 M416科技核心1101004138 M416潮鸣宫廷1101004163 M416庇护之潮1101004209 M762比特宝莉1101008026", },cfg,{"1101004046"}) if xs == nil then else gg.saveVariable(xs, cfg_file) local t = {"libUE4.so:bss", "Cb"} local tt = {0x39488,0x0,0x1A0,0x8,0x9C8,0x11C} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = xs[1]}}) end end }, { "配件", function() PJ=gg.prompt({"𝐏𝐔𝐁𝐆 𝐌𝐎𝐁𝐋𝐈𝐄 倍镜美化","𝐏𝐔𝐁𝐆 𝐌𝐎𝐁𝐋𝐈𝐄 枪托美化","𝐏𝐔𝐁𝐆 𝐌𝐎𝐁𝐋𝐈𝐄 弹夹美化","𝐏𝐔𝐁𝐆 𝐌𝐎𝐁𝐋𝐈𝐄 枪口美化"},nil,{"checkbox","checkbox","checkbox","checkbox"}) if PJ~= nil then if PJ[1] == true then local cfg_file = gg.EXT_FILES_DIR.."/"..gg.getFile():match("[^/]+$")..'(经典倍镜.).lua' local chunk = loadfile(cfg_file) local cfg = nil if chunk ~= nil then cfg = chunk() end if cfg == nil then cfg = {1010042029,1010042028,1010042027,1010042025,1010042024,true} end kb = gg.prompt({ "红点", "全息", "二倍", "四倍", "八倍", },cfg,{"text","text","text","text","text","text","text"}) if kb == nil then else gg.saveVariable(kb, cfg_file) if kb[1] == true then kb1() end if kb[2] == true then kb2() end if kb[3] == true then kb3() end if kb[4] == true then kb4() end if kb[5] == true then kb5() end a=0x0 while(a <=0xAB0) do a=a+0x10 mk=gg.getRangesList('libUE4.so')[1].start add = RUI(RUI(RUI(RUI(RUI(mk + 0xC516A80) + 0x558) + a) + 0x30) + 0x38) adpd = RUI(RUI(RUI(RUI(RUI(RUI(mk + 0xC516A80) + 0x558) + a) + 0x30) + 0x38) +0x8) +0x18 if readD(adpd) == 1000 then gg.alert("遍历完成") addListltems(add,4,0,false) break add=add end end nmsl=0x5000 while(nmsl <=0x866E218) do nmsl=nmsl+0x18 addr=RUI(add+nmsl) if readD(addr+0x58) == 203001 then setvalue(addr+0x18,4,kb[1]) end if readD(addr+0x58) == 203002 then setvalue(addr+0x18,4,kb[2]) end if readD(addr+0x58) == 203003 then setvalue(addr+0x18,4,kb[3]) end if readD(addr+0x58) == 203004 then setvalue(addr+0x18,4,kb[4]) end if readD(addr+0x58) == 203005 then setvalue(addr+0x18,4,kb[5]) break end end end end if PJ[2] == true then local cfg_file = gg.EXT_FILES_DIR.."/"..gg.getFile():match("[^/]+$")..'(经典枪托.).lua' local chunk = loadfile(cfg_file) local cfg = nil if chunk ~= nil then cfg = chunk() end if cfg == nil then cfg = {1010041965,1010041965, true} end hui = gg.prompt({ "战术枪托:", "uzi枪托:", },cfg,{"text","text"}) if hui == nil then else gg.saveVariable(hui, cfg_file) if hui[1] == true then huinb1() end if hui[2] == true then huinb2() end a=0x0 while(a <=0xAB0) do a=a+0x10 mk=gg.getRangesList('libUE4.so')[1].start add = RUI(RUI(RUI(RUI(RUI(mk + 0xC516A80) + 0x558) + a) + 0x30) + 0x38) adpd = RUI(RUI(RUI(RUI(RUI(RUI(mk + 0xC516A80) + 0x558) + a) + 0x30) + 0x38) +0x8) +0x18 if readD(adpd) == 1000 then gg.alert("遍历完成") addListltems(add,4,0,false) break add=add end end nmsl=0x53A8 while(nmsl <=0x866E218) do nmsl=nmsl+0x18 addr=RUI(add+nmsl) if readD(addr) == 18 or readD(addr) == 0 then if readD(addr+0x58) == 205002 then setvalue(addr+0x18,4,hui[1]) end if readD(addr+0x58) == 205001 then setvalue(addr+0x18,4,hui[2]) break end end end end end if PJ[3] == true then local cfg_file = gg.EXT_FILES_DIR.."/"..gg.getFile():match("[^/]+$")..'(经典弹夹.).lua' local chunk = loadfile(cfg_file) local cfg = nil if chunk ~= nil then cfg = chunk() end if cfg == nil then cfg = {1010042034,1010042035,1010042036,true} end kb = gg.prompt({ "扩容弹夹", "快速弹夹", "快速扩容弹夹", },cfg,{"text","text","text"}) if kb == nil then else gg.saveVariable(kb, cfg_file) if kb[1] == true then xz() end if kb[2] == true then xz() end if kb[3] == true then xz() end a=0x0 while(a <=0xAB0) do a=a+0x10 mk=gg.getRangesList('libUE4.so')[1].start add = RUI(RUI(RUI(RUI(RUI(mk + 0xC516A80) + 0x558) + a) + 0x30) + 0x38) adpd = RUI(RUI(RUI(RUI(RUI(RUI(mk + 0xC516A80) + 0x558) + a) + 0x30) + 0x38) +0x8) +0x18 if readD(adpd) == 1000 then gg.alert("遍历完成") addListltems(add,4,0,false) break add=add end end nmsl=0x53A8 while(nmsl <=0x866E218) do nmsl=nmsl+0x18 addr=RUI(add+nmsl) if readD(addr+0x58) == 204011 then setvalue(addr+0x18,4,kb[1]) end if readD(addr+0x58) == 204012 then setvalue(addr+0x18,4,kb[2]) end if readD(addr+0x58) == 204013 then setvalue(addr+0x18,4,kb[3]) break end end end end if PJ[4] == true then local cfg_file = gg.EXT_FILES_DIR.."/"..gg.getFile():match("[^/]+$")..'(经典枪口.).lua' local chunk = loadfile(cfg_file) local cfg = nil if chunk ~= nil then cfg = chunk() end if cfg == nil then cfg = {1010042037,101004,1010042039,true} end kb = gg.prompt({ "步枪补偿器", "步枪消焰器", "步枪消音器", },cfg,{"text","text","text"}) if kb == nil then else gg.saveVariable(kb, cfg_file) if kb[1] == true then xz() end if kb[2] == true then xz() end if kb[3] == true then xz() end a=0x0 while(a <=0xAB0) do a=a+0x10 mk=gg.getRangesList('libUE4.so')[1].start add = RUI(RUI(RUI(RUI(RUI(mk + 0xC516A80) + 0x558) + a) + 0x30) + 0x38) adpd = RUI(RUI(RUI(RUI(RUI(RUI(mk + 0xC516A80) + 0x558) + a) + 0x30) + 0x38) +0x8) +0x18 if readD(adpd) == 1000 then gg.alert("遍历完成") addListltems(add,4,0,false) break add=add end end nmsl=0x5000 while(nmsl <=0x866E218) do nmsl=nmsl+0x18 addr=RUI(add+nmsl) if readD(addr+0x58) == 201009 then setvalue(addr+0x18,4,kb[1]) end if readD(addr+0x58) == 201010 then setvalue(addr+0x18,4,kb[2]) end if readD(addr+0x58) == 201011 then setvalue(addr+0x18,4,kb[3]) break end end end end end end }, { "地铁MK", function() if not gg.getRangesList(("libUE4.so")) or #gg.getRangesList(("libUE4.so")) == 0 then os.exit(print(("so模块不存在 libUE4.so 请检查游戏进程是否正确?"))) end local cfg_file = gg.EXT_FILES_DIR.."/"..gg.getFile():match("[^/]+$")..'(地铁mk14.).lua' local chunk = loadfile(cfg_file) local cfg = nil if chunk ~= nil then cfg = chunk() end if cfg == nil then cfg = {1103007020 ,1103007020 ,1103007020 , 1103007020 , 1103007020 ,1103007020 ,1103007020, true} end xing = gg.prompt({ "破损:", "修复:", "完好", "改进:",--4 "精致:",--5 "钢铁",--6 "独眼",--7 },cfg,{"text","text","text", "text","text","text","text"}) if xing == nil then else gg.saveVariable(xing, cfg_file) if xing[1] == true then xsnb1() end if xing[2] == true then xsnb2() end if xing[3] == true then xsnb3() end if xing[4] == true then xsnb4() end if xing[5] == true then xsnb5() end if xing[6] == true then xsnb6() end if xing[7] == true then xsnb7() end a=0x0 while(a <=0xAB0) do a=a+0x10 mk=gg.getRangesList('libUE4.so')[1].start add = RUI(RUI(RUI(RUI(RUI(mk + 0xC516A80) + 0x558) + a) + 0x30) + 0x38) adpd = RUI(RUI(RUI(RUI(RUI(RUI(mk + 0xC516A80) + 0x558) + a) + 0x30) + 0x38) +0x8) +0x18 if readD(adpd) == 1000 then gg.alert("遍历完成") addListltems(add,4,0,false) break add=add end end nmsl=0xDD30 while(nmsl <=0x866E218) do nmsl=nmsl+0x18 addr=RUI(add+nmsl) ----------xsnb666 if readD(addr+0x58) == 1030071 then setvalue(addr+0x18,4,xing[1]) end if readD(addr+0x58) == 1030072 then setvalue(addr+0x18,4,xing[2]) end if readD(addr+0x58) == 1030073 then setvalue(addr+0x18,4,xing[3]) end if readD(addr+0x58) == 1030074 then setvalue(addr+0x18,4,xing[4]) end if readD(addr+0x58) == 1030075 then setvalue(addr+0x18,4,xing[5]) end if readD(addr+0x58) == 1030076 then setvalue(addr+0x18,4,xing[6]) end if readD(addr+0x58) == 1030077 then setvalue(addr+0x18,4,xing[7]) break end end end end }, }) }, {--4 TianShen.text("自改音乐","#4DFFFF","15sp"), TianShen.check({ { "音乐", 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) 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, close = function(self) end }, { "关闭", function() gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end }, }) },{--5 TianShen.text("美国人内部","#4DFFFF","20sp"), TianShen.text("美国人天天开心","#ff3eede7","15sp"), TianShen.text("\n\n\n"), TianShen.button("退出辅助", function() window:removeView(floatWindow) luajava.setFloatingWindowHide(false) luajava.newThread(function() os.exit() end):start() bloc("end") end), },{--第五页,没有写菜单标题所以不显示 }, }) --配置表添加表即可加页数,需要与上边菜单标题数对应 function proo() besz.controlRotation2(control1,3000) end luajava.newThread(function()--更新逻辑 while true do gg.sleep(3000) if 显示==0 then proo() end end end):start() jm1 : setBackground(slcta ) gg.setVisible(false ) luajava.setFloatingWindowHide(true ) bloc = luajava.getBlock() bloc('join')