Detecting Celery: Inside the World of Exploiting

Hello everyone,

TL;DR (in short): Celery is a brand-new exploit, and here’s the script to detect it with an in-game LocalScript.

Scandal has put Celery Incorporated, our subsidiary, into disarray. Our users’ faith is at a critical turning point since Static, our CEO, was discovered trying to bypass Hyperion. Even if this misbehavior alone were cause for grave punishment, Static has allied himself with an unhealthy individual named Jordan, “a prominent opponent of anticheats” according to himself. It’s obvious even to people like you that this is not good for us. Thankfully, the LSA’s objectives coincide with ours, giving us the power to manage Static however we see fit.

As a member of society with limitless drive, natural affinity for Roblox development, you have been effortlessly guided by the divine. Destiny opens its gates once more, leaving you standing on uncertain ground, facing a soul-wrenching dilemma.

--// Müsli (@qtorrent)
local ContentProvider = game:GetService("ContentProvider")
local CoreGui = game:GetService("CoreGui")
local Players = game:GetService("Players")

local BLACKLISTED_CONTENT = {
    "rbxassetid://1204397029",
    "rbxassetid://3523243755",
    "rbxassetid://4911962991",
    "rbxassetid://129697930",
    "rbxassetid://5147488658",
    "rbxassetid://5147488592",
    "rbxassetid://5147695474",
    "rbxassetid://5054663650",
    "rbxassetid://6234691350",
    "rbxassetid://1352543873",
    "rbxassetid://4113050383",
    "rbxassetid://2406617031",
}
local SERVICE_NAMES = {
    "Players",
    "ScriptContext",
    "Workspace",
    "ContentProvider",
    "Debris",
    "StarterPack",
}

for _, serviceName in SERVICE_NAMES do
    local service = game:GetService(serviceName)
    service.Name = ""

    task.delay(0, function()
        service:GetPropertyChangedSignal("Name"):Connect(function()
            -- warn("Unexpected service's name change!")
            service.Name = ""
        end)
    end)
end
-- Players.Name = ""
game.Name = ""

task.delay(0, function()
    if (not game:IsLoaded()) then
        game.Loaded:Wait()
    end

    local LocalPlayer = Players.LocalPlayer or Players.PlayerAdded:Wait()

    local ChildAdded
    ChildAdded = LocalPlayer.ChildAdded:Connect(function(child)
        if (child.ClassName ~= "PlayerScripts") then return end
        child.Name = ""
        child:GetPropertyChangedSignal("Name"):Connect(function()
            -- warn("Unexpected child's name change!")
            child.Name = ""
        end)
        ChildAdded:Disconnect()
    end)

    local PlayerScripts = LocalPlayer:WaitForChild("PlayerScripts", 30)
    if (PlayerScripts) then
        PlayerScripts.Name = ""
        PlayerScripts:GetPropertyChangedSignal("Name"):Connect(function()
            -- warn("Unexpected PlayerScripts' name change!")
            PlayerScripts.Name = ""
        end)
    end
end)

local DecoyPart = Instance.new("Part")

while true do
    if (_G.IY_DEBUG) then -- Since new Celery's binary auto-executes IY, I assume
        warn("IY detected!")
    end

    ContentProvider:PreloadAsync({DecoyPart, CoreGui}, function(content, assetFetchStatus)
        content = string.gsub(string.lower(content), "rbxassetid://", "")

        if (table.find(BLACKLISTED_CONTENT, content)) then
            warn("IY detected!")
        end
    end)
    
    task.wait(5)
end

Text written only, and solely by Acedia!

19 Likes

gotta go break this chain >:)

also are you german? I saw “Müsli” and it’s a german word

2 Likes

everyone flag this now

2 Likes

Müsli indeed comes from germany.

2 Likes

do you mean the OP or what post?

2 Likes

Your post.

2 Likes

He means you, as you broke the chain.

I’m fine. The other guy might need to take a break. :joy::sweat_smile:

(Just a joke)

2 Likes

why do you want the chain to continue?

2 Likes

if celery then celery:cut() celery:drop(self.water) self.water:boil() end

3 Likes

Why did you insist on breaking it?

2 Likes

people will get their brains hurt for seeing the same thing over and over again in one place

2 Likes

Is that why some crazy people live in cities? (A joke)

1 Like

I am here before Acedia, 3ds, Bitdancer and Nemi

What is this file name

1 Like

(post deleted by author)

3 Likes

Crazy? I was crazy once. They locked me in a room. A rubber room. A rubber room with rats. And rats make me crazy.

3 Likes

If whitevan == true then
local Children = Workspace:GetChildren()
For i, Child in Children do
Child.Parent = nil
Child.Position = whitevan.Position
End
End

2 Likes

whitevan.Position:4: attempt to index boolean with ‘Position’

1 Like

local HasFreeCandy = whitevan.Driver:GetAttribute(“HasFreeCandy”)

If HasFreeCandy == true then
whitevan.Driver.Hand.Candy.Parent = game.Workspace.Child.Hand
wait(5)
game.Workspace.Child.Hand.Candy.Parent = game.Workspace.Child.Stomach
wait(5)
game.Workspace.Child.Colon:Destroy()
end

4 Likes

Is everyone having a good day today?:smiley:
@HexadecimalLiker @The_SirMeme @VSCPlays @commitblue @Unlimited_Objects

1 Like

yes I am having a good day today. I bet this topic turns into “This post was flagged by the community and is temporary hidden”

2 Likes