A = { A1="[开启]", A2="[开启]", A3="[开启]", A4="[开启]", A5="[开启]", A6="[开启]", A7="[开启]", A8="[开启]", B1="[开启]", A11="[开启]", B2="[开启]", A9="[开启]", A10="[开启]", B12="[开启]", A13="[开启]", A14="[开启]", A15="[开启]", B3="[开启]", B4="[开启]", A16="[开启]", B5="[开启]", A17="[开启]", B6="[开启]", A18="[开启]", A19="[开启]", B7="[开启]", B8="[开启]", B9="[开启]", B10="[开启]", B11="[开启]" } function aycXa(lib) local ranges = {} if not lib or type(lib) ~= "string" then gg.alert("库名参数错误") return nil end local rangeList = gg.getRangesList(lib) if not rangeList or #rangeList == 0 then gg.alert("未找到" .. lib .. "的内存段") return nil end for i, v in pairs(rangeList) do if v.type and v.type:len() >= 3 then local modjs = v.type:sub(2, 3) if modjs == '-x' then table.insert(ranges, v) end end end if #ranges == 0 then gg.alert("未找到-x段") return nil end return ranges[1].start end local xa = aycXa("libil2cpp.so") if not xa then gg.alert("获取libil2cpp.so基址失败") return end function getPointer(Address, Flags) if not Address or not Flags then gg.alert("getPointer参数缺失") return nil end local result = gg.getValues({ { address = Address, flags = Flags } }) if not result or #result == 0 then return nil end return result[1].value end local function getName(addr) if not addr then return "" end local str = "" local t = {} for i = 1, 128 do table.insert(t, {address = addr + (i - 1), flags = gg.TYPE_BYTE}) end local tValues = gg.getValues(t) if not tValues then return "" end for i, v in ipairs(tValues) do if v.value == 0 then break end if v.value < 0 then return "" end str = str .. string.char(v.value & 0xFF) end return str end function ff(py, xg1, xg2) if not py then return end local add = xa + py gg.addListItems({{address = add, flags = gg.TYPE_DWORD}}) gg.setValues({{address = add, flags = gg.TYPE_DWORD, value = "~A8 " .. tostring(xg1)}}) local g = gg.addListItems({{address = add + 0x4, flags = gg.TYPE_DWORD}}) gg.setValues({{address = add + 0x4, flags = gg.TYPE_DWORD, value = "~A8 " .. tostring(xg2)}}) end local function va(address, Type) if not address or not Type then return nil end local result = gg.getValues({{address = address, flags = Type}}) if not result or #result == 0 then return nil end return result[1].value end function shenzhiming(lm, py, lx, xg, dj, jz, jjlx, yz) gg.clearResults() local MEM_RANGE = -2080896 | gg.TYPE_DWORD gg.setRanges(MEM_RANGE) gg.searchNumber(":" .. tostring(lm), gg.TYPE_BYTE, false, gg.SIGN_EQUAL, 0, -1) local results = gg.getResults(gg.getResultsCount()) if #results == 0 then gg.alert("未找到匹配结果") return end local add = results[1].address local vc = va(add, gg.TYPE_BYTE) if not vc then gg.alert("读取值失败") return end gg.setRanges(gg.TYPE_DWORD) gg.searchNumber(tostring(vc), gg.TYPE_BYTE, false, gg.SIGN_EQUAL, 0, -1) gg.searchPointer(0) local zz = gg.getResults(gg.getResultsCount()) if #zz == 0 then gg.alert("指针搜索无结果") return end for k, item in ipairs(zz) do local l1 = item.address local Add = item.address - 0x10 local Value = va(Add, gg.TYPE_DWORD) if Value ~= 0 then gg.setRanges(gg.TYPE_QWORD) local z3 = {} for i = 1, #zz do table.insert(z3, {address = zz[i].address - 0x10, flags = gg.TYPE_DWORD}) end z3 = gg.getValues(z3) if not z3 then gg.alert("读取z3失败") return end gg.loadResults(z3) if jz == 1 then gg.searchPointer(0) gg.searchPointer(0) local ret = gg.getResults(gg.getResultsCount()) if #ret == 0 then gg.alert("无法定位") return end local max = math.min(#ret, 10000) local ToAdd = {} for i = 1, max do local q = ret[i] local ss = q.address local s1 = getPointer(ss, gg.TYPE_QWORD) if not s1 then goto continue end local vc = s1 + py local r = va(vc, jjlx) if yz == 0 then table.insert(ToAdd, { address = vc, flags = lx, value = xg, freeze = dj, name = "字段偏移:0x" .. string.format("%X", py) }) else if r == yz then table.insert(ToAdd, { address = vc, flags = lx, value = xg, freeze = dj, name = "字段偏移:0x" .. string.format("%X", py) }) end end ::continue:: end gg.addListItems(ToAdd) gg.setValues(ToAdd) return else gg.searchPointer(0) local ret = gg.getResults(gg.getResultsCount()) if #ret == 0 then gg.alert("无法定位") return end local max = math.min(#ret, 10000) local ToAdd = {} for i = 1, max do local q = ret[i] local ss = q.address table.insert(ToAdd, { address = ss + py, flags = lx, value = xg, freeze = dj, name = "字段偏移:0x" .. string.format("%X", py) }) end gg.addListItems(ToAdd) gg.setValues(ToAdd) return end end end end function void(gx, gn) local bb = xa + gx local cc = xa + gn if bb < cc then local fun = bb - cc gg.addListItems({{address = bb, flags = gg.TYPE_DWORD, name = "更新函数"}}) gg.setValues({{address = bb, flags = gg.TYPE_DWORD, value = "~A8 B [PC,#-0x" .. string.format("%X", fun) .. "]"}}) else local fun = bb - cc gg.addListItems({{address = bb, flags = gg.TYPE_DWORD, value = "~A8 B [PC,#0x" .. string.format("%X", fun) .. "]", name = "更新函数"}}) gg.setValues({{address = bb, flags = gg.TYPE_DWORD, value = "~A8 B [PC,#-0x" .. string.format("%X", fun) .. "]", name = "更新函数"}}) print(string.format("%X", fun)) end end function set(xg, add) if not xg or not add then return end gg.setValues({{address = add, flags = gg.TYPE_DWORD, value = xg}}) end function Main() xz=gg.choice({ "跑步加速"..A.A1, "修改距离"..A.B5, "得分倍数"..A.B8, "自动转弯"..A.A2, "开启无敌"..A.A3, "无视障碍"..A.A4, "闪电加速"..A.A5, "雷电加速"..A.B1, "获得磁铁"..A.A6, "超级磁铁"..A.A7, "获得护盾"..A.A8, "双倍金币"..A.B2, "无限复活"..A.B3, "开启内购"..A.B6, "当前等级"..A.B7, "解锁月卡"..A.A9, "解锁终卡"..A.A10, "解锁角色"..A.A11, "解锁宠物"..A.B9, "解锁坐骑"..A.B10, "解锁地图"..A.B11, "解锁天气"..A.B12, "解锁成就"..A.B4, "角色等级"..A.A13, "修改金币"..A.A14, "局内金币"..A.A15, "局内分数"..A.A16, "神像进度"..A.A17, "火圈数量"..A.A18, "去除弹窗"..A.A19, "退出脚本" },nil,"by.神之名") if xz==nil then return end if xz==1 then a1() end if xz==2 then b1() end if xz==3 then b2() end if xz==4 then a2() end if xz==5 then a3() end if xz==6 then a4() end if xz==7 then a5() end if xz==8 then a6() end if xz==9 then a7() end if xz==10 then a8() end if xz==11 then a9() end if xz==12 then a10() end if xz==13 then a11() end if xz==14 then a12() end if xz==15 then a13() end if xz==16 then a14() end if xz==17 then a15() end if xz==18 then a16() end if xz==19 then a17() end if xz==20 then a18() end if xz==21 then a19() end if xz==22 then a20() end if xz==23 then a21() end if xz==24 then a22() end if xz==25 then a23() end if xz==26 then a24() end if xz==27 then a25() end if xz==28 then a26() end if xz==29 then a27() end if xz==30 then a28() end if xz==31 then Exit() end end --void(0x255415c,0x25538e8) --void(0x25542cc,0x25538e8) --void(0x207e0f8,0x1af24e8) --0x22684b0 最佳分数 --0x1b15834 修改距离 --0x1af24e8 更新保存记录 function a1() local za=xa+0x1b0d914 if A.A1=="[开启]" then local aa={ {value="~A8 LDR S0, [PC,#0x8]",flags=4,address=za}, {value="~A8 RET",flags=4,address=za+0x4}, {value="1000",flags=16,address=za+0x8} } gg.addListItems({{address=aa[3].address,flags=4,name="速度值"}}) gg.setValues(aa) A.A1="[关闭]" else local bb={ {value="~A8 LDR X16, [PC,#0x8]",flags=4,address=za}, {value="~A8 RET",flags=4,address=za+0x4}, {value="10",flags=4,address=za+0x8} } gg.setValues(bb) A.A1="[开启]" end end function b1() local za=xa+0x1b15834 if A.B5=="[开启]" then local aa={ {value="~A8 LDR S0, [PC,#0x8]",flags=4,address=za}, {value="~A8 RET",flags=4,address=za+0x4}, {value="2000",flags=16,address=za+0x8} } gg.addListItems({{address=aa[3].address,flags=16,name="距离值"}}) gg.setValues(aa) A.B5="[关闭]" else local bb={ {value="~A8 STP X20, X19, [SP,#-0x20]!",flags=4,address=za}, {value="~A8 STP X29, X30, [SP,#0x10]",flags=4,address=za+0x4}, {value="~A8 ADD X29, SP, #0x10",flags=16,address=za+0x8} } gg.setValues(bb) A.B5="[开启]" end end function b2() local x=xa+0x2099be8 if A.B8=="[开启]" then Q=gg.prompt({"输入得分倍数"},{""},{"text"}) if not Q or not Q[1] then return end local aa={ {value="~A8 LDR X0, [PC,#0X8]",flags=4,address=x}, {value="~A8 RET",flags=4,address=x+0x4}, {value=Q[1],flags=4,address=x+0x8} } gg.setValues(aa) A.B8="[关闭]" else local aa={ {value="~A8 MOV X0, #11",flags=4,address=x}, {value="~A8 RET",flags=4,address=x+0x4} } gg.setValues(aa) A.B8="[开启]" end end function a2() local za=xa+0x1b0d1b8 local q=gg.getValues({{address=za,flags=4}})[1].value local q2=gg.getValues({{address=za+0x4,flags=4}})[1].value if A.A2=="[开启]" then if q=="402653281" and q2=="-1191078911" then local aa={ {value="~A8 LDR W1, [PC,#0x14]",flags=4,address=za}, {value="~A8 STR W1, [X0,#0x194]",flags=4,address=za+0x4}, {value="~A8 MOV W2, #1",flags=4,address=za+0x8}, {value="~A8 STR W2, [X0,#0x1F4]",flags=4,address=za+0xC}, {value="~A8 RET",flags=4,address=za+0x10}, {value="100",flags=16,address=za+0x14} } gg.setValues(aa) A.A2="[关闭]" else local bb={ {value="~A8 MOV W2, #1",flags=4,address=za}, {value="~A8 STR W2, [X0,#0x1F4]",flags=4,address=za+0x4}, {value="~A8 RET",flags=4,address=za+0x8} } gg.setValues(bb) A.A2="[关闭]" end else gg.setValues({{address=za+0x8,flags=4,value="~A8 MOV W2, XZR"}}) A.A2="[开启]" end end function a3() local x=xa+0x207c7cc if A.A3=="[开启]" then local aa={ {value="~A8 MOV X0, #1",flags=4,address=x}, {value="~A8 RET",flags=4,address=x+0x4} } gg.setValues(aa) A.A3="[关闭]" else local aa={ {value="~A8 MOV X0, XZR",flags=4,address=x}, {value="~A8 RET",flags=4,address=x+0x4} } gg.setValues(aa) A.A3="[开启]" end end function a4() local x=xa+0x207cbb4 if A.A4=="[开启]" then local aa={ {value="~A8 MOV X0, #1",flags=4,address=x}, {value="~A8 RET",flags=4,address=x+0x4} } gg.setValues(aa) A.A4="[关闭]" else local aa={ {value="~A8 MOV X0, XZR",flags=4,address=x}, {value="~A8 RET",flags=4,address=x+0x4} } gg.setValues(aa) A.A4="[开启]" end end function a5() if A.A5=="[开启]" then void(0x207e0f8,0x207ce1c) A.A5="[关闭]" else gg.setValues({{address=xa+0x207e0f8,flags=4,value="-788413441"}}) A.A5="[开启]" end end function a6() if A.B1=="[开启]" then void(0x207e0f8,0x207cd98) A.B1="[关闭]" else gg.setValues({{address=xa+0x207e0f8,flags=4,value="-788413441"}}) A.B1="[开启]" end end function a7() if A.A6=="[开启]" then void(0x207e0f8,0x207ceb8) A.A6="[关闭]" else gg.setValues({{address=xa+0x207e0f8,flags=4,value="-788413441"}}) A.A6="[开启]" end end function a8() if A.A7=="[开启]" then void(0x207e0f8,0x20815b8) A.A7="[关闭]" else gg.setValues({{address=xa+0x207e0f8,flags=4,value="-788413441"}}) A.A7="[开启]" end end function a9() if A.A8=="[开启]" then void(0x207e0f8,0x207cd04) A.A8="[关闭]" else gg.setValues({{address=xa+0x207e0f8,flags=4,value="-788413441"}}) A.A8="[开启]" end end function a10() if A.B2=="[开启]" then void(0x26bd350,0x1d2ae5c) A.B2="[关闭]" else gg.setValues({{address=xa+0x26bd350,flags=4,value="-1447208970"}}) A.B2="[开启]" end end function a11() local x=xa+0x20dbbc8 if A.B3=="[开启]" then local aa={ {value="~A8 MOV X0, #1",flags=4,address=x}, {value="~A8 RET",flags=4,address=x+0x4} } gg.setValues(aa) A.B3="[关闭]" else local aa={ {value="~A8 MOV X0, XZR",flags=4,address=x}, {value="~A8 RET",flags=4,address=x+0x4} } gg.setValues(aa) A.B3="[开启]" end end function a12() if A.B6=="[开启]" then void(0x1d236dc,0x1d27808) A.B6="[关闭]" else gg.setValues({{address=xa+0x1d236dc,flags=4,value="~A8 STR D8, [SP,#-0x50]!"}}) A.B6="[开启]" end end function a13() local x=xa+0x2268b98 if A.B7=="[开启]" then Be=gg.prompt({"输入要修改当前账户的等级"},{""},{"text"}) if not Be or not Be[1] then return end local aa={ {value="~A8 LDR X0, [PC,#0x8]",flags=4,address=x}, {value="~A8 RET",flags=4,address=x+0x4}, {value=Be[1],flags=4,address=x+0x8} } gg.setValues(aa) A.B7="[关闭]" else local aa={ {value="~A8 STP X20, X19, [SP,#-0x20]!",flags=4,address=x}, {value="~A8 STP X29, X30, [SP,#0x10]",flags=4,address=x+0x4}, {value="~A8 ADD X29, SP, #0x10",flags=4,address=x+0x8} } gg.setValues(aa) A.B7="[开启]" end end function a14() local x=xa+0x1d2dcc0 local ts=xa+0x1d2dcdc if A.A9=="[开启]" then local aa={ {value="~A8 MOV X0, #1",flags=4,address=x}, {value="~A8 RET",flags=4,address=x+0x4}, {value="~A8 MOV X0, #100",flags=4,address=ts}, {value="~A8 RET",flags=4,address=ts+0x4} } gg.setValues(aa) A.A9="[关闭]" else local aa={ {value="~A8 MOV X0, XZR",flags=4,address=x}, {value="~A8 RET",flags=4,address=x+0x4}, {value="~A8 MOV X0, XZR",flags=4,address=ts}, {value="~A8 RET",flags=4,address=ts+0x4} } gg.setValues(aa) A.A9="[开启]" end end function a15() local x=xa+0x1d2df48 local x1=xa+0x1d2e3c4 if A.A10=="[开启]" then local aa={ {value="~A8 MOV X0, #1",flags=4,address=x}, {value="~A8 RET",flags=4,address=x+0x4}, {value="~A8 MOV X0, #1",flags=4,address=x1}, {value="~A8 RET",flags=4,address=x1+0x4} } gg.setValues(aa) A.A10="[关闭]" else local aa={ {value="~A8 MOV X0, XZR",flags=4,address=x}, {value="~A8 RET",flags=4,address=x+0x4}, {value="~A8 MOV X0, XZR",flags=4,address=x1}, {value="~A8 RET",flags=4,address=x1+0x4} } gg.setValues(aa) A.A10="[开启]" end end function a16() local x=xa+0x2268ad8 if A.A11=="[开启]" then local aa={ {value="~A8 MOV X0, #1",flags=4,address=x}, {value="~A8 MOV X1, #100",flags=4,address=x+0x4}, {value="~A8 RET",flags=4,address=x+0x8} } gg.setValues(aa) A.A11="[关闭]" else local aa={ {value="~A8 MOV X0, XZR",flags=4,address=x}, {value="~A8 MOV X1, XZR",flags=4,address=x+0x4}, {value="~A8 RET",flags=4,address=x+0x8} } gg.setValues(aa) A.A11="[开启]" end end function a17() if A.B9=="[开启]" then void(0x26bd350,0x1e2ce7c) A.B9="[关闭]" gg.sleep(100) gg.setValues({{address=xa+0x26bd350,flags=4,value="-1447208970"}}) A.B9="[开启]" end end function a18() if A.B10=="[开启]" then void(0x26bd350,0x1e2ccd8) A.B10="[关闭]" gg.sleep(100) gg.setValues({{address=xa+0x26bd350,flags=4,value="-1447208970"}}) A.B10="[开启]" end end function a19() if A.B11=="[开启]" then void(0x26bd350,0x1e2d030) A.B11="[关闭]" gg.sleep(100) gg.setValues({{address=xa+0x26bd350,flags=4,value="-1447208970"}}) A.B11="[开启]" end end function a20() if A.B12=="[开启]" then void(0x26bd350,0x1e2d268) A.B12="[关闭]" gg.sleep(100) gg.setValues({{address=xa+0x26bd350,flags=4,value="-1447208970"}}) A.B12="[开启]" end end function a21() local x=xa+0x1d97a64 if A.B4=="[开启]" then local aa={ {value="~A8 MOV X0, #1",flags=4,address=x}, {value="~A8 MOV X1, #1",flags=4,address=x+0x4}, {value="~A8 RET",flags=4,address=x+0x8} } gg.setValues(aa) A.B4="[关闭]" else local aa={ {value="~A8 MOV X0, XZR",flags=4,address=x}, {value="~A8 MOV X1, XZR",flags=4,address=x+0x4}, {value="~A8 RET",flags=4,address=x+0x8} } gg.setValues(aa) A.B4="[开启]" end end function a22() local x=xa+0x1f350dc if A.A13=="[开启]" then local aa={ {value="~A8 MOV X0, #10",flags=4,address=x}, {value="~A8 RET",flags=4,address=x+0x4} } gg.setValues(aa) A.A13="[关闭]" else local aa={ {value="-1447145484",flags=4,address=x}, {value="-1459520515",flags=4,address=x+0x4} } gg.setValues(aa) A.A13="[开启]" end end function a23() local x=xa+0x2268c5c if A.A14=="[开启]" then local Ac=gg.prompt({"输入金币数量"},{"131400"},{"text"}) if not Ac or not Ac[1] then return end local aa={ {value="~A8 LDR X0, [PC,#0x8]",flags=4,address=x}, {value="~A8 RET",flags=4,address=x+0x4}, {value=Ac[1],flags=4,address=x+0x8} } gg.setValues(aa) A.A14="[关闭]" else local aa={ {value="~A8 SUB SP, SP, #0x90",flags=4,address=x}, {value="~A8 STR X21, [SP,#0x60]",flags=4,address=x+0x4}, {value="~A8 STP X29, X30, [SP,#0x80]",flags=4,address=x+0x8} } gg.setValues(aa) A.A14="[开启]" end end function a24() local x=xa+0x2268c5c if A.A15=="[开启]" then Ae=gg.prompt({"输入要累计增加的数量"},{""},{"text"}) if not Ae or not Ae[1] then return end local aa={ {value="~A8 LDR X1, [PC,#0xC]",flags=4,address=x}, {value="~A8 MOV X2, #1",flags=4,address=x+0x4}, {value="~A8 B [PC,#0x77D8]",flags=4,address=x+0x8}, {value=Ae[1],flags=4,address=x+0xC} } gg.setValues(aa) A.A15="[关闭]" else local aa={ {value="-65204248",flags=4,address=x}, {value="-1459531788",flags=4,address=x+0x4}, {value="-1459454979",flags=4,address=x+0x8}, {value="-1862237187",flags=4,address=x+0xC} } gg.setValues(aa) A.A15="[开启]" end end --0x1b15f20 分数 --0x1b15f5c 金币 --0x1b16144 宝石 --0x1b16160 大招 --0x2268c5c 改金币 function a25() local x=xa+0x1b0fc78 if A.A16=="[开启]" then Ao=gg.prompt({"输入要累计增加的数量"},{""},{"text"}) if not Ao or not Ao[1] then return end local aa={ {value="~A8 LDR X1, [PC,#0xC]",flags=4,address=x}, {value="~A8 MOV X2, #1",flags=4,address=x+0x4}, {value="~A8 B [PC,#-0x7AF48]",flags=4,address=x+0x8}, {value=Ao[1],flags=4,address=x+0xC} } gg.setValues(aa) A.A16="[关闭]" else local aa={ {value="-65204248",flags=4,address=x}, {value="-1459531788",flags=4,address=x+0x4}, {value="-1459454979",flags=4,address=x+0x8}, {value="-1862237187",flags=4,address=x+0xC} } gg.setValues(aa) A.A16="[开启]" end end function a26() local x=xa+0x1fe5a68 if A.A17=="[开启]" then local aa={ {value="~A8 LDR S0, [PC,#0x10]",flags=4,address=x}, {value="~A8 MOV X1, #1",flags=4,address=x+0x4}, {value="~A8 MOV X2, #12",flags=4,address=x+0x8}, {value="~A8 RET",flags=4,address=x+0xC}, {value="100",flags=16,address=x+0x10} } gg.setValues(aa) A.A17="[关闭]" end end function a27() local za=xa+0x2155518 if A.A18=="[开启]" then local bb={ {value="~A8 MOV w16, #10",flags=4,address=za}, {value="~A8 STR W16, [X0,#0x8C]",flags=4,address=za+0x4}, {value="~A8 RET",flags=4,address=za+0x8} } gg.setValues(bb) A.A18="[关闭]" else local bb={ {value="~A8 MOV W2, #1",flags=4,address=za}, {value="~A8 STR W2, [X0,#0x8C]",flags=4,address=za+0x4}, {value="~A8 RET",flags=4,address=za+0x8} } gg.setValues(bb) A.A18="[开启]" end end function a28() if A.A19=="[开启]" then void(0x2368e50,0x236964c) A.A19="[关闭]" else gg.setValues({{address=xa+0x2368e50,flags=4,value="~A8 STR X21, [SP,#-0x30]!"}}) A.A19="[开启]" end end function Exit() os.exit() end gg.showUiButton() while true do if gg.isClickedUiButton()==true then Main() end gg.sleep(100) end while true do if gg.isVisible(true) then gg.setVisible(false) Main() end gg.sleep(100) end