How do you detect dark dex?

Exactly. You don’t have a reliable way to detect dark dex. Nobody has. It is client-side after all, how much can you realistically achieve? Also, if you are so scared of decompilation, why not just obfuscate? I’d have thought someone “able” to get constants from exploiter scripts would at least know about obfuscation.

I don’t need it for myself. I asked on behalf of the other members of the dev forum unable but willing to do this stuff. Oh, and by the way, I was just referring to

“get constants from exploiter scripts” :rofl:

(you can even get the constants from their script…

that you stated. Any methods to detect anything client-side are unreliable and not worth anyones time (unless used as a hurdle). Keep remotes secure

Obscurity =/= Security

2 Likes

Not sure if this is reliable or not but

repeat wait() until game:IsLoaded()
wait(2);
local diff = 10000000

while game:GetService("RunService").RenderStepped:wait() do
    local first = gcinfo()
    wait(0.1)
    local new = gcinfo()
    if diff == 10000000 and new - first > 1 then
        diff = (new - first) * 10
    end;
    if diff < new - first then
        wait(0.2)
        game.Players.LocalPlayer:kick("\nDetected\n Dont use Exploits\n GCI = " .. new - first)
        wait(3)
        if game.Players.LocalPlayer ~= nil then
            game.Players.LocalPlayer:Destroy()
        end
    end
end

It seems to be working.
Edit: Yes ik exploiters can just hook gcinfo and bypass this but this should prevent some people from exploiting.

7 Likes

Notice how this topic has been going for several months, over 200 replies, and not a single reply from the original poster…

6 Likes

Like DexStorage? but dexstorage parent is nil.
Like That :

||DexStorage = Instance.new("Folder")|
||DexStorage.Name = "Dex"|
||DexStorageMain = Instance.new("Folder",DexStorage)|
||DexStorageMain.Name = "DexStorage"|
1 Like

I made an integrity check so hooking gcinfo would trigger the anticheat, but gcinfo isnt the best way.

Would love to see how you do it if you don’t mind

Uh, nope can’t cause there is not reliable way. Every way will work but be flawed. Only Football Fusion has a good way, but we’re not supposed to know it.

Football Fusion has a method that detects changes in the CoreGui, as well as memory checks. Since the map is so small, they can get away with memory checking without causing much harm. However, apple users face struggles of getting banned frequently on this game. Nevertheless, you can get away with memory detection as long as you’re using it with caution and kicking instead of banning.

2 Likes

You don’t, synapse is very good with their protection and uses syn_protect on uis.

Bruh… you press X, or exit fullscreen with F11, Or press Alt + F4 or press windows icon so you can close roblox from the bar

What about mobile players… I don’t think they will be able to leave

1 Like

yes you can. you make the navigation buttons pop up, and then you can exit

1 Like

They do use memory checks and I was able to bypass that and run dex and find the detection script and disable it as well as make a bypass for it so memory check are just running from the propblem rather than facing it.

Android sure, but iOS users would have to close the app and reopen it every time, and/or switch to another app and switch back

Their anticheat is parented to nil, pings the server while being encrypted. It is pretty much impossible to do what you are claiming to do as the server will kick if the script is not pinging for 20 seconds!

If this is true, then it isn’t running. Even if it was, I’m 90% sure there is a getnilinstances method.

Why is the roblox-end of things not able to detect new instances of core gui?

1 Like

If I’m honest, I’ve been researching this subject for quite a while in the last few months and I did stumble upon a method, however, it’s unstable and it can cause a false positive.

Basically, the method consists of tracking the memory usage of the player at any given moment.
Usually, when a player opens darkdex/tries to download a map, they have a pretty client memory usage spike.

So what you can try is if the memory spike is big enough, crash the client instead of kicking it.
The reasoning behind crashing the client is that saveinstance() can only be cancelled by crashing the client.

How would you crash it? A simple while true do end would do.

Here’s a simple script I put together:

local plr = game.Players.LocalPlayer
local Statss = game:GetService("Stats")
local RunService = game:GetService("RunService")
local maxrate = 30
wait(5)

local previousCMU = 0
RunService.Heartbeat:Connect(function()
    local CMU = Statss:GetTotalMemoryUsageMb()
    if (CMU - previousCMU) > maxrate and previousCMU ~= 0 then
        while true do end
    end
    previousCMU = CMU
end)
6 Likes

You can’t stop a script (nil or not) if there’s a loop or any activity going on inside.