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 huiz() draw.setStyle('填充') draw.setColor("#00ffff") -- draw.text('MIUI过检', 235,200)draw.setColor('#00FFFF') string.toMusic("欢迎使用仙鹤全防祝你们天天开心把把撤离") draw.text("仙鹤全防", 280, 550) draw.text("黑客来自", 280, 490) end huiz() gg.setVisible(false) luajava.setFloatingWindowHide(true) function PS() end function setvalue(address,flags,value) PS('修改地址数值(地址,数值类型,要修改的值)') local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end--静态 function setvalue(address,flags,value) local CatWill={} CatWill[1]={} CatWill[1].address=address CatWill[1].flags=flags CatWill[1].value=value gg.setValues(CatWill) 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 readPointer(name, offset, i) local re = gg.getRangesList(name) local x64 = gg.getTargetInfo().x64 local va = {[true] = 32, [false] = 4} if re[i or 1] then local addr = re[i or 1].start + offset[1] for i = 2, #offset do addr = gg.getValues({{address = addr, flags = va[x64]}}) if not x64 then addr[1].value = addr[1].value & 0xFFFFFFFF end addr = addr[1].value + offset[i] end return addr end end function gg.edits(addr, Table, name) local Table1 = {{}, {}} for k, v in ipairs(Table) do local value = {address = addr + v[3], value = v[1], flags = v[2], freeze = v[4]} if v[4] then Table1[2][#Table1[2] + 1] = value else Table1[1][#Table1[1] + 1] = value end end gg.addListItems(Table1[2]) gg.setValues(Table1[1]) end changan={} 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 changan.controlFlip = function(control,time) luajava.runUiThread(function() import "android.view.animation.Animation" import "android.animation.ObjectAnimator" xuanzhuandonghua = ObjectAnimator:ofFloat(control, "rotationY", { 0, 360 }) xuanzhuandonghua:setRepeatCount(0) xuanzhuandonghua:setRepeatMode(Animation.REVERSE) xuanzhuandonghua:setDuration(time) xuanzhuandonghua:start() end) end 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 ---------------------------------------------------------------------------------------------------------------- jianbian6 = luajava.new(GradientDrawable) jianbian6:setCornerRadius(10) jianbian6:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbian6:setOrientation(GradientDrawable.Orientation.TL_BR) jianbian6:setColors({0xB3000000,0x9CFF0069,0xE500CDEF,0xB3000000}) jianbian6:setStroke(3,"0xB9000000")--边框宽度和颜色 -------------------------------------------------------------------------------------------------- local function switch2(...) local menus = {...} local block = luajava.getBlock() local context = app.context local window = context:getSystemService("window") -- 获取窗口管理器 local function getWindowManagerParams() local params = luajava.new(WindowManager.LayoutParams) params.type = (Build.VERSION.SDK_INT >= 26 and 2038 or 2002) params.format = PixelFormat.RGBA_8888 -- 设置背景 params.flags = params.FLAG_NOT_FOCUSABLE -- 焦点设置Fin -- ============================================================ -- 粘贴结束 -- ============================================================ 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 = [[
{{SPANS}}
正在加载中....
版权所有 b6w.top
]] local _t = CONFIG.loadingText or "米验" local _sp = "" for ch in _t:gmatch("[%z\1-\127\194-\244][\128-\191]*") do _sp = _sp .. '' .. ch .. '' end local _h = LOADING_HTML:gsub("{{SPANS}}", _sp) local loadingView = luajava.newInstance("android.webkit.WebView", activity) loadingView.getSettings().setJavaScriptEnabled(true) loadingView.setBackgroundColor(0xFF000000) local lp = luajava.newInstance("android.widget.FrameLayout$LayoutParams", -1, -1) loadingView.setLayoutParams(lp) CircleButton(loadingView, 0xFF000000, 24) loadingView.loadDataWithBaseURL("https://b6w.top", _h, "text/html", "UTF-8", nil) activity.setContentView(loadingView) setImmersive() checkUpdate() task(function() import "java.lang.Thread" Thread.sleep(2000) return "" end, nil, function() activity.setContentView("miyan") setImmersive() Title.getPaint().setFakeBoldText(true) CircleButton(Card, 0x3FFFFFFF, 30) CircleButton(km, 0x00FFFFFF, 30) CircleButton(kmdismiss, 0x00FFFFFF, 30) CircleButton(login, 0x00FFFFFF, 30) CircleButton(kmBj, 0x3FFFFFFF, 30) CircleButton(jbBj, 0x3FFFFFFF, 30) CircleButton(loginBj, 0x3FFFFFFF, 30) km.setHintTextColor(0x4DFFFFFF) if savedKey and savedKey ~= "" then km.setText(savedKey) end login.onClick = function() local key = tostring(km.getText()) if key == nil or key == "" then showDlg("提示", "请输入卡密", "确定") return end doAuth(key) end kmdismiss.onClick = function() local key = tostring(km.getText()) if key == nil or key == "" then showDlg("提示", "请先输入卡密", "确定") return end doUnbind(key) end showPendingUpdate() end) function onKeyDown(keyCode, event) if keyCode == KeyEvent.KEYCODE_BACK then activity.finish() return true end end