require "import" --米验验证 --2026 年 6 月 28 日 --登录地址 b6w.top --永久官网 b6w.cn --所有对接全部标配 RSA 加 AES256 CBC 动态密钥 --最后更新时间 2026 年 7 月 5 日 10.52 --本次修复对接完,进入你的源代码界面时候,没有背景默认黑屏的问题 import "java.lang.Thread" import "java.lang.Runnable" if not rawget(_G, "task") then task = function(a, b, c, d) local delay, func, input, cb if type(a) == "number" then delay, func, input, cb = a, b, c, d else delay, func, input, cb = 0, a, b, c end local r = Runnable{ run = function() if delay and delay > 0 then Thread.sleep(delay) end local ok, result = pcall(func, input) activity.runOnUiThread(Runnable{ run = function() if cb then cb(ok and result or nil) end end }) end } Thread(r).start() end end require "import" import "android.app.*" import "android.os.*" import "android.widget.*" import "android.view.*" import "android.webkit.*" import "android.net.Uri" import "android.content.Intent" import "android.util.Base64" import "android.graphics.drawable.GradientDrawable" local layout = import "miyan" local dlg_msg={ LinearLayout, orientation="vertical", layout_width="300dp", layout_height="wrap_content", paddingLeft="24dp", paddingRight="24dp", paddingTop="24dp", paddingBottom="16dp", { TextView, id="dlgTitle", text="", textSize="18sp", textColor="0xFFFFFFFF", paddingBottom="16dp", }, { TextView, id="dlgMsg", text="", textSize="14sp", textColor="0xCCFFFFFF", paddingBottom="8dp", }, } if _G._miyanVerified then activity.setContentView("miyan") local function CB(v,c,r) local d=GradientDrawable() d.setShape(GradientDrawable.RECTANGLE) d.setColor(c) d.setCornerRadii({r,r,r,r,r,r,r,r}) v.setBackgroundDrawable(d) end CB(Card,0x3FFFFFFF,30) CB(km,0x00FFFFFF,30) CB(kmdismiss,0x00FFFFFF,30) CB(login,0x00FFFFFF,30) CB(kmBj,0x3FFFFFFF,30) CB(jbBj,0x3FFFFFFF,30) CB(loginBj,0x3FFFFFFF,30) Title.getPaint().setFakeBoldText(true) km.setHintTextColor(0x4DFFFFFF) return end require "http" -- ==================== 配置 ==================== local CONFIG = { --请自行前往平台注册账号创建应用 b6w.top --应用 APP ID 也就是应用 Key apiKey = "ebe40cef57640487ce99e6a68a641b60", --2.0.9.2用于判断更新使用 version = "2.0.9.2", --请求地址勿动 --验证接口是完整的 RSA 加AES256 CBC authUrl = "https://b6w.top/api/Auth.php", --请求地址勿动 updateUrl = "https://b6w.top/api/Andlua.php", --密钥勿动 --大家不必担心这个就是更新信息显示的所以说简单的密钥就行 xorKey = "米验登录地址b6w.top官方网站b6w.cn", --下面这个是加载界面的那两个字可以改成自己的 --记住,最高只能输入四个中文有些屏幕小的只能输入三个或者两个 --英文和字符可以最高输入六个,不能再多了 --自己整吧 loadingText = "米验", publicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtag8ChAg6/6fKl51orvyIcpg+3dlt8I3cLmYpD9aexlzxLUuRL7/dAtnfkEzsykGCcqHnb+KcmSMsHXYfbfvdmm/jRVuZ+0FU35WQTNEKFT7X5cWSx5VRC2GSIbrD2pxA0Y5j0oP91ac79Xeoz38KD9S9OTj29O9uX8ikrGhfkFzlLHrSRnnqU4Ra76rAaf5xepApucZlpsZhvhOtlpYfu9DltruEdeHQ5SUzpFNJvbrTCULvTRo5mYRnXrUBm8enC5hlsv/msXbJQM0OCTaCwcYKONa+F/a7HCGt7nIoeI0/eoE4gel4XCmNxc+4TKo1/kQuFi7Qq9fkZXWJufbVQIDAQAB" } local rawPK = CONFIG.publicKey local d = "--" .. "---" if rawPK:find(d .. "BEGIN") == nil then rawPK = d .. "BEGIN PUBLIC KEY" .. d .. "\n" .. rawPK .. "\n" .. d .. "END PUBLIC KEY" .. d end local cachedPK = rawPK local deviceId = "" local function bxor(a, b) local r, p = 0, 1 for i = 1, 8 do if a % 2 ~= b % 2 then r = r + p end a = math.floor(a / 2) b = math.floor(b / 2) p = p * 2 end return r end local function xorDecode(b64) local xb = Base64.decode(b64, Base64.DEFAULT) local ks = luajava.newInstance("java.lang.String", CONFIG.xorKey) local keyBytes = ks.getBytes("UTF-8") local result = {} for i = 0, #xb - 1 do local b = xb[i] if b < 0 then b = b + 256 end local k = keyBytes[i % #keyBytes] if k < 0 then k = k + 256 end result[i + 1] = bxor(b, k) end local str = "" for i = 1, #result do str = str .. string.char(result[i]) end return str end local function toJson(tbl) local parts = {} for k, v in pairs(tbl) do local val if type(v) == "string" then val = '"' .. v:gsub('\\', '\\\\'):gsub('"', '\\"') .. '"' elseif type(v) == "number" then val = tostring(v) elseif type(v) == "boolean" then val = v and "true" or "false" else val = '"' .. tostring(v) .. '"' end table.insert(parts, '"' .. k .. '":' .. val) end return "{" .. table.concat(parts, ",") .. "}" end local function urlEncode(str) return str:gsub("([^%w%-%.%_%~])", function(c) return string.format("%%%02X", string.byte(c)) end) end local function generateNonce(len) local chars = "abcdefghijklmnopqrstuvwxyz0123456789" local str = "" for i = 1, len do local r = math.random(1, #chars) str = str .. chars:sub(r, r) end return str end local function getDeviceId() import "android.provider.Settings" local Secure = luajava.bindClass("android.provider.Settings$Secure") local id = Secure.getString(activity.getContentResolver(), "android_id") if id == nil or id == "" then id = "unknown_device" end return tostring(id) end local function CircleButton(view, InsideColor, radiu) local drawable = GradientDrawable() drawable.setShape(GradientDrawable.RECTANGLE) drawable.setColor(InsideColor) drawable.setCornerRadii({radiu, radiu, radiu, radiu, radiu, radiu, radiu, radiu}) view.setBackgroundDrawable(drawable) end local function dp2px(dp) return math.floor(dp * activity.getResources().getDisplayMetrics().density + 0.5) end local function styleDialog(dialog) local window = dialog.getWindow() window.setLayout(dp2px(300), -2) local bg = GradientDrawable() bg.setShape(GradientDrawable.RECTANGLE) bg.setColor(0x3FFFFFFF) bg.setCornerRadius(dp2px(20)) window.getDecorView().setBackgroundDrawable(bg) end local function showDlg(title, msg, btnText, callback) local view = loadlayout(dlg_msg) local ll = view for i = 0, ll.getChildCount() - 1 do local child = ll.getChildAt(i) if luajava.instanceof(child, TextView) then if i == 0 then child.setText(title) elseif i == 1 then child.setText(msg) child.setLineSpacing(0, 1.4) end end end local builder = AlertDialog.Builder(activity, android.R.style.Theme_Material_Dialog) builder.setView(view) builder.setPositiveButton(btnText or "确定", callback and {onClick=function(v) callback() end} or nil) builder.setCancelable(false) local dialog = builder.show() styleDialog(dialog) dialog.getButton(dialog.BUTTON_POSITIVE).setTextColor(0xFF818CF8) return dialog end local function aesEncrypt(plainText, key, iv) import "javax.crypto.Cipher" import "javax.crypto.spec.SecretKeySpec" import "javax.crypto.spec.IvParameterSpec" local ks = luajava.newInstance("javax.crypto.spec.SecretKeySpec", key, "AES") local is = luajava.newInstance("javax.crypto.spec.IvParameterSpec", iv) local c = Cipher.getInstance("AES/CBC/PKCS5Padding") c.init(Cipher.ENCRYPT_MODE, ks, is) local encrypted = c.doFinal(luajava.newInstance("java.lang.String", plainText).getBytes("UTF-8")) return Base64.encodeToString(encrypted, Base64.NO_WRAP) end local function aesDecrypt(cipherText, key, iv) import "javax.crypto.Cipher" import "javax.crypto.spec.SecretKeySpec" import "javax.crypto.spec.IvParameterSpec" local ks = luajava.newInstance("javax.crypto.spec.SecretKeySpec", key, "AES") local is = luajava.newInstance("javax.crypto.spec.IvParameterSpec", iv) local c = Cipher.getInstance("AES/CBC/PKCS5Padding") c.init(Cipher.DECRYPT_MODE, ks, is) local decoded = Base64.decode(cipherText, Base64.NO_WRAP) local decrypted = c.doFinal(decoded) return luajava.newInstance("java.lang.String", decrypted, "UTF-8") end local function rsaEncrypt(data, pem) import "java.security.KeyFactory" import "java.security.spec.X509EncodedKeySpec" import "javax.crypto.Cipher" local clean = pem:gsub("%-%-%-%-%-BEGIN PUBLIC KEY%-%-%-%-%-", ""):gsub("%-%-%-%-%-END PUBLIC KEY%-%-%-%-%-", ""):gsub("%s+", ""):gsub("\r", ""):gsub("\n", "") local kb = Base64.decode(clean, Base64.NO_WRAP) local kf = KeyFactory.getInstance("RSA") local spec = luajava.newInstance("java.security.spec.X509EncodedKeySpec", kb) local pk = kf.generatePublic(spec) local c = Cipher.getInstance("RSA/ECB/PKCS1Padding") c.init(Cipher.ENCRYPT_MODE, pk) return Base64.encodeToString(c.doFinal(data), Base64.NO_WRAP) end local function randomBytes(len) import "java.security.SecureRandom" import "java.lang.Byte" local random = luajava.newInstance("java.security.SecureRandom") local arr = luajava.newArray(Byte.TYPE, len) random.nextBytes(arr) return arr end local function generateIV() import "java.security.SecureRandom" import "java.lang.Byte" local random = luajava.newInstance("java.security.SecureRandom") local arr = luajava.newArray(Byte.TYPE, 16) random.nextBytes(arr) local b64 = Base64.encodeToString(arr, Base64.NO_WRAP) return arr, b64 end local function doAuth(cardKey) if cardKey == nil or cardKey == "" then showDlg("提示", "请输入卡密", "确定") return end login.setEnabled(false) login.setText("验证中...") local pd = ProgressDialog(activity, android.R.style.Theme_Material_Dialog) pd.setMessage("正在验证卡密...") pd.setCancelable(false) pd.show() styleDialog(pd) local aesKey = randomBytes(16) local iv, ivB64 = generateIV() local biz = toJson({card_key = cardKey,machine_id = deviceId,nonce = generateNonce(20),timestamp = math.floor(os.time()) }) local encKey = rsaEncrypt(aesKey, cachedPK) local encData = aesEncrypt(biz, aesKey, iv) local postData = "action=auth&api_key=" .. CONFIG.apiKey .."&encrypted_key=" .. urlEncode(encKey) .."&encrypted_data=" .. urlEncode(encData) .."&iv=" .. urlEncode(ivB64) Http.post(CONFIG.authUrl, postData, "UTF-8", nil, function(code, content) content = content and tostring(content) or nil if code ~= 200 or content == nil or #content == 0 then activity.runOnUiThread(Runnable{ run = function() pd.dismiss() login.setEnabled(true) login.setText("验证") showDlg("错误", "网络请求失败", "确定") end}) return end activity.runOnUiThread(Runnable{ run = function() pd.dismiss() local ok, r = pcall(luajava.newInstance, "org.json.JSONObject", content) if not ok or r == nil then login.setEnabled(true) login.setText("验证") showDlg("错误", "响应解析失败", "确定") return end local respEncrypted = r.optBoolean("encrypted", false) if respEncrypted then local respIv = Base64.decode(r.getString("iv"), Base64.NO_WRAP) local dec = aesDecrypt(r.getString("data"), aesKey, respIv) local data = luajava.newInstance("org.json.JSONObject", dec) local auth = data.optBoolean("authorized", false) local msg = tostring(data.optString("message", "")) local expiresAt = tostring(data.optString("expires_at", "")) if expiresAt == "" or expiresAt == "null" then expiresAt = "永久" end local unbindEnabled = data.optBoolean("unbind_enabled", false) if auth then local sp = activity.getSharedPreferences("miyan_verify", 0) sp.edit().putString("card_key", cardKey).apply() login.setEnabled(true) login.setText("验证") kmdismiss.setEnabled(unbindEnabled) statusText.setText("到期: " .. expiresAt) showDlg("验证成功", msg .. "\n到期时间: " .. expiresAt, "确定", function() _G._miyanVerified = true -- ============================================================ -- 在下面粘贴你的完整代码(整段复制粘贴到这里) -- ============================================================ function Main() menu = gg.choice({ '防风界面', '功能界面', '退出脚本'}, 1,'仙鹤全火') if menu == 1 then A() end if menu == 2 then B() end if menu == 3 then Exit() end XGCK=-1 end function A() menu1 = gg.multiChoice({ '选择进程', '防闪', 'LOGO防风', '据点', '副功能名称5', '副功能名称6', '副功能名称7', '副功能名称8', '副功能名称9', '副功能名称10', '副功能名称11', '副功能名称12', '返回上一页'}, nil,'这里也可以随便填') if menu1 == nil then else if menu1[1] == true then a1() end if menu1[2] == true then a2() end if menu1[3] == true then a3() end if menu1[4] == true then a4() end if menu1[5] == true then a5() end if menu1[6] == true then a6() end if menu1[7] == true then a7() end if menu1[8] == true then a8() end if menu1[9] == true then a9() end if menu1[10] == true then a10() end if menu1[11] == true then a11() end if menu1[12] == true then a12() end if menu1[13] == true then HOME() end end GLWW=-1 end function B() menu1 = gg.multiChoice({ '选择进程', '防闪', '广角', '锁定帧率', '无敌爆头范围', '自动攀爬', '伤害显示', '六道模式', '手持防抖', '秒切枪', '微加速', '大子弹', '返回上一页'}, nil,'这里也可以随便填') if menu1 == nil then else if menu1[1] == true then b1() end if menu1[2] == true then b2() end if menu1[3] == true then b3() end if menu1[4] == true then b4() end if menu1[5] == true then b5() end if menu1[6] == true then b6() end if menu1[7] == true then b7() end if menu1[8] == true then b8() end if menu1[9] == true then b9() end if menu1[10] == true then b10() end if menu1[11] == true then b11() end if menu1[12] == true then b12() end if menu1[13] == true then HOME() end end GLWW=-1 end function a1() gg.setProcessX() gg.toast("开启成功") end function a2() function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() local _Q = tonumber(0x167ba0fe) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address print(string.char(231,190,164,58).._Q) end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end local t = {"libanogs.so:bss", "Cb"} local tt = {0x3F8} 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 = {0x430} 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 = {0x550} 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 = {0x5D8} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 4096, freeze = true}}) gg.toast("开启成功") end function a3() 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", "Cd"} local tt = {0x382AB0} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = 163855}}) local t = {"libUE4.so", "Cd"} local tt = {0x4D5A90} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = 163855}}) local t = {"libUE4.so", "Cd"} local tt = {0x4D5B38} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = 163855}}) gg.toast("开启成功") end function a4() 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 = {0x562F70,0x30,0x4B8,0x2AD0,0x860,0xC2C} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 0, freeze = true}})---手持据点 local t = {"libUE4.so:bss", "Cb"} local tt = {0x562F70,0x30,0x4B8,0x2AD0,0x860,0xC38} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 0, freeze = true}})---手持喷子据点 local t = {"libUE4.so:bss", "Cb"} local tt = {0x562F70,0x30,0x4B8,0x2AD0,0x860,0xC3C} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 0, freeze = true}})---手持喷子据点 gg.toast("开启成功") end function a5() gg.toast("开启成功") end function a6() gg.toast("开启成功") end function a7() gg.toast("开启成功") end function a8() gg.toast("开启成功") end function a9() gg.toast("开启成功") end function a10() gg.toast("开启成功") end function a11() gg.toast("开启成功") end function a12() gg.toast("开启成功") end function b1() gg.setProcessX() gg.toast("开启成功") end function b2() function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() local _Q = tonumber(0x167ba0fe) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address print(string.char(231,190,164,58).._Q) end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end local t = {"libanogs.so:bss", "Cb"} local tt = {0x430} 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 = {0x550} 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 = {0x300} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 4096, freeze = true}}) gg.toast("开启成功") end function b3() if gg.getRangesList("libUE4.so")[1] then local t = {} t[1] = gg.getRangesList("libUE4.so")[1]["start"] + 0x36B3538; --初源工具箱 数值地址:0x79B22ED538 gg.addListItems({ [1] = { address = t[1], flags = 16, value = 3.0, freeze = true, }, }) gg.toast("xa开启成功") end gg.toast("开启成功") end function b4() 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 = {0x23F8, 0x18} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 120, freeze = true}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x23F8, 0x1C} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 120, freeze = true}}) gg.toast("开启成功") end function b5() gg.searchNumber("15.75", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.processResume() local t = gg.getResults(100) for i, v in ipairs(t) do if v.flags == gg.TYPE_FLOAT then v.value = "80" v.freeze = true end end gg.addListItems(t) t = nil gg.processResume() gg.toast("开启成功") end function b6() 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 = {0x562F70,0x30,0x4B8,0x518,0x218} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 9999, freeze = true}}) gg.toast("开启成功") end function b7() 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 = {0x562F70,0x30,0xA1C}--伤害显示 local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 2, freeze = true}}) gg.toast("开启成功") end function b8() 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 = {0x562F70,0x30,0x4B8,0x2AD0,0x860,0x5A0} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 0, freeze = true}}) gg.toast("开启成功") end function b9() 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 = {0x562F70,0x30,0x4B8,0x2AD0,0x860,0x24C} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 0, freeze = true}})---手持防抖 local t = {"libUE4.so:bss", "Cb"} local tt = {0x562F70,0x30,0x4B8,0x2AD0,0x860,0x248} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 0, freeze = true}})---手持防抖 gg.toast("开启成功") end function b10() 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 = {0x562F70,0x30,0x4B8,0x2AD0,0x860,0x24C} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 0, freeze = true}})---手持防抖 local t = {"libUE4.so:bss", "Cb"} local tt = {0x562F70,0x30,0x4B8,0x2AD0,0x860,0x248} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 0, freeze = true}})---手持防抖 gg.toast("开启成功") end function b11() 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 = {0x562F70,0x30,0x4B8,0x1168} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 7, freeze = true}}) gg.toast("开启成功") end function b12() 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 = {0x562F70,0x30,0x4B8,0x2AD0,0x11C0} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 200, freeze = true}}) gg.toast("开启成功") end function Exit() print("这里是退出脚本后的提示文字") os.exit() end function HOME() Main() end cs = '这里可以填QQ' XGCK=-1 GLWW=-1 while(true)do if gg.isVisible() then XGCK=1 gg.setVisible(false) end gg.clearResults() if XGCK==1 then Main() XGCK=-1 end end --[[Welcome to Dluae]] -- ============================================================ -- 粘贴结束 -- ============================================================ end) else login.setEnabled(true) login.setText("验证") showDlg("验证失败", msg, "确定") end else local respMsg = tostring(r.optString("message", "验证失败")) login.setEnabled(true) login.setText("验证") showDlg("验证失败", respMsg, "确定") end end}) end) end local function doUnbind(cardKey) if cardKey == nil or cardKey == "" then showDlg("提示", "请先输入卡密", "确定") return end kmdismiss.setEnabled(false) kmdismiss.setText("解绑中...") local pd = ProgressDialog(activity, android.R.style.Theme_Material_Dialog) pd.setMessage("正在解绑设备...") pd.setCancelable(false) pd.show() styleDialog(pd) local aesKey = randomBytes(16) local iv, ivB64 = generateIV() local biz = toJson({card_key = cardKey,machine_id = deviceId,nonce = generateNonce(20),timestamp = math.floor(os.time()) }) local encKey = rsaEncrypt(aesKey, cachedPK) local encData = aesEncrypt(biz, aesKey, iv) local postData = "action=unbind&api_key=" .. CONFIG.apiKey .."&encrypted_key=" .. urlEncode(encKey) .."&encrypted_data=" .. urlEncode(encData) .."&iv=" .. urlEncode(ivB64) Http.post(CONFIG.authUrl, postData, "UTF-8", nil, function(code, content) content = content and tostring(content) or nil if code ~= 200 or content == nil or #content == 0 then activity.runOnUiThread(Runnable{ run = function() pd.dismiss() kmdismiss.setEnabled(true) kmdismiss.setText("解绑") showDlg("错误", "网络请求失败", "确定") end}) return end activity.runOnUiThread(Runnable{ run = function() pd.dismiss() local ok, r = pcall(luajava.newInstance, "org.json.JSONObject", content) if not ok or r == nil then kmdismiss.setEnabled(true) kmdismiss.setText("解绑") showDlg("错误", "响应解析失败", "确定") return end local outerOk = r.optBoolean("status", false) if outerOk and r.optBoolean("encrypted", false) then local respIv = Base64.decode(r.getString("iv"), Base64.NO_WRAP) local dec = aesDecrypt(r.getString("data"), aesKey, respIv) local data = luajava.newInstance("org.json.JSONObject", dec) local innerOk = data.optBoolean("status", false) local msg = tostring(data.optString("message", "")) local count = data.optInt("unbind_count", -1) if innerOk then kmdismiss.setEnabled(true) kmdismiss.setText("解绑") showDlg("解绑成功", msg .. "\n已解绑次数: " .. count, "确定") else kmdismiss.setEnabled(true) kmdismiss.setText("解绑") showDlg("解绑失败", msg, "确定") end else local msg = tostring(r.optString("msg", r.optString("message", "解绑失败"))) kmdismiss.setEnabled(true) kmdismiss.setText("解绑") showDlg("解绑失败", msg, "确定") end end}) end) end local pendingUpdate = nil local function checkUpdate() local dataJson = toJson({version = CONFIG.version,timestamp = math.floor(os.time()),nonce = generateNonce(20) }) local encData = Base64.encodeToString(luajava.newInstance("java.lang.String", dataJson).getBytes("UTF-8"), Base64.NO_WRAP) local postData = "api_key=" .. CONFIG.apiKey .. "&data=" .. encData Http.post(CONFIG.updateUrl, postData, "UTF-8", nil, function(code, content) content = content and tostring(content) or nil if code ~= 200 or content == nil or #content == 0 then return end local json = xorDecode(content) local ok, r = pcall(luajava.newInstance, "org.json.JSONObject", json) if not ok or r == nil then return end local respCode = r.optInt("code", 0) if respCode ~= 1 then return end pendingUpdate = r end) end local function showUpdateDlg(forceUpdate, latestVer, updateUrl, changelog) if changelog == "" then changelog = "小主是不是忘了配置更新内容了" end local builder = AlertDialog.Builder(activity, android.R.style.Theme_Material_Dialog) builder.setTitle("发现新版本 v" .. latestVer) builder.setMessage(changelog) if not forceUpdate then builder.setNegativeButton("跳过", nil) end builder.setPositiveButton("去更新", {onClick=function() if updateUrl and updateUrl ~= "" then activity.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(updateUrl))) end if forceUpdate then task(500, function() import "java.lang.Thread" Thread.sleep(500) return "" end, nil, function() showUpdateDlg(forceUpdate, latestVer, updateUrl, changelog) end) end end}) builder.setCancelable(not forceUpdate) local dlg = builder.show() styleDialog(dlg) dlg.getButton(dlg.BUTTON_POSITIVE).setTextColor(0xFF818CF8) if forceUpdate then dlg.setCancelable(false) dlg.setCanceledOnTouchOutside(false) else dlg.getButton(dlg.BUTTON_NEGATIVE).setTextColor(0xFF999999) end end local function showPendingUpdate() if pendingUpdate == nil then return end local r = pendingUpdate pendingUpdate = nil local notice = tostring(r.optString("notice", "")) if notice == "" or notice == "null" then notice = "" end local needUpdate = r.optBoolean("need_update", false) if notice ~= "" then local builder = AlertDialog.Builder(activity, android.R.style.Theme_Material_Dialog) builder.setTitle("公告") builder.setMessage(notice) builder.setPositiveButton("知道了", {onClick=function() if needUpdate then local latestVer = tostring(r.optString("latest_version", "")) local updateUrl = tostring(r.optString("update_url", "")) local changelog = tostring(r.optString("update_log", "")) local forceUpdate = r.optInt("force_update", 0) == 1 showUpdateDlg(forceUpdate, latestVer, updateUrl, changelog) end end}) builder.setCancelable(false) local dlg = builder.show() styleDialog(dlg) dlg.getButton(dlg.BUTTON_POSITIVE).setTextColor(0xFF818CF8) elseif needUpdate then local latestVer = tostring(r.optString("latest_version", "")) local updateUrl = tostring(r.optString("update_url", "")) local changelog = tostring(r.optString("update_log", "")) local forceUpdate = r.optInt("force_update", 0) == 1 showUpdateDlg(forceUpdate, latestVer, updateUrl, changelog) end end local function setImmersive() local window = activity.getWindow() local decorView = window.getDecorView() if Build.VERSION.SDK_INT >= 21 then window.clearFlags(0x04000000) window.clearFlags(0x08000000) window.addFlags(0x80000000) window.setStatusBarColor(0x00000000) window.setNavigationBarColor(0x00000000) end window.addFlags(0x00000400) window.addFlags(0x00000100) window.addFlags(0x00000200) window.clearFlags(0x00400000) if Build.VERSION.SDK_INT >= 28 then local wlp = window.getAttributes() wlp.layoutInDisplayCutoutMode = 0x00000001 window.setAttributes(wlp) end decorView.setSystemUiVisibility( 0x00000004 + 0x00000100 + 0x00000200 + 0x00001000 ) decorView.setFitsSystemWindows(false) decorView.setPadding(0, 0, 0, 0) local contentView = activity.findViewById(android.R.id.content) if contentView then contentView.setFitsSystemWindows(false) contentView.setPadding(0, 0, 0, 0) end local statusBarBg = decorView.findViewById(android.R.id.statusBarBackground) if statusBarBg then local lp = statusBarBg.getLayoutParams() if lp then lp.height = 0 statusBarBg.setBackground(nil) statusBarBg.requestLayout() end end end activity.supportRequestWindowFeature(Window.FEATURE_NO_TITLE) setImmersive() deviceId = getDeviceId() local sp = activity.getSharedPreferences("miyan_verify", 0) local savedKey = tostring(sp.getString("card_key", "")) local LOADING_HTML = [[