KRNL is very cool, and for them, some functions “don’t exist.” Let’s take advantage of this and make a simple instant detect:
local cap = game:GetService("CaptureService")
local player = game.Players.LocalPlayer
while true do
local ok, res = pcall(function()
return cap:OnCaptureObjectShared(nil)
end)
if not ok then
if tostring(res) ~= "The current thread cannot call 'OnCaptureObjectShared' (lacking capability RobloxScript)" then
player:Kick("detected")
break
end
end
task.wait(.1)
end
With krnl, this function always says “is not a valid member of CaptureService!!!” Interesting, I suppose.
PS: Based on the latest information from people on the forum, this is due to the fact that this feature only appeared in ROBLOX Update 687.
This may mean that at the moment, all mobile executors with versions lower than 687 are detected in this way.
The “… is not a valid member of …” error you see on Krnl is because it’s on v686.
This means that anyone on the v686 version, will be falsely detected as using Krnl
One way to kind of remedy this is to add a mobile check but even then it can still false on mobile players that have downgraded their roblox or haven’t updated.
Then that changes everything! In any case, I will wait for a new patch from krnl. If it is fixed, I will definitely double-check everything and post updated information on this forum. At the moment, due to ROBLOX Update 687, this executor can be detected in many ways.
Be aware that Roblox is constantly enrolling varying percentages of the user base into special build channels, for sake of dogfooding etc. A LOT of the time, these channels can be based on versions one or two major updates behind.
In addition, as far as Android is concerned, versions often last up to several weeks after new releases are published on app stores. With that, MANY users don’t have auto updates enabled for apps and can be on these slightly older versions, until they are just forced to update the app when gamejoin stops working for that build.