I’m here to ask you how to exploit executor work and how hacker bypasses Roblox system. I’m trying to make an anti-cheat module that can slow the progress of the hacker and annoy them with the module by destroying their work and stuff. Please provide me as much information as possible on how to prevent the exploiter from your game. Every helpful comment will be appreciated and credited to my Anti-cheat module!!
Exploit Executors inject scripts (via adding a .dll file to their Roblox client that allows this iirc) to a game to abuse systems as the users want. Keep in mind they can ONLY add local scripts, and therefore are limited in their abilities (they can’t access server-sided content like ServerScriptService or ServerStorage, but they can fire remotes you’ve added to the game to communicate with server scripts).
Most of the time people using executors don’t know how to code and rather just copy-paste scripts they find online (simply search up like [game name] HACK SCRIPT 2023).
Ways of protection:
I’ve seen plenty of devs on this forum talk about their ways of protection, such as setting up dummy remotes (false remotes that only exploiters can activate, banning them if used) and randomizing the name of each instance in the game, some being more efficient than others.
Some things I do know and have seen be advised in the dev forum are these:
Don’t use stuff like WalkSpeed to determine if an exploiter used a speed script, they can use metatable hooking (basically make it so whenever a script tries to get the value of a property it returns a fake value), rather you should compare 2 recent magnitude values from the player character and see if its way too far off.
Don’t rely on client sided anti-exploits, as they can easily be disabled.
Add sanity checks to your remotes (like cooldown and parameters that if errored you ban the exploiter)
You probably shouldn’t ban them immediately tho, as false positives can happen (like if a player lags or they accidentally find a glitch that activates the anti-exploit)
You can do something like this but it will maybe be a little bad because it will run all the time.
game.Players.PlayerAdded:connect(function(player)
While true do
Wait(1)
If player.Character.Walkspeed >= 60 then —or your ingame walkspeed
Player:kick(“reason”)
end
—and more things exploiters use
End
end)
Game.Players.PlayerAdded:connect(function(player)
While true do
For I, v in pairs(player.PlayerGui:GetChildren) do
If v.Name ~= nil and v.Name ~= nil then —your gui names
player:kick(“reason”)
end
end
end)
No real way to stop it with my knowledge, but you can use replacements such as checking every time they move if its by a huge difference (using Magnitude like I said) and if its too high, warn the player or something (i think this can lead to false positives on server sided anti exploits if the player is laggy tho).
I think that wouldn’t be worth it so maybe a report system will help. (If a exploiter joins the game which is banned because of reports he gets automatically kicked)