if os.date("%Y%m%d %H%M%S") > "20230729 23.59.59" then Msg = "EXPIRED" print(Msg) gg.alert(Msg, "", "", "") gg.sleep("750") gg.alert("تایم اسکریپت گذشته") os.remove(gg.getFile():match("[^/]+$")) Crash() --Don't Use "os.exit" end function PS() end function setvalue(address,flags,value) PS('TANG INA MO LUDE😐)') local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) 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 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"]) yyy=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: "..yyy.." 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"]) yyy=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: "..yyy.." 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 = {} 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 i =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 i =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 i =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 i =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 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("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"]) yyy=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: "..yyy.." 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 gg.alert("ıllıllı VIP CHEAT ıllıllı") vip = 1 function HOME() MENU = gg.multiChoice({ "❖ 𝑩𝒚𝒑𝒂𝒔𝒔 𝑴𝒆𝒏𝒖 ❖", "❖ 𝑴𝒆𝒏𝒖 𝑪𝒉𝒆𝒂𝒕 𝑳𝒐𝒃𝒃𝒚 ❖", "❖ 𝑴𝒆𝒏𝒖 𝑪𝒉𝒆𝒂𝒕 𝑮𝒂𝒎𝒆 ❖", "❖ 𝑨𝒃𝒐𝒖𝒕 ❖", "✘ 𝑬𝒙𝒊𝒕 ✘", },nil, (os.date("𝙼𝙰𝙷𝙳𝙸 𝚈𝚃 𝙰𝙽𝙳 𝚁𝙴𝙽𝚉𝚄"))) if MENU == nil then else if MENU[1] == true then m1() end if MENU[2] == true then m2() end if MENU[3] == true then m3() end if MENU[4] == true then m4() end if MENU[5] == true then EXIT() end end vip = -1 end function m1() byp = gg.multiChoice({ "ϟ 𝐋𝐎𝐆𝐎 𝐁𝐘𝐏𝐀𝐒𝐒 𝐔𝐒𝐄 𝐋𝐎𝐆𝐎 𝐓𝐈𝐌𝐈 ϟ ", "ϟ 𝐅𝐈𝐗 𝐂𝐑𝐀𝐒𝐇 𝐔𝐒𝐄 𝐋𝐎𝐆𝐈𝐍 ϟ ", "ϟ 𝐓𝐄𝐒𝐓 𝐀𝐍𝐓𝐈 𝐂𝐇𝐄𝐀𝐓 𝐔𝐒𝐄 𝐋𝐎𝐁𝐁𝐘 ϟ", "↺ 𝙗𝙖𝙘𝙠 ↺", },nil, (os.date("𝙼𝙰𝙷𝙳𝙸 𝚈𝚃 𝙰𝙽𝙳 𝚁𝙴𝙽𝚉𝚄"))) if byp == nil then else if byp[1] == true then logo() end if byp[2] == true then login() end if byp[3] == true then check() end if byp[4] == true then back() end end end function logo() so = gg.getRangesList('libil2cpp.so')[1].start py = 0x79987 setvalue(so + py, 4, -1) gg.alert("gg logo ON") end function login() so = gg.getRangesList('libanogs.so')[1].start py = 0x7655 setvalue(so + py, 4, 0) gg.alert("fixCRASH on") end function check() gg.setVisible(false) gg.setRanges(gg.REGION_C_ALLOC) gg.searchNumber("67109633", gg.TYPE_DWORD) result = gg.getResultCount() if 2< result then gg.alert("ᴀɴᴛɪᴄʜᴇᴀᴛ ʀᴇꜱᴜʟᴛ ➪ " .. result .. "\nꜱᴛᴀᴛᴜꜱ ➪ ʀɪsᴋy ✘\nʀᴇʟᴏɢ ➪ yᴇs") gg.processKill() os.exit() else gg.alert("ᴀɴᴛɪᴄʜᴇᴀᴛ ʀᴇꜱᴜʟᴛ ➪ " .. result .. "\nꜱᴛᴀᴛᴜꜱ ➪ sᴀғᴇ ✔︎\nʀᴇʟᴏɢ ➪ ɴᴏ ") gg.clearResults() end end function back() HOME() end function m2() ch1 = gg.multiChoice({ "ϟ 𝐀𝐈𝐌𝐁𝐎𝐓 ϟ", "ϟ 𝐍𝐎 𝐒𝐏𝐑𝐄𝐀𝐃 ϟ", "ϟ 𝐍𝐎 𝐑𝐄𝐋𝐎𝐀𝐃 ϟ", "ϟ 𝐍𝐎 𝐑𝐄𝐂𝐎𝐈𝐋 ϟ", "ϟ 𝐌𝐀𝐆𝐈𝐂 𝐁𝐔𝐋𝐋𝐄𝐓 ϟ", "↺ 𝙗𝙖𝙘𝙠 ↺", },nil, (os.date("𝙼𝙰𝙷𝙳𝙸 𝚈𝚃 𝙰𝙽𝙳 𝚁𝙴𝙽𝚉𝚄"))) if ch1 == nil then else if ch1[1] == true then aim() end if ch1[2] == true then hip() end if ch1[3] == true then rel() end if ch1[4] == true then rec() end if ch1[5] == true then magic() end if ch1[6] == true then back1() end end end function magic() local SEARCH = {{1041462460, 0}, {1050924810, 4}} local WRITE = {{1071462460, 0}} local TYPE = 4 SearchWrite(SEARCH, WRITE, TYPE) gg.clearResults() local SEARCH = {{1040724263, 0}} local WRITE = {{1059936128, 0}} local TYPE = 4 SearchWrite(SEARCH, WRITE, TYPE) gg.clearResults()------- magic gg.setRanges(gg.REGION_VIDEO) gg.searchNumber("16", gg.TYPE_FLOAT) gg.refineNumber("16", gg.TYPE_FLOAT) gg.getResults(9999) gg.editAll("0", gg.TYPE_FLOAT) gg.clearResults() --------FIX LAG end function aim() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("1.40129846e-45;0.44999998808:5", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1, 0) gg.refineNumber("0.44999998808", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1, 0) gg.getResults(99999, nil, nil, nil, nil, nil, nil, nil, nil) gg.editAll("3", gg.TYPE_FLOAT) gg.clearResults() gg.toast("AIM BOT ACTIVATED✅") end function hip() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("2.29999995232;2.5;1", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1, 0) gg.refineNumber("1.0", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1, 0) gg.getResults(99999, nil, nil, nil, nil, nil, nil, nil, nil) gg.editAll("9.99999972e-10", gg.TYPE_FLOAT) gg.clearResults() gg.toast("NO SPREED ACTIVATED✅") end function rel() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("3.09999990463;3.40000009537", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1, 0) gg.refineNumber("3.09999990463;3.40000009537", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1, 0) gg.getResults(99999, nil, nil, nil, nil, nil, nil, nil, nil) gg.editAll("9.99999972e-10", gg.TYPE_FLOAT) gg.clearResults() gg.toast("NO RELOAD ACTIVATED✅") end function rec() 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("ᴍᴀɢɪᴄ ʙᴜʟʟᴇᴛ ") gg.toast("NO RECOIL ACTIVATED✅") end function back1() HOME() end function m3() ch2 = gg.multiChoice({ "ϟ 𝐑𝐄𝐃 𝐋𝐈𝐆𝐇𝐓 ϟ", "ϟ 𝐑𝐄𝐃 𝐋𝐈𝐍𝐄 ϟ", "ϟ 𝐌𝐀𝐆𝐈𝐂 𝐁𝐔𝐋𝐋𝐄𝐓 ϟ", "ϟ 𝐒𝐏𝐄𝐄𝐃 𝐇𝐀𝐂𝐊 ϟ", "ϟ 𝐇𝐈𝐆𝐇 𝐉𝐔𝐌𝐏 ϟ", "ϟ 𝐁𝐋𝐀𝐂𝐊 𝐁𝐎𝐃𝐘 ϟ", "ϟ 𝐀𝐍𝐓𝐄𝐍 ϟ", "↺ 𝙗𝙖𝙘𝙠 ↺", },nil, (os.date("𝙼𝙰𝙷𝙳𝙸 𝚈𝚃 𝙰𝙽𝙳 𝚁𝙴𝙽𝚉𝚄"))) if ch2 == nil then else if ch2[1] == true then light() end if ch2[2] == true then line() end if ch2[3] == true then magic() end if ch2[4] == true then speed() end if ch2[5] == true then jump() end if ch2[6] == true then black() end if ch2[7] == true then anten() end if ch2[8] == true then back2() end end end function light() 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("RED LIGHT ACTIVATED✅") end function line() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("4575657222490554368;1065353216:9", gg.TYPE_QWORD, false, gg.SIGN_EQUAL, 0, -1, 0) gg.refineNumber("4575657222490554368;1065353216", gg.TYPE_QWORD, false, gg.SIGN_EQUAL, 0, -1, 0) gg.getResults(9999) gg.editAll("4575657222520438784;1133903872", gg.TYPE_QWORD) gg.clearResults() gg.toast("RED LINE ACTIVATED✅") end function magic() end function speed() gg.setRanges(gg.REGION_ANONYMOUS) V=gg.prompt({"🏃??sᴇᴛ sᴘᴇᴇᴅ ᴛᴏ🏃🏻‍♀[5;20]","ɴᴏ ʟᴀɢ(ɢᴏᴏᴅ ғᴏʀ ʙʀ)"},{Y},{"number","checkbox"}) for i = 1,5 do gg.sleep(100) gg.setVisible(false) gg.toast("Starting SpeedHack: "..V[1]) end if V[2] == true then gg.searchNumber("4.28000020981;3.20000004768", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) else gg.searchNumber("4.28000020981;3.20000004768", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) end -------------------------------(NoLag_Test)------------------------ speedmenubar=tonumber(V[1]) --------------------------------------------------------------------------- if speedmenubar == 5 then gg.getResults(999) gg.editAll("5", gg.TYPE_FLOAT) gg.clearResults() gg.toast("Active") else end if speedmenubar == 6 then gg.getResults(999) gg.editAll("6", gg.TYPE_FLOAT) gg.clearResults() gg.toast("Active") else end if speedmenubar == 7 then gg.getResults(999) gg.editAll("7", gg.TYPE_FLOAT) gg.clearResults() gg.toast("Active") else end if speedmenubar == 8 then gg.getResults(999) gg.editAll("8", gg.TYPE_FLOAT) gg.clearResults() gg.toast("Active") else end if speedmenubar == 9 then gg.getResults(999) gg.editAll("9", gg.TYPE_FLOAT) gg.clearResults() gg.toast("Active") else end if speedmenubar == 10 then gg.getResults(999) gg.editAll("10", gg.TYPE_FLOAT) gg.clearResults() gg.toast("Active") else end if speedmenubar == 11 then gg.getResults(999) gg.editAll("11", gg.TYPE_FLOAT) gg.clearResults() gg.toast("Active") else end if speedmenubar == 12 then gg.getResults(999) gg.editAll("12", gg.TYPE_FLOAT) gg.clearResults() gg.toast("Active") else end if speedmenubar == 13 then gg.getResults(999) gg.editAll("13", gg.TYPE_FLOAT) gg.clearResults() gg.toast("Active") else end if speedmenubar == 14 then gg.getResults(999) gg.editAll("14", gg.TYPE_FLOAT) gg.clearResults() gg.toast("Active") else end if speedmenubar == 15 then gg.getResults(999) gg.editAll("15", gg.TYPE_FLOAT) gg.clearResults() gg.toast("Active") else end if speedmenubar == 16 then gg.getResults(999) gg.editAll("16", gg.TYPE_FLOAT) gg.clearResults() gg.toast("Active") else end if speedmenubar == 17 then gg.getResults(999) gg.editAll("17", gg.TYPE_FLOAT) gg.clearResults() gg.toast("Active") else end if speedmenubar == 18 then gg.getResults(999) gg.editAll("18", gg.TYPE_FLOAT) gg.clearResults() gg.toast("Active") else end if speedmenubar == 19 then gg.getResults(999) gg.editAll("19", gg.TYPE_FLOAT) gg.clearResults() gg.toast("Active") else end if speedmenubar == 20 then gg.getResults(999) gg.editAll("20", gg.TYPE_FLOAT) gg.clearResults() gg.toast("Active") else end end function jump() jumpm = gg.alert("Choose Mode ","MP","BR") if jumpm == 1 then gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("7.5;0.8", gg.TYPE_FLOAT) gg.refineNumber("0.8", gg.TYPE_FLOAT) gg.getResults(9999) gg.editAll("4", gg.TYPE_FLOAT) gg.clearResults() gg.toast("Active") end if jumpm == 2 then gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("1,065,353,216;1,069,547,520;1,050,253,722:9", gg.TYPE_DWORD) gg.refineNumber("1,065,353,216", gg.TYPE_DWORD) gg.getResults(9999) gg.editAll("1,082,130,432", gg.TYPE_DWORD) gg.clearResults() gg.toast("Active") end end function black() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("1048592;1048596;1048680;1048700", gg.TYPE_DWORD) gg.getResults(9999) gg.editAll("0", gg.TYPE_DWORD) gg.clearResults() gg.toast("BLAC SKY ACTIVATED✅") end function anten() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("10,126,001;100,423;10,126,001::9", gg.TYPE_DWORD) gg.getResults(10000) gg.editAll("10,126,002;100,424;10,126,002", gg.TYPE_DWORD) gg.clearResults() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("73890;10126001;1,057,803,469::31", gg.TYPE_DWORD) gg.refineNumber("73890", gg.TYPE_DWORD) gg.getResults(10000) gg.editAll("74013", gg.TYPE_DWORD) gg.clearResults() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("2;100,423;73,877;73,903;73,890::21", gg.TYPE_DWORD) gg.getResults(10000) gg.editAll("100,583;100,424;74,002;74,024;74,013", gg.TYPE_DWORD) gg.clearResults() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("10,126,001;56;1,880,000,001;45;0;0;0;0;0;0;0;0;0::65", gg.TYPE_DWORD) gg.getResults(10000) gg.editAll("0;0;0;0;0;400,010;200,157;300,150;5", gg.TYPE_DWORD) gg.setVisible(false) gg.clearResults() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("0.18500000238", gg.TYPE_FLOAT) gg.refineNumber("0.18500000238", gg.TYPE_FLOAT) gg.getResults(9999) gg.editAll("1.8", gg.TYPE_FLOAT) gg.clearResults() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("0.18500000238", gg.TYPE_FLOAT) gg.refineNumber("0.18500000238", gg.TYPE_FLOAT) gg.getResults(9999) gg.editAll("1.8", gg.TYPE_FLOAT) gg.clearResults() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("0.1439999938", gg.TYPE_FLOAT) gg.refineNumber("0.1439999938", gg.TYPE_FLOAT) gg.getResults(9999) gg.editAll("2", gg.TYPE_FLOAT) gg.clearResults() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("0.1439999938", gg.TYPE_FLOAT) gg.refineNumber("0.1439999938", gg.TYPE_FLOAT) gg.getResults(9999) gg.editAll("2", gg.TYPE_FLOAT) gg.clearResults() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("1041462460", gg.TYPE_DWORD) gg.refineNumber("1041462460", gg.TYPE_DWORD) gg.getResults(9999) gg.editAll("1092616192", gg.TYPE_DWORD) gg.clearResults() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("1041462460", gg.TYPE_DWORD) gg.refineNumber("1041462460", gg.TYPE_DWORD) gg.getResults(9999) gg.editAll("1092616192", gg.TYPE_DWORD) gg.clearResults() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("1041462460", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.refineNumber("1041462460", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(99999) gg.editAll("1071462460", gg.TYPE_DWORD) gg.clearResults() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("1041462460", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.refineNumber("1041462460", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(999999) gg.editAll("1071462460", gg.TYPE_DWORD) gg.clearResults() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("1041462460", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.refineNumber("1041462460", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(99999) gg.editAll("1071462460", gg.TYPE_DWORD) gg.clearResults() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("1041462460", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.refineNumber("1041462460", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(9999) gg.editAll("1071462460", gg.TYPE_DWORD) gg.clearResults() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("1041462460",gg.TYPE_DWORD) var = gg.getResults(9999) gg.editAll("1077936128",gg.TYPE_DWORD)gg.clearResults() -- [𝐋𝐨𝐠-𝐇𝐨𝐨𝐤] 𝐁𝐲 𝐎𝐧𝐥𝐲𝐓𝐫𝐢𝐬 gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("0.1439999938",gg.POINTER_WRITABLE,TYPE_FLOAT,gg.SIGN_EQUAL,0,-1) var = gg.getResults(1000) gg.editAll("3",gg.POINTER_WRITABLE)gg.clearResults() -- [𝐋𝐨𝐠-𝐇𝐨𝐨𝐤] 𝐁𝐲 𝐎𝐧𝐥𝐲𝐓𝐫𝐢𝐬 gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("1041462460",gg.TYPE_DWORD,TYPE_DWORD,gg.SIGN_EQUAL,0,-1) var = gg.getResults(1000) gg.editAll("1059936128",gg.TYPE_DWORD)gg.clearResults() -- [𝐋𝐨𝐠-𝐇𝐨𝐨𝐤] 𝐁𝐲 𝐎𝐧𝐥𝐲𝐓𝐫𝐢𝐬 gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber("1040724263",gg.TYPE_DWORD,TYPE_DWORD,gg.SIGN_EQUAL,0,-1) var = gg.getResults(1000) gg.editAll("1059936128",gg.TYPE_DWORD)gg.clearResults() end function back2() HOME() end function m4() ab = gg.multiChoice({ "ϟ 𝐌𝐘 𝐂𝐇𝐀𝐍𝐄𝐋 ϟ", "ϟ 𝐓𝐄𝐋𝐋 𝐌𝐄 ϟ", "↺ 𝙗𝙖𝙘𝙠 ↺", },nil, (os.date("𝙼𝙰𝙷𝙳𝙸 𝚈𝚃 𝙰𝙽𝙳 𝚁𝙴𝙽𝚉𝚄"))) if ab == nil then else if ab[1] == true then chan() end if ab[2] == true then me() end if ab[3] == true then back3() end end end function chan() -----𝙼𝙰𝙷𝙳𝙸 𝚈𝚃 𝙰𝙽𝙳 𝚁𝙴𝙽𝚉𝚄 end function me() gg.alert("𝙼𝙰𝙷𝙳𝙸 𝚈𝚃 𝙰𝙽𝙳 𝚁𝙴𝙽𝚉𝚄") end function back3() HOME() end function EXIT() ex = gg.alert("𝙚𝙭𝙞𝙩 ?","𝙮𝙚𝙨","𝙣𝙤") if ex == nil then else if ex == 1 then exit() end if ex == 3 then end end end function exit() gg.alert("GoodBye 👋🏻") os.exit() end while true do if gg.isVisible(true) then vip = 1 gg.setVisible(false) end if vip == 1 then HOME() end end