-- ============================================================= -- 米验 纯 Lua 验证脚本基于101版本写的所以兼容应该没有问题 -- 纯 Lua 实现: Base64, AES-256-CBC, RSA PKCS1 v1.5 --加解密已内置在远程模块中.提升响应速度 --26 年 7 月 5 日已优化至算法原先四到六秒优化至零点 5 到 1 秒内 -- ============================================================= -- ==================== 配置 ==================== CONFIG = { --请自行前往平台注册账号创建应用 b6w.top --官方永久网站 b6w.cn --应用 APP ID 也就是应用 Key apiKey = "e3f57a01bad9a21e11036d837bf9a4b3", --1.0.0用于判断更新使用 version = "1.0.0", --请求地址勿动 --验证接口是完整的 RSA 加AES256 CBC --需注意是纯 Lua authUrl = "https://b6w.top/api/Auth.php", --请求地址勿动 updateUrl = "https://b6w.top/api/Lua.php", --密钥勿动 --大家不必担心这个就是更新信息显示的所以说简单的密钥就行 xorKey = "米验验证登录地址b6w.top官方网站b6w.cn", --RSA公钥 publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuwFE8OkO0ALD1Mr4aUOOVfyZy6xB+pQLfdEGwOKwvP/QTNC5ygA8Hfm49KTDWDkX6myyFRrWCPHm8Z6bFFFPOdhMyQieak50tuag5qIQtB5hpuo2eMwIDFDt/PVBoJ2AE+Btzegl+9URzVVlhA5/iw1TSSdidAj2J13Cnma+4t7tMRyPfpfWL9p8AhYYB5aKyrVZSUi7azCXQglJsEhIUHjWkEKJBYE3yDs4UXNVQzQe+QIRW+UIqEYATcNRPYevE+141EV6JrieVvhO3f0lWFny9PpHfq6zXJ/PWOvFpCIMeqHgsHpJjQf/RPF4SQ8PqhjvRAJmNft+8THsrbsNXwIDAQAB", updateMethod = 0, -- 0=弹选项 1=远程脚本 2=浏览器复制下载链接 --如果是0会弹这两个选项如果是 1,就会执行远程脚本也就是更新链接里面的远程链接如果填 2那么就会自动复制下载链接,需要自行打开浏览器下载新版本 --远程加密模块地址 moduleUrl = "https://b6w.top/mk/miyanPro.lua", } local function qv1i472m() if CONFIG.moduleUrl:find("^https?://") then local resp = gg.makeRequest(CONFIG.moduleUrl, nil, nil) if not resp or not resp.content or #resp.content == 0 then gg.alert("获取加密模块失败,请检查网络", "退出") os.exit() end local code, err = load(resp.content) if not code then gg.alert("加密模块加载失败: " .. tostring(err), "退出") os.exit() end code() else local code, err = loadfile(CONFIG.moduleUrl) if not code then gg.alert("加载本地模块失败: " .. tostring(err), "退出") os.exit() end code() end end qv1i472m() math.randomseed(os.time() + math.floor(os.clock() * 1000000)) local function lkqjx3hrx(str) if not str or str == "" then return nil end local result = {} for k, v in str:gmatch('"([^"]+)"%s*:%s*"([^"]*)"') do result[k] = jsonUnescape(v) end for k, v in str:gmatch('"([^"]+)"%s*:%s*([%d%.%-]+)') do if not result[k] then result[k] = tonumber(v) or v end end for k, v in str:gmatch('"([^"]+)"%s*:%s*(true)%f[%W]') do if not result[k] then result[k] = true end end for k, v in str:gmatch('"([^"]+)"%s*:%s*(false)%f[%W]') do if not result[k] then result[k] = false end end for k, v in str:gmatch('"([^"]+)"%s*:%s*(%b{})') do if not result[k] then result[k] = lkqjx3hrx(v) or v end end return result end local deviceId = getDeviceId() local cachedPK = CONFIG.publicKey local function tzbs24jxhtd9() return cachedPK ~= nil end local function dxwvwa6v(cardKey) if not cardKey or cardKey == "" then return {ok=false, msg="请输入卡密"} end if not cachedPK then return {ok=false, msg="公钥未获取,请稍后重试"} end gg.toast("正在验证...") local aesKeyHex = "" for i = 1, 32 do aesKeyHex = aesKeyHex .. string.format("%02x", math.floor(math.random(0, 255))) end local ivHex = "" for i = 1, 16 do ivHex = ivHex .. string.format("%02x", math.floor(math.random(0, 255))) end local biz = toJson({ card_key = cardKey, machine_id = deviceId, nonce = generateNonce(20), timestamp = math.floor(os.time()) }) local encKey = rsaEncrypt(hexToBytes(aesKeyHex), cachedPK) if not encKey then return {ok=false, msg="RSA加密失败"} end local encData = aes256CbcEncrypt(biz, aesKeyHex, ivHex) local ivB64 = base64Encode(hexToBytes(ivHex)) local postData = "action=auth&api_key=" .. CONFIG.apiKey .. "&encrypted_key=" .. urlEncode(encKey) .. "&encrypted_data=" .. urlEncode(encData) .. "&iv=" .. urlEncode(ivB64) local content = httpPost(CONFIG.authUrl, postData) if not content then return {ok=false, msg="网络请求失败"} end local r = lkqjx3hrx(content) if not r then return {ok=false, msg="响应解析失败"} end if r.encrypted then local decBytes = aes256CbcDecrypt(r.data, aesKeyHex, base64Decode(r.iv)) if not decBytes then return {ok=false, msg="解密失败"} end local decStr = "" for i = 1, #decBytes do decStr = decStr .. string.char(decBytes[i]) end local data = lkqjx3hrx(decStr) if not data then return {ok=false, msg="解密失败"} end local msg = data.message or "" local expiresAt = data.expires_at or "" if not expiresAt or expiresAt == "null" then expiresAt = "永久" end if data.authorized == true or data.authorized == "true" then saveAutoLogin(cardKey) return {ok=true, msg=msg, expires=expiresAt} else return {ok=false, msg=msg} end else return {ok=false, msg=r.message or r.msg or "验证失败"} end end local function aehlyk(cardKey) if not cardKey or cardKey == "" then return {ok=false, msg="请输入卡密"} end if not cachedPK then return {ok=false, msg="公钥未获取,请稍后重试"} end gg.toast("正在解绑...") local aesKeyHex = "" for i = 1, 32 do aesKeyHex = aesKeyHex .. string.format("%02x", math.floor(math.random(0, 255))) end local ivHex = "" for i = 1, 16 do ivHex = ivHex .. string.format("%02x", math.floor(math.random(0, 255))) end local biz = toJson({ card_key = cardKey, machine_id = deviceId, nonce = generateNonce(20), timestamp = math.floor(os.time()) }) local encKey = rsaEncrypt(hexToBytes(aesKeyHex), cachedPK) if not encKey then return {ok=false, msg="RSA加密失败"} end local encData = aes256CbcEncrypt(biz, aesKeyHex, ivHex) local ivB64 = base64Encode(hexToBytes(ivHex)) local postData = "action=unbind&api_key=" .. CONFIG.apiKey .. "&encrypted_key=" .. urlEncode(encKey) .. "&encrypted_data=" .. urlEncode(encData) .. "&iv=" .. urlEncode(ivB64) local content = httpPost(CONFIG.authUrl, postData) if not content then return {ok=false, msg="网络请求失败"} end local r = lkqjx3hrx(content) if not r then return {ok=false, msg="响应解析失败"} end if r.status and r.encrypted then local data = lkqjx3hrx(aes256CbcDecrypt(r.data, aesKeyHex, base64Decode(r.iv))) if not data then return {ok=false, msg="解密失败"} end local msg = data.message or "" local count = data.unbind_count or -1 if data.status == true or data.status == "true" then return {ok=true, msg=msg .. "\n已解绑次数: " .. count} else return {ok=false, msg=msg} end else return {ok=false, msg=r.msg or r.message or "解绑失败"} end end local function lxgij5qc() local dataJson = toJson({ version = CONFIG.version, timestamp = math.floor(os.time()), nonce = generateNonce(20) }) local encData = base64Encode(strToBytes(dataJson)) local postData = "api_key=" .. CONFIG.apiKey .. "&data=" .. urlEncode(encData) local content = httpPost(CONFIG.updateUrl, postData) if not content then return nil end local r = lkqjx3hrx(xorDecode(content)) return r end local function mk0l8h1i4f05(r) if not r then return end local notice = r.notice or "" if notice == "null" then notice = "" end local needUpdate = r.need_update == true or r.need_update == "true" or r.need_update == 1 or r.need_update == "1" local latestVer = r.latest_version or "" local updateUrl = r.update_url or "" local changelog = r.update_log or "" local forceUpdate = r.force_update == 1 if notice ~= "" then gg.alert(notice, "确定") end if needUpdate then local msg = "发现新版本 v" .. latestVer .. "\n\n" .. (changelog or "无更新日志") if forceUpdate then gg.alert(msg, "去更新") openBrowser(updateUrl) os.exit() else local choice = gg.choice({"去更新", "跳过"}, nil, msg) if choice == 1 then openBrowser(updateUrl) end end end end local function uqxpz6qg() local savedKey = loadAutoLogin() or "" local updateInfo = lxgij5qc() while true do local menu = gg.choice({"验证卡密", "解绑设备", "退出"}, nil, "米验验证 v" .. CONFIG.version) if not menu then break end if menu == 1 then local input = gg.prompt({"请输入卡密"}, {savedKey}, {"text"}) if input then local result = dxwvwa6v(input[1]) if result.ok then gg.alert("授权验证通过\n到期时间: " .. result.expires, "确定") etgr6zbfo() return else gg.alert("验证失败: " .. result.msg, "确定") end end elseif menu == 2 then local input = gg.prompt({"请输入卡密"}, {savedKey}, {"text"}) if input then local result = aehlyk(input[1]) if result.ok then gg.alert("解绑成功!\n" .. result.msg, "确定") else gg.alert("解绑失败: " .. result.msg, "确定") end end elseif menu == 3 then break end end end function etgr6zbfo() --将你的源码放在下面验证成功后将自动执行 draw.setStyle('描边并填充') draw.setSize(50) draw.setColor("#00ffff") draw.text('冰',300,300) string.toMusic("您已进入冰全防,温馨提示冰不是gay") do if type(getrlyunyz) ~= 'function' then gg.alert('请使用RLGG执行') os.exit() return end local info = { example_version = '1.0.3', name = '明名', appid = '100412', appkey = 'zTx22b43BDB4BafQ', rc4key = 'z2HOD76Hhdd5JD62', version = '1.0', mi_type = '3' } local rlyunyz = getrlyunyz(info) local ret = rlyunyz.start() if not ret or not isTable(ret) or ret.sign ~= '992de2a38316573e43844819819f189d' then os.exit() return end end function setvalue(a,b,c,d)if type(a)=="number"and type(b)=="number"then gg.setValues({{address=a,flags=b,value=c}})else local t={}for i=1,#b do t[i]={address=a+b[i],flags=c,value=type(d)=="table"and d[i]or d}end gg.setValues(t)end end setv=setvalue function S_Pointer(s,o,b)for i,v in ipairs(gg.getRangesList(s[1]))do if v.state==s[2]then a=v.start+o[1]for i=2,#o do a=gg.getValues({{address=a,flags=b and 32 or 4}})[1].value+o[i]end return string.format('0x%X',a)end end end function so(n)return gg.getRangesList(n)[1].start end function freeze(a,b,c,d)setvalue(a,b,c,d)local t={}for i=1,#b do t[i]={address=a+b[i],flags=c,value=type(d)=="table"and d[i]or d,freeze=true}end gg.addListItems(t)end function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() local _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 Unfreeze() local t = gg.getListItems() for k, v in pairs(t) do t[k]["freeze"] = false end return gg.addListItems(t) end function xqmnb(Search,Modification) gg.clearResults() gg.setRanges(Search[1].memory) gg.searchNumber(Search[3].value,Search[3].type,false,536870912,0,-1) if gg.getResultCount()==0 then gg.toast(Search[2].name..'开启失败') return end local Result=gg.getResults(gg.getResultCount()) local sum for index=4,#Search do sum=0 for i=1,#Result do if gg.getValues({{address=Result[i].address+Search[index].offset,flags=Search[index].type}})[1].value~=Search[index].lv then Result[i].Usable=true sum=sum+1 end end if sum==#Result then gg.toast(Search[2].name..'开启失败') return end end local Data,Freeze,Freezes={},{},0 sum=0 for index,value in ipairs(Modification)do for index=1,#Result do if not Result[index].Usable then local Value={address=Result[index].address+value.offset,flags=value.type,value=value.value,freeze=true} if value.freeze then Freeze[#Freeze+1]=Value Freezes=Freezes+1 else Data[#Data+1]=Value end sum=sum+1 end end end gg.addListItems(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.addListItems(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.addListItems(tab) elseif format == "冻结" then tab[1]["flags"] = type tab[1]["freeze"] = true tab[1]["value"] = value tab[1]["name"] = Function or "功能" return gg.addListItems(tab) elseif format == "加载" then tab[1]["flags"] = type return gg.loadResults(tab) end end function LSQ_Chain(so, offset, format, value, type, Function)--模块设置, 偏移量, 功能参数, 修改值, 类型, 功能 getRanges = getRanges or (function() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v["type"]:sub(2, 2) == 'w' then--判断so是否可读可写 ranges[#ranges+1] = v end end return ranges end) local rest, ranges, sostart, valtype = {}, getRanges(), nil , gg.TYPE_DWORD if gg.getTargetInfo()["x64"] then--判断应用程序是否为64位 valtype = gg.TYPE_QWORD end for i in pairs(ranges) do local _name = ranges[i]["internalName"]:gsub('^.*/', '') if so[1] == _name and so[2] == ranges[i]["state"] then sostart = ranges[i]["start"] break end end if sostart then if offset[1] then for i = 1, #offset do rest = {{flags = valtype,address = sostart + offset[i]}} rest = gg.getValues(rest) if i == #offset then break end if valtype == gg.TYPE_DWORD then sostart = rest[1].value & 0xFFFFFFFF--对值进行补位操作 else sostart = rest[1].value end end end if #rest == 1 then end return Format(rest, format, value, type, Function) end gg.toast("功能:" .. Function .. "开启失败") print("功能开启失败原因: 未找到基址头") return os.exit() end function 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 do if type(getrlyunyz) ~= 'function' then gg.alert('请使用RLGG执行') os.exit() return end local info = { example_version = '1.0.3', name = '冰', appid = '100412', appkey = 'zTx22b43BDB4BafQ', rc4key = 'z2HOD76Hhdd5JD62', version = '1.0', mi_type = '3' } local rlyunyz = getrlyunyz(info) local ret = rlyunyz.start() if not ret or not isTable(ret) or ret.sign ~= '992de2a38316573e43844819819f189d' then os.exit() return end end local baseWindow = require 'floatingWindowManager2' if not baseWindow.getContext then gg.alert('请重启一下RLGG') app.exit() end import "android.graphics.Color" import "android.content.res.ColorStateList" local context = baseWindow:getContext() import("android.content.res.ColorStateList") import("com.google.android.material.card.MaterialCardView") import("com.google.android.material.materialswitch.MaterialSwitch") import("com.google.android.material.slider.Slider") import("com.google.android.material.progressindicator.LinearProgressIndicator") import("android.animation.LayoutTransition") import "android.view.animation.TranslateAnimation" import "android.view.animation.Animation" import "android.animation.ArgbEvaluator" import "android.animation.LayoutTransition" import "android.graphics.drawable.GradientDrawable" import "android.graphics.drawable.ClipDrawable" import "android.media.MediaPlayer" MediaPlayer=MediaPlayer() import "java.io.File" import "android.graphics.Typeface" import "android.animation.LayoutTransition" layoutTransition=LayoutTransition() layoutTransition:setDuration(500) import 'com.google.android.material.imageview.ShapeableImageView' import 'com.google.android.material.shape.CornerFamily' import 'com.google.android.material.materialswitch.MaterialSwitch' import 'com.google.android.material.button.MaterialButton' import 'com.google.android.material.dialog.MaterialAlertDialogBuilder' import 'com.google.android.material.slider.Slider' import 'com.google.android.material.snackbar.Snackbar' import 'com.google.android.material.sidesheet.SideSheetDialog' import 'com.google.android.material.bottomsheet.BottomSheetDialog' import 'com.google.android.material.bottomsheet.BottomSheetBehavior' import 'com.google.android.material.progressindicator.LinearProgressIndicator' import 'com.google.android.material.progressindicator.CircularProgressIndicator' import 'com.google.android.material.chip.ChipGroup' import 'com.google.android.material.chip.Chip' import 'com.google.android.material.radiobutton.MaterialRadioButton' import 'com.google.android.material.checkbox.MaterialCheckBox' import 'com.google.android.material.dialog.MaterialAlertDialogBuilder' import 'androidx.coordinatorlayout.widget.CoordinatorLayout' import 'androidx.core.widget.NestedScrollView' import 'android.graphics.drawable.Icon' import 'android.widget.LinearLayout' import 'android.widget.Button' import 'android.widget.TextView' import 'android.widget.ScrollView' import 'android.widget.RadioGroup' import 'java.lang.CharSequence' import 'java.lang.Boolean' import 'java.lang.reflect.Array' --Snackbar:make(ckou,"启动进程结束 欢迎使用",Snackbar.LENGTH_SHORT):setBackgroundTint("0xff161616"):show() -- 浅色模式 print("本次运行包含套餐:个人版") baseWindow:darkMode() baseWindow:lightMode() import "android.animation.LayoutTransition" file.checkFile("/sdcard/林默新UI配置/收藏歌单") -- 判断文件是否存在 local musiclist = file.read("/sdcard/林默新UI配置/收藏歌单") -- 读取文件内容 if musiclist ~= "" then -- 判断内容是否为空 musiclist = load("return"..musiclist)() -- string转table后赋值 else musiclist = {} -- 给变量赋值 end local nowMusic = #musiclist -- 设定当前歌曲序号 import("android.media.MediaPlayer") mediaPlayer=MediaPlayer() -- 音乐播放器 import("android.view.animation.ScaleAnimation") import("android.view.animation.Animation") import("android.content.res.ColorStateList") --gg.setVisible(false) --luajava.setFloatingWindowHide(true) local material3 = require "material3" local context=material3:getContext() -- 把以上代码复制到你脚本最前面即可 -- 把以上代码复制到你脚本最前面即可 function getTimeStamp(t) local str = os.date("%Y年%m月%d日%H:%M:%S",t) return str end changan = {} local changan = changan local android = import('android.*') 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 ckimg = { "glit", "gclose", "TCN" } 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 getLayoutParams2() LayoutParams = WindowManager.LayoutParams layoutParams2 = luajava.new(LayoutParams) if (Build.VERSION.SDK_INT >= 26) then -- 设置悬浮窗方式 layoutParams2.type = LayoutParams.TYPE_APPLICATION_OVERLAY else layoutParams2.type = LayoutParams.TYPE_PHONE end layoutParams2.format = PixelFormat.RGBA_8888 -- 设置背景 layoutParams2.flags = LayoutParams.FLAG_NOT_FOCUSABLE -- 焦点设置Finish layoutParams2.gravity = Gravity.TOP|Gravity.LEFT -- 重力设置 layoutParams2.width = LayoutParams.WRAP_CONTENT -- 布局宽度 layoutParams2.height = LayoutParams.WRAP_CONTENT -- 布局高度 return layoutParams2 end function getj6() jianbian6 = luajava.new(GradientDrawable) jianbian6:setCornerRadius(20) jianbian6:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbian6:setColors({ 0xffffffff,0xffffffff }) jianbian6:setStroke(0,"0xffffffff")--边框宽度和颜色 return jianbian6 end hanshu = function(v, event) local Action = event:getAction() if Action == MotionEvent.ACTION_DOWN then isMove = false RawX = event:getRawX() RawY = event:getRawY() x = mainLayoutParams.x y = mainLayoutParams.y elseif Action == MotionEvent.ACTION_MOVE then isMove = true mainLayoutParams.x = tonumber(x) + (event:getRawX() - RawX) mainLayoutParams.y = tonumber(y) + (event:getRawY() - RawY) window:updateViewLayout(floatWindow, mainLayoutParams) end end hanshu2 = function(v, event) local Action = event:getAction() if Action == MotionEvent.ACTION_DOWN then isMove = false RawX = event:getRawX() RawY = event:getRawY() x = mainlay2.x y = mainlay2.y elseif Action == MotionEvent.ACTION_MOVE then isMove = true mainlay2.x = tonumber(x) + (event:getRawX() - RawX) mainlay2.y = tonumber(y) + (event:getRawY() - RawY) window:updateViewLayout(floatWindow2, mainlay2) end end slcta= luajava.loadlayout { GradientDrawable, color = "#00ffffff", cornerRadius = 8 } slctb = luajava.loadlayout { GradientDrawable, color = "#20000000", 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(20) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({ 0xffffffff,0xffffffff }) jianbians:setStroke(0,"0xffffffff")--边框宽度和颜色 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 }, slctb) -- 点击时候的背景 selector:addState({ -android.R.attr.state_pressed }, slcta) -- 没点击的背景 return selector end function getSelector2() selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, slctd) -- 点击时候的背景 selector:addState({ -android.R.attr.state_pressed }, slctc) -- 没点击的背景 return selector end jianbian = luajava.new(GradientDrawable) jianbian:setCornerRadius(30) jianbian:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbian2 = luajava.new(GradientDrawable) jianbian2:setCornerRadius(30) jianbian2:setGradientType(GradientDrawable.LINEAR_GRADIENT) local isswitch YoYoImpl = luajava.getYoYoImpl() changan.menu = function(sview) layout1 = luajava.loadlayout({ ScrollView, fillViewport = "true", padding = "5dp",--原始5 id = "layout1", gravity = "center", visibility = "visible", layout_width = "380dp",--原始300 layout_height = "280dp",--原始280 orientation = "horizontal", { LinearLayout, id = "layouta", --background = getj6(), gravity = "center", layout_width = "360dp", orientation = "vertical", gravity = "center_horizontal", } }) ckou = luajava.loadlayout({ LinearLayout, id = "chuangk", visibility = "gone", layout_width = "wrap_content", layout_height = "match_parent", orientation = "horizontal", layout1 }) floatWindow = { FrameLayout, id = "motion", { LinearLayout, layout_width = "wrap_content", layout_height = "wrap_content", gravity = "center", control2}, { LinearLayout, layout_width = "wrap_content", orientation = "vertical", gravity = "center_vertical", layout_height = "wrap_content", layout_marginTop="30dp", background=beij, { LinearLayout, layout_width = "match_parent", layout_height = "wrap_content", orientation = "horizontal", gravity = "center", background=luajava.loadlayout({ GradientDrawable, color = "#D9D9D9", cornerRadius = 10 }), { TextView, id = "title", visibility = "gone", text = stab, --background="#80FF00", textColor = "#000000", gravity = "center", textSize = "14sp", layout_marginTop = "1dp", layout_marginBottom="1dp", layout_width = "match_parent", }, }, ckou }} local function invoke() local ok local RawX, RawY, x, y mainLayoutParams = getLayoutParams() mainLayoutParams.x = device.width/2-300 mainLayoutParams.y = device.height/8 floatWindow = luajava.loadlayout(floatWindow) local function invoke2() for i = 1,#sview[1] do layouta:addView(sview[1][i]) end window:addView(floatWindow, mainLayoutParams) end local runnable = luajava.getRunnable(invoke2) local handler = luajava.getHandler() handler:post(runnable) local isMove motion.onTouch = hanshu end invoke(swib1,swib2) gg.setVisible(false) luajava.setFloatingWindowHide(true) end function changan.line() rest = luajava.loadlayout({ LinearLayout, layout_width = 'fill_parent', layout_height = "1dp", background = "#ddC2CAD7", }) return rest end function getShape3() jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(20) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({ 0xffffffff,0xffffffff }) jianbians:setStroke(0,"0xffffffff")--边框宽度和颜色 return jianbians end function getShape() jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(90) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({ 0xffffffff,0xffffffff }) jianbians:setStroke(0,"0xffffffff")--边框宽度和颜色 return jianbians end function getShape2() jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(20) jianbians:setShape(GradientDrawable.RECTANGLE) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({ 0xffffffff,0xffffffff }) jianbians:setStroke(8,"0xffffffff")--边框宽度和颜色 return jianbians end corbk = true 当前ui = 1 显示 = 0 beij = luajava.new(GradientDrawable) beij:setCornerRadius(20) beij:setGradientType(GradientDrawable.LINEAR_GRADIENT) beij:setColors({ 0xffffffff,0xffffffff }) beij:setStroke(0,"0xffffffff")--边框宽度和颜色 --beijw beij2 = luajava.loadlayout({ GradientDrawable, color = "#001E1C27", cornerRadius = 10 }) function changan.box(views) local tid = "box"..guid() local ttid = tid.."6" firadio = { LinearLayout, gravity = "left", layout_width = 'fill_parent', layout_height = "wrap_content", orientation = "vertical", background = getj6(), padding={"0dp","0dp","5dp","0dp"}, } if type(views[1]) == "string" or type(views[1]) == "number" then firadio[#firadio+1] = { LinearLayout, layout_height = "wrap_content", layout_width = "fill_parent", { TextView, text = views[1], textSize = "13sp", padding="5dp", layout_marginLeft="4dp", layout_width = "match_parent", textColor = "#545454", gravity = "left", }} else gg.alert("changan.box第一个参数必须是string") os.exit() end radios = { LinearLayout, layout_marginLeft = "0dp", layout_marginRight = "0dp", orientation = "vertical", padding = "0dp", layout_width = 'fill_parent', changan.line() } for i = 2,#views do radios[#radios+1] = views[i] if i~=#views then radios[#radios+1] = changan.line() end end firadio[#firadio+1] = radios return luajava.loadlayout({LinearLayout, layout_width = "fill_parent", padding={"0dp","10dp","0dp","0dp"}, firadio}) end function getcolor(cl) cl[1] = tonumber(math.ceil(cl[1]*2.6,0,5)) if cl[1] > 255 then cl[1] = "0xff" else cl[1] = "0x"..string.format("%x",cl[1]) end for i = 1,3 do cl[i+1] = string.format("%x",cl[i+1]) if string.len(cl[i+1]) == 1 then cl[i+1] = "0"..cl[i+1] end end cl = cl[1]..cl[2]..cl[3]..cl[4] return cl end function 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(chuangk:getVisibility())) == 8.0 then chuangk:setVisibility(View.VISIBLE) 显示=1 title:setVisibility(View.VISIBLE) mainLayoutParams.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL window:updateViewLayout(floatWindow, mainLayoutParams) layout1:setVisibility(View.VISIBLE) YoYoImpl:with("FadeIn"):duration(800):playOn(layout1) else 显示=0 mainLayoutParams.flags = LayoutParams.FLAG_NOT_FOCUSABLE window:updateViewLayout(floatWindow, mainLayoutParams) title:setVisibility(View.GONE) chuangk:setVisibility(View.GONE) layout1: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 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(0,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(0,tmp3)--边框宽度和颜色 return jianbians end checkbg = getShape( 90, { 0xffAEAEB1,0xffAEAEB1 }, 4,0xff000000) checkbga = getShape( 90, { 0xff4638F7,0xff4638F7 }, 4,0xff4638F7) checkbg1 = getShape2( 90, { 0xffffffff,0xffffffff }, 4,0x002B323D) checkbg2 = getShape2( 90, { 0xffffffff,0xffffffff }, 4,0x002B323D) 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() if isgnkging then gg.alert("滞空加速期间无法执行其他功能") return 0 end namers = _ENV[name] if namers ~= "开" then luajava.runUiThread(function() luajava.getIdValue(nid.."k"):setVisibility(View.GONE) luajava.getIdValue(nid.."g"):setVisibility(View.VISIBLE) luajava.getIdValue(nid..""):setBackground(checkbga) end) _ENV[name] = "开" pcall(func1) else luajava.runUiThread(function() luajava.getIdValue(nid.."g"):setVisibility(View.GONE) luajava.getIdValue(nid.."k"):setVisibility(View.VISIBLE) luajava.getIdValue(nid..""):setBackground(checkbg) end) _ENV[name] = "关" pcall(func2) end end end end MSwitch = {} function changan.switch(name,func1,func2) ID = name..guid() MSwitch[#MSwitch+1] = ID Checked = false if name=="音量键隐藏UI" then 音量键 = true Checked = true end if name=="摇一摇隐藏UI" then 摇一摇 = true Checked = true end rest = luajava.loadlayout({ LinearLayout, layout_width="fill_parent", layout_height = "47dp", gravity = "center", { LinearLayout, layout_width = 'fill_parent', layout_height = "40dp", gravity = "center", elevation = "2dp", layout_marginRight = "4dp", layout_marginLeft = "4dp", background = luajava.loadlayout { GradientDrawable , color = 0xffffffff , cornerRadius = 15 } ,padding = { "0dp","0dp","6dp","0dp" }, { TextView, Typeface=font, gravity = "top", text = name, textColor = "0xff000000", textSize = "13sp", layout_weight = 1, layout_width = 'fill_parent', layout_marginLeft = "10dp", layout_marginRight = "20dp", }, { MaterialSwitch, id = luajava.newId(ID), layout_weight = 1, checked = Checked, layout_width = 'fill_parent', layout_height = 'wrap_content', onCheckedChange = function(compoundButton, isChecked) luajava.newThread(function() if isChecked then pcall(func1) else pcall(func2) end end):start() end } } }) return rest end radiog={} function changan.radio (cklist) local rid=guid() radiog[rid]={} rest = { LinearLayout , layout_width = 'match_parent' , layout_height = "wrap_content" , layout_marginTop = "30dp" , gravity = "top" , orientation = "vertical" , } if type (cklist [1]) == "string" then rds=2 rest [# rest + 1] = { TextView , gravity = "left" , padding="5dp", text = cklist [1] , textSize = "13sp" , Typeface=font, textColor = 0xff000000 , layout_width = 'fill_parent' , layout_height = 'wrap_content' , layout_marginLeft = "10dp" , layout_marginRight = "5dp" , layout_marginTop = "0dp" , layout_marginBottom = "0dp" , } else rds=1 end local restt={ RadioGroup, layout_width = 'match_parent', layout_height = "wrap_content", gravity = "center_vertical", layout_marginRight = "10dp", layout_marginLeft = "10dp", layout_marginTop='4dp', layout_marginBottom='4dp', elevation='2dp', orientation = "vertical" , background = luajava.loadlayout{GradientDrawable,color = 0xFFFFFFFF,cornerRadius = 15}, padding = {"0dp","0dp","6dp","0dp"}, } for i = rds , # cklist do local name = cklist [i] [1] local func = cklist [i] [2] if not name then name = "未设置" end local nid = name..guid () radiog[rid][nid]=false local tid = nid..guid () restt [# restt + 1] = { RadioButton , layout_width = '250dp' , layout_height = "wrap_content" , layout_marginLeft = "4dp" , layout_marginRight = "10dp" , text = name , textSize="13sp", Typeface=font, buttonTintList = ColorStateList({ {} }, { 0xff0062FF }),--radio点击后的颜色 textColor = 0xff000000 , gravity = "center_vertical" , onClick = function (v) --changan.controlWater (v, 200) luajava.startThread(func) end } end rest [# rest + 1] = restt return luajava.loadlayout (rest) end local nid="ctr2"..guid() local func = 开关3("开关k",隐藏,隐藏,nid) if not name then name = "未设置" end control2 = luajava.loadlayout( { FrameLayout, id = luajava.newId(nid), background = checkbg, layout_marginRight="5dp", onTouch=hanshu, onClick = function() luajava.newThread(function() func() end):start() end, layout_width = '45dp', layout_height = 'wrap_content', padding = "2dp", { LinearLayout, layout_gravity = "left|center_vertical", id = luajava.newId(nid.."k"), background = checkbg1, layout_width = '20dp', layout_height = '20dp', }, { LinearLayout, visibility = "gone", layout_gravity = "right|center_vertical", id = luajava.newId(nid.."g"), background = checkbg2, layout_width = '20dp', layout_height = '20dp', } }) function changan.text(txt,txt2,pic) if not txt then txt = "未设置文字" end if not txt2 then txt2 = "" end if not pic then pic = "" end local size="13sp" local color="#000000" return luajava.loadlayout( {LinearLayout, layout_width="fill_parent", layout_height="wrap_content", gravity="center_vertical", { ImageView, src=luajava.getBitmapDrawable(pic), layout_height="20dp", layout_width="20dp", layout_marginLeft="10dp", padding="0dp", }, { TextView, text = txt, textSize = size, textColor = color, layout_marginLeft="10dp", gravity="left", layout_width = "100dp", },{ TextView, text = txt2, textSize = size, textColor = color, gravity="right", layout_weight=1, layout_width = "match_parent", }}) end corb = true function 开关(name,func1,func2) if func1 == nil then func1 = "" end if func2 == nil then func2 = "" end if type(func1) == "function" then return function() if isgnkging then gg.alert("滞空加速期间无法执行其他功能") return 0 end namers = _ENV[name] if namers ~= "开" then _ENV[name] = "开" pcall(func1) else _ENV[name] = "关" pcall(func2) end end end end function changan.button(txt,func,txtc) if not txtc then txtc="#0077FF" end local rest = luajava.loadlayout({ TextView, layout_height="30dp", layout_width="match_parent", text=txt, gravity="center", textColor=txtc, onClick=function() luajava.newThread(function() if isgnkging then gg.alert("滞空加速期间无法执行其他功能") return 0 end func() end):start() end, background=getSelector(), }) return rest end stab = "冰全防"--标题1 changan.menu( { { changan.box({ "防封",--一个box一个白框 changan.button("选择进程",gg.setProcessX), changan.button("清除冻结",gg.setProcessX), changan.switch("LOGO防闪", function() so=gg.getRangesList("libUE4.so")[1].start py=0x34 setvalue(so+py,4,706675680) if gg.getRangesList("libUE4.so")[1] then local t = {} t[1] = gg.getRangesList("libUE4.so")[1]["start"] + 0x1C; -- 数值地址:0x6ED0147394 --过ZS追踪渲染检测 gg.addListItems({ [1] = { address = t[1], flags = 4, value = -1, freeze = true, }, }) gg.toast("开启成功") end if gg.getRangesList("libanogs.so:bss")[1] then local t = {} t[1] = gg.getRangesList("libanogs.so:bss")[1]["start"] + 0x42C; -- 数值地址:0x7B3AD7B42C t[2] = gg.getRangesList("libanogs.so:bss")[1]["start"] + 0x430; -- 数值地址:0x7B3AD7B430 t[3] = gg.getRangesList("libanogs.so:bss")[1]["start"] + 0x5D8; -- 数值地址:0x7B3AD7B5D8 gg.addListItems({ [1] = { address = t[1], flags = 4, value = 128, freeze = true, }, [2] = { address = t[2], flags = 4, value = 4096, freeze = true, }, [3] = { address = t[3], flags = 4, value = 4096, freeze = true, }, }) gg.toast("开启成功") end gg.alert("开启成功") string.toMusic("开启成功") end, function() end), changan.switch("LOGO过检测[四服]", function() so=gg.getRangesList("libUE4.so")[1].start py=0x34 setvalue(so+py,4,706675680) if gg.getRangesList("libUE4.so")[1] then local t = {} t[1] = gg.getRangesList("libUE4.so")[1]["start"] + 0x1C; -- 数值地址:0x6ED0147394 --过ZS追踪渲染检测 gg.addListItems({ [1] = { address = t[1], flags = 4, value = -1, freeze = true, }, }) gg.toast("开启成功") end gg.alert("请搭配大厅防使用") string.toMusic("开启成功") end, function() end), changan.switch("大厅过检测①[全球]", function() local encoded = {0x1B9604, 0x1B95E4, 0x1B93A0, 0x1B939C, 0x1B9394, 0x1B9390, 0x1B9384, 0x1B9374, 0x1B9358, 0x1B9350, 0x1B9348, 0x1B9330, 0x1B931C, 0x1B9294 } local key = 0x123456 local offsets = { encoded[1] ~ key, encoded[2] ~ key,encoded[3] ~ key,encoded[4] ~ key,encoded[5] ~ key, encoded[6] ~ key,encoded[7] ~ key,encoded[8] ~ key,encoded[9] ~ key,encoded[10] ~ key,encoded[11] ~ key, encoded[12] ~ key,encoded[13] ~ key,encoded[14] ~ key } local ranges = gg.getRangesList("libgcloud.so") local base = ranges[1].start gg.addListItems({ [1] = {address = base + offsets[1], flags = 4, value = 1384120320, freeze = true}, [2] = {address = base + offsets[2], flags = 4, value = 1384120320, freeze = true}, [3] = {address = base + offsets[3], flags = 4, value = -721215457, freeze = true}, [4] = {address = base + offsets[4], flags = 4, value = 1384120320, freeze = true}, [5] = {address = base + offsets[5], flags = 4, value = 1384120341, freeze = true}, [6] = {address = base + offsets[6], flags = 4, value = 1384120320, freeze = true}, [7] = {address = base + offsets[7], flags = 4, value = 1384120320, freeze = true}, [8] = {address = base + offsets[8], flags = 4, value = 1384120320, freeze = true}, [9] = {address = base + offsets[9], flags = 4, value = 1384120320, freeze = true}, [10] = {address = base + offsets[10], flags = 4, value = 1384120320, freeze = true}, [11] = {address = base + offsets[11], flags = 4, value = 1384120320, freeze = true}, [12] = {address = base + offsets[12], flags = 4, value = 1384120320, freeze = true}, [13] = {address = base + offsets[13], flags = 4, value = 1384120320, freeze = true}, [14] = {address = base + offsets[14], flags = 4, value = 335544351, freeze = true}, }) gg.toast("开启成功") gg.alert("开启成功") string.toMusic("开启成功") end, function() end), changan.switch("大厅过检测①[日韩]", function() local encoded = {0x1B9604, 0x1B95E4, 0x1B93A0, 0x1B939C, 0x1B9394, 0x1B9390, 0x1B9384, 0x1B9374, 0x1B9358, 0x1B9350, 0x1B9348, 0x1B9330, 0x1B931C, 0x1B9294 } local key = 0x123456 local offsets = { encoded[1] ~ key, encoded[2] ~ key,encoded[3] ~ key,encoded[4] ~ key,encoded[5] ~ key, encoded[6] ~ key,encoded[7] ~ key,encoded[8] ~ key,encoded[9] ~ key,encoded[10] ~ key,encoded[11] ~ key, encoded[12] ~ key,encoded[13] ~ key,encoded[14] ~ key } local ranges = gg.getRangesList("libgcloud.so") local base = ranges[1].start gg.addListItems({ [1] = {address = base + offsets[1], flags = 4, value = 1384120320, freeze = true}, [2] = {address = base + offsets[2], flags = 4, value = 1384120320, freeze = true}, [3] = {address = base + offsets[3], flags = 4, value = -721215457, freeze = true}, [4] = {address = base + offsets[4], flags = 4, value = 1384120320, freeze = true}, [5] = {address = base + offsets[5], flags = 4, value = 1384120341, freeze = true}, [6] = {address = base + offsets[6], flags = 4, value = 1384120320, freeze = true}, [7] = {address = base + offsets[7], flags = 4, value = 1384120320, freeze = true}, [8] = {address = base + offsets[8], flags = 4, value = 1384120320, freeze = true}, [9] = {address = base + offsets[9], flags = 4, value = 1384120320, freeze = true}, [10] = {address = base + offsets[10], flags = 4, value = 1384120320, freeze = true}, [11] = {address = base + offsets[11], flags = 4, value = 1384120320, freeze = true}, [12] = {address = base + offsets[12], flags = 4, value = 1384120320, freeze = true}, [13] = {address = base + offsets[13], flags = 4, value = 1384120320, freeze = true}, [14] = {address = base + offsets[14], flags = 4, value = 335544351, freeze = true}, }) gg.toast("开启成功") gg.alert("开启成功") string.toMusic("开启成功") end, function() end), changan.switch("大厅过检测①[台湾]", function() local encoded = {0x1B9604, 0x1B95E4, 0x1B93A0, 0x1B939C, 0x1B9394, 0x1B9390, 0x1B9384, 0x1B9374, 0x1B9358, 0x1B9350, 0x1B9348, 0x1B9330, 0x1B931C, 0x1B9294 } local key = 0x123456 local offsets = { encoded[1] ~ key, encoded[2] ~ key,encoded[3] ~ key,encoded[4] ~ key,encoded[5] ~ key, encoded[6] ~ key,encoded[7] ~ key,encoded[8] ~ key,encoded[9] ~ key,encoded[10] ~ key,encoded[11] ~ key, encoded[12] ~ key,encoded[13] ~ key,encoded[14] ~ key } local ranges = gg.getRangesList("libgcloud.so") local base = ranges[1].start gg.addListItems({ [1] = {address = base + offsets[1], flags = 4, value = 1384120320, freeze = true}, [2] = {address = base + offsets[2], flags = 4, value = 1384120320, freeze = true}, [3] = {address = base + offsets[3], flags = 4, value = -721215457, freeze = true}, [4] = {address = base + offsets[4], flags = 4, value = 1384120320, freeze = true}, [5] = {address = base + offsets[5], flags = 4, value = 1384120341, freeze = true}, [6] = {address = base + offsets[6], flags = 4, value = 1384120320, freeze = true}, [7] = {address = base + offsets[7], flags = 4, value = 1384120320, freeze = true}, [8] = {address = base + offsets[8], flags = 4, value = 1384120320, freeze = true}, [9] = {address = base + offsets[9], flags = 4, value = 1384120320, freeze = true}, [10] = {address = base + offsets[10], flags = 4, value = 1384120320, freeze = true}, [11] = {address = base + offsets[11], flags = 4, value = 1384120320, freeze = true}, [12] = {address = base + offsets[12], flags = 4, value = 1384120320, freeze = true}, [13] = {address = base + offsets[13], flags = 4, value = 1384120320, freeze = true}, [14] = {address = base + offsets[14], flags = 4, value = 335544351, freeze = true}, }) gg.toast("开启成功") gg.alert("开启成功") string.toMusic("开启成功") end, function() end), changan.switch("大厅过检测①[越南]", function() local encoded = {0x32F90B8, 0x32F8D80, 0x32F8D48, 0x32F8C68, 0x32F8C5C, 0x32F8C40, } local key = 0x123456 local offsets = {encoded[1] ~ key, encoded[2] ~ key, encoded[3] ~ key, encoded[4] ~ key, encoded[5] ~ key, encoded[6] ~ key} local ranges = gg.getRangesList("libUE4.so") local base = ranges[1].start gg.addListItems({ [1] = {address = base + offsets[1], flags = 4, value = 17024, freeze = true}, [2] = {address = base + offsets[2], flags = 4, value = 17024, freeze = true}, [3] = {address = base + offsets[3], flags = 4, value = 17024, freeze = true}, [4] = {address = base + offsets[4], flags = 4, value = 17024, freeze = true}, [5] = {address = base + offsets[5], flags = 4, value = 17024, freeze = true}, [6] = {address = base + offsets[6], flags = 4, value = 17024, freeze = true}, }) gg.toast("开启成功") gg.alert("开启成功") string.toMusic("开启成功") end, function() end), changan.switch("全局离线[开/关]", function() if gg.getRangesList("libgcloud.so")[1] then local t = {} t[1] = gg.getRangesList("libgcloud.so")[1]["start"] + 0x13BFE4; -- 数值地址:0x6E3AE18FE4 gg.addListItems({ [1] = { address = t[1], flags = 4, value = -698416192, freeze = true, }, }) gg.toast("开启成功") end gg.alert("开启成功") string.toMusic("开启成功") end, function() if gg.getRangesList("libgcloud.so")[1] then local t = {} t[1] = gg.getRangesList("libgcloud.so")[1]["start"] + 0x13BFE4; -- 数值地址:0x6E3AE18FE4 gg.addListItems({ [1] = { address = t[1], flags = 4, value = -788233217, freeze = true, }, }) gg.toast("开启成功") end gg.alert("关闭成功") string.toMusic("关闭成功") end), }), changan.box({ "功能", changan.button("选择进程", function() gg.setProcessX() end), changan.switch("静态广角", function() local r = gg.prompt({'自改广角1-3'}, {'1.5'}, {'text'}) so=gg.getRangesList('libUE4.so')[1].start py=0x3594978 setvalue(so+py,16,r[1]) string.toMusic("开启成功") end, function() if gg.getRangesList("libUE4.so")[1] then local t = {} t[1] = gg.getRangesList("libUE4.so")[1]["start"] + 0x3594978; -- 数值地址:0x7B1C3BC778 gg.addListItems({ [1] = { address = t[1], flags = 16, value = 1, freeze = true, }, }) gg.toast("开启成功") end end), changan.switch("越南广角", function() k = gg.prompt({"你的数值修改:"},{"1.5"}) if k== nil then else R=k[1] so=gg.getRangesList('libUE4.so')[1].start py=0x359EBF8 setvalue(so+py,16,R) end string.toMusic("开启成功") end, function() if gg.getRangesList("libUE4.so")[1] then local t = {} t[1] = gg.getRangesList("libUE4.so")[1]["start"] + 0x359EBF8; -- 数值地址:0x7B1C3BC778 gg.addListItems({ [1] = { address = t[1], flags = 16, value = 1, freeze = true, }, }) gg.toast("开启成功") end end), changan.switch("动态广角", function() bnm = gg.prompt({ "注:建议改120\n[80;150]", "是否开启" },{[1]='120',[2]=''},{[1]="number",[2]="checkbox"}) if bnm == nil or bnm[1] == '' or bnm[1] == '0' then gg.toast("开启失败:原因:你点击了取消") else end local t = {"libUE4.so:bss", "Cb"} local tt = {0x555C70,0x30,0x4B8,0x1D50,0x39C} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = bnm[1]}}) string.toMusic("开启成功") end, function() end), changan.switch("子弹变大", function() if gg.getRangesList("libUE4.so")[1] then local t = {} t[1] = gg.getRangesList("libUE4.so")[1]["start"] + 0x60CCB0C; -- 数值地址:0x71C96C65C8 gg.addListItems({ [1] = { address = t[1], flags = 16, value = 8.57951974e-21, freeze = true, }, }) gg.toast("开启成功") end string.toMusic("开启成功") end, function() end), changan.switch("流畅趴下", function() local t = {"libUE4.so:bss", "Cb"} local tt = {0x555C70,0x30,0x4B8,0x68} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 0.0001, freeze = true}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x555C70,0x30,0x4B8,0x64} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 0.0001, freeze = true}}) string.toMusic("开启成功") end, function() end), changan.switch("伤害显示", function() local t = {"libUE4.so:bss", "Cb"} local tt = {0x555C70,0x30,0xA1C}--伤害显示 local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 2, freeze = true}}) string.toMusic("开启成功") end, function() end), changan.switch("骁龙内透", function() local function getRanges() local ranges = {} local t = gg.getRangesList('^/dev/kgsl-3d0*$') for i, v in pairs(t) do if v.type:sub(4, 4) == 's' then table.insert(ranges, v) end end return ranges end local function readD(a) return gg.getValues({{ address=a, flags=gg.TYPE_DWORD }})[1].value end local function readF(a) return gg.getValues({{ address=a, flags=gg.TYPE_FLOAT }})[1].value end function setvalue(address,flags,value) local t={} t[1]={} t[1].address=address t[1].flags=flags t[1].value=value gg.setValues(t) gg.addListItems(t) end function _V(add,value1,flag,value2) local num=0;ednum=0 if flag==gg.TYPE_DWORD then readV=readD elseif flag==gg.TYPE_FLOAT then readV=readF else os.exit("不支持的类型") end local S_list = getRanges() for i in pairs(S_list) do num=num+1 addr=S_list[i].start+add if readV(addr)==value1 then setvalue(addr,flag,value2) ednum=ednum+1 end end return "遍历了"..num.."个地址\n".."HOOK"..ednum.."个地址" end gg.toast(_V(0x5B0,2,gg.TYPE_FLOAT,120))-----内透 gg.toast(_V(0xAB0,2,gg.TYPE_FLOAT,120))-----内透 gg.toast(_V(0x200,2,gg.TYPE_FLOAT,10e10))-----防闪 gg.toast(_V(0x048,8200,gg.TYPE_DWORD,6))-------上色 gg.clearList(t) string.toMusic("开启成功") end, function() end), changan.switch("手持无后", function() local t = {"libUE4.so:bss", "Cb"} local tt = {0x555C70,0x30,0x4B8,0x2A90,0x7E8,0xCF0} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = -1}}) string.toMusic("开启成功") end, function() end), changan.switch("手持防抖", function() local t = {"libUE4.so:bss", "Cb"} local tt = {0x555C70,0x30,0x4B8,0x2A90,0x7E8,0xCF4} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 0}}) string.toMusic("开启成功") end, function() end), changan.switch("手持聚点", function() local t = {"libUE4.so:bss", "Cb"} local tt = {0x555C70,0x30,0x4B8,0x2A90,0x7E8,0xC2C} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 0}}) string.toMusic("开启成功") end, function() end), changan.switch("爬墙", function() local t = {"libUE4.so:bss", "Cb"} local tt = {0x555C70,0x30,0x4B8,0x518,0x218} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 120, freeze = true}}) string.toMusic("开启成功") end, function() end), changan.switch("微加速", function() local t = {"libUE4.so:bss", "Cb"} local tt = {0x555C70,0x30,0x4B8,0x1168} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 1.2, freeze = true}}) string.toMusic("开启成功") end, function() local t = {"libUE4.so:bss", "Cb"} local tt = {0x555C70,0x30,0x4B8,0x1168} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 1, freeze = true}}) end), }), changan.box({ "设置", changan.switch("退出", function() bloc("end") end, function() end), }), } }) setOnExitListener(function() bloc("end") luajava.setFloatingWindowHide(false) end) qhkai = 0 bloc=luajava.getBlock() bloc("join") luajava.setFloatingWindowHide(false) luajava.post(function() window:removeView(floatWindow) end) luajava.setFloatingWindowHide(false) --将你的源码放在上面验证成功后将自动执行 end local ok, err = pcall(uqxpz6qg) if not ok then gg.toast("程序错误: " .. tostring(err)) end