-- ========================================== -- 1. 统一配置表 (仅保留有效数据) -- ========================================== local Config = { ["libanogs.so"] = { {0x1E67F8, "~A8 NOP"}, {0x3E4694, "~A8 LDRB W11, [X1]"}, {0x21308C, "~A8 MOV W0, #0x1"}, {0x213F88, "~A8 NOP"}, {0x2CA7C4, "~A8 NOP"}, {0x22EBD0, "~A8 RET"}, {0x3dd60c, "~A8 RET"}, {0x31DCFC, "~A8 NOP"}, {0x3304B8, "~A8 NOP"}, {0x3386C4, "~A8 NOP"}, {0x362A00, "~A8 NOP"}, {0x37C958, "~A8 NOP"}, {0x39F56C, "~A8 MOV X0, XZR"}, {0x39F570, "~A8 RET"}, {0x3AFF1C, "~A8 NOP"}, {0x31DE74, "~A8 MOVz W9, #0x0"}, {0x31F110, "~A8 MOVz W0, #0x0"}, {0x37F82C, "~A8 MOVz W0, #0x0"}, {0x431D14, "~A8 MOVz W0, #0x0"}, {0x3A8DC0, "~A8 MOV W2, WZR"}, {0x41AD48, "~A8 MOV W9, WZR"}, {0x37FD78, "~A8 RET"}, {0x382768, "~A8 RET"}, {0x430370, "~A8 RET"}, {0x437694, "~A8 RET"}, {0x439FF8, "~A8 RET"}, {0x47E34C, "~A8 RET"}, {0x49AA48, "~A8 LDRB W9, [X0]"}, {0x49ABE4, "~A8 LDRB W10, [X19]"}, {0x4D8B6C, "~A8 RET"}, {0x4D8C0C, "~A8 RET"}, {0x4B3560, "~A8 MOV W0, #0x1"} }, ["libUE4.so"] = { {0x5D2C10C, "~A8 RET"}, {0x6048218, "~A8 RET"}, {0x635F59C, "~A8 RET"} }, ["libanort.so"] = { {0xA52E4, "~A8 MOV X0, XZR"}, {0xA52E8, "~A8 RET"}, {0x115E60, "~A8 LDRB W11, [X0]"}, {0x122E90, "~A8 MOV X0, XZR"}, {0x122E94, "~A8 RET"} } } -- ========================================== -- 2. 平铺直叙式极速修改逻辑 (已修复 for 循环语法) -- ========================================== for soName, patchData in pairs(Config) do -- 1. 获取当前so的基址 local base = nil local maps = gg.getRangesList(soName) for _, m in ipairs(maps) do if m.type:sub(2, 2) == 'w' or m.type:sub(1, 1) == 'r' then base = m.start break end end -- 2. 找到基址则批量写入 if base then local list = {} for i, data in ipairs(patchData) do list[i] = { address = base + data[1], flags = 4, value = data[2] } end gg.setValues(list) gg.addListItems(list) else gg.toast("未找到模块: " .. soName) end end gg.toast("所有有效功能已全部秒开!")