Universal Executor Detection [Mac, Windows, Android]

it can be effective, just learn how exploits and roblox internally works, youll be able to stop more than 99% of exploiters with just a client sided ac

All it takes is one person who bypasses, then it is spread to the noobs who dont know how to bypass themselves. so that mentality is never a good approach. Eg a game like bedwars. Has an anticheat. So, when a smart exploiter finds a way to bypass it , the script will get to the noobs and they will use it too!

for it to be patched in 1 day, then another month of trying to bypass. not worth it

So the exploiter will obsufucate the script then what?
Pardon my spelling im on mobile

Obfuscation won’t stop analyzing the script. Thats how game owners stop exploits

i wouldn’t say you should FULLY rely on this detection as your only anti-cheat method but i wouldn’t say you should completely disregard it either, you’re better off automatically whitelisting your scripts to avoid false triggers as much as you can, this is how i do it

    local WhitelistedScripts = {}

    local function PopulateWhitelist()
        for _, v in pairs(game:GetDescendants()) do
            if v:IsA("LocalScript") or v:IsA("Script") or v:IsA("ModuleScript") then
                WhitelistedScripts[v] = true
            end
        end
    end

    PopulateWhitelist()

    local function GetInstanceMemory()
        local succ, err = pcall(function()
            game:GetService("Stats"):GetMemoryUsageMbForTag("Script")
        end)
        if err then
                   -- ban them here 
        else
            return game:GetService("Stats"):GetMemoryUsageMbForTag("Script")
        end
    end

    local val = 0
    local Paused = false
    local TimeThreshold = 5
    local LastScrAdded = 0
    local runtimeval = GetInstanceMemory()

    game.DescendantAdded:Connect(function(v)
        if (v:IsA("LocalScript") or v:IsA("Script") or v:IsA("ModuleScript")) and not WhitelistedScripts[v] then
            Paused = true
            LastScrAdded = tick()
            repeat Stepped:Wait()
                runtimeval = GetInstanceMemory()
                if not Paused then Paused = true end
            until runtimeval == val
            if not Paused and runtimeval ~= val then runtimeval = GetInstanceMemory() end
            Paused = false
        end
    end)

    game.DescendantRemoving:Connect(function(v)
        if (v:IsA("LocalScript") or v:IsA("Script") or v:IsA("ModuleScript")) and not WhitelistedScripts[v] then
            Paused = true
            LastScrAdded = tick()
            repeat Stepped:Wait()
                runtimeval = GetInstanceMemory()
                if not Paused then Paused = true end
            until runtimeval == val
            if not Paused and runtimeval ~= val then runtimeval = GetInstanceMemory() end
            Paused = false
        end
    end)

    task.spawn(function()
        pcall(function()
            while true do
                task.wait(0.5)
                local CurrentTime = tick()
                local TimeDiff = math.abs(CurrentTime - LastScrAdded)
                val = GetInstanceMemory()
                if not val then val = runtimeval + 5 end
                if val ~= runtimeval and not Paused and (TimeDiff > TimeThreshold and runtimeval < val) and not IsStudio then
                   -- ban them here
                    runtimeval = GetInstanceMemory()
                end
            end
        end)
    end)

i can’t really confirm whether or not this is reliable to use in a big production game but i will say i’ve been using this for around 2 weeks and it’s only gotten to false trigger once but that’s probably because of how my game is coded, in conclusion

– No, you should not use this so long as you use Fluffs for your game as a decompile counter

This should NOT be used, memory is unpredictable and could spike randomly.

1 Like