do if type(getrlyunyz) ~= 'function' then gg.alert('请使用RLGG执行') os.exit() return end local info = { example_version = '1.1.27', name = '金刚国体范围', appid = '98366', appkey = 'rjr8EH7E8I990bE9', rc4key = '7SKHDFFkSDFDNeP7', version = '1.0', mi_type = '3' } local rlyunyz = getrlyunyz(info) local ret = rlyunyz.start() if not ret or not isTable(ret) or ret.sign ~= '7be31b10f3176033252aa06a9498f8b1' then os.exit() return end end draw.setSize(60) draw.setStyle("描边") draw3 = require("draw3") draw.setColor("#00ffff") draw.setSize(50) draw.setStyle("描边并填充") string.toMusic("欢迎使用金刚国体范围") draw.setSize(60) draw.setStyle("描边") draw3 = require("draw3") draw.text("金刚快手号3995036665 ", 250, 400) draw.setColor("#00ffff") draw.setSize(50) draw.setStyle("描边并填充") gg.alert("是否进入脚脚", "进入脚脚") luajava.startThread(function() gg.playVideo("https://txmov2.a.kwimgs.com/upic/2026/05/21/23/BMjAyNjA1MjEyMzQzMzRfNDU1MTExOTIzOF8xOTY1NzExNzI2OTBfMV8z_b_B933705234c87e4c0f835008b7610819f.mp4?tag=1-1783371243-std-1-lzpgczss4z-7b39452243a2f698&clientCacheKey=3xjfi4gtuidupgs_b.mp4&tt=b&di=739f67b1&bp=12681&ali_redirect_ex_hot=6666800&ali_redirect_ex_beacon=1") end) -- ========================================== local switchLock = { fangka = false, hook = false, baotou = false, suozhen = false, zigai = false } local g_FlashDone = false local backupList = {} --工具函数 function BC(address) local ok, res = pcall(function() return gg.getValues({{address = address, flags = gg.TYPE_QWORD}})[1].value end) return ok and res or 0 end function getvalue(address, flags) local ok, res = pcall(function() return gg.getValues({{address = address, flags = flags}})[1].value end) return ok and res or nil end function WBC(addr, types, i, freeze) if i then pcall(function() gg.setValues({{address = addr, flags = types, value = i}}) end) end if freeze then pcall(function() gg.addListItems({{ address = addr, flags = types, value = i or getvalue(addr, types), freeze = true }}) end) elseif freeze == false then pcall(function() gg.addListItems({{address = addr, flags = types, freeze = false}}) end) end end local function xqmnb(Search,Modification) local success, result = pcall(function() gg.clearResults() if not Search or not Search[1] or not Search[3] then return false end gg.setRanges(Search[1].memory) gg.searchNumber(Search[3].value,Search[3].type,false,536870912,0,-1) if gg.getResultCount()==0 then return false end local Result=gg.getResults(gg.getResultCount()) if not Result or #Result ==0 then return false end local Data,Freeze={},{} for _,value in ipairs(Modification)do for _,res in ipairs(Result) do if res.address then if value.freeze then table.insert(Freeze,{address=res.address+value.offset,flags=value.type,value=value.value,freeze=true}) else table.insert(Data,{address=res.address+value.offset,flags=value.type,value=value.value}) end end end end if #Data>0 then pcall(function() gg.setValues(Data) end) end if #Freeze>0 then pcall(function() gg.addListItems(Freeze) end) end gg.clearResults() return true end) return success and result end local function runSwitchTask(lockKey, CompoundButton, state, taskFunc) if switchLock[lockKey] then return end switchLock[lockKey] = true luajava.startThread(function() local ok, ret = pcall(taskFunc) luajava.runOnUiThread(function() switchLock[lockKey] = false if not ok or not ret then CompoundButton:setChecked(false) end end) end) end local floatingWindowManager = require('floatingWindowManager') floatingWindowManager:init() --主窗口 floatingWindowManager:newWindow(('金刚范围'):format(floatingWindowManager.version), { onCreate = function(floatingWindow) floatingWindow:addlayout({ ScrollView, layout_margin = '10dp', layout_width = 'match_parent', layout_height = 'match_parent', { LinearLayout, background = floatingWindowManager:getStateListDrawable(), layout_width = 'match_parent', layout_height = 'match_parent', orientation = 'vertical', padding = '10dp', { Button, background = { GradientDrawable, cornerRadius='10dp', color='#3000000', }, layout_width = 'match_parent', layout_margin = '1dp', text = '配置进程', textColor= "#00FFFF", textSize = '16sp', onClick = function() gg.setProcessX() pcall(function() string.toMusic("配置进程") end) end }, { Button, background = { GradientDrawable, cornerRadius='10dp', color='#3000000', }, layout_width = 'match_parent', layout_margin = '1dp', text = '游戏防闪', textColor= "#00FFFF", textSize = '16sp', onClick = function() luajava.startThread(function() pcall(function() if g_FlashDone then luajava.runOnUiThread(function() gg.toast("✅游戏防闪已经开启过,无需重复操作") pcall(function() string.toMusic("已经开启过") end) end) return end local segBss = gg.getRangesList("libanogs.so:bss") if not segBss or #segBss <1 or not segBss[1] or not segBss[1].start then luajava.runOnUiThread(function() gg.toast("❌未找到libanogs.so,请进图落地后开启") pcall(function() string.toMusic("未找到so,请进图落地开启") end) end) return end local baseBss = segBss[1].start local flashWrite = { {address = baseBss + 0x300, flags = gg.TYPE_DWORD, value = 64, freeze = false}, {address = baseBss + 0x3F8, flags = gg.TYPE_DWORD, value = 64, freeze = false}, {address = baseBss + 0x430, flags = gg.TYPE_DWORD, value = 64, freeze = false}, {address = baseBss + 0x550, flags = gg.TYPE_DWORD, value = 64, freeze = false}, {address = baseBss + 0x5D8, flags = gg.TYPE_DWORD, value = 64, freeze = false}, } pcall(function() gg.setValues(flashWrite) end) g_FlashDone = true luajava.runOnUiThread(function() gg.toast("✅游戏防闪开启成功") pcall(function() string.toMusic("宝宝hook成功") end) end) end) end) end }, { Button, background = { GradientDrawable, cornerRadius='10dp', color='#3000000', }, layout_width = 'match_parent', layout_margin = '1dp', text = '范围区', textColor= "#00FFFF", textSize = '16sp', onClick = function() floatingWindowManager:start('金刚[范围]') pcall(function() string.toMusic("范围区") end) end }, { Button, background = { GradientDrawable, cornerRadius='10dp', color='#3000000', }, layout_width = 'match_parent', layout_margin = '1dp', text = '工具区', textColor= "#00FFFF", textSize = '16sp', onClick = function() floatingWindowManager:start('[工具区]') pcall(function() string.toMusic("工具区") end) end } } }) end }) --范围窗口 floatingWindowManager:newWindow('金刚[范围]', { onCreate = function(floatingWindow) floatingWindow:addlayout({ ScrollView, layout_width = 'match_parent', layout_height = 'match_parent', { LinearLayout, layout_width = 'match_parent', layout_height = 'match_parent', orientation = 'vertical', padding = '10dp', { TextView, text = "一把一开,开启以后等一会不要关闭", textSize = "12sp", textColor = "#0099FF" }, { LinearLayout, padding = {'0dp','0dp','0dp','1dp'}, layout_marginTop = '1dp', { Switch, layout_marginLeft = '0dp', text="防卡伤", textColor= "#01FFFF", layout_height="30dp", layout_width="200dp", background= luajava.loadlayout { GradientDrawable, color = "#000000", cornerRadius = 28 }, onCheckedChange = function(CompoundButton, state) runSwitchTask("fangka", CompoundButton, state, function() if state then backupList = {} local segCode = gg.getRangesList("libanogs.so") local segBss = gg.getRangesList("libanogs.so:bss") if not segCode or #segCode < 1 or not segCode[1] then return false end if not segBss or #segBss < 1 or not segBss[1] then return false end local baseCode = segCode[1].start local baseBss = segBss[1].start if not baseCode or baseCode == 0 then return false end if not baseBss or baseBss == 0 then return false end if getvalue(baseCode, gg.TYPE_DWORD) == nil then return false end local codePatch = { {offset = 0x2F4F04, value = 0x4A000000},{offset = 0x2F4F08, value = 0xD65F03C0}, {offset = 0x2F51FC, value = 0x4B000000},{offset = 0x2F5200, value = 0xD61F03C0}, {offset = 0x2F6B10, value = 0x0A0003E0},{offset = 0x2F6B14, value = 0xD65F03C0}, {offset = 0x2F8900, value = 0x0B0003E0},{offset = 0x2F8904, value = 0xD61F03C0}, {offset = 0x2F9200, value = 0x1B007C1F},{offset = 0x2F9204, value = 0xD65F03C0}, {offset = 0x2FA100, value = 0x0A800000},{offset = 0x2FA104, value = 0xD61F03C0}, {offset = 0x2FB300, value = 0x2A0003E0},{offset = 0x2FB304, value = 0xD65F03C0}, {offset = 0x2F7800, value = 0x1A0003E0},{offset = 0x2F7804, value = 0xD61F03C0}, {offset = 0x2FC500, value = 0x13007FE0},{offset = 0x2FC504, value = 0xD65F03C0}, {offset = 0x2FD200, value = 0x4A800000},{offset = 0x2FD204, value = 0xD61F03C0}, {offset = 0x2FE100, value = 0x53200000},{offset = 0x2FE104, value = 0xD65F03C0}, {offset = 0x2FF000, value = 0x53000000},{offset = 0x2FF004, value = 0xD61F03C0}, {offset = 0x2F7200, value = 0x530003E0},{offset = 0x2F7204, value = 0xD65F03C0}, {offset = 0x2F7400, value = 0x2A2003E0},{offset = 0x2F7404, value = 0xD61F03C0}, {offset = 0x2F7600, value = 0x134003E0},{offset = 0x2F7604, value = 0xD65F03C0}, {offset = 0x2F7A00, value = 0x4B0003E0},{offset = 0x2F7A04, value = 0xD61F03C0}, } local bssPatch = { {offset = 0x544ABC0,value = 0}, {offset = 0x57A130, value = 0}, {offset = 0x57A138, value = 0}, {offset = 0x582004, value = 0}, {offset = 0x585000, value = 0}, {offset = 0x586010, value = 0}, {offset = 0x587220, value = 0}, {offset = 0x588330, value = 0}, {offset = 0x300, value = 64}, {offset = 0x3F8, value = 64}, } local allAddr = {} for _,it in ipairs(codePatch) do table.insert(allAddr,{address=baseCode+it.offset,flags=gg.TYPE_DWORD}) end for _,it in ipairs(bssPatch) do table.insert(allAddr,{address=baseBss+it.offset,flags=gg.TYPE_DWORD}) end local readOk, rawVals = pcall(function() return gg.getValues(allAddr) end) if not readOk or not rawVals or #rawVals ~= #allAddr then backupList = {} return false end backupList = {} for i = 1, #allAddr do backupList[i] = {address = allAddr[i].address, flags = allAddr[i].flags, value = rawVals[i].value} end local writeList = {} for i = 1, #codePatch do table.insert(writeList,{address=baseCode+codePatch[i].offset,flags=gg.TYPE_DWORD,value=codePatch[i].value}) end for i = 1, #bssPatch do table.insert(writeList,{address=baseBss+bssPatch[i].offset,flags=gg.TYPE_DWORD,value=bssPatch[i].value}) end local writeOk = pcall(function() gg.setValues(writeList) end) if not writeOk then backupList = {} return false end local chkOk, chk = pcall(function() return gg.getValues({ {address=baseBss+0x544ABC0,flags=gg.TYPE_DWORD}, {address=baseBss+0x57A130,flags=gg.TYPE_DWORD} }) end) if not chkOk or not chk or #chk<2 then backupList = {} return false end if chk[1].value ~= 0 or chk[2].value ~= 0 then backupList = {} return false end luajava.runOnUiThread(function() gg.toast("✅防卡伤开启成功") pcall(function() string.toMusic("防卡伤开启成功") end) end) return true else if backupList and #backupList>0 then pcall(function() gg.setValues(backupList) end) end backupList = {} luajava.runOnUiThread(function() gg.toast("✅防卡伤已关闭") pcall(function() string.toMusic("防卡伤已关闭") end) end) return true end end) end } }, { TextView, text = "局内范围[一把一开]:", textSize = "12sp", textColor = "#0099FF" }, { LinearLayout, padding = {'0dp','0dp','0dp','1dp'}, layout_marginTop = '1dp', { Switch, layout_marginLeft = '0dp', text="HOOK范围", textColor= "#01FFFF", layout_height="30dp", layout_width="200dp", background= luajava.loadlayout { GradientDrawable, color = "#000000", cornerRadius = 28 }, onCheckedChange = function(CompoundButton, state) runSwitchTask("hook", CompoundButton, state, function() if state then local qmnb_effect = { {["memory"] = 32}, {["name"] = "特效"}, {["value"] = 4771563806291656704, ["type"] = 32}, {["lv"] = 110966272, ["offset"] = 4, ["type"] = 32}, {["lv"] = 4692750811720056832, ["offset"] = -4, ["type"] = 32}, } local qmxg_effect = { {["value"] = 70, ["offset"] = 0, ["type"] = 16}, {["value"] = -780, ["offset"] = 4, ["type"] = 16}, {["value"] = -910, ["offset"] = 8, ["type"] = 16}, } xqmnb(qmnb_effect, qmxg_effect) local qmnb= { {memory=32}, {name='修改头部'}, {value=15.75, type=16}, {lv=15.75, offset=0, type=16}, } local qmxg= { {value=54, offset=0, type=16} } xqmnb(qmnb,qmxg) local UE4 = gg.getRangesList("libUE4.so")[1].start local UE4bss = gg.getRangesList("libUE4.so:bss")[1].start local kzq = BC(BC(UE4bss+0x571370)+0x30) local ys = BC(kzq+0x540) WBC(ys+0x64c,16,1) WBC(ys+0x650,16,0) WBC(ys+0x654,16,0) local UE4_old = gg.getRangesList("libUE4.so")[1].start local UE4bss_old = gg.getRangesList("libUE4.so:bss")[1].start local kzq_old = BC(BC(UE4bss_old+0x570E70)+0x30) local ys_old = BC(kzq_old+0x540) WBC(ys_old+0x64c,16,1) WBC(ys_old+0x650,16,0) WBC(ys_old+0x654,16,0) luajava.runOnUiThread(function() gg.toast("✅HOOK范围开启成功") pcall(function() string.toMusic("HOOK范围开启成功") end) end) return true else gg.clearResults() luajava.runOnUiThread(function() gg.toast("⚠️HOOK范围已关闭") pcall(function() string.toMusic("HOOK范围已关闭") end) end) return true end end) end } }, { LinearLayout, padding = {'0dp','0dp','0dp','1dp'}, layout_marginTop = '1dp', { Switch, layout_marginLeft = '0dp', text="自改打头范围", textColor= "#01FFFF", layout_height="30dp", layout_width="200dp", background= luajava.loadlayout { GradientDrawable, color = "#000000", cornerRadius = 28 }, onCheckedChange = function(CompoundButton, state) if switchLock.zigai then return end switchLock.zigai = true if not state then luajava.startThread(function() gg.clearResults() luajava.runOnUiThread(function() gg.toast("⚠️自改打头范围已关闭") pcall(function() string.toMusic("自改打头范围已关闭") end) switchLock.zigai = false end) end) return end local k = gg.prompt({"自改打头范围 52-58 推荐54"}, {"52"}, {"number"}) if k == nil then CompoundButton:setChecked(false) switchLock.zigai = false return end local TB = tonumber(k[1]) if not TB then gg.toast("❌输入数字无效") CompoundButton:setChecked(false) switchLock.zigai = false return end local k2 = gg.prompt({"复位 50~80"}, {"66"}, {"number"}) local SX = nil if k2 ~= nil then SX = tonumber(k2[1]) end luajava.startThread(function() local success, result = pcall(function() local qmnb= { {memory=32}, {name='修改头部'}, {value=15.75, type=16}, {lv=15.75, offset=0, type=16}, } local qmxg= { {value=62, offset=0, type=16} } xqmnb(qmnb,qmxg) local segUE4_new = gg.getRangesList("libUE4.so") local segUE4bss_new = gg.getRangesList("libUE4.so:bss") if not segUE4_new or #segUE4_new<1 or not segUE4_new[1] or not segUE4bss_new or #segUE4bss_new<1 or not segUE4bss_new[1] then error("libUE4.so未找到,请进图落地") end local UE4_new = segUE4_new[1].start local UE4bss_new = segUE4bss_new[1].start local kzq_new = BC(BC(UE4bss_new+0x571370)+0x30) local ys_new = BC(kzq_new+0x540) WBC(ys_new+0x64c,16,1) WBC(ys_new+0x650,16,0) WBC(ys_new+0x654,16,0) local segUE4 = gg.getRangesList("libUE4.so") local segUE4bss = gg.getRangesList("libUE4.so:bss") if not segUE4 or #segUE4<1 or not segUE4[1] or not segUE4bss or #segUE4bss<1 or not segUE4bss[1] then error("libUE4.so未找到,请进图落地") end local UE4 = segUE4[1].start local UE4bss = segUE4bss[1].start local kzq = BC(BC(UE4bss+0x570E70)+0x30) local ys = BC(kzq+0x540) WBC(ys+0x64c,16,1) WBC(ys+0x650,16,0) WBC(ys+0x654,16,0) local qmnb_hit = { {["memory"] = 32}, {["name"] = "xʜɪᴛ"}, {["value"] = 4771563806291656704, ["type"] = 32}, {["lv"] = 110966272, ["offset"] = 4, ["type"] = 32}, {["lv"] = 4692750811720056832, ["offset"] = -4, ["type"] = 32}, } local qmxg_hit = { {["value"] = 999, ["offset"] = 0, ["type"] = 16}, } xqmnb(qmnb_hit, qmxg_hit) local kzq_old = BC(BC(UE4bss+0x571370)+0x30) local ys_old = BC(kzq_old+0x540) WBC(ys_old+0x64c,16,1) WBC(ys_old+0x650,16,0) WBC(ys_old+0x654,16,0) return true end) luajava.runOnUiThread(function() if success and result then gg.toast("✅自改打头范围开启成功") pcall(function() string.toMusic("自改打头范围开启成功") end) else gg.toast("❌自改打头范围失败,请进图落地后重试") pcall(function() string.toMusic("自改打头范围开启失败") end) CompoundButton:setChecked(false) end switchLock.zigai = false end) end) end } }, { TextView, text = "锁帧一把一开:", textSize = "12sp", textColor = "#0099FF" }, { LinearLayout, padding = {'0dp','0dp','0dp','1dp'}, layout_marginTop = '1dp', { Switch, layout_marginLeft = '0dp', text="锁帧", textColor= "#01FFFF", layout_height="30dp", layout_width="200dp", background= luajava.loadlayout { GradientDrawable, color = "#000000", cornerRadius = 28 }, onCheckedChange = function(CompoundButton, state) runSwitchTask("suozhen", CompoundButton, state, function() local segUE4 = gg.getRangesList("libUE4.so:bss") if not segUE4 or #segUE4 < 1 or not segUE4[1] or not segUE4[1].start then return false end local UE4bss = segUE4[1].start local framePtr = BC(UE4bss + 0x570E70) if framePtr == 0 then return false end if state then WBC(framePtr + 0x18, 16, 120.0, true) luajava.runOnUiThread(function() gg.toast("✅锁帧开启(120帧)") pcall(function() string.toMusic("锁帧开启") end) end) else WBC(framePtr + 0x18, 16, 60.0, false) luajava.runOnUiThread(function() gg.toast("⚠️锁帧已恢复默认") pcall(function() string.toMusic("锁帧已关闭") end) end) end return true end) end } } } }) end }) --工具窗口 floatingWindowManager:newWindow('[工具区]', { onCreate = function(floatingWindow) pcall(function() draw.text("金刚快手号3995036665 ", 250, 400) end) floatingWindow:addlayout({ ScrollView, layout_width = 'match_parent', layout_height = 'match_parent', { LinearLayout, background = floatingWindowManager:getStateListDrawable(), layout_width = 'match_parent', layout_height = 'match_parent', orientation = 'vertical', padding = '10dp', { Button, background = { GradientDrawable, cornerRadius='10dp', color='#3000000', }, layout_width = 'match_parent', layout_margin = '5dp', text = '隐藏水印', textSize = '16sp', onClick = function() draw.text("", 290,300) draw.setColor('#00FFFF') draw.setSize(0) draw.setStyle('描边并填充') pcall(function() string.toMusic("水印已隐藏") end) end }, { Button, background = { GradientDrawable, cornerRadius='10dp', color='#3000000', }, layout_width = 'match_parent', layout_margin = '5dp', text = '恢复水印', textSize = '16sp', onClick = function() draw.text("金刚快手号3995036665 ", 250, 400) draw.setColor('#00FFFF') draw.setSize(50) draw.setStyle('描边并填充') pcall(function() string.toMusic("水印已恢复") end) end } } }) end }) floatingWindowManager:run()