Detect uwp/microsoft store Roblox

grahhhhhhhhhh your still doing the check on server (after edit)

player:GetJoinData().ClientVersionString

You have to put this as LocalScript in ReplicatedFirst

local UWPVersions = {
    "2.590.678",
    "2.592.586",
}
if table.find(UWPVersions,Version()) then
     game:GetService("Players").LocalPlayer:Kick("uwp detected")
end

Doing it on the client will solve the problem, but exploiters will still be able to bypass this.
Currently looking for a way to do this safely on the server but I don’t have a lot of hope.

its hard to do on server to be honest

i dont even know if theres actually a way to detect it on server

if there is a way to detect it on server then its probably some private script or a hidden trick that you wont easiely find after googling it

yeah so ig its a true solution? :shock:
If someone planning to hire a man that will change these version in this “anti-uwp” version , then here i am :wink:

client solution is the only public solution at the moment

your server solution doesnt even work because thats not how GetJoinData works

GetJoinData works only for TeleportService when you teleport a player to other place with your own custom JoinData table

well if you want you can continue scripting it man im so sleepy :face_holding_back_tears:
also if u want reply to my post related to it so i can put solution on ur comment [Help] Anti-UWP Script aka Anti Skid - Help and Feedback / Scripting Support - Developer Forum | Roblox

4 Likes

I think its using the “Roblox player” and not the true pc

(I could be wrong)

Windows Store version uses 32-bits.
Including some UserInputService checks for mobile devices, this bit arch method can be used in games to prevent UWP app users from joining.

I don’t know if version() provides enough information to separate from UWP clients, though.
Anyway, all of these checks can be bypassed as exploiters have full control over their clients, they can hook the tostring() method to act like 64 bits, and version() can also be bypassed as well.

Do you think people’s executors auto execute, working faster than the game loads? Unless they have made their own without bullshit inside of it.

This is a very common statement that developers use to defend client-sided anti-cheats.
It’s not about some executors not being able to execute fast enough, it’s about the client.

The client runs in your machine, you have all the control over it. The executor you choose is up to you. You can even make your own if you’re experienced enough.
Some executors execute faster than the game itself, some don’t. What matters is that the client has full control over the application. This can be bypassable, and will get bypassed eventually. (Well, already did lol)

Anyway, I’ve already seen some people on the forum also doing the same thing. hooking the function and returning a string long enough to replicate 64-bit behavior.

Would be embarrassing if a top game used this method to stop UWP clients from joining their game even though it can easily be bypassed through a hookfunction method. Oh, wait…

1 Like

Did you succeed at least then lol?

Im joking, it took me 2 seconds to make. I was just trying to see if I can bypass the detection in my game using the current UWP exploits. Turns out all of them are just garbage and just re-names of fluxus. Krnl, comet, script ware are all the same.

So the bypass doesn’t work on Krnl or other free exploits?

It would work if UWP exploits had time put into them and were functional. The main problems are that auto execute is slow or it crashes on teleport.

Classic free exploits, this has been the same for years. But yeah this still doesn’t mean the bypass won’t work.

1 Like

So do you want roblox to ban you for making a single post that you’re breaking their tos? Mkay

local function getBitCount()
	local address = tonumber(string.sub(tostring{math.huge},8))
	if #tostring(address) <= 10 then
		return 32
	end
	return 64
end

I improved your UWP detector. I added math.huge because it instantly uses 64 bit address, but on UWP it uses 32 bit.

Can you tell me how this is a improvement? It does the same as the original code snippet but adds the value of math.huge in the table.

1 Like

Well that snippet had false positives. It kicked Web Roblox (the one with byfron).
To fix that, I added math.huge which now forces it to use 64-bit address during the check when on Web Roblox, and UWP can’t use 64-bit address so it has shrunken down version of math.huge to fit a 32-bit address.