Lock={ debug.getinfo(gg.toast).short_src, debug.getinfo(gg.getResults).short_src, debug.getinfo(gg.getValues).short_src, debug.getinfo(os.exit).short_src, debug.getinfo(gg.refineNumber).short_src, debug.getinfo(gg.refineAddress).short_src, debug.getinfo(gg.alert).short_src } for i,v in pairs(Lock) do if v~="toast" and v~="getResults" and v~=debug.getinfo(1).short_src and v~=gg.getFile() then for **1,999999999 do gg.toast("FUK U NOOBS LOGGER\nYOR MOM IS @ONEECUTEWA☕") end return end end if ('a'):rep(2)~='aa' then for **1,999999999 do gg.toast("FUK U NOOBS LOGGER\nYOR MOM IS @ONEECUTEWA☕") end return end CCH1=string.rep("NCCT",99999) CCH=string.rep(CCH1,99) for **1,9999 do gg.refineAddress({[1]=CCH}) end for **1,9999 do gg.refineNumber({[1]=CCH}) end gg.setRanges(gg.REGION_C_ALLOC | gg.REGION_CODE_APP | 32 | gg.REGION_VIDEO) 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.."Failed to Open")else sl=gg.getResults(11082001)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.."Successfully Opened")else gg.toast(_on.."Failed to Open")end end end function libBase(offset, type, value, name) a = os.clock() gg.setValues({ [1] = { address = gg.getRangesList('libUE4.so' or 'libtersafe.so')[1].start + offset, flags = type, value = value}}) b = os.clock() - a gg.toast(name .. ' мσ∂ιfιє∂ nιи '..b) 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.setRanges(qmnb[1]["memory"]) gg.searchNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. "Operation 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"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. "Operation 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"] .. "Opened, value is modified" .. xgsl .."Article data") else gg.toast(qmnb[2]["name"] .. "Opened, value is modified") 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 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) gg.toast("Opened, value is modified"..#t.."Article data") gg.addListItems(t) else gg.toast("Opened, value is modified", 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"]) abc=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: "..abc.." 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 gg.setRanges(gg.REGION_CODE_APP) local hex = {} function patch(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 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(Name.." modify"..#data.."Article 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(Name.."Failed to open", false) return false end else gg.toast(Name.."Failed to open") 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"] .. "Failed to open") 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"] .. "Smile reminder: open successfully, modify a total" .. xgsl .. "ArticleΔΘ") else gg.toast(qmnb[2]["name"] .. "Smile reminder: failed to open") end end end end function PS() end function setvalue(address,flags,value) PS('Modify address value (address, value 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 SearchWrite(Search, Write, Type, Name) 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("Found"..#data.."Code 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) gg.toast(Name.."Successfully opened! already"..#t.."Code Data") gg.addListItems(t) else gg.toast(Name.."Failed to open", false) return false end else gg.toast(Name.."Failed to open") return false end end function Fxs(Search, Write,Neicun,Mingcg,Shuzhiliang) gg.clearResults() gg.setRanges(Neicun) gg.setVisible(false) gg.searchNumber(Search[1][1], Search[1][3]) 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 = Search[k][3] 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(Mingcg.."????"..#data.."") local t = {} local base = Search[1][2] if Shuzhiliang == "" and Shuzhiliang > 0 and Shuzhiliang < #data then Shuzhiliang=Shuzhiliang else Shuzhiliang=#data end for **1, Shuzhiliang do for k, w in ipairs(Write) do offset = w[2] - base t[#t+1] = {} t[#t].address = data[i] + offset t[#t].flags = w[3] t[#t].value = w[1] if (w[4] == true) then local item = {} item[#item+1] = t[#t] item[#item].freeze = true gg.addListItems(item) end end end gg.setValues(t) gg.toast(Mingcg.."????"..#t.."") gg.addListItems(t) else gg.toast(Mingcg.."????", false) return false end else gg.toast("????") 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.setRanges(qmnb[1]["memory"]) gg.searchNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. "Failed to open") 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"] .. "Failed to open") 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"] .. "Successfully opened, modified in total" .. xgsl .. "Article data") else gg.toast(qmnb[2]["name"] .. "No data found, failed to open") 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 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) gg.toast("Successfully opened, modified in total"..#t.."Article data") gg.addListItems(t) else gg.toast("No data found, failed to open", false) return false end else gg.toast("Not Found") return false end 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('⚠️ ᴇʀʀᴏʀ : ' .. lib .. ' ⚠️') gg.alert('ᴇʀʀᴏʀ : ' .. lib .. '\n ᴘʟᴇᴀꜱᴇ ꜱᴇʟᴇᴄᴛ ᴄᴀʟʟ ᴏꜰ ᴅᴜᴛʏ ᴘʀᴏᴄᴇꜱꜱ') gg.toast('ᴇʀʀᴏʀ : ' .. lib .. '\n ᴘʟᴇᴀꜱᴇ ꜱᴇʟᴇᴄᴛ ᴄᴀʟʟ ᴏꜰ ᴅᴜᴛʏ ᴘʀᴏᴄᴇꜱꜱ ') 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) 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 not (found <= checked) do local all = gg.getResults(8) local total = #all local start = checked if total < checked + used then break end for i, v in ipairs(all) do v.address = v.address + myoffset end gg.loadResults(all) while total > start do local good = true local offset = all[1 + start].address - 1 if len > used 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 setvalue(address,flags,value) local Cutee={} Cutee[1]={} Cutee[1].address=address Cutee[1].flags=flags Cutee[1].value=value gg.setValues(Cutee) end function read_file(path) local file = io.open(path, "rb") if not file then return nil end local content = file:read("*a") file:close() return content 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 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.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) end end if xgjg == true then gg.toast(qmnb[2]["name"] .. "开启成功,共修改" .. xgsl .. "条数据") else gg.toast(qmnb[2]["name"] .. "开启失败") end end end end function NCCT(original,NUB) gg.setRanges(16384 | 8) gg.searchNumber("h"..original) gg.getResults(50000) gg.editAll("h"..NUB,1) gg.clearResults() end gg.setRanges(65536) gg.searchNumber("103,417", 4) gg.getResults(50000) gg.editAll("0", 4)-- gg.clearResults() gg.setRanges(65536) gg.searchNumber("168,981", 4) gg.getResults(50000) gg.editAll("0", 4)-- gg.clearResults() gg.setRanges(65536) gg.searchNumber("122,231", 4) gg.getResults(50000) gg.editAll("0", 4)-- gg.clearResults() gg.setRanges(65536) gg.searchNumber("84,454", 4) gg.getResults(50000) gg.editAll("0", 4)-- gg.clearResults() gg.setRanges(65536) gg.searchNumber("104,131", 4) gg.getResults(50000) gg.editAll("0", 4)-- gg.clearResults() gg.setRanges(65536) gg.searchNumber("122,394", 4) gg.getResults(50000) gg.editAll("0", 4)-- gg.clearResults() gg.setRanges(65536) gg.searchNumber("169,952", 4) gg.getResults(50000) gg.editAll("0", 4)-- gg.clearResults() gg.setRanges(65536) gg.searchNumber("106,245", 4) gg.getResults(50000) gg.editAll("0", 4)-- gg.clearResults() gg.toast("■□□□□□□10%") gg.toast("■■□□□□□20%") gg.toast("■■■□□□□40%") gg.setRanges(gg.REGION_C_ALLOC) gg.searchNumber("620137442967552;564058054983680", gg.TYPE_QWORD) gg.refineNumber("620137442967552", gg.TYPE_QWORD) gg.getResults(50000) gg.editAll("288232579469934592", gg.TYPE_QWORD) gg.clearResults() gg.setRanges(gg.REGION_C_ALLOC) gg.searchNumber("572854148005888;582749752655872", gg.TYPE_QWORD) gg.refineNumber("572854148005888", gg.TYPE_QWORD) gg.getResults(50000) gg.editAll("288233678981562368", gg.TYPE_QWORD) gg.clearResults() gg.setRanges(gg.REGION_C_ALLOC) gg.searchNumber("579451217772544;564058054983680", gg.TYPE_QWORD) gg.refineNumber("579451217772544", gg.TYPE_QWORD) gg.getResults(50000) gg.editAll("288233678981562368", gg.TYPE_QWORD) gg.clearResults() gg.setRanges(gg.REGION_C_ALLOC) gg.searchNumber("303473799200768;282587373240320", gg.TYPE_QWORD) gg.refineNumber("303473799200768", gg.TYPE_QWORD) gg.getResults(50000) gg.editAll("288233678981562368", gg.TYPE_QWORD) gg.clearResults() gg.setRanges(gg.REGION_C_ALLOC) gg.searchNumber("577252194516992;288233678981562368", gg.TYPE_QWORD) gg.refineNumber("577252194516992", gg.TYPE_QWORD) gg.getResults(50000) gg.editAll("288233678981562368", gg.TYPE_QWORD) gg.clearResults() gg.setRanges(gg.REGION_C_ALLOC) gg.searchNumber("648523848194457600;288233678981562368", gg.TYPE_QWORD) gg.refineNumber("648523848194457600", gg.TYPE_QWORD) gg.getResults(50000) gg.editAll("288232579469934592", gg.TYPE_QWORD) gg.clearResults() gg.setRanges(gg.REGION_C_ALLOC) gg.searchNumber("1127012303372288;564058054983680",gg.TYPE_QWORD) gg.refineNumber("1127012303372288",gg.TYPE_QWORD) gg.getResults(50000) gg.editAll("288233678981562368",gg.TYPE_QWORD) gg.clearResults() gg.clearResults() gg.setRanges(gg.REGION_C_ALLOC) gg.searchNumber("1953391971", gg.TYPE_DWORD) gg.refineNumber("1953391971", gg.TYPE_DWORD) gg.getResults(50000) gg.editAll("1953789044", gg.TYPE_DWORD) gg.clearResults() gg.setRanges(gg.REGION_C_ALLOC) gg.searchNumber("1818716462", gg.TYPE_DWORD) gg.refineNumber("1818716462", gg.TYPE_DWORD) gg.getResults(50000) gg.editAll("1953789044", gg.TYPE_DWORD) gg.clearResults() gg.setRanges(gg.REGION_C_ALLOC) gg.searchNumber("909391408") gg.getResults(50000) gg.editAll("1089886885", gg.TYPE_DWORD) gg.clearResults() gg.setRanges(gg.REGION_C_ALLOC) gg.searchNumber("144,387;262,403", gg.TYPE_DWORD) gg.refineNumber("144,387", gg.TYPE_DWORD) gg.getResults(5000) gg.editAll("84,149,249", gg.TYPE_DWORD) gg.clearResults() gg.setRanges(gg.REGION_C_ALLOC) gg.searchNumber("196864;16842753::5", gg.TYPE_DWORD) gg.refineNumber("196864", gg.TYPE_DWORD) gg.getResults(50000) gg.editAll("67175425", gg.TYPE_DWORD) gg.clearResults() gg.setRanges(gg.REGION_C_ALLOC) gg.searchNumber("144,387;133,378", gg.TYPE_DWORD) gg.refineNumber("133,378", gg.TYPE_DWORD) gg.getResults(5000) gg.editAll("84,149,249", gg.TYPE_DWORD) gg.clearResults() gg.setRanges(gg.REGION_C_ALLOC) gg.searchNumber("134,914;131,330", gg.TYPE_DWORD) gg.refineNumber("134,914", gg.TYPE_DWORD) gg.getResults(5000) gg.editAll("84,149,249", gg.TYPE_DWORD) gg.clearResults() gg.setRanges(gg.REGION_C_ALLOC) gg.searchNumber("134,658;135,682", gg.TYPE_DWORD) gg.refineNumber("134,658", gg.TYPE_DWORD) gg.getResults(5000) gg.editAll("84,149,249", gg.TYPE_DWORD) gg.clearResults() gg.setRanges(gg.REGION_C_ALLOC) gg.searchNumber("133634;134914", gg.TYPE_DWORD) gg.refineNumber("133634", gg.TYPE_DWORD) gg.getResults(50000) gg.editAll("67175425", gg.TYPE_DWORD) gg.clearResults() gg.setRanges(gg.REGION_C_ALLOC) gg.searchNumber("67,109,377;16,384", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.refineNumber("16,384", gg.TYPE_DWORD) gg.getResults(50000) gg.editAll("84,149,249", gg.TYPE_DWORD) gg.clearResults() gg.setRanges(gg.REGION_C_ALLOC) gg.searchNumber("147,971;144,387",gg.TYPE_DWORD) gg.refineNumber("147,971",gg.TYPE_DWORD) gg.getResults(500) gg.editAll("84,149,249",gg.TYPE_DWORD) gg.clearResults() gg.setRanges(gg.REGION_C_ALLOC) gg.searchNumber("65,537;262,144",gg.TYPE_DWORD) gg.refineNumber("65,537",gg.TYPE_DWORD) gg.getResults(50000) gg.editAll("84,149,249",gg.TYPE_DWORD) gg.clearResults() gg.setRanges(gg.REGION_C_ALLOC) gg.searchNumber("131,590;131,334",gg.TYPE_DWORD) gg.refineNumber("131,590",gg.TYPE_DWORD) gg.getResults(50000) gg.editAll("84,149,249",gg.TYPE_DWORD) gg.clearResults() gg.setRanges(gg.REGION_CODE_APP) gg.searchNumber("1,701,147,238", gg.TYPE_DWORD) gg.getResults(80000) gg.editAll("0", gg.TYPE_DWORD) gg.clearResults() gg.setRanges(gg.REGION_CODE_APP) gg.searchNumber("1,869,438,821", gg.TYPE_DWORD) gg.getResults(80000) gg.editAll("0", gg.TYPE_DWORD) gg.clearResults() gg.setRanges(gg.REGION_CODE_APP) gg.searchNumber("1,601,593,600", gg.TYPE_DWORD) gg.getResults(80000) gg.editAll("0", gg.TYPE_DWORD) gg.setRanges(gg.REGION_CODE_APP) gg.searchNumber("1,684,171,615", gg.TYPE_DWORD) gg.getResults(80000) gg.editAll("0", gg.TYPE_DWORD) gg.clearResults() gg.setRanges(gg.REGION_CODE_APP) gg.searchNumber("1,597,518,385", gg.TYPE_DWORD) gg.getResults(80000) gg.editAll("0", gg.TYPE_DWORD) gg.clearResults() gg.setRanges(gg.REGION_CODE_APP) gg.searchNumber("1,601,466,991", gg.TYPE_DWORD) gg.getResults(80000) gg.editAll("0", gg.TYPE_DWORD) gg.setRanges(gg.REGION_CODE_APP) gg.searchNumber("1,868,719,460", gg.TYPE_DWORD) gg.getResults(80000) gg.editAll("0", gg.TYPE_DWORD) gg.clearResults() gg.setRanges(gg.REGION_CODE_APP) gg.searchNumber("1,711,301,733", gg.TYPE_DWORD) gg.getResults(80000) gg.editAll("0", gg.TYPE_DWORD) gg.clearResults() gg.setRanges(gg.REGION_CODE_APP) gg.searchNumber("1,818,582,883", gg.TYPE_DWORD) gg.getResults(80000) gg.editAll("0", gg.TYPE_DWORD) gg.setRanges(gg.REGION_CODE_APP) gg.searchNumber("1,711,301,996", gg.TYPE_DWORD) gg.getResults(80000) gg.editAll("0", gg.TYPE_DWORD) gg.clearResults() gg.setRanges(gg.REGION_CODE_APP) gg.searchNumber("1,717,960,813", gg.TYPE_DWORD) gg.getResults(80000) gg.editAll("0", gg.TYPE_DWORD) gg.clearResults() gg.setRanges(gg.REGION_CODE_APP) gg.searchNumber("1,711,305,833", gg.TYPE_DWORD) gg.getResults(80000) gg.editAll("0", gg.TYPE_DWORD) gg.setRanges(gg.REGION_CODE_APP) gg.searchNumber("1,701,076,854", gg.TYPE_DWORD) gg.getResults(80000) gg.editAll("0", gg.TYPE_DWORD) gg.clearResults() gg.setRanges(gg.REGION_CODE_APP) gg.searchNumber("1,953,062,772", gg.TYPE_DWORD) gg.getResults(80000) gg.editAll("0", gg.TYPE_DWORD) gg.clearResults() gg.setRanges(gg.REGION_CODE_APP) gg.searchNumber("134,350,848", gg.TYPE_DWORD) gg.getResults(80000) gg.editAll("0", gg.TYPE_DWORD) gg.clearResults() gg.setRanges(gg.REGION_CODE_APP) gg.searchNumber("134,218,114", gg.TYPE_DWORD) gg.getResults(80000) gg.editAll("0", gg.TYPE_DWORD) gg.clearResults() --gg.toast("@bypassvalue2021") setvalue(gg.getRangesList('libanogs.so')[1].start+0x36A72C,4,"h00 BF") setvalue(gg.getRangesList('libanogs.so')[1].start+0x36A70C,4,"h00 BF") setvalue(gg.getRangesList('libanogs.so')[1].start+0x36A88C,4,"h00 BF") setvalue(gg.getRangesList('libanogs.so')[1].start+0x36A83C,4,"h00 BF") setvalue(gg.getRangesList('libanogs.so')[1].start+0x36A82C,4,"h00 BF") setvalue(gg.getRangesList('libanogs.so')[1].start+0x36A80C,4,"h00 BF") setvalue(gg.getRangesList('libanogs.so')[1].start+0x36A7EC,4,"h00 BF") setvalue(gg.getRangesList('libanogs.so')[1].start+0x36AA8C,4,"h00 BF") setvalue(gg.getRangesList('libanogs.so')[1].start+0x36AA3C,4,"h00 BF") setvalue(gg.getRangesList('libanogs.so')[1].start+0x36AA2C,4,"h00 BF") setvalue(gg.getRangesList('libanogs.so')[1].start+0x36A9EC,4,"h00 BF") setvalue(gg.getRangesList('libanogs.so')[1].start+0x36A8EC,4,"h00 BF") setvalue(gg.getRangesList('libanogs.so')[1].start+0x36AC8C,4,"h00 BF") setvalue(gg.getRangesList('libanogs.so')[1].start+0x36AB8C,4,"h00 BF") setvalue(gg.getRangesList('libanogs.so')[1].start+0x36AAAC,4,"h00 BF") setvalue(gg.getRangesList('libanogs.so')[1].start+0x36AB2C,4,"h00 BF") setvalue(gg.getRangesList('libanogs.so')[1].start+0x36AB0C,4,"h00 BF") setvalue(gg.getRangesList('libanogs.so')[1].start+0x36AD7C,4,"h00 BF") setvalue(gg.getRangesList('libanogs.so')[1].start+0x36AD6C,4,"h00 BF") setvalue(gg.getRangesList('libanogs.so')[1].start+0x36ACCC,4,"h00 BF") setvalue(gg.getRangesList('libanogs.so')[1].start+0x36ACBC,4,"h00 BF") setvalue(gg.getRangesList('libanogs.so')[1].start+0x36ACB4,4,"h00 BF") setvalue(gg.getRangesList('libanogs.so')[1].start+0x36AEEC,4,"h00 BF") setvalue(gg.getRangesList('libanogs.so')[1].start+0x36ADEC,4,"h00 BF") setvalue(gg.getRangesList('libanogs.so')[1].start+0x36ADAC,4,"h00 BF") setvalue(gg.getRangesList('libanogs.so')[1].start+0x36ADA0,4,"h00 BF") setvalue(gg.getRangesList('libanogs.so')[1].start+0x36AD8C,4,"h00 BF") setvalue(gg.getRangesList('libanogs.so')[1].start+0x36AFAC,4,"h00 BF") setvalue(gg.getRangesList('libanogs.so')[1].start+0x36AF8C,4,"h00 BF") setvalue(gg.getRangesList('libanogs.so')[1].start+0x36AF4C,4,"h00 BF") setvalue(gg.getRangesList('libanogs.so')[1].start+0x36AF3C,4,"h00 BF") setvalue(gg.getRangesList('libanogs.so')[1].start+0x36AF2C,4,"h00 BF") setvalue(gg.getRangesList('libanogs.so')[1].start+0x36AFF0,4,"h00 BF") setvalue(gg.getRangesList('libanogs.so')[1].start+0x36AFEC,4,"h00 BF") setvalue(gg.getRangesList('libanogs.so')[1].start+0x36AFE4,4,"h00 BF") setvalue(gg.getRangesList('libanogs.so')[1].start+0x36AFDC,4,"h00 BF") setvalue(gg.getRangesList('libanogs.so')[1].start+0x36AFCC,4,"h00 BF") setvalue(gg.getRangesList('libanogs.so')[1].start+0x36AFFC,4,"h00 BF") setvalue(gg.getRangesList('libanogs.so')[1].start+0x36AFF8,4,"h00 BF") setvalue(gg.getRangesList('libanogs.so')[1].start+0x36AFF4,4,"h00 BF") setvalue(gg.getRangesList('libUE4.so')[1].start+0x7584AFC,4,"h00 BF") setvalue(gg.getRangesList('libUE4.so')[1].start+0x7584AF8,4,"h00 BF") setvalue(gg.getRangesList('libUE4.so')[1].start+0x7584AF4,4,"h00 BF") setvalue(gg.getRangesList('libUE4.so')[1].start+0x7584AF0,4,"h00 BF") setvalue(gg.getRangesList('libUE4.so')[1].start+0x7584AEC,4,"h00 BF") setvalue(gg.getRangesList('libUE4.so')[1].start+0x7584B10,4,"h00 BF") setvalue(gg.getRangesList('libUE4.so')[1].start+0x7584B0C,4,"h00 BF") setvalue(gg.getRangesList('libUE4.so')[1].start+0x7584B08,4,"h00 BF") setvalue(gg.getRangesList('libUE4.so')[1].start+0x7584B04,4,"h00 BF") setvalue(gg.getRangesList('libUE4.so')[1].start+0x7584B00,4,"h00 BF") setvalue(gg.getRangesList('libUE4.so')[1].start+0x7584B40,4,"h00 BF") setvalue(gg.getRangesList('libUE4.so')[1].start+0x7584B3C,4,"h00 BF") setvalue(gg.getRangesList('libUE4.so')[1].start+0x7584B1C,4,"h00 BF") setvalue(gg.getRangesList('libUE4.so')[1].start+0x7584B18,4,"h00 BF") setvalue(gg.getRangesList('libUE4.so')[1].start+0x7584B14,4,"h00 BF") setvalue(gg.getRangesList('libUE4.so')[1].start+0x7584B54,4,"h00 BF") setvalue(gg.getRangesList('libUE4.so')[1].start+0x7584B50,4,"h00 BF") setvalue(gg.getRangesList('libUE4.so')[1].start+0x7584B4C,4,"h00 BF") setvalue(gg.getRangesList('libUE4.so')[1].start+0x7584B48,4,"h00 BF") setvalue(gg.getRangesList('libUE4.so')[1].start+0x7584B44,4,"h00 BF") setvalue(gg.getRangesList('libUE4.so')[1].start+0x7585F9C,4,"h00 BF") setvalue(gg.getRangesList('libUE4.so')[1].start+0x7585F98,4,"h00 BF") setvalue(gg.getRangesList('libUE4.so')[1].start+0x7585F7C,4,"h00 BF") setvalue(gg.getRangesList('libUE4.so')[1].start+0x7585F5C,4,"h00 BF") setvalue(gg.getRangesList('libUE4.so')[1].start+0x7585F58,4,"h00 BF") setvalue(gg.getRangesList('libUE4.so')[1].start+0x7585F3C,4,"h00 BF") setvalue(gg.getRangesList('libUE4.so')[1].start+0x7585F1C,4,"h00 BF") setvalue(gg.getRangesList('libUE4.so')[1].start+0x7585EFC,4,"h00 BF") setvalue(gg.getRangesList('libUE4.so')[1].start+0x7585EF8,4,"h00 BF") setvalue(gg.getRangesList('libUE4.so')[1].start+0x7585ED8,4,"h00 BF") gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber(";Remaining", gg.TYPE_WORD, nil, nil, nil, nil) gg.getResults(5000) gg.editAll(";YOR-MAMA", gg.TYPE_WORD) gg.clearResults() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber(";Hidup", gg.TYPE_WORD, nil, nil, nil, nil) gg.getResults(5000) gg.editAll(";YOR-MAMA", gg.TYPE_WORD) gg.clearResults() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber(";Alive", gg.TYPE_WORD, nil, nil, nil, nil) gg.getResults(5000) gg.editAll(";YOR-MAMA", gg.TYPE_WORD) gg.clearResults() gg.setRanges(gg.REGION_ANONYMOUS) gg.searchNumber(";Còn", gg.TYPE_WORD, nil, nil, nil, nil) gg.getResults(5000) gg.editAll(";YOR-MAMA", gg.TYPE_WORD) gg.clearResults() gg.toast("■■■■□□□60%") gg.toast("■■■■■□□80%") gg.toast("■■■■■■□90%") gg.toast("■■■■■■■100%") gg.alert("LOBBY BYPASS A10 ACTIVATED ☕")