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("⚠️ Eʀʀᴏʀ : " .. lib .. " ⚠️") gg.alert("Eʀʀᴏʀ : " .. lib .. "\nSᴇ Cᴏɴᴇᴄᴛᴇ Aᴏ Fʀᴇᴇ Fɪʀᴇ Pᴀʀᴀ Pᴏᴅᴇʀ Exᴇᴄᴜᴛᴀʀ o Sᴄʀɪᴘᴛ") gg.toast("Eʀʀᴏʀ : " .. lib .. "\nSᴇ Cᴏɴᴇᴄᴛᴇ Aᴏ Fʀᴇᴇ Fɪʀᴇ Pᴀʀᴀ Pᴏᴅᴇʀ Exᴇᴄᴜᴛᴀʀ o Sᴄʀɪᴘᴛ") 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