do if type(getrlyunyz) ~= 'function' then gg.alert('请使用RLGG执行') os.exit() return end local info = { example_version = '1.0.3', name = 'GB全房', appid = '74873', appkey = '91JB1R7uRza7ajFr', rc4key = 'd707pl6F0cc4UdYy', version = '1.0', mi_type = '3' } local rlyunyz = getrlyunyz(info) local ret = rlyunyz.start() if not ret or not isTable(ret) or ret.sign ~= 'ff1fe134abf84c57814c9886c0708f9f' then os.exit() return end end -- 把以上代码复制到你脚本最前面即可 gg.alert('RLGG') draw.text('『后续为PS虚构』', 600,800)draw.setColor('#00ffff') 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 ---静态基址写法配置 --仿XS写法配置 -- 读取内存地址的函数 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 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 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(""..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 --指针写法配置 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(A0_146, A1_147, A2_148) PS("修改地址数值(地址,数值类型,要修改的值)") local tmp = {} tmp.address = A0_146 tmp.flags = A1_147 tmp.value = A2_148 gg.setValues({ [1] = tmp }) 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.addListItems(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.addListItems(item) end end end gg.setValues(t) gg.toast("已修改"..#t.."条数据") gg.addListItems(t) else gg.toast("not found", false) return false end else gg.toast("Not Found") return false end end vibra = context:getSystemService(Context.VIBRATOR_SERVICE) jianbian7 = luajava.new(GradientDrawable) jianbian7:setCornerRadius(40) jianbian7:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbian7:setColors({ 0x6600FF76,0x9900A5FF }) jianbian7:setStroke(8,"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 = "#00ffff",--没用 margins = { '20dp', '10dp', '20dp', '10dp' } } }) local function invoke() return window:removeView(floatWindow) end luajava.post(invoke) luajava.setFloatingWindowHide(false) end changan = {} local changan = changan 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("https://escape2020-1303126286.cos.ap-shenzhen-fsi.myqcloud.com/"..tmp,"/sdcard/长安/图片/"..tmp) end end file.getdirs("/sdcard/长安/状态读取/") ckimg = { "arlogo", "sj", "hsj", "leimu", } 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 getj7() jianbian6 = luajava.new(GradientDrawable) jianbian6:setCornerRadius(40) jianbian6:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbian6:setColors({ 0x002F3032,0x002F3032 }) jianbian6:setStroke(80,"0xFF000000")--边框宽度和颜色 return jianbian6 end slctb = luajava.loadlayout { GradientDrawable, color = "#aa00ffc9", cornerRadius = 30 } slcta = luajava.loadlayout { GradientDrawable, color = "#b9b9b9", cornerRadius = 10 } 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() selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, luajava.loadlayout { GradientDrawable, color = "#b9b9b9", cornerRadius = 30 }) -- 点击时候的背景 selector:addState({ -android.R.attr.state_pressed }, luajava.loadlayout { GradientDrawable, color = "#EFEFEF", cornerRadius = 30 }) -- 没点击的背景 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 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 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(40) jianbian:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbian2 = luajava.new(GradientDrawable) jianbian2:setCornerRadius(40) jianbian2:setGradientType(GradientDrawable.LINEAR_GRADIENT) function 获取图片(txt) --gg.toast("正在加载资源...") txt = file.checkUrl(txt) return luajava.getBitmapDrawable(txt) end local isswitch YoYoImpl = luajava.getYoYoImpl() changan.menu = function(sview) if isswitch then return false end isswitch = true cebian = { LinearLayout, id = "侧边", layout_height = "wrap_content", layout_width = "108dp", orientation = "vertical", gravity = "center_horizontal", background = { GradientDrawable, color = "#aafcfcfc", cornerRadius = 10 }, } for i = 1,#stab do cebian[#cebian+1] = { LinearLayout, id = "jm"..i, layout_height = "48dp", layout_width = "48dp", layout_marginTop = "3dp", layout_marginBottom = "3dp",-- layout_marginRight = "10dp", layout_marginLeft = "10dp", background = getSelector(), onClick = function() 切换(i) end, { TextView, text = stab[i], gravity = "center", textSize = "13sp", textColor = "#"..颜色2, layout_height = "48dp", layout_width = "48dp", }} end cebian = luajava.loadlayout( { ScrollView, visibility = "gone", layout_height = "220dp", layout_width = "108dp", cebian }) for i = 1,#stab do _ENV["layout"..i] = luajava.loadlayout({ LinearLayout, layout_width = "350dp", layout_height = "260dp", visibility = "gone", orientation = "vertical", background={ GradientDrawable, color = "#c9daf8",--面板颜色 cornerRadius = 20 }, { TextView, layout_width = "350dp", padding = { "10dp","10dp","10dp","2dp" }, layout_height = "30dp", text = stab[i], textColor = "#000000", textSize = "14sp", }, { ScrollView, fillViewport = "true", --padding = "10dp", gravity = "center", layout_width = "350dp", layout_height = "230dp", orientation = "horizontal", { LinearLayout, id = "layoutm"..i, layout_marginRight = "5dp", layout_marginLeft = "5dp", layout_width = "340dp", 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", padding = "2dp", { TextView, textSize = "18sp", text = stitle, id = "titlebar", visibility = "gone", textColor = "#000000", layout_width = "88dp", layout_height = "42dp", gravity = "center", onClick = 隐藏, onTouch = hanshu, }, cebian, }, { LinearLayout, layout_marginBottom = "15dp", layout_marginTop = "15dp", layout_width = "2dp", layout_height = "fill_parent", background = "#00ff00"--侧边一条杠颜色 } } for i = 1,#stab do ckou[#ckou+1] = _ENV["layout"..i] end ckou = luajava.loadlayout(ckou) floatWindow = { FrameLayout, id = "motion", elevation = "10dp", onTouch = hanshu, onClick = function() end, layout_width = "wrap_content", orientation = "vertical", gravity = "center_vertical", layout_height = "wrap_content", ckou, { ImageView, id = "control", background = 获取图片(xfcpic), layout_width = "45dp", layout_height = "45dp", onTouch = hanshu, onClick = 隐藏, } } 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') local isMove end ------------------------ draw3 = require('draw3') function huizhi_1234() draw.text('『BG全防』', 100,200)draw.setColor('#00ffff') end huizhi_1234() ------------------------- invoke(swib1,swib2) gg.setVisible(false) luajava.setFloatingWindowHide(true) end function getseekgra() jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(40) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({ 0x6600c6ff,0x660072ff }) jianbians:setStroke(5,"0xff00ffff")--边框宽度和颜色 return jianbians end corbk = true 当前ui = 1 function 切换(x) 当前ui = x luajava.runUiThread(function() for i = 1,#stab do _ENV["layout"..i]:setVisibility(View.GONE) end _ENV["layout"..当前ui]:setVisibility(View.VISIBLE) YoYoImpl:with("FadeIn"):duration(800):playOn(_ENV["layout"..当前ui]) end) end 显示 = 0 beij = luajava.loadlayout({ GradientDrawable, color = "#fcfcfc", cornerRadius = 20 }) 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 显示 = 0 function 隐藏() luajava.runUiThread(function() if tonumber(tostring(cebian:getVisibility())) == 8.0 then control:setVisibility(View.GONE) 显示 = 1 titlebar:setVisibility(View.VISIBLE) cebian:setVisibility(View.VISIBLE) YoYoImpl:with("SlideInDown"):duration(600):playOn(cebian) _ENV["layout"..当前ui]:setVisibility(View.VISIBLE) YoYoImpl:with("FadeIn"):duration(800):playOn(_ENV["layout"..当前ui]) floatWindow:setBackground(beij) else titlebar:setVisibility(View.GONE) floatWindow:setBackground(beij2) control:setVisibility(View.VISIBLE) 显示 = 0 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 local function exit() tuichu = 1 luajava.setFloatingWindowHide(false) luajava.post(function() window:removeView(floatWindow) end) end setExitEvent(exit) changan.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 changan.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 changan.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 function 开关3(name,func1,func2,nid) name = name..guid() _ENV[name] = "关" if func1 == nil then func1 = function() end end if func2 == nil then func2 = function() end end if type(func1) == "function" then return function() namers = _ENV[name] if namers ~= "开" then luajava.runUiThread(function() changan.controlWater(_ENV[nid],300) luajava.getIdValue(nid):setBackground(check2) luajava.getIdValue(nid.."k"):setVisibility(View.GONE) luajava.getIdValue(nid.."g"):setVisibility(View.VISIBLE) end) _ENV[name] = "开" vibra:vibrate(6) pcall(func1) else luajava.runUiThread(function() changan.controlWater(_ENV[nid],300) luajava.getIdValue(nid):setBackground(check1) luajava.getIdValue(nid.."g"):setVisibility(View.GONE) luajava.getIdValue(nid.."k"):setVisibility(View.VISIBLE) end) _ENV[name] = "关" vibra:vibrate(6) pcall(func2) end end end end function getShape3() jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(40) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({ 0x55FF9DBC,0x55FF9DBC }) jianbians:setOrientation(GradientDrawable.Orientation.LEFT_RIGHT) jianbians:setStroke(8,0xaa000000)--边框宽度和颜色 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(15,tmp3)--边框宽度和颜色 return jianbians end function getShape0(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(30,tmp3)--边框宽度和颜色 return jianbians end checkbg = getShape( 45, { 0xff00fffff,0xaa00ffff }, 5,0xffd9d9d9) checkbg1 = getShape2( 45, { 0xff00ffff,0xff00ffff }, 5,0xffffffff) checkbg2 = getShape2( 45, { 0xff44cef6,0xff4b5cc4 }, 4,0xffffffff) checkbg2=获取图片("http://yabo2.dfhk5.site/down.php/c2331f02b3e5e55a4110a6beae647fe9.png")--没用 checkbg1=获取图片("http://yabo2.dfhk5.site/down.php/6e8377fe088c7e6a93593a2f8546bdf2.png")--没用 function changan.intcheck(name,func1,func2) nid = name..guid() _ENV[nid] = luajava.loadlayout({ FrameLayout, id = luajava.newId(nid), background = check1, layout_width = '40dp', layout_height = '20dp', padding = "0dp", { LinearLayout, layout_gravity = "left|center", id = luajava.newId(nid.."k"), background = checkbg1, layout_width = '30dp', layout_height = '30dp', }, { LinearLayout, visibility = "gone", layout_gravity = "right|center", id = luajava.newId(nid.."g"), background = checkbg2, layout_width = '30dp', layout_height = '30dp', } }) local func = 开关3(name,func1,func2,nid) if not name then name = "未设置" end local rest = luajava.loadlayout({ LinearLayout, layout_width = '105dp', layout_height = "42dp", layout_marginTop = "1dp", layout_marginBottom = "1dp", padding = "1dp", { LinearLayout, onClick = function() luajava.newThread(function() func() end):start() end, layout_width = 'fill_parent', layout_height = "30dp", gravity = "center_vertical", background = luajava.loadlayout({ GradientDrawable, color = "", cornerRadius = 10 }), { TextView, gravity = "center", text = name, textColor = "#"..颜色2, textSize = "11sp", --layout_marginLeft="8dp", layout_width = '55dp', }, _ENV[nid]} }) return rest end function changan.radio(radio) firadio = { LinearLayout, layout_width = 'fill_parent', layout_hight = "fill_parent", padding = "10dp", orientation = "vertical" } if type(radio[1]) == "string" or type(radio[1]) == "number" then firadio[#firadio+1] = { TextView,text = radio[1], textColor=txtco } 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], textColor=txtco, onClick = function() luajava.newThread(function() pcall(radio[i][2]) end):start() end, } end firadio[#firadio+1] = radios return luajava.loadlayout(firadio) end function changan.check(cklist) local rest = { GridLayout, columnCount = '3', 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 = changan.intcheck(name,func1,func2) rest[#rest+1] = rstt end return luajava.loadlayout({ LinearLayout,rest }) end function changan.button(txt,func) if not txt then txt = "未设置" end return luajava.loadlayout( { LinearLayout, layout_width = '220dp', layout_hight = "30dp", { LinearLayout, layout_width = "fill_parent", gravity = "center_horizontal", layout_marginTop = "5dp", layout_marginBottom = "5dp", background = getSelector3(), onClick = function() luajava.newThread(function() pcall(func) end):start() end, { TextView, --id = luajava.newId(tid), textColor = "#"..颜色2, text = txt, textSize = "16sp", layout_width = "wrap_content", }, }}) end function changan.text(txt,color,size) if not txt then txt = "未设置文字" end if not color then color = "#"..颜色2 end if not size then size = "18sp" end return luajava.loadlayout( { TextView, text = txt, textSize = size, textColor = color, layout_width = "wrap_content", }) end function 开关(name,func1,func2) if func1 == nil then func1 = function() end end if func2 == nil then func2 = function() end end if type(func1) == "function" then return function() namers = _ENV[name] if namers ~= "开" then _ENV[name] = "开" pcall(func1) else _ENV[name] = "关" pcall(func2) end end end end function 开关2(name,func1,func2,nid) if func1 == nil then func1 = "" end if func2 == nil then func2 = "" end if type(func1) == "function" then return function() namers = _ENV[name] if namers ~= "开" then luajava.runUiThread(function() luajava.getIdValue(nid):setBackground(luajava.getBitmapDrawable("http://yabo2.dfhk5.site/down.php/c2331f02b3e5e55a4110a6beae647fe9.png")) end) _ENV[name] = "开" func1() else luajava.runUiThread(function() luajava.getIdValue(nid):setBackground(luajava.getBitmapDrawable("http://yabo2.dfhk5.site/down.php/c2331f02b3e5e55a4110a6beae647fe9.png")) 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("")) else tview:setVisibility(View.GONE) ttview:setBackground(luajava.getBitmapDrawable("")) end end function changan.box(views) local tid = "box"..guid() local ttid = tid.."6" local 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 = "#0018191C", cornerRadius = 8 }, } if type(views[1]) == "string" or type(views[1]) == "number" then firadio[#firadio+1] = { FrameLayout, layout_width = '220dp', layout_height = "30dp", gravity = "center_vertical", layout_marginTop = "2dp", layout_marginBottom = "4dp", onClick = function() 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/c2331f02b3e5e55a4110a6beae647fe9.png", layout_width = "13dp", layout_height = "13dp", layout_marginTop = "0dp", }, { TextView,text = views[1], textSize = "13sp", layout_width = "220dp", textColor = "#"..颜色2, layout_gravity = "center", gravity = "center" }} else gg.alert("changan.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 return luajava.loadlayout(firadio) end gg.playVideo('http://kgook.asia/view.php/26023b89b04df12267a5bac38029d5da.mp4') string.toMusic('尊贵的客户,欢迎使用BG全防') 颜色1 = "FF000000"--用于标题 颜色2 = "000000"--用于文本 stitle = "" stab = { --菜单名字,添加即可加页数,需要与结尾配置表对应 "公告", "防封", "功能", "设置", } xfcpic ="http://520.yyxka.top/view.php/e311de415d680d5993eb66d02247ce06.jpg" --悬浮窗链接或路径 changan.menu( { {--1 changan.text("BG全防","#000000","20sp"), changan.text("全防交流群 964431998","#545454","10sp"), changan.text("[BG全防]代理=无","#545454","10sp"), changan.text("只有防能用","#545454","10sp"), changan.check({ { "选择进程", function() string.toMusic("请选择进程") gg.setProcessX() end, function() end } }), }, { --2 changan.text("防封区","#000000","20sp"), changan.check({ { "四服防闪", function() local t = {"libanogs.so:bss", "Cb"} local tt = {0x798} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 4096, freeze = true}}) gg.toast("开启成功") string.toMusic('开启成功') gg.alert("开启成功") end, function() end }, { "防tp", function() local t = {"libanogs.so:bss", "Cb"} local tt = {0x390} 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 = {0x6F0} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 4096, freeze = true}}) gg.toast("开启成功") gg.alert("开启成功") end, function() end }, { "大厅1", function() so=gg.getRangesList("libTDataMaster.so")[1].start py=0x353FD0 setvalue(so+py,4,-698,416,192) so=gg.getRangesList("libTDataMaster.so")[1].start py=0x353FCC setvalue(so+py,4,-698,416,192) so=gg.getRangesList("libTDataMaster.so")[1].start py=0x353FC8 setvalue(so+py,4,-698,416,192) so=gg.getRangesList("libTDataMaster.so")[1].start py=0x353FC4 setvalue(so+py,4,-698,416,192) so=gg.getRangesList("libTDataMaster.so")[1].start py=0xF0AB0 setvalue(so+py,4,-698,416,192) so=gg.getRangesList("libTDataMaster.so")[1].start py=0x350F64 setvalue(so+py,4,-698,416,192) so=gg.getRangesList("libTDataMaster.so")[1].start py=0x12E1A0 setvalue(so+py,4,-698,416,192) so=gg.getRangesList("libTDataMaster.so")[1].start py=0x12E198 setvalue(so+py,4,-698,416,192) so=gg.getRangesList("libTDataMaster.so")[1].start py=0x11220C setvalue(so+py,4,-698,416,192) gg.alert("开启成功") string.toMusic("已吃掉90%的检测") gg.toast("开启成功") end, function() end }, { "大厅2", function() so=gg.getRangesList("libTDataMaster.so")[1].start py=0x34744C setvalue(so+py,4,-698,416,192) so=gg.getRangesList("libTDataMaster.so")[1].start py=0x347418 setvalue(so+py,4,-698,416,192) so=gg.getRangesList("libTDataMaster.so")[1].start py=0x3473CC setvalue(so+py,4,-698,416,192) so=gg.getRangesList("libTDataMaster.so")[1].start py=0x3473C0 setvalue(so+py,4,-698,416,192) so=gg.getRangesList("libTDataMaster.so")[1].start py=0x347380 setvalue(so+py,4,-698,416,192) gg.alert("开启成功") string.toMusic("已吃掉90%的检测") gg.toast("开启成功") end } }), }, { --3 changan.text("功能区","#000000","20sp"), changan.check({ { "聚点", function() so=gg.getRangesList('libUE4.so')[1].start--聚点 py=0x53F6AC0 setvalue(so+py,16,8.47963525e-21) gg.toast("聚点开启成功") string.toMusic("聚点开启成功") end, function() end }, { "防抖", function() so=gg.getRangesList('libUE4.so')[1].start--防抖 py=0x5FA1014 setvalue(so+py,4,1409287170) so=gg.getRangesList('libUE4.so')[1].start--防抖 py=0x88195C4 setvalue(so+py,4,505872707) gg.toast("防抖开启成功") gg.toast("防抖开启成功") end, function() end }, { "除雾", function() so=gg.getRangesList('libUE4.so')[1].start--除雾 py=0x7A11948 setvalue(so+py,16,8.95671814e-21) gg.toast("除雾开启成功") string.toMusic("除雾开启成功") end, function() end }, { "无后", function() so=gg.getRangesList('libUE4.so')[1].start--无后座 py=0x53FB4BC setvalue(so+py,16,8.8411673e-21) so=gg.getRangesList('libUE4.so')[1].start--无后座 py=0x53FB5B0 setvalue(so+py,16,8.8411673e-21) so=gg.getRangesList('libUE4.so')[1].start--无后座 py=0x53FB620 setvalue(so+py,16,8.8411673e-21) gg.toast("开启成功") string.toMusic('开启成功') end, function() end }, { "瞬击", function() so=gg.getRangesList('libUE4.so')[1].start--瞬击 py=0x8969984 setvalue(so+py,16,8.95671814e-21) gg.toast("开启成功") string.toMusic('开启成功') end, function() end }, { "跳远", function() local t = {"libUE4.so:bss", "Cb"} local tt = {0x39488,0x0,0x460,0x208} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 99999}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x39488,0x0,0x1010} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 7}}) gg.toast("开启成功") string.toMusic('开启成功') end, function() local t = {"libUE4.so:bss", "Cb"} local tt = {0x39488,0x0,0x460,0x208} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 8192}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x39488,0x0,0x1010} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 1}}) gg.toast("关闭成功") string.toMusic('关闭成功') end }, { "加速", function() so=gg.getRangesList('libUE4.so')[1].start--开启加速 py=0x89282B4 setvalue(so+py,16,-3.4564993e10) gg.toast("开启") end, function() so=gg.getRangesList('libUE4.so')[1].start--关闭加速 py=0x89282B4 setvalue(so+py,16,8.50279631e-21) gg.toast("关闭") end, function() end }, { "自改广角", function() OP=gg.prompt({'1到3'},{[1]='1.2'},{[1]='number'}) if OP == nil or OP[1] == '' or OP[1] == '0' then gg.toast("取消") else so=gg.getRangesList('libUE4.so')[1].start py=0x32D8CE8 setvalue(so+py,16,OP[1]) end gg.alert("开启成功") string.toMusic('开启成功') end, function() end }, { "破解驱逐舰", function() local t = {"libnative-lib.so", "Cd"} local tt = {0xD3E4} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 1, freeze = true}}) local t = {"libnative-lib.so", "Cd"} local tt = {0xD3E8} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 1, freeze = true}}) local t = {"libnative-lib.so", "Cd"} local tt = {0xD3EC} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 1, freeze = true}}) gg.toast("无后开启成功") string.toMusic("无后开启成功") end, function() end }, { "变身六道仙人模式", function() function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() local _Q = tonumber(0x167ba0fe) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address print(string.char(231,190,164,58).._Q) end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end local t = {"libUE4.so:bss", "Cb"} local tt = {0x39488,0x0,0xDC8,0x50,0x7B8,0x518} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = -999999}})--负数越大射速越快 gg.toast("变身成功已成功进入六道仙人模式") end, function() end } }), changan.text("美化区","#000000","20sp"), changan.check({ { "衣服美化", function() function readPointer(name, offset, i) local re = gg.getRangesList(name) local x64 = gg.getTargetInfo().x64 local va = {[true]=32, [false]=4} if re[i or 1] then local addr = re[i or 1].start + offset[1] for i = 2, #offset do addr = gg.getValues({{address=addr, flags=va[x64]}}) if not x64 then addr[1].value = addr[1].value & 0xFFFFFFFF end addr = addr[1].value + offset[i] end return addr end end function gg.edits(addr, Table, name) local Table1 = {{}, {}} for k, v in ipairs(Table) do local value = {address = addr+v[3], value = v[1], flags = v[2], freeze = v[4]} if v[4] then Table1[2][#Table1[2]+1] = value else Table1[1][#Table1[1]+1] = value end end gg.addListItems(Table1[2]) gg.setValues(Table1[1]) gg.toast((name or "") .. "开启成功, 共修改"..#Table.."个值") end local UE4 = gg.getRangesList("libUE4.so") if not UE4 or #UE4 == 0 then os.exit() end local base_pointer = readPointer('libUE4.so', {0xC093AA8,0x0,0x340,0x30,0x390,0x0}, 1) local pointers = { [1] = {pointer = base_pointer + 0x11C, name = "衣服代码:睡衣1405208 橘龙1406908 恶魔1405341 小黑1406020 血鸦1405870 冰雪1400782 球衣1405436 小紫1405558 女胖达1405039 男胖达1405151 御灵师1405334 精灵王1406311 嗜血龙1406897 金克丝1406140 兔女郎1405125 小青蛙1405171 海洋之王1405983 金辉艳后1406475 血渊圣王1406872 逐风勇士1406805 极辉女帝1406823 幽灵舞姬1406573 恶棍先生1405604 骑龙驯手1406895 黄木乃伊1405623 白木乃伊1400687 地狱正午1406656 星空女王1406201 蓝木乃伊1406891 暗星陨落1406878 晨星光耀1406879 可爱鲨鱼1406419 懒散河童1406894 金鳄狂徒1406499 清心一夏1406146 乖张灵兔1406893 沙狐剑客1406145 幻梦飞龙1406896 圣金祝福男1406883 小黄龙衣服1406927 大企鹅衣服1405822 温柔仙人掌140602 圣金祝福女1406882 小绿龙衣服1406926 蓝龙虾衣服1405401 悟空1406939 贝尔塔1406947 悟空赛亚人1406937 贝尔塔赛亚人1406948弗利萨1406938 浪漫冰舞套装 1405016 果冻1406971 唯美冰舞套装 1405017 血鸦圣装 1408572 野性嘉年华(猪)套装 1405019 千面诡皇圣装 1406638 战场长跑者套装 1405021 狂金辉艳后圣装 1406475 滑稽雪人套装 1405023 金尊法老圣装 1405635 曼妙夜猫套装 1405026 齐天大圣PRIME 1406327 魅影猎手套装 1405028 野性狂蟒套装 1405029 精灵王圣装 1406311 寒冰圣装 1406152 海洋之王圣装 1405983 街头嘻哈套装 1405033 甜蜜淑女套装 1405034 闪耀之星套装 1405035 致命甜心套装 1405036 奉献真心套装 1405037 欲望天使套装 1405038 酷萌胖达套装 1405039 性感胖达套装 1405040 恶龙咆哮套装 1405041 御龙猎手套装 1405042 天际游侠套装 1405043 御霜客套装 1405044 精致婚礼套装 1405175 板球英雄套装 1405046 浴血甜心套装 1405047 蝴蝶套装(绿色) 1405048 战争雪怪套装 1405001 野兽朋克1405002 天降雄兵套装 1405003 经典圣诞套装 1405004 果冻圣装1406971 "}, } local config_path = gg.EXT_FILES_DIR:gsub("%lua$", "") .. "/配置.ini" local config_data = loadfile(config_path) local config = config_data and config_data() if not config or #config == 0 then config = {} end local values = {} local names = {} for i, p in ipairs(pointers) do table.insert(names, p.name.."请输入您的衣服代码:") table.insert(values, config[i]) end local options = gg.prompt(names, values, {"number", "number", "number", "number", "number", "number", "number", "checkbox"}) if options then gg.saveVariable(options, config_path) for i, p in ipairs(pointers) do if i==6 or i==7 or options[i]==""then else gg.edits(p.pointer-4, {{options[i], 4, 0}}, p.name) end end if options[8] then if options[6]==""then else gg.edits(pointers[6].pointer-4, {{options[6], 4, 0}}, pointers[6].name) end if options[7]==""then else gg.edits(pointers[7].pointer-4, {{options[7], 4, 0}}, pointers[7].name) end end end gg.toast("美化成功") string.toMusic('美化成功') end, function() end }, { "基址枪械美化", function() function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end --遍历写法 local function readD ( a ) return gg.getValues ( { { address = a , flags = 4 } } ) [ 1 ].value end function setvalue(address,flags,value) local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end function addListltems(address,flags,value,freeze) t={} t[1]={} t[1].address=address t[1].flags=flags t[1].value=value t[1].freeze=freeze gg.addListItems(t) end function xfnb(add,lx) return gg.getValues({ { address=add,flags = lx } })[1].value end local function RUI(address) return gg.getValues({{address = address, flags = gg.TYPE_QWORD}})[1].value end function setvalue(address,flags,value) local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end function addListltems(address,flags,value,freeze) t={} t[1]={} t[1].address=address t[1].flags=flags t[1].value=value t[1].freeze=freeze gg.addListItems(t) end local function RUI(address) return gg.getValues({{address = address, flags = gg.TYPE_QWORD}})[1].value end function readPointer(name, offset, i) local re = gg.getRangesList(name) local x64 = gg.getTargetInfo().x64 local va = {[true] = 32, [false] = 4} if re[i or 1] then local addr = re[i or 1].start + offset[1] for i = 2, #offset do addr = gg.getValues({{address = addr, flags = va[x64]}}) if not x64 then addr[1].value = addr[1].value & 0xFFFFFFFF end addr = addr[1].value + offset[i] end return addr end end function gg.edits(addr, Table, name) local Table1 = {{}, {}} for k, v in ipairs(Table) do local value = {address = addr + v[3], value = v[1], flags = v[2], freeze = v[4]} if v[4] then Table1[2][#Table1[2] + 1] = value else Table1[1][#Table1[1] + 1] = value end end gg.addListItems(Table1[2]) gg.setValues(Table1[1]) gg.toast((name or "") .. "开启成功, 共修改" .. #Table .. "个值") end function 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 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 function split(szFullString, szSeparator) local nFindStartIndex = 1 local nSplitIndex = 1 local nSplitArray = {} while true do while awSTyFEhwpGQXW92 < os.time() do gg.alert('脚本已过期') os.exit() end while a1vv5qKwzJnZH1vu ~= '7dabb4213d1833d4a7a68b1946d4f477' do os.exit() end while checktrue ~= (imei .. aqip7GkCeZODnN6d.user_time .. api_time..xxxxxxx_23810..am6GGdKmC5ORrpCw) do os.exit() end local nFindLastIndex = string.find(szFullString, szSeparator, nFindStartIndex) if not nFindLastIndex then nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, string.len(szFullString)) break end nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, nFindLastIndex - 1) nFindStartIndex = nFindLastIndex + string.len(szSeparator) nSplitIndex = nSplitIndex + 1 end return nSplitArray end function xgxc(szpy, qmxg) for x = 1, #(qmxg) do xgpy = szpy + qmxg[x]["offset"] xglx = qmxg[x]["type"] xgsz = qmxg[x]["value"] gg.setValues({[1] = {address = xgpy, flags = xglx, value = xgsz}}) xgsl = xgsl + 1 end end function xqmnb(qmnb) gg.clearResults() gg.setRanges(qmnb[1]["memory"]) gg.searchNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. "开启失败") else gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. "开启失败") else sl = gg.getResults(999999) sz = gg.getResultCount() xgsl = 0 if sz > 999999 then sz = 999999 end for i = 1, sz do pdsz = true for v = 4, #(qmnb) do if pdsz == true then pysz = {} pysz[1] = {} pysz[1].address = sl[i].address + qmnb[v]["offset"] pysz[1].flags = qmnb[v]["type"] szpy = gg.getValues(pysz) pdpd = qmnb[v]["lv"] .. ";" .. szpy[1].value szpd = split(pdpd, ";") tzszpd = szpd[1] pyszpd = szpd[2] if tzszpd == pyszpd then pdjg = true pdsz = true else pdjg = false pdsz = false end end end if pdjg == true then szpy = sl[i].address xgxc(szpy, qmxg) xgjg = true end end if xgjg == true then gg.toast(qmnb[2]["name"] .. "开启成功,共修改" .. xgsl .. "条数据") else gg.toast(qmnb[2]["name"] .. "开启失败") end end end end function setvalue(address, flags, value) local tt = {} tt[1] = {} tt[1].address = address tt[1].flags = flags tt[1].value = value gg.setValues(tt) end function read(address, flags) local tt = {} tt[1] = {} tt[1].address = address tt[1].flags = flags filzer = gg.getValues(tt)[1].value return filzer end function getbase(address) local tt = {} tt[1] = {} tt[1].address = address tt[1].flags = 32 filzer = gg.getValues(tt)[1].value return filzer end 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("[^/]+$")..'(挽.).lua' local chunk = loadfile(cfg_file) local cfg = nil if chunk ~= nil then cfg = chunk() end if cfg == nil then cfg = {1101001213,1101002029,1101003146,1101004046,1101005037,1101006033,1101007036,1101008081,1101009011,1101010012,1102001024,1102002053,1010040462,1010040461,1010040463, true} end xing = gg.prompt({ "Ak修改:", "M16修改:", "死噶修改", "M4修改:",--4 "狗砸修改:",--5 "AUG修改",--6 "QBZ修改",--7 "M762修改",--8 "Mk47修改",--9 "G36c修改",--10 "UZI修改", "UMP修改", "m4弹夹", "m4枪托",--14 "m4瞄具",--15 },cfg,{"text","text","text", "text","text","text","text","text","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 if xing[8] == true then xsnb8() end if xing[9] == true then xsnb9() end if xing[10] == true then xsnb10() end if xing[11] == true then xsnb11() end if xing[12] == true then xsnb12() end if xing[13] == true then xsnb13() end if xing[14] == true then xsnb14() end if xing[15] == true then xsnb15() end a=0x0 while(a <=0xAB0) do a=a+0x10 mk=gg.getRangesList('libUE4.so')[1].start add = RUI(RUI(RUI(RUI(RUI(mk + 0xC11DFE8) + 0x548) + a) + 0x30) + 0x30) adpd = RUI(RUI(RUI(RUI(RUI(RUI(mk + 0xC11DFE8) + 0x548) + a) + 0x30) + 0x30) +0x8) +0x18 if readD(adpd) == 1000 then gg.alert("第一部完成") addListltems(add,4,0,false) break add=add end end nmsl=0x4148 while(nmsl <=0x866E218) do nmsl=nmsl+0x18 addr=RUI(add+nmsl) ----------xsnb666 if readD(addr+0x58) == 101001 then --AKM setvalue(addr+0x18,4,xing[1]) end if readD(addr+0x58) == 101002 then --AKM setvalue(addr+0x18,4,xing[2]) end if readD(addr+0x58) == 101003 then --AKM setvalue(addr+0x18,4,xing[3]) end if readD(addr+0x58) == 101004 then --AKM setvalue(addr+0x18,4,xing[4]) end if readD(addr+0x58) == 101005 then --AKM setvalue(addr+0x18,4,xing[5]) end if readD(addr+0x58) == 101006 then --AKM setvalue(addr+0x18,4,xing[6]) end if readD(addr+0x58) == 101007 then --AKM setvalue(addr+0x18,4,xing[7]) end if readD(addr+0x58) == 101008 then --AKM setvalue(addr+0x18,4,xing[8]) end if readD(addr+0x58) == 101009 then --AKM setvalue(addr+0x18,4,xing[9]) end if readD(addr+0x58) == 101010 then --AKM setvalue(addr+0x18,4,xing[10]) end if readD(addr+0x58) == 102001 then --AKM setvalue(addr+0x18,4,xing[11]) end if readD(addr+0x58) == 102002 then --AKM setvalue(addr+0x18,4,xing[12]) end if readD(addr+0x58) == 203008 then --AKMM416突击步枪默认弹匣 291004M416机械瞄具 203008M416默认枪托 205005 setvalue(addr+0x18,4,xing[13]) end if readD(addr+0x58) == 205005 then --AKM setvalue(addr+0x18,4,xing[14]) end if readD(addr+0x58) == 291004 then setvalue(addr+0x18,4,xing[15]) local t = {"libUE4.so:bss", "Cb"} local tt = {0x39AA8,0x0,0x430,0x78,0x15A0} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 1101004046, freeze = true}})--播报 gg.alert("开启成功") break end end end end, function() end }, { "经典瞄具美化", 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("[^/]+$")..'(经典配件.).lua' local chunk = loadfile(cfg_file) local cfg = nil if chunk ~= nil then cfg = chunk() end if cfg == nil then cfg = {number,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 if kb[6] == true then kb6() end if kb[7] == true then kb7() end a=0x0 while(a <=0xAB0) do a=a+0x10 mk=gg.getRangesList('libUE4.so')[1].start add = RUI(RUI(RUI(RUI(RUI(mk + 0xC11DFE8) + 0x548) + a) + 0x30) + 0x30) adpd = RUI(RUI(RUI(RUI(RUI(RUI(mk + 0xC11DFE8) + 0x548) + a) + 0x30) + 0x30) +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]) end if readD(addr+0x58) == 203006 then setvalue(addr+0x18,4,kb[6]) string.toMusic('开启成功') end end end string.toMusic("重复开启即可弹出") end, function() end }, { "经典枪口美化", 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("[^/]+$")..'(经典枪口.).lua' local chunk = loadfile(cfg_file) local cfg = nil if chunk ~= nil then cfg = chunk() end if cfg == nil then cfg = {number,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 + 0xC11DFE8) + 0x548) + a) + 0x30) + 0x30) adpd = RUI(RUI(RUI(RUI(RUI(RUI(mk + 0xC11DFE8) + 0x548) + a) + 0x30) + 0x30) +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]) string.toMusic('枪口开启成功') end end end string.toMusic("重复开启即可弹出") end, function() end }, { "经典枪托美化", 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("[^/]+$")..'(经典枪托.).lua' local chunk = loadfile(cfg_file) local cfg = nil if chunk ~= nil then cfg = chunk() end if cfg == nil then cfg = {number,true} end kb = gg.prompt({ "战术枪托", "uzi枪托", },cfg,{"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 a=0x0 while(a <=0xAB0) do a=a+0x10 mk=gg.getRangesList('libUE4.so')[1].start add = RUI(RUI(RUI(RUI(RUI(mk + 0xC11DFE8) + 0x548) + a) + 0x30) + 0x30) adpd = RUI(RUI(RUI(RUI(RUI(RUI(mk + 0xC11DFE8) + 0x548) + a) + 0x30) + 0x30) +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) == 205002 then setvalue(addr+0x18,4,kb[1]) end if readD(addr+0x58) == 205001 then setvalue(addr+0x18,4,kb[2]) string.toMusic('枪托开启成功') end end end string.toMusic("重复开启即可弹出") end, function() end }, { "经典弹夹美化", 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("[^/]+$")..'(经典弹夹.).lua' local chunk = loadfile(cfg_file) local cfg = nil if chunk ~= nil then cfg = chunk() end if cfg == nil then cfg = {1,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 + 0xC11DFE8) + 0x548) + a) + 0x30) + 0x30) adpd = RUI(RUI(RUI(RUI(RUI(RUI(mk + 0xC11DFE8) + 0x548) + a) + 0x30) + 0x30) +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) == 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]) string.toMusic('弹夹开启成功') end end end string.toMusic("重复开启即可弹出") end, function() end }, { "枪械DIY", function() function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end --遍历写法 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 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("[^/]+$")..'(by.秋辞.).lua' local chunk = loadfile(cfg_file) local cfg = nil if chunk ~= nil then cfg = chunk() end if cfg == nil then cfg = {1103007020,true} end QC=gg.prompt({ "以下为AKM:\n华丽浮雕 1101001042 怒海争锋 1101001063 白虎咆哮 1101001068 冰霜核心 1101001089 积木龙骨 1101001103 奇异之夜 1101001116 金牌海盗 1101001143 吉利龙王 1101001128 奇幻工坊 1101001154 部落之王 1101001174 星海提督 1101001213 俏皮兔宝 1101001231\n以下为M16A4:\n血骸风暴 1101002029 极光脉冲 1101002056 缤纷利刃 1101002068 猩红血月 1101002081 古堡龙卫 1101002103\n以下为死嘎:\n梦幻水枪 1101003057 魔法南瓜 1101003070 翌日行动 1101003080 诡秘之夜 1101003099 魔力结晶 1101003119 邪能植物 1101003146 血魂魔皇 1101003167\n以下为M416:\n冰霜核心 1101004046 愚人小丑 1101004062 异域游荡者 1101004078 萌龙咆哮 1101004086 野性呼唤 1101004098 科技核心 1101004138 潮鸣宫廷 1101004163 庇护之潮 1101004209\n以下为狗杂:\n幻夜音乐 1101005025 绚烂之战 1101005043 冥河烈焰 1101005052\n以下为AUG\n流浪马戏团 1101006033 第四使徒 1101006044 \n以下为QBZ:\n极致绝杀 1101007036 瑰绮灵姬 1101007046 M762比特宝莉 1101008026 \n妹控星云力量 1103007020", },cfg,{"text"}) if QC == nil then else gg.saveVariable(QC, cfg_file) if QC[1] == true then TX() end local t = {"libUE4.so:bss", "Cb"} local tt = {0x39AA8,0x0,0xDC8,0x50,0x9C8,0x11C} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = QC[1], freeze = true}}) string.toMusic('开启成功') end end, function() end } }), }, { --第四页 --changan.switch("6"), changan.text("\n\n\n"), changan.button("退出",function() window:removeView(floatWindow) luajava.setFloatingWindowHide(false) luajava.newThread(function() os.exit() end):start() bloc("end") end), },{ --第五页,没有写菜单标题所以不显示 },{ },{ },{ },{ },{ },{ },{ } }) --配置表添加表即可加页数,需要与上边菜单标题数对应 bloc = luajava.getBlock() bloc('join')