Exploiters are using remote events to destroy my game!

My game is constantly being attacked by exploiters, using third party software to delete the map in my experience, making players endlessly fall to their deaths when spawning

Me and my close team think they are doing this through remote events, however i am not an expert in scripting and the remote event side of things.

Below is a screenshot from the exploiters YouTube stream, in which he is exploiting my game, deleting the map and “Removing players from the Data Model”

I have checked the game up and down for backdoors or suspicious scripts, and have found nothing.

I need support on securing these remote events to stop these exploits from happening!

1 Like

you have a remote event set up to delete objects?
what i see in the picture is the exploiter using btools, which only affect client side, and exploiters cant just hack in remote events to replicate them, are you sure players are actually falling to their death? because, if i think about it, unless you made btools with remote events that replicate to the entire server, theres no other way the exploiter could make players fall to their death. so unless you made remote events for that, theres no way to stop the exploiter to hack on his client other than banning him

the only possibility is if you added a way for them to remove parts of the map, or through backdoors

It is most likely an unsecure remoteevent as players will get kicked from the game with the message “Player has been removed from DataModel” if the player object has been deleted (not kicked)
Your only option now is to comb through all your scripts and find the remote event
The easiest way is by doing Ctrl + Shift + F and searching for .OnServerEvent or .OnServerInvoke

remote event

Client

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ExampleRemoteEvent = ReplicatedStorage:WaitForChild("ExampleRemoteEvent")

-- Example function to fire an event
local function fireEvent()
    local data = "Some data" -- This is an example. Replace with your actual data.
    ExampleRemoteEvent:FireServer(data)
end

-- Call fireEvent when needed, e.g., on button click

Server

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ExampleRemoteEvent = Instance.new("RemoteEvent")
ExampleRemoteEvent.Name = "ExampleRemoteEvent"
ExampleRemoteEvent.Parent = ReplicatedStorage

-- Function to validate the data
local function isValidData(data)
    -- Implement your validation logic here
    -- Example: Check if data is a string and not too long
    if typeof(data) == "string" and #data <= 100 then
        return true
    else
        return false
    end
end

ExampleRemoteEvent.OnServerEvent:Connect(function(player, data)
    if isValidData(data) then
        -- Proceed with the intended action
        print(player.Name .. " sent valid data: " .. data)
    else
        -- Invalid data, log and take action if needed
        warn(player.Name .. " sent invalid data: " .. tostring(data))
        -- Optionally, kick the player or log the incident
    end
end)

Or get some anti exploit detection of these remotes if that’s what you think caused it:

local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")

-- Log suspicious activity
local function logSuspiciousActivity(player, message)
    print("Suspicious activity detected from " .. player.Name .. ": " .. message)
    -- Optionally, kick the player or take other actions
    player:Kick("Suspicious activity detected: " .. message)
end

-- Monitor Remote Event Usage
local function monitorRemoteEvents()
    for _, remote in pairs(ReplicatedStorage:GetChildren()) do
        if remote:IsA("RemoteEvent") or remote:IsA("RemoteFunction") then
            remote.OnServerEvent:Connect(function(player, ...)
                local args = {...}
                -- Implement your checks here
                -- Example: Log excessive usage or invalid arguments
                logSuspiciousActivity(player, "Excessive or invalid usage of " .. remote.Name)
            end)
        end
    end
end

monitorRemoteEvents()

Thank you everyone for the help, it seems to be fixed at the moment, after adding some pretty hefty anti cheats. :slight_smile: