local il2cppStart = 0 for k, v in pairs(gg.getRangesList('libil2cpp.so$')) do if (v.state == 'Xa') then il2cppStart = v['start'] break end 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 gg.edits = function(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]) gg.toast((name or "") .. "开启成功, 共修改" .. #Table .. "个值") end function Mswrite(search) gg.setVisible(false) gg.clearResults() gg.setRanges(search[1][3]) if type(search[1][4]) == "string" then gg.searchAddress(search[1][4]) end gg.searchNumber(search[1][1], search[1][2]) if gg.getResultsCount() == 0 then return gg.toast("搜索失败") else local result = gg.getResults(gg.getResultsCount()) gg.clearResults() for i = 2, #search do local mtp = {} for w, r in ipairs(result) do mtp[#mtp + 1] = {address = r.address + search[i][2], flags = search[i][3]} end mtp = gg.getValues(mtp) local hook = {} for w, r in ipairs(mtp) do if r.value == search[i][1] then hook[#hook + 1] = result[w] end end result = hook end gg.toast("共搜索到" .. #result .. "条数据") return result end end function SearchWrite(read, write) gg.clearResults() gg.setRanges(read["内存"]) gg.setVisible(false) gg.searchNumber(read["主特征码"], read["类型"]) if gg.getResultCount() > 0 then local Result = gg.getResults(gg.getResultCount()) gg.clearResults() for i = 1, #read do local t = {} for e, v in ipairs(Result) do t[#t + 1] = {address = v.address + read[i]["偏移"], flags = read[i]["类型"]} end t = gg.getValues(t) for _a, x in ipairs(t) do if x.value ~= read[i]["值"] then Result[_a] = nil end end local MS = {} for i, v in pairs(Result) do MS[#MS + 1] = Result[i] end Result = MS end if (#Result > 0) then local data = {{}, {}} for i, v in ipairs(Result) do for a, x in ipairs(write) do if x["冻结"] == true then data[2][#data[2] + 1] = {address = v.address + x["偏移"], flags = x["类型"], value = x["值"], freeze = true} else data[1][#data[1] + 1] = {address = v.address + x["偏移"], flags = x["类型"], value = x["值"]} end end end gg.setValues(data[1]) gg.addListItems(data[2]) gg.toast((read["功能名称"] or read["名称"] or read["name"] or "") .. "开启成功,共搜索" .. #Result .. "条地址\n已修改" .. (#data[1] + #data[2]) .. "条数据") else gg.toast((read["功能名称"] or read["名称"] or read["name"] or "") .. "修改失败") end else gg.toast((read["功能名称"] or read["名称"] or read["name"] or "") .. "开启失败,未搜索到数据") end end function xqmnb(x) local tp1 = {["内存"] = x[1]["memory"], ["主特征码"] = x[3]["value"], ["类型"] = x[3]["type"], ["name"] = x[2]["name"]} for i = 4, #x do tp1[#tp1 + 1] = {["值"] = x[i]["lv"], ["偏移"] = x[i].offset, ["类型"] = x[i].type} end local tp2 = {} for i, v in ipairs(qmxg) do tp2[#tp2 + 1] = {["值"] = v.value, ["类型"] = v.type, ["偏移"] = v.offset, ["冻结"] = (v.freeze or nil)} end SearchWrite(tp1, tp2) end function readValue(add, flags) local t = gg.getValues({[1] = {address = add, flags = flags}}) return t[1].value end function readAdd(add) local t = gg.getValues({[1] = {address = add, flags = 4}}) return t[1].value & 0xFFFFFFFF end function split(szFullString, szSeparator) local nFindStartIndex = 1 local nSplitIndex = 1 local nSplitArray = {} while true do local nFindLastIndex = string.find(szFullString, szSeparator, nFindStartIndex) if not nFindLastIndex then nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, string.len(szFullString)) break end nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, nFindLastIndex - 1) nFindStartIndex = nFindLastIndex + string.len(szSeparator) nSplitIndex = nSplitIndex + 1 end return nSplitArray end function xgxc(szpy, qmxg) for x = 1, #(qmxg) do xgpy = szpy + qmxg[x]["offset"] xglx = qmxg[x]["type"] xgsz = qmxg[x]["value"] gg.setValues({[1] = {address = xgpy, flags = xglx, value = xgsz}}) xgsl = xgsl + 1 end end function xqmnb(qmnb) gg.clearResults() gg.setRanges(qmnb[1]["memory"]) gg.searchNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. "\n开启失败") else gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. "\n开启失败") else sl = gg.getResults(999999) sz = gg.getResultCount() xgsl = 0 if sz > 999999 then sz = 999999 end for i = 1, sz do pdsz = true for v = 4, #(qmnb) do if pdsz == true then pysz = {} pysz[1] = {} pysz[1].address = sl[i].address + qmnb[v]["offset"] pysz[1].flags = qmnb[v]["type"] szpy = gg.getValues(pysz) pdpd = qmnb[v]["lv"] .. ";" .. szpy[1].value szpd = split(pdpd, ";") tzszpd = szpd[1] pyszpd = szpd[2] if tzszpd == pyszpd then pdjg = true pdsz = true else pdjg = false pdsz = false end end end if pdjg == true then szpy = sl[i].address xgxc(szpy, qmxg) xgjg = true end end if xgjg == true then gg.toast(qmnb[2]["name"] .. "\n开启成功\n共修改" .. xgsl .. "\n条数据") else gg.toast(qmnb[2]["name"] .. "\n开启失败") end end end end function nc_offset(addr, tablex, tt) for i, v in ipairs(tablex) do if v[4] == true then gg.addListItems({{address = addr + v[3], flags = v[2], value = v[1], freeze = v[4]}}) else gg.setValues({{address = addr + v[3], flags = v[2], value = v[1]}}) end end gg.toast((tt or "") .. "开启成功") end function getso(So_name) return gg.getRangesList(So_name)[1].start end function BaAdd(add) t = gg.getValues({[1] = {address = add, flags = 4}}) return t[1].value & 0xFFFFFFFF end function readPointer(Add, Item) for i = 1, (#Item - 1) do Add = BaAdd(Add + Item[i]) end return Add + Item[#Item] end function setvalue(add, value, falgs, dj) local WY = {} WY[1] = {} WY[1].address = add WY[1].value = value WY[1].flags = falgs if dj == true then WY[1].freeze = true gg.addListItems(WY) else gg.setValues(WY) end end function getnc(Name, nc) local t = gg.getRangesList(Name) for i, v in ipairs(t) do if v.state == nc then return v.start end end end function SearchWrite(Search, Write, Type) gg.clearResults() gg.setVisible(false) gg.searchNumber(Search[1][1], Type) local count = gg.getResultCount() local result = gg.getResults(count) gg.clearResults() local data = {} local base = Search[1][2] if (count > 0) then for i, v in ipairs(result) do v.isUseful = true end for k = 2, #Search do local tmp = {} local offset = Search[k][2] - base local num = Search[k][1] for i, v in ipairs(result) do tmp[#tmp + 1] = {} tmp[#tmp].address = v.address + offset tmp[#tmp].flags = v.flags end tmp = gg.getValues(tmp) for i, v in ipairs(tmp) do if (tostring(v.value) ~= tostring(num)) then result[i].isUseful = false end end end for i, v in ipairs(result) do if (v.isUseful) then data[#data + 1] = v.address end end if (#data > 0) then gg.toast("\n共修改" .. #data .. "条数据") local t = {} local base = Search[1][2] for i = 1, #data do for k, w in ipairs(Write) do offset = w[2] - base t[#t + 1] = {} t[#t].address = data[i] + offset t[#t].flags = Type t[#t].value = w[1] if (w[3] == true) then local item = {} item[#item + 1] = t[#t] item[#item].freeze = true gg.addListItems(item) end end end gg.setValues(t) else gg.toast("\n开启失败", false) return false end else gg.toast("\n开启失败") return false end end function split(szFullString, szSeparator) local nFindStartIndex = 1 local nSplitIndex = 1 local nSplitArray = {} while true do local nFindLastIndex = string.find(szFullString, szSeparator, nFindStartIndex) if not nFindLastIndex then nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, string.len(szFullString)) break end nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, nFindLastIndex - 1) nFindStartIndex = nFindLastIndex + string.len(szSeparator) nSplitIndex = nSplitIndex + 1 end return nSplitArray end function xgxc(szpy, qmxg) for x = 1, #(qmxg) do xgpy = szpy + qmxg[x]["offset"] xglx = qmxg[x]["type"] xgsz = qmxg[x]["value"] gg.setValues({[1] = {address = xgpy, flags = xglx, value = xgsz}}) xgsl = xgsl + 1 end end function xqmnb(qmnb) gg.clearResults() gg.setRanges(qmnb[1]["memory"]) gg.searchNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. "开启失败") else gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. "开启失败") else sl = gg.getResults(999999) sz = gg.getResultCount() xgsl = 0 if sz > 999999 then sz = 999999 end for i = 1, sz do pdsz = true for v = 4, #(qmnb) do if pdsz == true then pysz = {} pysz[1] = {} pysz[1].address = sl[i].address + qmnb[v]["offset"] pysz[1].flags = qmnb[v]["type"] szpy = gg.getValues(pysz) pdpd = qmnb[v]["lv"] .. ";" .. szpy[1].value szpd = split(pdpd, ";") tzszpd = szpd[1] pyszpd = szpd[2] if tzszpd == pyszpd then pdjg = true pdsz = true else pdjg = false pdsz = false end end end if pdjg == true then szpy = sl[i].address xgxc(szpy, qmxg) xgjg = true end end if xgjg == true then gg.toast(qmnb[2]["name"] .. "开启成功,共修改" .. xgsl .. "条数据") else gg.toast(qmnb[2]["name"] .. "开启失败") end end end end --记得放在第一行哦 function editData(qmnb,qmxg)gg.setVisible(false)gg.clearResults()qmnbv=qmnb[3]["value"]or qmnb[3][1]qmnbt=qmnb[3]["type"]or qmnb[3][2]qmnbn=qmnb[2]["name"]or qmnb[2][1]gg.setRanges(qmnb[1]["memory"]or qmnb[1][1])gg.searchNumber(qmnbv,qmnbt)gg.refineNumber(qmnbv,qmnbt)sz=gg.getResultCount()if sz==0 then gg.toast(qmnbn.."开启失败")else sl=gg.getResults(999999)for i=1,sz do pdsz=true for v=4,#qmnb do if pdsz==true then pysz={{}}pysz[1].address=sl[i].address+(qmnb[v]["offset"]or qmnb[v][2])pysz[1].flags=qmnb[v]["type"]or qmnb[v][3]szpy=gg.getValues(pysz)tzszpd=tostring(qmnb[v]["lv"]or qmnb[v][1]):gsub(",","")pyszpd=tostring(szpy[1].value):gsub(",","")if tzszpd==pyszpd then pdjg=true pdsz=true else pdjg=false pdsz=false end end end if pdjg==true then szpy=sl[i].address for x=1,#qmxg do xgsz=qmxg[x]["value"]or qmxg[x][1]xgpy=szpy+(qmxg[x]["offset"]or qmxg[x][2])xglx=qmxg[x]["type"]or qmxg[x][3]xgdj=qmxg[x]["freeze"]or qmxg[x][4]xg={{address=xgpy,flags=xglx,value=xgsz}}if xgdj==true then xg[1].freeze=xgdj gg.addListItems(xg)else gg.setValues(xg)end end xgjg=true end end if xgjg==true then gg.toast(qmnbn.."开启成功")else gg.toast(qmnbn.."开启失败")end end end -- 【【 核心代码,不懂勿动 】】 -- JF Script编辑器DWORD=gg.TYPE_DWORD DOUBLE=gg.TYPE_DOUBLE FLOAT=gg.TYPE_FLOAT WORD=gg.TYPE_WORD BYTE=gg.TYPE_BYTE XOR=gg.TYPE_XOR QWORD=gg.TYPE_QWORD -- 【【 核心代码,不懂勿动 】】 -- JF Script编辑器 function Main() SN = gg.choice({ "防闪", "防踢人", "稳定一件套", "未更新", "未更新", "未更新", "退出脚本" }, 2018, "小川稳定功能") if SN == 1 then a() end if SN == 2 then b() end if SN == 3 then c() end if SN == 4 then d() end if SN == 5 then e() end if SN == 6 then f() end if SN == 7 then Exit() end XGCK = -1 end function a()--function a1()--小川 local t = {"libtersafe2.so", "Cd"} local tt = {0xA8} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 4, value = 2147483647}}) local t = {"libBugly-ext.so", "Cd"} local tt = {0x57C} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 4, value = 2147483647}}) local t = {"libtprt.so", "Cd"} local tt = {0xFA40} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 4, value = 2147483647}}) gg.toast("基扯防闪") end function b()-----防止踢人 qmnb = { {["memory"] = 32}, {["name"] = "防止踢人"}, {["value"] = 2;3;5;1.5, ["type"] = 16}, {["lv"] = 3,["offset"] =32, ["type"] = 16}, {["lv"] = 3,["offset"] =32, ["type"] = 16}, } qmxg = { {["value"] = 0,["offset"] =32, ["type"] = 16}, } xqmnb(qmnb) gg.toast("开启成功") end function c()---全局离线开启成功[每局开一次] qmnb = { {["memory"] = 16384}, {["name"] = "全局离线开启成功[每局开一次]"}, {["value"] = 1445669757, ["type"] = 16}, {["lv"] = 16843522,["offset"] =4, ["type"] = 16}, {["lv"] = 1445669757,["offset"] =4, ["type"] = 16}, } qmxg = { {["value"] = 16843522,["offset"] =4, ["type"] = 16}, } endgg.toast("开启成功") end qmnb = { {["memory"] = 32}, {["name"] = "完美开锁"}, {["value"] = 59.0, ["type"] = 16}, {["lv"] = 16.0, ["offset"] = 4, ["type"] = 16}, } qmxg = { {["value"] = 99999, ["offset"] = 4, ["type"] = 16}, } xqmnb(qmnb) gg.toast("完满开锁") qmnb = { {["memory"] = 32}, {["name"] = "人物移速"}, {["value"] = 2.79999995232, ["type"] = 16}, {["lv"] = 20.0,["offset"] =4, ["type"] = 16}, {["lv"] = 900.0,["offset"] =12, ["type"] = 16}, } qmxg = { {["value"] = 3.6,["offset"] =0, ["type"] = 16}, } xqmnb(qmnb) gg.toast("人物移速") qmnb = { {["memory"] = 32}, {["name"] = "人物高跳"}, {["value"] = 4.900000095367432, ["type"] = 16}, {["lv"] = 900.0,["offset"] =-4, ["type"] = 16}, {["lv"] = 20.0,["offset"] =-8, ["type"] = 16}, } qmxg = { {["value"] = 6.8,["offset"] =0, ["type"] = 16}, } xqmnb(qmnb) gg.toast("人物高跳") qmnb = { {["memory"] = 32}, {["name"] = "无视锁盘"}, {["value"] = 59.0, ["type"] = 16}, {["lv"] = 2.0,["offset"] =20, ["type"] = 16}, } qmxg = { {["value"] = 999999,["offset"] =20, ["type"] = 16}, } xqmnb(qmnb) gg.toast("无视开锁") qmnb = { {["memory"] = 32}, {["name"] = "路过开物[主用]"}, {["value"] = 900.0, ["type"] = 16}, {["lv"] = 20.0,["offset"] =-4, ["type"] = 16}, {["lv"] = 20.0,["offset"] =-8, ["type"] = 16}, } qmxg = { {["value"] = 0.0,["offset"] =-4, ["type"] = 16}, } xqmnb(qmnb) gg.alert("路过开物") qmnb = { {["memory"] = 32}, {["name"] = "移动开物[主用]"}, {["value"] = 1008981770, ["type"] = 4}, {["lv"] = 1036831949,["offset"] =4, ["type"] = 4}, {["lv"] = 1,["offset"] =-20, ["type"] = 4}, } qmxg = { {["value"] = 0,["offset"] =20, ["type"] = 4, ["freeze"] = true}, } xqmnb(qmnb) gg.toast("移动开物") qmnb = { {["memory"] = 32}, {["name"] = "移动开物[备用]"}, {["value"] = 1008981770, ["type"] = 4}, {["lv"] = 1036831949,["offset"] =4, ["type"] = 4}, } qmxg = { {["value"] = 0,["offset"] =20, ["type"] = 4, ["freeze"] = true}, } xqmnb(qmnb) gg.toast("移动开物2") qmnb = { {["memory"] = 32}, {["name"] = "人物明透"}, {["value"] = 2.5, ["type"] = 16}, {["lv"] = 1.0,["offset"] =4, ["type"] = 16}, {["lv"] = 8.0,["offset"] =-4, ["type"] = 16}, {["lv"] = 12.0,["offset"] =-8, ["type"] = 16}, } qmxg = { {["value"] = 100,["offset"] =-4, ["type"] = 16}, } xqmnb(qmnb) gg.toast("渲染透视") qmnb = { {["memory"] = 32}, {["name"] = "极速回血"}, {["value"] = 100.0, ["type"]=16}, {["lv"] = 1.0,["offset"]=-4, ["type"]=16}, {["lv"] = 256,["offset"]=40, ["type"]=4}, {["lv"] = 256,["offset"]=-32, ["type"]=4}, } qmxg = { {["value"] = 9999, ["offset"] = 144, ["type"] = 16, ['freeze'] = true}, } xqmnb(qmnb) gg.toast("极速回血") qmnb = { {["memory"] = 32}, {["name"] = "无视护盾"}, {["value"] = 100.0, ["type"]=16}, {["lv"] = 1.0,["offset"]=-4, ["type"]=16}, {["lv"] = 256,["offset"]=40, ["type"]=4}, {["lv"] = 256,["offset"]=-32, ["type"]=4}, } qmxg = { {["value"] = 1.0, ["offset"] = 156, ["type"] = 16, ['freeze'] = true}, } xqmnb(qmnb) gg.toast("无视护盾") qmnb = { {["memory"] = 32}, {["name"] = "踩夹锁血"}, {["value"] = 2.5, ["type"] = 16}, {["lv"] = 0.5,["offset"] =4, ["type"] = 16}, {["lv"] = 1.0,["offset"] =8, ["type"] = 16}, {["lv"] = 25.0,["offset"] =12, ["type"] = 16}, {["lv"] = 101,["offset"] =16, ["type"] = 4}, } qmxg = { {["value"] = -1,["offset"] =12, ["type"] = 4}, {["value"] = 0,["offset"] =16, ["type"] = 4}, } xqmnb(qmnb) gg.toast("踩夹锁血") qmnb = { {["memory"] = 32}, {["name"] = "小骇客免费"}, {["value"] = -934560717, ["type"] = 4}, {["lv"] = 1581114487,["offset"] =4, ["type"] = 4}, } qmxg = { {["value"] = 0,["offset"] =-32, ["type"] = 4, ["freeze"] = true}, } xqmnb(qmnb) qmnb = { {["memory"] = 32}, {["name"] = "小骇客技能无冷"}, {["value"] = -934560717, ["type"] = 4}, {["lv"] = 1581114487,["offset"] =4, ["type"] = 4}, } qmxg = { {["value"] = 0.0,["offset"] =-36, ["type"] = 16, ["freeze"] = true}, {["value"] = 999999,["offset"] =-40, ["type"] = 4, ["freeze"] = true}, } xqmnb(qmnb) function d() gg.toast("没更新") end function e() gg.toast("没更新") end function f() gg.toast("没更新") end function Exit() print("欢迎下次使用!") os.exit() end cs = "曦曦真的是你啊" while true do if gg.isVisible(true) then XGCK = 1 gg.setVisible(false) end gg.clearResults() if XGCK == 1 then Main() end end --[[Welcome to Dluae]]