gg.alert(" ساخته شده توسط DARK CHET🖤 @MehrasBENYAMIN") gg.alert(" ساخته شده توسط @BNI_Owner") Password = "@MehrasBENYAMIN" Result = gg.prompt({"ENTER PASSWORD"}, nil, {"text"}) if Result == nil then os.exit() end if Result[1] == Password then gg.sleep(700) gg.toast("♻️LOADING️") gg.sleep(1000) gg.toast("✔IT IS TRUE✔") else gg.sleep(700) gg.toast("♻️LOADING️") gg.sleep(2000) gg.alert("✖THE MISTAKE✖") print[[ FID BACK 👉PV @BRK_OWNER @Mehras_YT ]] return end DateE = "20221117" DateToday = os.date("%Y%m%d") if DateToday >= DateE then gg.alert("⚠️🙂تایم چیت تموم شده برای تمدید به پیوی ادمین برید🙂⚠️️") return os.exit() print[[ FID BACK 👉PV @BRK_OWNER @Mehras_YT ]] 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"] xgdj = qmxg[x]["freeze"] if xgdj == nil or xgdj == "" then gg.setValues({[1] = {address = xgpy, flags = xglx, value = xgsz}}) else gg.addListItems({[1] = {address = xgpy, flags = xglx, freeze = xgdj, value = xgsz}}) end xgsl = xgsl + 1 xgjg = true end end function xqmnb(qmnb) gg.clearResults() gg.setVisible(false) gg.setRanges(qmnb[1]["memory"]) gg.searchNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. " Failed") 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"]) bbb=gg.getResultCount() if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. " Failed") 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) end end if xgjg == true then gg.toast(qmnb[2]["name"] .. "\nFound: ".. bbb.." Edited: " .. xgsl .. "") else gg.toast(qmnb[2]["name"] .. " Failed") end end end gg.clearResults() end function setvalue(address,flags,value) local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end local hex = {} function mahdiprog(lib,offset,edit,type) local ranges = gg.getRangesList(lib) local xy = {} xy[1] = {} xy[1].address = ranges[1].start + offset xy[1].flags = type xy[1].value = edit gg.setValues(xy) end function setvalue(address,flags,value) PS('Modify address value (address, numeric type, value to be modified)') local tt={} tt[1]={} tt[1].address=address tt[ 1].flags=flags tt[1].value=value gg.setValues(tt) 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"] xgdj = qmxg[x]["freeze"] if xgdj == nil or xgdj == "" then gg.setValues({[1] = {address = xgpy, flags = xglx, value = xgsz}}) else gg.addListItems({[1] = {address = xgpy, flags = xglx, freeze = xgdj, value = xgsz}}) end xgsl = xgsl + 1 xgjg = true end end function xqmnb(qmnb) gg.clearResults() gg.setVisible(false) gg.setRanges(qmnb[1]["memory"]) gg.searchNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. " Failed") 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"]) bbb=gg.getResultCount() if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. " Failed") 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) end end if xgjg == true then gg.toast(qmnb[2]["name"] .. "\nFound: ".. bbb.." Edited: " .. xgsl .. "") else gg.toast(qmnb[2]["name"] .. " Failed") end end end gg.clearResults() end function setvalue(address,flags,value) local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end local hex = {} function mahdiprog(lib,offset,edit,type) local ranges = gg.getRangesList(lib) local xy = {} xy[1] = {} xy[1].address = ranges[1].start + offset xy[1].flags = type xy[1].value = edit gg.setValues(xy) end local HexPatches = {} function HexPatches.MemoryPatch(Lib,Offset,Edit,Type) local Ranges = gg.getRangesList(Lib) local v = {} v[1] = {} v[1].address = Ranges[1].start + Offset v[1].flags = Type v[1].value = Edit.."r" v[1].freeze = true gg.setValues(v) end local HexPatches = {} function HexPatches.MemoryPatch(Lib,Offset,Edit,Type) local Ranges = gg.getRangesList(Lib) local v = {} v[1] = {} v[1].address = Ranges[1].start + Offset v[1].flags = Type v[1].value = Edit.."r" v[1].freeze = true gg.setValues(v) end local memFrom, memTo, lib, num, lim, results, src, ok = 0, -1, nil, 0, 32, {}, nil, false function name(n) if lib ~= n then lib = n local ranges = gg.getRangesList(lib) if #ranges == 0 then print("Error!"..lib.." IS NOT FOUND, MAKE SURE YOU OPEN THE GAME FIRST. BEFORE EXECUTING THE SCRIPT") gg.toast("ᴇʀʀᴏʀ! "..lib.." ɪs ɴᴏᴛ ғᴏᴜɴᴅ") gg.sleep(1800) gg.toast("MAKE SURE YOU OPEN THE GAME FIRST") gg.sleep(1800) gg.setVisible(true) os.exit() else memFrom = ranges[1].start memTo = ranges[#ranges]["end"] end end end function hex2tbl(hex) local ret = {} hex:gsub("%S%S", function (ch) ret[#ret + 1] = ch return "" end) return ret end function original(orig,longoff) local tbl = hex2tbl(orig) local len = #tbl if len == 0 then return end local used = len if len > lim then used = lim end local s = "" for i = 1, used do if i ~= 1 then s = s..";" end local v = tbl[i] if v == "??" or v == "**" then v = "0~~0" end s = s..v.."r" end s = s.."::"..used gg.searchNumber(s, gg.TYPE_BYTE, false, gg.SIGN_EQUAL, memFrom, memTo) if len > used then for i = used + 1, len do local v = tbl[i] if v == "??" or v == "**" then v = 256 else v = ("0x"..v) + 0 if v > 127 then v = v - 256 end end tbl[i] = v end end local found = gg.getResultCount(); results = {} local count = 0 local checked = 0 while true do if checked >= found then break end local all = gg.getResults(8) local total = #all local start = checked if checked + used > total then break end for i, v in ipairs(all) do v.address = v.address + longoff end gg.loadResults(all) while start < total do local good = true local offset = all[1 + start].address - 1 if used < len then local get = {} for i = lim + 1, len do get[i - lim] = {address = offset + i, flags = gg.TYPE_BYTE, value = 0} end get = gg.getValues(get) for i = lim + 1, len do local ch = tbl[i] if ch ~= 256 and get[i - lim].value ~= ch then good = false break end end end if good then count = count + 1 results[count] = offset checked = checked + used else local del = {} for i = 1, used do del[i] = all[i + start] end gg.removeResults(del) end start = start + used end end end function replaced(repl) num = num + 1 local tbl = hex2tbl(repl) if src ~= nil then local source = hex2tbl(src) for i, v in ipairs(tbl) do if v ~= "??" and v ~= "**" and v == source[i] then tbl[i] = "**" end end src = nil end local cnt = #tbl local set = {} local s = 0 for _, addr in ipairs(results) do for i, v in ipairs(tbl) do if v ~= "??" and v ~= "**" then s = s + 1 set[s] = { ["address"] = addr + i, ["value"] = v.."r", ["flags"] = gg.TYPE_BYTE, } end end end if s ~= 0 then gg.setValues(set) end ok = true 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 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, Loading1) for x = 1, #(Loading1) do xgpy = szpy + Loading1[x]["address"] xglx = Loading1[x]["flags"] xgsz = Loading1[x]["value"] xgdj = Loading1[x]["freeze"] if xgdj == nil or xgdj == "" then gg.setValues({[1] = {address = xgpy, flags = xglx, value = xgsz}}) else gg.addListItems({[1] = {address = xgpy, flags = xglx, freeze = xgdj, value = xgsz}}) end xgsl = xgsl + 1 xgjg = true end end function LoadingQ(Loading) gg.setRanges(Loading[1]["memory"]) gg.searchNumber(Loading[3]["value"], Loading[3]["flags"]) if gg.getResultCount() == 0 then gg.toast(Loading[2]["Projects"] .. "Load失败❌") else gg.refineNumber(Loading[3]["value"], Loading[3]["flags"]) gg.refineNumber(Loading[3]["value"], Loading[3]["flags"]) gg.refineNumber(Loading[3]["value"], Loading[3]["flags"]) if gg.getResultCount() == 0 then gg.toast(Loading[2]["Projects"] .. "Load失败❌") 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, #(Loading) do if pdsz == true then pysz = {} pysz[1] = {} pysz[1].address = sl[i].address + Loading[v]["address"] pysz[1].flags = Loading[v]["flags"] szpy = gg.getValues(pysz) pdpd = Loading[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, Loading1) end end if xgjg == true then end end end end function edit(orig,ret)_om=orig[1].memory or orig[1][1]_ov=orig[3].value or orig[3][1]_on=orig[2].name or orig[2][1] gg.clearResults()gg.setRanges(_om)gg.searchNumber(_ov,orig[3].type or orig[3][2])sz=gg.getResultCount()if sz<1 then gg.toast(_on.." 开启失败")else sl=gg.getResults(50000)for **1,sz do ist=true for v=4,#orig do if ist==true and sl[i].value==_ov then cd={{}}cd[1].address=sl[i].address+(orig[v].offset or orig[v][2])cd[1].flags=orig[v].type or orig[v][3]szpy=gg.getValues(cd)cdlv=orig[v].lv or orig[v][1]cdv=szpy[1].value if cdlv==cdv then pdjg=true ist=true else pdjg=false ist=false end end end if pdjg==true then szpy=sl[i].address for x=1,#(ret)do xgpy=szpy+(ret[x].offset or ret[x][2])xglx=ret[x].type or ret[x][3]xgsz=ret[x].value or ret[x][1]xgdj=ret[x].freeze or ret[x][4]xgsj={{address=xgpy,flags=xglx,value=xgsz}}if xgdj==true then xgsj[1].freeze=xgdj gg.addListItems(xgsj)else gg.setValues(xgsj)end end xgjg=true end end if xgjg==true then gg.toast(_on.." 开启成功")else gg.toast(_on.." 开启失败")end end end local app = {} app.memorySearchMode = function(MEMORY) if (MEMORY == 2) then gg.setRanges(gg.REGION_JAVA_HEAP | gg.REGION_C_HEAP | gg.REGION_C_ALLOC | gg.REGION_C_DATA | gg.REGION_C_BSS | gg.REGION_PPSSPP) end if (MEMORY == -1) then gg.setRanges(gg.REGION_VIDEO) end if (MEMORY == -2) then gg.setRanges(gg.REGION_CODE_APP | gg.REGION_CODE_SYS) end if (MEMORY == 0) then gg.setRanges(gg.REGION_ANONYMOUS) end end function checkType(dataType) local type if dataType =="D" or dataType == "D" then type = gg.TYPE_DWORD end if dataType == "F" then type = gg.TYPE_FLOAT end if dataType == "E" then type = gg.TYPE_DOUBLE end if dataType == "B" or dataType == "B" then type = gg.TYPE_BYTE end if dataType == "W" or dataType == "W" then type = gg.TYPE_WORD os.exit() end return type end app.memorySearch = function(pkgName, isNewSearch, address, tb, dataType) gg.clearResults() gg.setVisible(false) local isSucess = gg.searchNumber(tb[1]["lv"], checkType(dataType), false, gg.SIGN_EQUAL, address, -1); local t = gg.getResults(9999); local tab = {} local data = {} for **1, #t do for j=2, #tb do tab[j] = {} tab[j].address = t[i].address + tb[j]["offset"] if(tb[j]["type"] == nil) then tab[j].flags = t[i].flags else tab[j].flags = checkType(tb[j]["type"]) end tab = gg.getValues(tab) if (tab[j].value == tb[j]["lv"]) then data[#data+1] = t[i].address end end end gg.clearResults() return isSucess, data end app.memoryWrite = function(pkgName, address, value, dataType) gg.setVisible(false) local t = {} t[1] ={} t[1].address = address t[1].flags = checkType(dataType) t[1].value = value return gg.setValues(t) end GG = {Read,Write} function GG.ReadWrite(Read,Writw)TZ = {} dataTZ = Read[1] offset = dataTZ[2] for **1,#Read do TZA = Read[i] LV = {["lv"] = TZA[1],["offset"] = TZA[2]-offset} table.insert(TZ, i, LV) end app.memorySearchMode(Memory) isSuuess,TUG = app.memorySearch(pkgName, true, 0, TZ, Type) if TUG[1] == nil then else for ii=1,#TUG do for iii=1,#Write do dataxg = Write[iii] value = dataxg[1] Deviant = dataxg[2] app.memoryWrite(pkgName,TUG[ii]+Deviant-offset,value,Type) end end gg.toast(ID.. "开启成功") end end function SearchWrite(Search, Write, Type) gg.clearResults() gg.setVisible(false) gg.searchNumber(Search[1][1], Type) local t = gg.getResults(9999) gg.clearResults() if t ~= nil then local r = {} for j=2, #Search do for i, v in ipairs(t) do r[i] = {} r[i].address = v.address + Search[j][2] - Search[1][2] r[i].flags = v.flags end r = gg.getValues(r) for i = #t, 1, -1 do if (tostring(r[i].value) ~= tostring(Search[j][1]) ) then table.remove(t, i) table.remove(r, i) end end end --写入数据 local r = {} for **1, #t do for j=1, #Write do r[#r+1] = {} r[#r].address = t[i].address + Write[j][2] - Search[1][2] r[#r].flags = t[i].flags r[#r].value = Write[j][1] r[#r].freeze = true--冻结的话修改后面加false end end gg.setValues(r) end end --gg.addListItems(r) 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 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("搜索η"..#data.."条ΔΘ") local t = {} local base = Search[1][2] for **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("not found", false) return false end else gg.toast("Not Found") 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"] xgdj = qmxg[x]["freeze"] if xgdj == nil or xgdj == "" then gg.setValues({[1] = {address = xgpy, flags = xglx, value = xgsz}}) else gg.addListItems({[1] = {address = xgpy, flags = xglx, freeze = xgdj, value = xgsz}}) end xgsl = xgsl + 1 xgjg = true end end function xqmnb(qmnb) gg.clearResults() gg.setVisible(false) gg.setRanges(qmnb[1]["memory"]) gg.searchNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. " Failed") 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"]) bbb=gg.getResultCount() if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. " Failed") 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) end end if xgjg == true then gg.toast(qmnb[2]["name"] .. "\nFound: ".. bbb.." Edited: " .. xgsl .. "") else gg.toast(qmnb[2]["name"] .. " Failed") end end end gg.clearResults() end function PS() end function setvalue(address,flags,value) local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end cxm = 1 function HOME() gg.toast("𝐃𝐀𝐑𝐊 𝐓𝐌") menu = gg.multiChoice({ "🗿𝗕𝗬𝗣𝗔𝗦𝗦 𝗠𝗘𝗡𝗨🖤", "🗿𝗟𝗢𝗕𝗕𝗬 𝗛𝗔𝗖𝗞🖤", "🗿𝗚𝗔𝗠𝗘 𝗛𝗔𝗖𝗞🖤", "🗿𝙀𝙓𝙄𝙏🖤", }, nil, os.date("🖤𝐅𝐑𝐄𝐄 𝑪𝑯𝑬𝑻🖤𝑫𝑨𝑹𝑲 𝐓𝐌🗿")) if menu == nil then else if menu[1] == true then bypass() end if menu[2] == true then cheats() end if menu[3] == true then hots() end if menu[4] == true then EXIT() end end cxm = -1 end function bypass() gg.toast("𝐃𝐀𝐑𝐊 𝐓𝐌") by = gg.multiChoice({ "🗿𝗕𝗬𝗣𝗔𝗦𝗦 𝗟𝗢𝗚𝗢🖤", "🗿𝗕𝗬𝗣𝗔𝗦𝗦 𝗟𝗢𝗕𝗕𝗬🖤", "🗿𝗙𝗜𝗫 𝗖𝗘𝗥𝗔𝗦𝗛🖤", "🗿𝗔𝗡𝗧𝗜 𝗖𝗛𝗘𝗖𝗘𝗥🖤", "🗿𝘽𝘼𝘾𝙆🖤", }, nil, os.date("🖤𝐌𝐄𝐍𝐔 𝑩𝒀𝑷𝑨𝑺𝑺🖤𝑫𝑨𝑹𝑲 𝐓𝐌🗿")) if by == nil then else if by[1] == true then logo() end if by[2] == true then fix() end if by[3] == true then lobby() end if by[4] == true then ban() end if by[5] == true then HOME() end end cxm = -1 end function fix() function setvalue(address,flags,value) local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end so = gg.getRangesList('libanogs.so')[1].start py = 0x3d5ab4 setvalue(so+py,4,-0) so = gg.getRangesList('libanogs.so')[1].start py = 0x3d5ab0 gg.alert("ACTIVE☑") end function logo() --fix crash so = gg.getRangesList('libanogs.so')[1].start py = 0x30a34 setvalue(so+py,4,-476053504) so = gg.getRangesList('libanogs.so')[1].start py = 0x30a38 setvalue(so+py,4,-516948194) gg.alert("ACTIVE☑ ") end function lobby() gg.setRanges(gg.REGION_CODE_APP) gg.searchNumber("1,849,753,701;1,262,769,007;1,953,066,569;1,869,496,576;1,145,783,379;1,699,900,517;1,953,656,688;1,635,017,028;1,399,811,649;1,699,171,140;1,885,688,436;1,148,482,159;862,024,801;1,869,496,576;1,145,783,379;1~3000000000:16384", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1, 0) revert = gg.getResults(50000, nil, nil, nil, nil, nil, nil, nil, nil) local t = gg.getResults(50000, nil, nil, nil, nil, nil, nil, nil, nil) for i, v in ipairs(t) do if v.flags == gg.TYPE_DWORD then v.value = "0" v.freeze = true end end gg.addListItems(t) t = nil gg.clearList() gg.clearResults() gg.clearList() gg.alert("LOBBY BYPASS ACTIVE☑") end function ban() gg.setRanges(gg.REGION_C_ALLOC) gg.searchNumber("67109633", gg.TYPE_DWORD) if gg.getResultCount() == 0 then gg.alert("ᴀɴᴛɪ ᴄʜᴇᴀᴛ ʀᴇsᴜʟᴛs: 0\nsᴛᴀᴛᴜs: sᴀғᴇ") else gg.setRanges(gg.REGION_C_ALLOC) gg.searchNumber("67109633", gg.TYPE_DWORD) if gg.getResultCount() == 1 then gg.alert("ᴀɴᴛɪ ᴄʜᴇᴀᴛ ʀᴇsᴜʟᴛs: 1\nsᴛᴀᴛᴜs: sᴀғᴇ") else gg.setRanges(gg.REGION_C_ALLOC) gg.searchNumber("67109633", gg.TYPE_DWORD) if gg.getResultCount() == 2 then gg.alert("ᴀɴᴛɪ ᴄʜᴇᴀᴛ ʀᴇsᴜʟᴛs: 2\nsᴛᴀᴛᴜs: sᴀғᴇ") else gg.setRanges(gg.REGION_C_ALLOC) gg.searchNumber("67109633", gg.TYPE_DWORD) if gg.getResultCount() == 3 then gg.alert("ᴀɴᴛɪ ᴄʜᴇᴀᴛ ʀᴇsᴜʟᴛs: 3\nsᴛᴀᴛᴜs: sᴀғᴇ") else gg.setRanges(gg.REGION_C_ALLOC) gg.searchNumber("67109633", gg.TYPE_DWORD) if gg.getResultCount() == 4 then gg.alert("ᴀɴᴛɪ ᴄʜᴇᴀᴛ ʀᴇsᴜʟᴛs: 4\nsᴛᴀᴛᴜs: sᴀғᴇ") else gg.setRanges(gg.REGION_C_ALLOC) gg.searchNumber("67109633", gg.TYPE_DWORD) if gg.getResultCount() == 5 then gg.alert("ᴀɴᴛɪ ᴄʜᴇᴀᴛ ʀᴇsᴜʟᴛs: 5\nsᴛᴀᴛᴜs: sᴀғᴇ") else gg.setRanges(gg.REGION_C_ALLOC) gg.searchNumber("67109633", gg.TYPE_DWORD) if gg.getResultCount() == 6 then gg.alert("ᴀɴᴛɪ ᴄʜᴇᴀᴛ ʀᴇsᴜʟᴛs: 6\nsᴛᴀᴛᴜs: sᴀғᴇ") else gg.setRanges(gg.REGION_C_ALLOC) gg.searchNumber("67109633", gg.TYPE_DWORD) if gg.getResultCount() == 7 then gg.alert("ᴀɴᴛɪ ᴄʜᴇᴀᴛ ʀᴇsᴜʟᴛs: 7\nsᴛᴀᴛᴜs: ʀɪsᴋ") else gg.alert("⛔⛔ ʜɪɢʜ ʙᴀɴ ʀɪsᴋ ʀᴇsᴛᴀʀᴛ ᴀɴᴅ ᴛʀʏ ᴀɢᴀɪɴ ⛔⛔") gg.processKill() os.exit() end end end end end end end end gg.clearResults() end function cheats() gg.toast("𝐃𝐀𝐑𝐊 𝐓𝐌") ch = gg.multiChoice({ "🗿WallHack🖤", "🗿AIMBOT🖤", "🗿NO RECOIL🖤", "🗿NO SPREAD🖤", "🗿FAST RELOAD🖤", "🗿FAST SCOPE🖤", "🗿SMALL CROSSHAIR🖤", "🗿WALLSHOT🖤", "🗿BACK🖤", }, nil, os.date(" • 🖤𝐋𝐎𝐁𝐁𝐘 𝑯𝑨𝑪𝑲🖤𝑫𝑨𝑹𝑲 𝐓𝐌🗿 • ")) if ch == nil then else if ch[1] == true then wallhack() end if ch[2] == true then aimbot() end if ch[3] == true then norecoil() end if ch[4] == true then nospread() end if ch[5] == true then noreload() end if ch[6] == true then fastscope() end if ch[7] == true then smallC() end if ch[8] == true then wallshot() end if ch[9] == true then HOME() end end end function wallhack() so = gg.getRangesList('libil2cpp.so')[1].start py = 0x18DA39C setvalue(so + py, 4, 0) gg.toast(" ᴡᴀʟʟʜᴀᴄᴋ☑") end function aimbot() so = gg.getRangesList('libil2cpp.so')[1].start py = 0x6D4E904 setvalue(so + py, 16, 0) gg.toast(" ᴀɪᴍʙᴏᴛ☑") end function norecoil() gg.toast(" ɴᴏ ʀᴇᴄᴏɪʟ☑") end function nospread() so=gg.getRangesList('libil2cpp.so')[1].start py=0x2BE3E18 setvalue(so+py,16,1) so=gg.getRangesList('libil2cpp.so')[1].start py=0x2BF80B4 setvalue(so+py,16,1) gg.toast(" ɴᴏ sᴘʀᴇᴀᴅ☑") end function noreload() so=gg.getRangesList('libil2cpp.so')[1].start py=0x1C63354 setvalue(so+py,4,-476051940) so=gg.getRangesList('libil2cpp.so')[1].start py=0x1C63358 setvalue(so+py,4,-516948194) gg.toast(" ɴᴏ ʀᴇʟᴏᴀᴅ☑") end function fastscope() so = gg.getRangesList('libil2cpp.so')[1].start py = 0x28ebe64 setvalue(so + py, 10, 0x0) gg.toast(" ғᴀsᴛ sᴄᴏᴘᴇ☑") end function smallC() so = gg.getRangesList('libil2cpp.so')[1].start py = 0x56D1CC8 setvalue(so+py,16,0) gg.toast("sᴍᴀʟʟ ᴄʀᴏssʜᴀɪʀ ON☑") end function wallshot() gg.setRanges(gg.REGION_C_BSS) gg.searchNumber("2", gg.TYPE_FLOAT) gg.editAll("-99", gg.TYPE_FLOAT) gg.clearResults() gg.toast("ᴡᴀʟʟsʜᴏᴛ ON") end function hots() gg.toast("𝐃𝐀𝐑𝐊 𝐓𝐌") hot = gg.multiChoice({ "🗿MAGIC BULLET🖤 ", "🗿BULLET TRACK🖤 ", "🗿FIRE RATE🖤 ", "🗿REDLIGHT🖤", "🗿SPEEDHACK🖤 ", "🗿SHOW FPS🖤", "🗿MP/BR TAG🖤", "🗿SLIDE SPEED🖤", "🗿HIGH JUMP🖤", "🗿RED WALLHACK🖤", "🗿BACK🖤", }, nil, os.date(" • 🖤ɢαмe 𝑯𝑨𝑪𝑲🖤𝑫𝑨𝑹𝑲 𝐓𝐌🗿 • ")) if hot == nil then else if hot[1] == true then magicbullet() end if hot[2] == true then bullettrack() end if hot[3] == true then rapidfire() end if hot[4] == true then redlight() end if hot[5] == true then speedhack() end if hot[6] == true then showfps() end if hot[7] == true then namebr() end if hot[8] == true then longslide() end if hot[9] == true then highjump() end if hot[10] == true then redwall() end if hot[11] == true then HOME() end end end function rapidfire() so = gg.getRangesList('libil2cpp.so')[1].start py = 0x1f60308 setvalue(so+py,4,0) so=gg.getRangesList('libil2cpp.so')[1].start py = 0x1f61f04 setvalue(so+py,4,0) gg.toast("ʀᴀᴘɪᴅ ғɪʀᴇ☑ ") end function highjump() hj = gg.prompt({"High Jump [1; 10]"}, {[1] = data}, {[1] = "number"}) if hj == nil then else data = hj[1] gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("50", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1, 0) local t = gg.getResults(100000, nil, nil, nil, nil, nil, nil, nil, nil) gg.addListItems(t) t = nil local copy = false local t = gg.getListItems() if not copy then gg.removeListItems(t) end for i, v in ipairs(t) do v.address = v.address + 0x8 if copy then v.name = v.name..' #2' end end gg.addListItems(t) t = nil copy = nil r = gg.getListItems() gg.loadResults(r) gg.clearList() gg.refineNumber("10", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1, 0) local t = gg.getResults(100000, nil, nil, nil, nil, nil, nil, nil, nil) gg.addListItems(t) t = nil local copy = false local t = gg.getListItems() if not copy then gg.removeListItems(t) end for i, v in ipairs(t) do v.address = v.address + 0x4 if copy then v.name = v.name..' #2' end end gg.addListItems(t) t = nil copy = nil r = gg.getListItems() gg.loadResults(r) gg.clearList() gg.refineNumber("7.5", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1, 0) local t = gg.getResults(100000, nil, nil, nil, nil, nil, nil, nil, nil) gg.addListItems(t) t = nil local copy = false local t = gg.getListItems() if not copy then gg.removeListItems(t) end for i, v in ipairs(t) do v.address = v.address + 0x4 if copy then v.name = v.name..' #2' end end gg.addListItems(t) t = nil copy = nil r = gg.getListItems() gg.loadResults(r) gg.clearList() gg.getResults(100000) gg.editAll(tostring(hj[1]), gg.TYPE_FLOAT) gg.clearResults() gg.clearList() end end function namebr() end function longslide() so=gg.getRangesList('libil2cpp.so')[1].start py=0x2097C74 setvalue(so+py,4,-482082104) py=0x2097C78 setvalue(so+py,4,-516948194) gg.toast("ʟᴏɴɢ sʟɪᴅᴇ☑") end function showfps() so=gg.getRangesList("libil2cpp.so")[1].start py=0x2209994 setvalue(so+py,4,0) gg.toast("sʜᴏᴡ ғᴘs☑") end function redlight() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("256;4", gg.TYPE_FLOAT) gg.refineNumber("4", gg.TYPE_FLOAT) gg.getResults(9999) gg.editAll("100", gg.TYPE_FLOAT) gg.clearResults() gg.toast("ɴʀᴇᴅʟɪɢʜᴛ☑") end function bullettrack() end function speedhack() end function magicbullet() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("0.12999999523", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(1020) gg.editAll("2", gg.TYPE_FLOAT) gg.clearResults() gg.toast("ᴍᴀɢɪᴄ ʙᴜʟʟᴇᴛ ☑") end function redwall() gg.toast("Red wallhack☑") end function EXIT() gg.alert(" 𝙏𝙀𝙇𝙀𝙂𝙍𝘼𝙈 : @Mehras_YT @BNI_Owner", ("🇨 🇴 🇵 🇾 "))gg.copyText(("t.me/@MehrasBENYAMIN")) ex = gg.alert("∂σ уσυ ωαηт тσ єχιт? ","🇾 🇪 🇸",nil,"🇳 🇴") if ex == nil then else if ex == 1 then os.exit() end if ex == 3 then end end end print[[ FID BACK 👉PV @BRK_OWNER @Mehras_YT ]] while true do if gg.isVisible(true) then cxm = 1 gg.setVisible(false) end if cxm == 1 then HOME() end end