--[[ Advanced and Optimized Game Anti-Cheat Finder by cyberseall (translated, enhanced and recoded) credits to: Severity (sentrysvc) --]] local Players = game:GetService("Players") local UserInputService = game:GetService("UserInputService") local HttpService = game:GetService("HttpService") local StarterGui = game:GetService("StarterGui") local RunService = game:GetService("RunService") local LocalPlayer = Players.LocalPlayer local discordWebhookUrl = "" local toggleKey = Enum.KeyCode.F7 local suspiciousKeywords = { "kick", "ban", "cheat", "hack", "exploit", "injection", "bypass", "noclip", "infjump", "speedhack", "setreadonly", "getrawmetatable", "hookmetamethod", "debug", "anticheat", "detector", "obfuscate", "obfuscated", "malware", "virus", "stealer", "inject", "override", "hook", "godmode", "log", "monitor" } local allScriptPaths = {} local allRemotePaths = {} local scanningInProgress = false local scanningCanceled = false Players.LocalPlayer.Idled:Connect(function() local vu = game:GetService("VirtualUser") vu:CaptureController() vu:ClickButton2(Vector2.new(0, 0)) StarterGui:SetCore("SendNotification", { Title = "Anti-AFK", Text = "Anti-AFK active!", Duration = 3 }) end) -- UI Creation local ScreenGui = Instance.new("ScreenGui") ScreenGui.Parent = LocalPlayer:WaitForChild("PlayerGui") ScreenGui.ResetOnSpawn = false local MainFrame = Instance.new("Frame") MainFrame.Name = "MainFrame" MainFrame.Size = UDim2.new(0, 600, 0, 500) MainFrame.Position = UDim2.new(0.5, -300, 0.5, -250) MainFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 30) MainFrame.Parent = ScreenGui local MainCorner = Instance.new("UICorner") MainCorner.CornerRadius = UDim.new(0, 10) MainCorner.Parent = MainFrame local TitleLabel = Instance.new("TextLabel") TitleLabel.Size = UDim2.new(1, 0, 0, 30) TitleLabel.Position = UDim2.new(0, 0, 0, 0) TitleLabel.BackgroundTransparency = 1 TitleLabel.Text = "Game Anti-Cheat Finder by cyberseall" TitleLabel.TextColor3 = Color3.new(1, 1, 1) TitleLabel.Font = Enum.Font.SourceSansBold TitleLabel.TextScaled = true TitleLabel.Parent = MainFrame local ProgressLabel = Instance.new("TextLabel") ProgressLabel.Size = UDim2.new(1, 0, 0, 30) ProgressLabel.Position = UDim2.new(0, 0, 1, -85) ProgressLabel.BackgroundTransparency = 1 ProgressLabel.Text = "Progress: 0%" ProgressLabel.TextColor3 = Color3.new(1, 1, 1) ProgressLabel.Font = Enum.Font.SourceSans ProgressLabel.TextScaled = true ProgressLabel.Parent = MainFrame local CancelScanButton = Instance.new("TextButton") CancelScanButton.Size = UDim2.new(0, 100, 0, 30) CancelScanButton.Position = UDim2.new(1, -110, 1, -85) CancelScanButton.Text = "Cancel Scan" CancelScanButton.BackgroundColor3 = Color3.fromRGB(200, 50, 50) CancelScanButton.TextColor3 = Color3.new(1, 1, 1) CancelScanButton.Visible = false CancelScanButton.Parent = MainFrame local TabBar = Instance.new("Frame") TabBar.Size = UDim2.new(1, 0, 0, 35) TabBar.Position = UDim2.new(0, 0, 0, 30) TabBar.BackgroundTransparency = 1 TabBar.Parent = MainFrame local ScriptsTabButton = Instance.new("TextButton") ScriptsTabButton.Size = UDim2.new(0.5, -5, 1, 0) ScriptsTabButton.Position = UDim2.new(0, 0, 0, 0) ScriptsTabButton.Text = "Scripts" ScriptsTabButton.BackgroundColor3 = Color3.fromRGB(50, 50, 50) ScriptsTabButton.TextColor3 = Color3.new(1, 1, 1) ScriptsTabButton.Parent = TabBar local RemotesTabButton = Instance.new("TextButton") RemotesTabButton.Size = UDim2.new(0.5, -5, 1, 0) RemotesTabButton.Position = UDim2.new(0.5, 5, 0, 0) RemotesTabButton.Text = "Remotes" RemotesTabButton.BackgroundColor3 = Color3.fromRGB(70, 70, 70) RemotesTabButton.TextColor3 = Color3.new(1, 1, 1) RemotesTabButton.Parent = TabBar local CopyAllScriptsButton = Instance.new("TextButton") CopyAllScriptsButton.Size = UDim2.new(0, 80, 0, 25) CopyAllScriptsButton.Position = UDim2.new(1, -85, 0, 5) CopyAllScriptsButton.Text = "Copy All" CopyAllScriptsButton.BackgroundColor3 = Color3.fromRGB(80, 80, 80) CopyAllScriptsButton.TextColor3 = Color3.new(1, 1, 1) CopyAllScriptsButton.Parent = TabBar local CopyAllRemotesButton = Instance.new("TextButton") CopyAllRemotesButton.Size = UDim2.new(0, 80, 0, 25) CopyAllRemotesButton.Position = UDim2.new(1, -85, 0, 5) CopyAllRemotesButton.Text = "Copy All" CopyAllRemotesButton.BackgroundColor3 = Color3.fromRGB(80, 80, 80) CopyAllRemotesButton.TextColor3 = Color3.new(1, 1, 1) CopyAllRemotesButton.Visible = false CopyAllRemotesButton.Parent = TabBar local ContentFrame = Instance.new("Frame") ContentFrame.Size = UDim2.new(1, 0, 0, 350) ContentFrame.Position = UDim2.new(0, 0, 0, 65) ContentFrame.BackgroundTransparency = 1 ContentFrame.Parent = MainFrame local ScriptsFrame = Instance.new("ScrollingFrame") ScriptsFrame.Size = UDim2.new(1, -20, 1, -20) ScriptsFrame.Position = UDim2.new(0, 10, 0, 0) ScriptsFrame.BackgroundTransparency = 1 ScriptsFrame.ScrollBarThickness = 4 ScriptsFrame.Parent = ContentFrame local ScriptsListLayout = Instance.new("UIListLayout") ScriptsListLayout.Parent = ScriptsFrame ScriptsListLayout.SortOrder = Enum.SortOrder.LayoutOrder ScriptsListLayout.Padding = UDim.new(0, 5) ScriptsListLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function() ScriptsFrame.CanvasSize = UDim2.new(0, 0, 0, ScriptsListLayout.AbsoluteContentSize.Y) end) local RemotesFrame = Instance.new("ScrollingFrame") RemotesFrame.Size = UDim2.new(1, -20, 1, -20) RemotesFrame.Position = UDim2.new(0, 10, 0, 0) RemotesFrame.BackgroundTransparency = 1 RemotesFrame.ScrollBarThickness = 4 RemotesFrame.Visible = false RemotesFrame.Parent = ContentFrame local RemotesListLayout = Instance.new("UIListLayout") RemotesListLayout.Parent = RemotesFrame RemotesListLayout.SortOrder = Enum.SortOrder.LayoutOrder RemotesListLayout.Padding = UDim.new(0, 5) RemotesListLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function() RemotesFrame.CanvasSize = UDim2.new(0, 0, 0, RemotesListLayout.AbsoluteContentSize.Y) end) local ScanButton = Instance.new("TextButton") ScanButton.Size = UDim2.new(0, 300, 0, 50) ScanButton.Position = UDim2.new(0.5, -150, 1, -40) ScanButton.BackgroundColor3 = Color3.fromRGB(0, 170, 85) ScanButton.Text = "Start Analyzing Game" ScanButton.TextColor3 = Color3.new(1, 1, 1) ScanButton.Font = Enum.Font.SourceSansBold ScanButton.TextSize = 20 ScanButton.Parent = MainFrame local ScanCorner = Instance.new("UICorner") ScanCorner.CornerRadius = UDim.new(0, 10) ScanCorner.Parent = ScanButton -- Tab switching local function showScriptsTab() ScriptsFrame.Visible = true RemotesFrame.Visible = false ScriptsTabButton.BackgroundColor3 = Color3.fromRGB(50, 50, 50) RemotesTabButton.BackgroundColor3 = Color3.fromRGB(70, 70, 70) CopyAllScriptsButton.Visible = true CopyAllRemotesButton.Visible = false end local function showRemotesTab() ScriptsFrame.Visible = false RemotesFrame.Visible = true ScriptsTabButton.BackgroundColor3 = Color3.fromRGB(70, 70, 70) RemotesTabButton.BackgroundColor3 = Color3.fromRGB(50, 50, 50) CopyAllScriptsButton.Visible = false CopyAllRemotesButton.Visible = true end ScriptsTabButton.MouseButton1Click:Connect(showScriptsTab) RemotesTabButton.MouseButton1Click:Connect(showRemotesTab) CopyAllScriptsButton.MouseButton1Click:Connect(function() local allText = table.concat(allScriptPaths, "\n") if setclipboard then setclipboard(allText) StarterGui:SetCore("SendNotification", { Title = "Copy All", Text = "All script paths copied!", Duration = 3 }) end end) CopyAllRemotesButton.MouseButton1Click:Connect(function() local allText = table.concat(allRemotePaths, "\n") if setclipboard then setclipboard(allText) StarterGui:SetCore("SendNotification", { Title = "Copy All", Text = "All remote paths copied!", Duration = 3 }) end end) -- Dragging support cause why not? local dragging = false local dragStart, startPos MainFrame.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = true dragStart = input.Position startPos = MainFrame.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) MainFrame.InputChanged:Connect(function(input) if dragging and input.UserInputType == Enum.UserInputType.MouseMovement then local delta = input.Position - dragStart MainFrame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y) end end) UserInputService.InputBegan:Connect(function(input, gameProcessed) if not gameProcessed and input.KeyCode == toggleKey then MainFrame.Visible = not MainFrame.Visible end end) local function processInBatches(list, processFunction, batchSize, progressCallback) batchSize = batchSize or 100 local count = 0 for i, item in ipairs(list) do if scanningCanceled then break end processFunction(item) if progressCallback then progressCallback(i, #list) end count = count + 1 if count >= batchSize then count = 0 RunService.Heartbeat:Wait() end end end local function updateProgress(text) ProgressLabel.Text = text end -- Modified suspicion level: 0 hits = Unsuspicious, 1 hit = Might be Anticheat, 2+ hits = Could be Anticheat local function getSuspicionLevel(code) local lowerCode = code:lower() local count = 0 for _, keyword in ipairs(suspiciousKeywords) do if lowerCode:find(keyword) then count = count + 1 end end if count == 0 then return "Unsuspicious", count elseif count == 1 then return "Might be Anticheat", count else return "Could be Anticheat", count end end local function tryDecompile(obj) if _G.dex and typeof(_G.dex.decompile) == "function" then local success, result = pcall(_G.dex.decompile, obj) if success then return result else return "Error during Dex decompilation:\n" .. tostring(result) end elseif typeof(decompile) == "function" then local success, result = pcall(decompile, obj) if success then return result else return "Error during decompilation:\n" .. tostring(result) end elseif _G.syn and typeof(_G.syn.decompile) == "function" then local success, result = pcall(_G.syn.decompile, obj) if success then return result else return "Error during decompilation (syn):\n" .. tostring(result) end else return "No decompiler available." end end local function createResultItem(category, title, details) local targetFrame = (category == "Remote") and RemotesFrame or ScriptsFrame local container = Instance.new("Frame") container.Size = UDim2.new(1, 0, 0, 30) container.BackgroundTransparency = 1 container.Parent = targetFrame local textColor = Color3.new(1, 1, 1) if title:find("ANTICHEAT") or title:find("Anticheat") then textColor = Color3.new(1, 0, 0) elseif title:find("Unsuspicious") then textColor = Color3.new(0, 1, 0) end local resultLabel = Instance.new("TextLabel") resultLabel.Size = UDim2.new(1, -110, 1, 0) resultLabel.BackgroundTransparency = 1 resultLabel.Text = title resultLabel.TextColor3 = textColor resultLabel.TextXAlignment = Enum.TextXAlignment.Left resultLabel.Parent = container local viewButton = Instance.new("TextButton") viewButton.Size = UDim2.new(0, 50, 1, 0) viewButton.Position = UDim2.new(1, -110, 0, 0) viewButton.Text = "View" viewButton.BackgroundColor3 = Color3.fromRGB(70, 70, 70) viewButton.TextColor3 = Color3.new(1, 1, 1) viewButton.Parent = container local copyButton = Instance.new("TextButton") copyButton.Size = UDim2.new(0, 50, 1, 0) copyButton.Position = UDim2.new(1, -60, 0, 0) copyButton.Text = "Copy" copyButton.BackgroundColor3 = Color3.fromRGB(70, 70, 70) copyButton.TextColor3 = Color3.new(1, 1, 1) copyButton.Parent = container local detailFrame = Instance.new("Frame") detailFrame.Size = UDim2.new(1, -10, 0, 180) detailFrame.Position = UDim2.new(0, 10, 0, 30) detailFrame.BackgroundColor3 = Color3.fromRGB(40, 40, 40) detailFrame.Visible = false detailFrame.Parent = container local detailTextBox = Instance.new("TextBox") detailTextBox.Size = UDim2.new(1, -10, 1, -10) detailTextBox.Position = UDim2.new(0, 5, 0, 5) detailTextBox.BackgroundColor3 = Color3.fromRGB(50, 50, 50) detailTextBox.TextColor3 = Color3.fromRGB(255, 255, 255) detailTextBox.Text = details detailTextBox.TextWrapped = false detailTextBox.TextXAlignment = Enum.TextXAlignment.Left detailTextBox.TextYAlignment = Enum.TextYAlignment.Top detailTextBox.ClearTextOnFocus = false detailTextBox.MultiLine = true detailTextBox.Font = Enum.Font.Code detailTextBox.TextSize = 14 detailTextBox.Parent = detailFrame local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(0, 5) corner.Parent = detailFrame local isOpen = false viewButton.MouseButton1Click:Connect(function() isOpen = not isOpen detailFrame.Visible = isOpen if isOpen then container.Size = UDim2.new(1, 0, 0, 210) viewButton.Text = "Hide" else container.Size = UDim2.new(1, 0, 0, 30) viewButton.Text = "View" end end) copyButton.MouseButton1Click:Connect(function() if setclipboard then setclipboard(detailTextBox.Text) StarterGui:SetCore("SendNotification", { Title = "Copy", Text = "Code copied to clipboard!", Duration = 3 }) else StarterGui:SetCore("SendNotification", { Title = "Copy", Text = "setclipboard() not available.", Duration = 3 }) end end) if title:find("Unsuspicious") then delay(1, function() if container and container.Parent then container:Destroy() end end) end end local function addFinding(title, details) local category = "Script" if title:find("^Remote:") or title:find("^Event:") then category = "Remote" elseif title:find("^Function:") then category = "Script" end if category == "Script" then local path = title:match("Script:%s*(.-)%s*%[") if path and #path > 0 then table.insert(allScriptPaths, path) end elseif category == "Remote" then local path = title:match("Remote:%s*(.-)%s*%[") if path and #path > 0 then table.insert(allRemotePaths, path) end end createResultItem(category, title, details) end local function detectExploitHooks() local hookFunctions = { "hookfunction", "hookmetamethod", "checkcaller", "newcclosure", "setreadonly", "getrawmetatable", "setrawmetatable", "debug.getupvalue", "debug.getupvalues", "debug.setupvalue", "debug.getinfo", "getfenv", "setfenv", "getgenv", "syn.get_thread_identity", "syn.set_thread_identity", "syn.queue_on_teleport", "override", "rawmetatable", "getmetatable", "setmetatable" } local found = {} local env = getfenv() or _G for _, name in ipairs(hookFunctions) do if env[name] ~= nil then table.insert(found, name) elseif _G[name] ~= nil then table.insert(found, name) end end if #found > 0 then local details = "Found exploit/hook functions:\n" .. table.concat(found, "\n") addFinding("Exploit Hooks Found", details) else addFinding("Exploit Hooks", "No known hook/exploit functions found.") end end local function scanForAnticheatsAdvanced() if scanningInProgress then StarterGui:SetCore("SendNotification", { Title = "Scan", Text = "Scan already in progress!", Duration = 3 }) return end scanningInProgress = true scanningCanceled = false CancelScanButton.Visible = true updateProgress("Starting advanced analysis...") for _, child in ipairs(ScriptsFrame:GetChildren()) do if not child:IsA("UIListLayout") then child:Destroy() end end for _, child in ipairs(RemotesFrame:GetChildren()) do if not child:IsA("UIListLayout") then child:Destroy() end end allScriptPaths = {} allRemotePaths = {} local findingsCount = 0 local descendants = game:GetDescendants() updateProgress("Analyzing scripts (0/" .. #descendants .. ")...") processInBatches(descendants, function(obj) if scanningCanceled then return end if obj:IsA("LocalScript") or obj:IsA("ModuleScript") or obj:IsA("Script") then local success, err = pcall(function() local scriptPath = obj:GetFullName() local code = tryDecompile(obj) local status, count = getSuspicionLevel(code) local details = "Path: " .. scriptPath .. "\nStatus: " .. status .. " (" .. count .. " hit" .. (count ~= 1 and "s" or "") .. ")" .. "\n\n--- Code ---\n" .. code addFinding("Script: " .. scriptPath .. " [" .. status .. "]", details) findingsCount = findingsCount + 1 end) if not success then addFinding("Script: " .. obj:GetFullName() .. " [Error]", "Scan error: " .. tostring(err)) end end end, 100, function(current, total) updateProgress("Analyzing scripts (" .. current .. "/" .. total .. ")...") end) if scanningCanceled then updateProgress("Scan canceled during script analysis.") scanningInProgress = false CancelScanButton.Visible = false return end local gcItems = getgc(true) updateProgress("Analyzing GC functions (0/" .. #gcItems .. ")...") processInBatches(gcItems, function(func) if scanningCanceled then return end if type(func) == "function" and islclosure(func) then local success, err = pcall(function() local code = tryDecompile(func) local status, count = getSuspicionLevel(code) local details = "--- Decompiled Function ---\n" .. code addFinding("Function (getgc) [" .. status .. "]", details) findingsCount = findingsCount + 1 end) if not success then addFinding("Function (getgc) [Error]", "Scan error: " .. tostring(err)) end end end, 100, function(current, total) updateProgress("Analyzing GC functions (" .. current .. "/" .. total .. ")...") end) if scanningCanceled then updateProgress("Scan canceled during GC function analysis.") scanningInProgress = false CancelScanButton.Visible = false return end updateProgress("Analyzing remotes (0/" .. #descendants .. ")...") processInBatches(descendants, function(obj) if scanningCanceled then return end if obj:IsA("RemoteEvent") or obj:IsA("RemoteFunction") or obj:IsA("BindableEvent") or obj:IsA("BindableFunction") then local success, err = pcall(function() local remotePath = obj:GetFullName() local lowerName = obj.Name:lower() local remoteSuspicious = false for _, keyword in ipairs(suspiciousKeywords) do if lowerName:find(keyword) then remoteSuspicious = true break end end local status = remoteSuspicious and "SUSPICIOUS" or "Unsuspicious" local details = "Path: " .. remotePath .. "\nType: " .. obj.ClassName .. "\nStatus: " .. status addFinding("Remote: " .. remotePath .. " [" .. status .. "]", details) findingsCount = findingsCount + 1 end) if not success then addFinding("Remote: " .. obj:GetFullName() .. " [Error]", "Scan error: " .. tostring(err)) end end end, 100, function(current, total) updateProgress("Analyzing remotes (" .. current .. "/" .. total .. ")...") end) if scanningCanceled then updateProgress("Scan canceled during remote analysis.") scanningInProgress = false CancelScanButton.Visible = false return end if hookmetamethod then addFinding("Metamethod hooks found", "hookmetamethod is available. Possible hooks present.") end if debug and debug.getupvalues then addFinding("Debug Functions", "debug.getupvalues is available.") else addFinding("Debug Functions", "No or limited debug functions.") end detectExploitHooks() if findingsCount == 0 then addFinding("Analysis complete", "No suspicious paths found.") end updateProgress("Analysis complete. Findings: " .. findingsCount) scanningInProgress = false CancelScanButton.Visible = false if discordWebhookUrl ~= "" then local data = { content = "Advanced Analysis Results:\nFindings: " .. findingsCount } local jsonData = HttpService:JSONEncode(data) pcall(function() HttpService:PostAsync(discordWebhookUrl, jsonData) end) end end ScanButton.MouseButton1Click:Connect(scanForAnticheatsAdvanced) CancelScanButton.MouseButton1Click:Connect(function() scanningCanceled = true updateProgress("Cancelling scan...") end) RunService.Heartbeat:Connect(function(deltaTime) end)