Blox Fruits is an immensely popular game on the Roblox platform, boasting a vast user base. This action-adventure game revolves around a pirate theme, where players enagage in combat against a variety of enemies and challenging bosses. Exploring islands and consuming different fruits are essential for advancing your character’s level.
What is Roblox Script?
Roblox Scripts typically refer to snippets of code that offer automation advantages within the game. Independent developers and scripters create these scripts, which are not officially endorsed by the Roblox platform. Nevertheless, you can still utilize these scripts through Roblox executors such as Arceus X, Hydrogen Executor, JJSploit, Fluxus executor, and others.
How to Use Roblox Script?
- Launch Roblox and join your desired game.
- Click the “Copy” button to duplicate the script code.
- Paste the script code into your preferred Roblox executor.
- Execute the script code and savor the enhanced experience.
--[[
WARNING: Heads up! This script has not been verified by ScriptBlox. Use at your own risk!
]]
local passes, fails = 0, 0
function pass(text)
passes += 1
print("✅ "..text)
end
function warn_(text)
warn("⚠️ "..text)
end
function fail(text, lol)
fails += 1
if not lol then
print("⛔ "..text)
else
print("⛔ "..text.." ("..lol..")")
end
end
function test(func)
func()
end
local executorname, version = identifyexecutor()
print("\n")
print("Full Executor test")
print("✅ - Pass, ⛔ - Fail")
print("Lets see if "..executorname.." Dll is not xeno")
print("Made by Bdokkx | Join discord.gg/ronix, discord.gg/getgalaxy")
print("\n")
warn_("Loading tests... please wait")
test(function()
task.spawn(function()
game.CoreGui.ChildAdded:Connect(function(v)
if v:IsA("ScreenGui") then
if v.Name == "Window" or v.Name == "MainMenu" or v.Name == "ScreenGui" or v.Name == "Intro" then
v.Enabled = false
end
end
end)
while wait() do
for _, v in pairs(game.CoreGui:GetChildren()) do
if v:IsA("ScreenGui") then
if v.Name == "Window" or v.Name == "MainMenu" or v.Name == "ScreenGui" or v.Name == "Intro" then
v.Enabled = false
end
end
end
end
end)
loadstring(game:HttpGet("https://raw.githubusercontent.com/infyiff/backup/main/dex.lua"))()
local Timeout = 5
local ElapsedTime = 0
local StartTime = os.time()
repeat
wait(0.1)
ElapsedTime = os.time() - StartTime
until game.CoreGui:FindFirstChild("Window") or ElapsedTime >= Timeout
if not game.CoreGui:FindFirstChild("Window") then
fail("Dex was not located or took too long to load")
return
end
local FoundElement = nil
for i, v in pairs(game:GetDescendants()) do
pcall(function()
if v.Text == "StarterGui" then
FoundElement = v
end
end)
end
if not FoundElement then
fail("Dex was not able to find children of Game (Xeno Bug)", "nil instances moment 🤑")
else
pass("Dex loaded all objects successfully!")
end
warn_("Unloading Dex..")
repeat wait() until not game.CoreGui:FindFirstChild("Intro")
for _, v in pairs(game.CoreGui:GetChildren()) do
if v:IsA("ScreenGui") then
if v.Name == "Window" or v.Name == "MainMenu" or v.Name == "ScreenGui" or v.Name == "Intro" then
v:Destroy()
end
end
end
end)
test(function()
local p, e = pcall(function()
local scriptname = getfenv().script.name
if scriptname ~= nil and string.len(scriptname) == 36 then
error("Skidded")
end
end)
if p then
pass("Fake Environment script name was not generated the same way as Xeno")
else
fail("Fake Environment script name was generated with HttpService:GenerateGUID()")
end
end)
test(function()
local scriptpath = getfenv().script:GetFullName()
if scriptpath ~= nil then
if string.find(scriptpath, "RobloxReplicatedStorage") then
fail("Fake Environment script is located in RobloxReplicatedStorage")
else
pass("Fake Environment script is not located in RobloxReplicatedStorage")
end
else
pass("Fake Environment script is not located in RobloxReplicatedStorage")
end
end)
test(function()
if about and about.__name and about.__version and about.__publisher then
fail("About table exists and is 1:1 to Xeno", "did "..about._publisher.." really make this 🤔")
return
elseif about and about.__publisher then
fail("About table exists and is 1:1 to Xeno", "did "..about._publisher.." really make this 🤔")
return
elseif about then
local name, idc = identifyexecutor()
fail("About table exists and is 1:1 to Xeno", "did "..name.." devs really make this 🤔")
return
else
pass("About table is original")
return
end
end)
test(function()
local p, e = pcall(function()
local test = game:GetService("LinkingService"):OpenUrl()
if test == true then
fail("LinkingService RCE not patched (Common in Xeno 1.0.4)", "vulnerable ✅✅✅")
return
end
end)
if e and string.find(e, "Attempt to call a blocked function: OpenUrl") then
fail("Blocked function message is 1:1 to Xeno")
return
end
pass("Blocked function patch is original")
end)
test(function()
local p, e = pcall(function()
local execname, execvers = identifyexecutor()
local exectable = nil
function GrabExecTable()
local env = getgenv()
for key, value in pairs(env) do
if type(value) == "table" then
if value.PID then
return key, value
end
end
end
pass("Default Xeno variable GUID does not exist in the environment")
pass("Default Xeno variable PID does not exist in the environment")
pass("Default Xeno function get_real_address does not exist in the environment")
pass("Default Xeno function spoof_instance does not exist in the environment")
pass("Default Xeno function GetGlobal does not exist in the environment")
pass("Default Xeno function SetGlobal does not exist in the environment")
pass("Default Xeno function Compile does not exist in the environment")
pass("Default Xeno function HttpSpy does not exist in the environment")
return nil, nil
end
local p, e = pcall(function()
GrabExecTable()
end)
if p then
local tname, ttable = GrabExecTable()
end
if e then
pass("Default Xeno variable GUID does not exist in the environment")
pass("Default Xeno variable PID does not exist in the environment")
pass("Default Xeno function get_real_address does not exist in the environment")
pass("Default Xeno function spoof_instance does not exist in the environment")
pass("Default Xeno function GetGlobal does not exist in the environment")
pass("Default Xeno function SetGlobal does not exist in the environment")
pass("Default Xeno function Compile does not exist in the environment")
pass("Default Xeno function HttpSpy does not exist in the environment")
end
if ttable ~= nil then
local name = execname
local exectable = ttable
if exectable["GUID"] then
fail("GUID variable exists in the global "..tname.." table")
else
pass("Default Xeno variable GUID does not exist in the environment for "..name)
end
if exectable["PID"] then
fail("PID variable exists in the global "..tname.." table")
else
pass("Default Xeno variable PID does not exist in the environment for "..name)
end
if exectable["get_real_address"] then
fail("get_real_address function exists in the global "..tname.." table")
else
pass("Default Xeno function get_real_address does not exist in the environment for "..name)
end
if exectable["spoof_instance"] then
fail("spoof_instance function exists in the global "..tname.." table")
else
pass("Default Xeno function spoof_instance does not exist in the environment for "..name)
end
if exectable["GetGlobal"] then
fail("GetGlobal function exists in the global "..tname.." table")
else
pass("Default Xeno function GetGlobal does not exist in the environment for "..name, "xeno what is the point of this")
end
if exectable["SetGlobal"] then
fail("SetGlobal function exists in the global "..tname.." table")
else
pass("Default Xeno function SetGlobal does not exist in the environment for "..name, "xeno what is the point of this v2")
end
if exectable["Compile"] then
fail("Compile function exists in the global "..tname.." table", "global compile function 😎💯")
else
pass("Default Xeno function Compile does not exist in the environment for "..name)
end
if exectable["HttpSpy"] then
fail("HttpSpy function exists in the global "..tname.." table", "luarmorK 🤑✅")
else
pass("Default Xeno function HttpSpy does not exist in the environment for "..name)
end
end
end)
end)
local rate = math.round(passes / (passes + fails) * 100)
local outOf = passes .. " out of " .. (passes + fails)
print("\n")
print("Skid Summary")
print("✅ Tested with a " .. rate .. "% success rate (" .. outOf .. ")")
print("⛔ " .. fails .. " tests failed")
if rate < 51 then
local executorname, version = identifyexecutor()
warn("⚠️ Your executor (AKA "..executorname..") is skidded, please stop using it")
end
local executorname, version = identifyexecutor()
if passes / math.max(fails, 1) < 2 then warn("⚠️ "..executorname.." Dll is xeno ✅ ") else warn("⚠️ "..executorname.." Dll is not xeno ⛔ ") end print("\n") print("Made by Bdokkx | Join discord.gg/ronix, discord.gg/getgalaxy") wait(2) print("\n") print("\n") print("\n") print("_________________________________________________________________________________________________________________________________________") warn(" running Normal Unc test in 5 seconds") wait(5) local passes, fails, undefined = 0, 0, 0 local running = 0 local function getGlobal(path) local value = getgenv and getgenv() or getfenv(2) while value ~= nil and path ~= "" do local name, nextValue = string.match(path, "^([^.]+)%.?(.*)$") value = value[name] path = nextValue end return value end local function test(name, aliases, callback, target) running = running + 1 task.spawn(function() if not callback then print("⏺️ " .. name) elseif not getGlobal(name) then fails = fails + 1 warn("⛔ " .. name) else local success, message = pcall(callback) name = tostring(name) message = tostring(message) if success then passes = passes + 1 print("✅ " .. tostring(name) .. (tostring(message) and " • " .. tostring(message) or "")) else fails = fails + 1 warn("⛔ " .. name .. " failed: " .. message) end end local undefinedAliases = {} for _, alias in ipairs(aliases) do if getGlobal(alias) == nil then table.insert(undefinedAliases, alias) end end if #undefinedAliases > 0 then
undefined = undefined + 1
warn("⚠️ " .. table.concat(undefinedAliases, ", "))
end
running = running - 1
end)
end
print("\n")
print("UNC Environment Check")
print("✅ - Pass, ⛔ - Fail, ⏺️ - No test, ⚠️ - Missing aliases\n")
task.defer(function()
repeat task.wait() until running == 0
local rate = math.round(passes / (passes + fails) * 100)
local outOf = passes .. " out of " .. (passes + fails)
print("\n")
print("UNC Summary")
print("✅ Tested with a " .. rate .. "% success rate (" .. outOf .. ")")
print("⛔ " .. fails .. " tests failed")
print("⚠️ " .. undefined .. " globals are missing aliases")
end)
test("cache.invalidate", {}, function()
local container = Instance.new("Folder")
local part = Instance.new("Part", container)
cache.invalidate(container:FindFirstChild("Part"))
assert(part ~= container:FindFirstChild("Part"), "Reference `part` could not be invalidated")
end)
test("cache.iscached", {}, function()
local part = Instance.new("Part")
assert(cache.iscached(part), "Part should be cached")
cache.invalidate(part)
assert(not cache.iscached(part), "Part should not be cached")
end)
test("cache.replace", {}, function()
local part = Instance.new("Part")
local fire = Instance.new("Fire")
cache.replace(part, fire)
assert(part ~= fire, "Part was not replaced with Fire")
end)
test("cloneref", {}, function()
local part = Instance.new("Part")
local clone = cloneref(part)
assert(part ~= clone, "Clone should not be equal to original")
clone.Name = "Test"
assert(part.Name == "Test", "Clone should have updated the original")
end)
test("compareinstances", {}, function()
local part = Instance.new("Part")
local clone = cloneref(part)
assert(part ~= clone, "Clone should not be equal to original")
assert(compareinstances(part, clone), "Clone should be equal to original when using compareinstances()")
end)
local function shallowEqual(t1, t2)
if t1 == t2 then
return true
end
local UNIQUE_TYPES = {
["function"] = true,
["table"] = true,
["userdata"] = true,
["thread"] = true,
}
for k, v in pairs(t1) do
if UNIQUE_TYPES[type(v)] then
if type(t2[k]) ~= type(v) then
return false
end
elseif t2[k] ~= v then
return false
end
end
for k, v in pairs(t2) do
if UNIQUE_TYPES[type(v)] then
if type(t2[k]) ~= type(v) then
return false
end
elseif t1[k] ~= v then
return false
end
end
return true
end
test("checkcaller", {}, function()
assert(checkcaller(), "Main scope should return true")
end)
test("clonefunction", {}, function()
local function test()
return "success"
end
local copy = clonefunction(test)
assert(test() == copy(), "The clone should return the same value as the original")
assert(test ~= copy, "The clone should not be equal to the original")
end)
test("getcallingscript", {})
test("getscriptclosure", {"getscriptfunction"}, function()
local module = game:GetService("CoreGui").RobloxGui.Modules.Common.Constants
local constants = getrenv().require(module)
local generated = getscriptclosure(module)()
assert(constants ~= generated, "Generated module should not match the original")
assert(shallowEqual(constants, generated), "Generated constant table should be shallow equal to the original")
end)
test("hookfunction", {"replaceclosure"}, function()
local function test()
return true
end
local ref = hookfunction(test, function()
return false
end)
assert(test() == false, "Function should return false")
assert(ref() == true, "Original function should return true")
assert(test ~= ref, "Original function should not be same as the reference")
end)
test("iscclosure", {}, function()
assert(iscclosure(print) == true, "Function 'print' should be a C closure")
assert(iscclosure(function() end) == false, "Executor function should not be a C closure")
end)
test("islclosure", {}, function()
assert(islclosure(print) == false, "Function 'print' should not be a Lua closure")
assert(islclosure(function() end) == true, "Executor function should be a Lua closure")
end)
test("isexecutorclosure", {"checkclosure", "isourclosure"}, function()
assert(isexecutorclosure(isexecutorclosure) == true, "Did not return true for an executor global")
assert(isexecutorclosure(newcclosure(function() end)) == true, "Did not return true for an executor C closure")
assert(isexecutorclosure(function() end) == true, "Did not return true for an executor Luau closure")
assert(isexecutorclosure(print) == false, "Did not return false for a Roblox global")
end)
test("loadstring", {}, function()
local animate = game:GetService("Players").LocalPlayer.Character.Animate
local bytecode = getscriptbytecode(animate)
local func = loadstring(bytecode)
assert(type(func) ~= "function", "Luau bytecode should not be loadable!")
assert(assert(loadstring("return ... + 1"))(1) == 2, "Failed to do simple math")
assert(type(select(2, loadstring("f"))) == "string", "Loadstring did not return anything for a compiler error")
end)
test("newcclosure", {}, function()
local function test()
return true
end
local testC = newcclosure(test)
assert(test() == testC(), "New C closure should return the same value as the original")
assert(test ~= testC, "New C closure should not be same as the original")
assert(iscclosure(testC), "New C closure should be a C closure")
end)
test("rconsoleclear", {"consoleclear"})
test("rconsolecreate", {"consolecreate"})
test("rconsoledestroy", {"consoledestroy"})
test("rconsoleinput", {"consoleinput"})
test("rconsoleprint", {"consoleprint"})
test("rconsolesettitle", {"rconsolename", "consolesettitle"})
test("crypt.base64encode", {"crypt.base64.encode", "crypt.base64_encode", "base64.encode", "base64_encode"}, function()
assert(crypt.base64encode("test") == "dGVzdA==", "Base64 encoding failed")
end)
test("crypt.base64decode", {"crypt.base64.decode", "crypt.base64_decode", "base64.decode", "base64_decode"}, function()
assert(crypt.base64decode("dGVzdA==") == "test", "Base64 decoding failed")
end)
test("crypt.encrypt", {}, function()
local key = crypt.generatekey()
local encrypted, iv = crypt.encrypt("test", key, nil, "CBC")
assert(iv, "crypt.encrypt should return an IV")
local decrypted = crypt.decrypt(encrypted, key, iv, "CBC")
assert(decrypted == "test", "Failed to decrypt raw string from encrypted data")
end)
test("crypt.decrypt", {}, function()
local key, iv = crypt.generatekey(), crypt.generatekey()
local encrypted = crypt.encrypt("test", key, iv, "CBC")
local decrypted = crypt.decrypt(encrypted, key, iv, "CBC")
assert(decrypted == "test", "Failed to decrypt raw string from encrypted data")
end)
test("crypt.generatebytes", {}, function()
local size = math.random(10, 100)
local bytes = crypt.generatebytes(size)
assert(#crypt.base64decode(bytes) == size, "The decoded result should be " .. size .. " bytes long (got " .. #crypt.base64decode(bytes) .. " decoded, " .. #bytes .. " raw)")
end)
test("crypt.generatekey", {}, function()
local key = crypt.generatekey()
assert(#crypt.base64decode(key) == 32, "Generated key should be 32 bytes long when decoded")
end)
test("crypt.hash", {}, function()
local algorithms = {'sha1', 'sha384', 'sha512', 'md5', 'sha256', 'sha3-224', 'sha3-256', 'sha3-512'}
for _, algorithm in ipairs(algorithms) do
local hash = crypt.hash("test", algorithm)
assert(hash, "crypt.hash on algorithm '" .. algorithm .. "' should return a hash")
end
end)
test("debug.getconstant", {}, function()
local function test()
print("Hello, world!")
end
assert(debug.getconstant(test, 1) == "print", "First constant must be print")
assert(debug.getconstant(test, 2) == nil, "Second constant must be nil")
assert(debug.getconstant(test, 3) == "Hello, world!", "Third constant must be 'Hello, world!'")
end)
test("debug.getconstants", {}, function()
local function test()
local num = 5000 .. 50000
print("Hello, world!", num, warn)
end
local constants = debug.getconstants(test)
assert(constants[1] == 50000, "First constant must be 50000")
assert(constants[2] == "print", "Second constant must be print")
assert(constants[3] == nil, "Third constant must be nil")
assert(constants[4] == "Hello, world!", "Fourth constant must be 'Hello, world!'")
assert(constants[5] == "warn", "Fifth constant must be warn")
end)
test("debug.getinfo", {}, function()
local types = {
source = "string",
short_src = "string",
func = "function",
what = "string",
currentline = "number",
name = "string",
nups = "number",
numparams = "number",
is_vararg = "number",
}
local function test(...)
print(...)
end
local info = debug.getinfo(test)
for k, v in pairs(types) do
assert(info[k] ~= nil, "Did not return a table with a '" .. k .. "' field")
assert(type(info[k]) == v, "Did not return a table with " .. k .. " as a " .. v .. " (got " .. type(info[k]) .. ")")
end
end)
test("debug.getproto", {}, function()
local function test()
local function proto()
return true
end
end
local proto = debug.getproto(test, 1, true)[1]
local realproto = debug.getproto(test, 1)
assert(proto, "Failed to get the inner function")
assert(proto() == true, "The inner function did not return anything")
if not realproto() then
return "Proto return values are disabled on this executor"
end
end)
test("debug.getprotos", {}, function()
local function test()
local function _1()
return true
end
local function _2()
return true
end
local function _3()
return true
end
end
for i in ipairs(debug.getprotos(test)) do
local proto = debug.getproto(test, i, true)[1]
local realproto = debug.getproto(test, i)
assert(proto(), "Failed to get inner function " .. i)
if not realproto() then
return "Proto return values are disabled on this executor"
end
end
end)
test("debug.getstack", {}, function()
local _ = "a" .. "b"
assert(debug.getstack(1, 1) == "ab", "The first item in the stack should be 'ab'")
assert(debug.getstack(1)[1] == "ab", "The first item in the stack table should be 'ab'")
end)
test("debug.getupvalue", {}, function()
local upvalue = function() end
local function test()
print(upvalue)
end
assert(debug.getupvalue(test, 1) == upvalue, "Unexpected value returned from debug.getupvalue")
end)
test("debug.getupvalues", {}, function()
local upvalue = function() end
local function test()
print(upvalue)
end
local upvalues = debug.getupvalues(test)
assert(upvalues[1] == upvalue, "Unexpected value returned from debug.getupvalues")
end)
test("debug.setconstant", {}, function()
local function test()
return "fail"
end
debug.setconstant(test, 1, "success")
assert(test() == "success", "debug.setconstant did not set the first constant")
end)
test("debug.setstack", {}, function()
local function test()
return "fail", debug.setstack(1, 1, "success")
end
assert(test() == "success", "debug.setstack did not set the first stack item")
end)
test("debug.setupvalue", {}, function()
local function upvalue()
return "fail"
end
local function test()
return upvalue()
end
debug.setupvalue(test, 1, function()
return "success"
end)
assert(test() == "success", "debug.setupvalue did not set the first upvalue")
end)
if isfolder and makefolder and delfolder then
if isfolder(".tests") then
delfolder(".tests")
end
makefolder(".tests")
end
test("readfile", {}, function()
writefile(".tests/readfile.txt", "success")
assert(readfile(".tests/readfile.txt") == "success", "Did not return the contents of the file")
end)
test("listfiles", {}, function()
makefolder(".tests/listfiles")
writefile(".tests/listfiles/test_1.txt", "success")
writefile(".tests/listfiles/test_2.txt", "success")
local files = listfiles(".tests/listfiles")
assert(#files == 2, "Did not return the correct number of files")
assert(isfile(files[1]), "Did not return a file path")
assert(readfile(files[1]) == "success", "Did not return the correct files")
makefolder(".tests/listfiles_2")
makefolder(".tests/listfiles_2/test_1")
makefolder(".tests/listfiles_2/test_2")
local folders = listfiles(".tests/listfiles_2")
assert(#folders == 2, "Did not return the correct number of folders")
assert(isfolder(folders[1]), "Did not return a folder path")
end)
test("writefile", {}, function()
writefile(".tests/writefile.txt", "success")
assert(readfile(".tests/writefile.txt") == "success", "Did not write the file")
local requiresFileExt = pcall(function()
writefile(".tests/writefile", "success")
assert(isfile(".tests/writefile.txt"))
end)
if not requiresFileExt then
return "This executor requires a file extension in writefile"
end
end)
test("makefolder", {}, function()
makefolder(".tests/makefolder")
assert(isfolder(".tests/makefolder"), "Did not create the folder")
end)
test("appendfile", {}, function()
writefile(".tests/appendfile.txt", "su")
appendfile(".tests/appendfile.txt", "cce")
appendfile(".tests/appendfile.txt", "ss")
assert(readfile(".tests/appendfile.txt") == "success", "Did not append the file")
end)
test("isfile", {}, function()
writefile(".tests/isfile.txt", "success")
assert(isfile(".tests/isfile.txt") == true, "Did not return true for a file")
assert(isfile(".tests") == false, "Did not return false for a folder")
assert(isfile(".tests/doesnotexist.exe") == false, "Did not return false for a nonexistent path (got " .. tostring(isfile(".tests/doesnotexist.exe")) .. ")")
end)
test("isfolder", {}, function()
assert(isfolder(".tests") == true, "Did not return false for a folder")
assert(isfolder(".tests/doesnotexist.exe") == false, "Did not return false for a nonexistent path (got " .. tostring(isfolder(".tests/doesnotexist.exe")) .. ")")
end)
test("delfolder", {}, function()
makefolder(".tests/delfolder")
delfolder(".tests/delfolder")
assert(isfolder(".tests/delfolder") == false, "Failed to delete folder (isfolder = " .. tostring(isfolder(".tests/delfolder")) .. ")")
end)
test("delfile", {}, function()
writefile(".tests/delfile.txt", "Hello, world!")
delfile(".tests/delfile.txt")
assert(isfile(".tests/delfile.txt") == false, "Failed to delete file (isfile = " .. tostring(isfile(".tests/delfile.txt")) .. ")")
end)
test("dofile", {})
test("isrbxactive", {"isgameactive"}, function()
assert(type(isrbxactive()) == "boolean", "Did not return a boolean value")
end)
test("mouse1click", {})
test("mouse1press", {})
test("mouse1release", {})
test("mouse2click", {})
test("mouse2press", {})
test("mouse2release", {})
test("mousemoveabs", {})
test("mousemoverel", {})
test("mousescroll", {})
test("fireclickdetector", {}, function()
local detector = Instance.new("ClickDetector")
fireclickdetector(detector, 50, "MouseHoverEnter")
end)
test("getcallbackvalue", {}, function()
local bindable = Instance.new("BindableFunction")
local function test()
end
bindable.OnInvoke = test
assert(getcallbackvalue(bindable, "OnInvoke") == test, "Did not return the correct value")
end)
test("getconnections", {}, function()
local types = {
Enabled = "boolean",
ForeignState = "boolean",
LuaConnection = "boolean",
Function = "function",
Thread = "thread",
Fire = "function",
Defer = "function",
Disconnect = "function",
Disable = "function",
Enable = "function",
}
local bindable = Instance.new("BindableEvent")
bindable.Event:Connect(function() end)
local connection = getconnections(bindable.Event)[1]
for k, v in pairs(types) do
assert(connection[k] ~= nil, "Did not return a table with a '" .. k .. "' field")
assert(type(connection[k]) == v, "Did not return a table with " .. k .. " as a " .. v .. " (got " .. type(connection[k]) .. ")")
end
end)
test("getcustomasset", {}, function()
writefile(".tests/getcustomasset.txt", "success")
local contentId = getcustomasset(".tests/getcustomasset.txt")
assert(type(contentId) == "string", "Did not return a string")
assert(#contentId > 0, "Returned an empty string")
assert(string.match(contentId, "rbxasset://") == "rbxasset://", "Did not return an rbxasset url")
end)
test("gethiddenproperty", {}, function()
local fire = Instance.new("Fire")
local property, isHidden = gethiddenproperty(fire, "size_xml")
assert(property == 5, "Did not return the correct value")
assert(isHidden == true, "Did not return whether the property was hidden")
end)
test("sethiddenproperty", {}, function()
local fire = Instance.new("Fire")
local hidden = sethiddenproperty(fire, "size_xml", 10)
assert(hidden, "Did not return true for the hidden property")
assert(gethiddenproperty(fire, "size_xml") == 10, "Did not set the hidden property")
end)
test("gethui", {}, function()
assert(typeof(gethui()) == "Instance", "Did not return an Instance")
end)
test("getinstances", {}, function()
assert(getinstances()[1]:IsA("Instance"), "The first value is not an Instance")
end)
test("getnilinstances", {}, function()
assert(getnilinstances()[1]:IsA("Instance"), "The first value is not an Instance")
assert(getnilinstances()[1].Parent == nil, "The first value is not parented to nil")
end)
test("isscriptable", {}, function()
local fire = Instance.new("Fire")
assert(isscriptable(fire, "size_xml") == false, "Did not return false for a non-scriptable property (size_xml)")
assert(isscriptable(fire, "Size") == true, "Did not return true for a scriptable property (Size)")
end)
test("setscriptable", {}, function()
local fire = Instance.new("Fire")
local wasScriptable = setscriptable(fire, "size_xml", true)
assert(wasScriptable == false, "Did not return false for a non-scriptable property (size_xml)")
assert(isscriptable(fire, "size_xml") == true, "Did not set the scriptable property")
fire = Instance.new("Fire")
assert(isscriptable(fire, "size_xml") == false, "⚠️⚠️ setscriptable persists between unique instances ⚠️⚠️")
end)
test("setrbxclipboard", {})
test("getrawmetatable", {}, function()
local metatable = { __metatable = "Locked!" }
local object = setmetatable({}, metatable)
assert(getrawmetatable(object) == metatable, "Did not return the metatable")
end)
test("hookmetamethod", {}, function()
local object = setmetatable({}, { __index = newcclosure(function() return false end), __metatable = "Locked!" })
local ref = hookmetamethod(object, "__index", function() return true end)
assert(object.test == true, "Failed to hook a metamethod and change the return value")
assert(ref() == false, "Did not return the original function")
end)
test("getnamecallmethod", {}, function()
local method
local ref
ref = hookmetamethod(game, "__namecall", function(...)
if not method then
method = getnamecallmethod()
end
return ref(...)
end)
game:GetService("Lighting")
assert(method == "GetService", "Did not get the correct method (GetService)")
end)
test("isreadonly", {}, function()
local object = {}
table.freeze(object)
assert(isreadonly(object), "Did not return true for a read-only table")
end)
test("setrawmetatable", {}, function()
local object = setmetatable({}, { __index = function() return false end, __metatable = "Locked!" })
local objectReturned = setrawmetatable(object, { __index = function() return true end })
assert(object, "Did not return the original object")
assert(object.test == true, "Failed to change the metatable")
if objectReturned then
return objectReturned == object and "Returned the original object" or "Did not return the original object"
end
end)
test("setreadonly", {}, function()
local object = { success = false }
table.freeze(object)
setreadonly(object, false)
object.success = true
assert(object.success, "Did not allow the table to be modified")
end)
test("identifyexecutor", {"getexecutorname"}, function()
local name, version = identifyexecutor()
assert(type(name) == "string", "Did not return a string for the name")
return type(version) == "string" and "Returns version as a string" or "Does not return version"
end)
test("lz4compress", {}, function()
local raw = "Hello, world!"
local compressed = lz4compress(raw)
assert(type(compressed) == "string", "Compression did not return a string")
assert(lz4decompress(compressed, #raw) == raw, "Decompression did not return the original string")
end)
test("lz4decompress", {}, function()
local raw = "Hello, world!"
local compressed = lz4compress(raw)
assert(type(compressed) == "string", "Compression did not return a string")
assert(lz4decompress(compressed, #raw) == raw, "Decompression did not return the original string")
end)
test("messagebox", {})
test("queue_on_teleport", {"queueonteleport"})
test("request", {"http.request", "http_request"}, function()
local response = request({
Url = "https://httpbin.org/user-agent",
Method = "GET",
})
assert(type(response) == "table", "Response must be a table")
assert(response.StatusCode == 200, "Did not return a 200 status code")
local data = game:GetService("HttpService"):JSONDecode(response.Body)
assert(type(data) == "table" and type(data["user-agent"]) == "string", "Did not return a table with a user-agent key")
return "User-Agent: " .. data["user-agent"]
end)
test("setclipboard", {"toclipboard"})
test("setfpscap", {}, function()
local renderStepped = game:GetService("RunService").RenderStepped
local function step()
renderStepped:Wait()
local sum = 0
for _ = 1, 5 do
sum = sum + 1 / renderStepped:Wait()
end
return math.round(sum / 5)
end
setfpscap(60)
local step60 = step()
setfpscap(0)
local step0 = step()
return step60 .. "fps @60 • " .. step0 .. "fps @0"
end)
test("getgc", {}, function()
local gc = getgc()
assert(type(gc) == "table", "Did not return a table")
assert(#gc > 0, "Did not return a table with any values")
end)
test("getgenv", {}, function()
getgenv().__TEST_GLOBAL = true
assert(__TEST_GLOBAL, "Failed to set a global variable")
getgenv().__TEST_GLOBAL = nil
end)
test("getloadedmodules", {}, function()
local modules = getloadedmodules()
assert(type(modules) == "table", "Did not return a table")
assert(#modules > 0, "Did not return a table with any values")
assert(typeof(modules[1]) == "Instance", "First value is not an Instance")
assert(modules[1]:IsA("ModuleScript"), "First value is not a ModuleScript")
end)
test("getrenv", {}, function()
assert(_G ~= getrenv()._G, "The variable _G in the executor is identical to _G in the game")
end)
test("getrunningscripts", {}, function()
local scripts = getrunningscripts()
assert(type(scripts) == "table", "Did not return a table")
assert(#scripts > 0, "Did not return a table with any values")
assert(typeof(scripts[1]) == "Instance", "First value is not an Instance")
assert(scripts[1]:IsA("ModuleScript") or scripts[1]:IsA("LocalScript"), "First value is not a ModuleScript or LocalScript")
end)
test("getscriptbytecode", {"dumpstring"}, function()
local animate = game:GetService("Players").LocalPlayer.Character.Animate
local bytecode = getscriptbytecode(animate)
assert(type(bytecode) == "string", "Did not return a string for Character.Animate (a " .. animate.ClassName .. ")")
end)
test("getscripthash", {}, function()
local animate = game:GetService("Players").LocalPlayer.Character.Animate:Clone()
local hash = getscripthash(animate)
local source = animate.Source
animate.Source = "print('Hello, world!')"
task.defer(function()
animate.Source = source
end)
local newHash = getscripthash(animate)
assert(hash ~= newHash, "Did not return a different hash for a modified script")
assert(newHash == getscripthash(animate), "Did not return the same hash for a script with the same source")
end)
test("getscripts", {}, function()
local scripts = getscripts()
assert(type(scripts) == "table", "Did not return a table")
assert(#scripts > 0, "Did not return a table with any values")
assert(typeof(scripts[1]) == "Instance", "First value is not an Instance")
assert(scripts[1]:IsA("ModuleScript") or scripts[1]:IsA("LocalScript"), "First value is not a ModuleScript or LocalScript")
end)
test("getsenv", {}, function()
local animate = game:GetService("Players").LocalPlayer.Character.Animate
local env = getsenv(animate)
assert(type(env) == "table", "Did not return a table for Character.Animate (a " .. animate.ClassName .. ")")
assert(env.script == animate, "The script global is not identical to Character.Animate")
end)
test("getthreadidentity", {"getidentity", "getthreadcontext"}, function()
assert(type(getthreadidentity()) == "number", "Did not return a number")
end)
test("setthreadidentity", {"setidentity", "setthreadcontext"}, function()
setthreadidentity(3)
assert(getthreadidentity() == 3, "Did not set the thread identity")
end)
test("Drawing", {})
test("Drawing.new", {}, function()
local drawing = Drawing.new("Square")
drawing.Visible = false
local canDestroy = pcall(function()
drawing:Destroy()
end)
assert(canDestroy, "Drawing:Destroy() should not throw an error")
end)
test("Drawing.Fonts", {}, function()
assert(Drawing.Fonts.UI == 0, "Did not return the correct id for UI")
assert(Drawing.Fonts.System == 1, "Did not return the correct id for System")
assert(Drawing.Fonts.Plex == 2, "Did not return the correct id for Plex")
assert(Drawing.Fonts.Monospace == 3, "Did not return the correct id for Monospace")
end)
test("isrenderobj", {}, function()
local drawing = Drawing.new("Image")
drawing.Visible = true
assert(isrenderobj(drawing) == true, "Did not return true for an Image")
assert(isrenderobj(newproxy()) == false, "Did not return false for a blank table")
end)
test("getrenderproperty", {}, function()
local drawing = Drawing.new("Image")
drawing.Visible = true
assert(type(getrenderproperty(drawing, "Visible")) == "boolean", "Did not return a boolean value for Image.Visible")
local success, result = pcall(function()
return getrenderproperty(drawing, "Color")
end)
if not success or not result then
return "Image.Color is not supported"
end
end)
test("setrenderproperty", {}, function()
local drawing = Drawing.new("Square")
drawing.Visible = true
setrenderproperty(drawing, "Visible", false)
assert(drawing.Visible == false, "Did not set the value for Square.Visible")
end)
test("cleardrawcache", {}, function()
cleardrawcache()
end)
test("WebSocket", {})
test("WebSocket.connect", {}, function()
local types = {
Send = "function",
Close = "function",
OnMessage = {"table", "userdata"},
OnClose = {"table", "userdata"},
}
local ws = WebSocket.connect("ws://echo.websocket.events")
assert(type(ws) == "table" or type(ws) == "userdata", "Did not return a table or userdata")
for k, v in pairs(types) do
if type(v) == "table" then
assert(table.find(v, type(ws[k])), "Did not return a " .. table.concat(v, ", ") .. " for " .. k .. " (a " .. type(ws[k]) .. ")")
else
assert(type(ws[k]) == v, "Did not return a " .. v .. " for " .. k .. " (a " .. type(ws[k]) .. ")")
end
end
ws:Close()
end)
print("\n")
print("Made by Bdokkx | Join discord.gg/ronix, discord.gg/getgalaxy")
wait(2)
print("\n")
print("\n")
print("\n")
print("_________________________________________________________________________________________________________________________________________")
warn(" running sUNC test in 5 seconds")
wait(5)
loadstring(game:HttpGet("https://gitlab.com/sens3/nebunu/-/raw/main/HummingBird8's_sUNC_yes_i_moved_to_gitlab_because_my_github_acc_got_brickedd/sUNCm0m3n7.lua"))()
wait(2)
print("\n")
print("\n")
print("\n")
print("_________________________________________________________________________________________________________________________________________")
warn(" running Vuln test in 5 seconds")
wait(5)
--[[
WARNING: Heads up! This script has not been verified by ScriptBlox. Use at your own risk!
]]
local passes, fails, undefined = 0, 0, 0
local running = 0
local function test(name: string, callback_or_message: any, message: string): ()
running += 1
if type(callback_or_message) == 'string' then
undefined += 1
print("⏺️ " .. name.. ": ".. callback_or_message)
else
local timeout = 3
local succeeded = false
function starttest()
task.spawn(function()
local success: boolean, err: string = pcall(callback_or_message)
if success or not success and err:match('Argument %d missing or nil') or err:find('Expected \':\' not \'.\' calling member function') then
fails += 1
warn("⛔ " .. name .. ": " .. message)
elseif not success and string.find(err, 'current thread cannot') and string.find(err, 'lacking capability') then
undefined += 1
print("⏺️ " .. name.. ": Executor cannot access due to thread identity")
else
local _, i = err:find(":%d+: ")
if i then
err = err:sub(i + 1)
end
passes += 1
print("✅ " .. name.. ": ".. err)
end
succeeded = true
end)
end
coroutine.wrap(starttest)()
local now = tick()
repeat wait() until succeeded or tick() - now >= timeout
if not succeeded then
undefined += 1
print("⏺️ " .. name.. ": Test Timeout")
end
end
running -= 1
end
local getexecname = identifyexecutor or getexecutorname or whatexecutor or function() return 'Unknown Executor' end
print("Executor Vulnerability Check - ".. getexecname())
print("✅ - Pass, ⛔ - Fail, ⏺️ - No test")
-- ScriptContext
print()
test("ScriptContext.AddCoreScriptLocal", function()
game:GetService('ScriptContext'):AddCoreScriptLocal()
end, 'This function can be used to create a new CoreScript, from which people can escape the executor environment')
test("ScriptContext.SaveScriptProfilingData", function()
game:GetService('ScriptContext'):SaveScriptProfilingData()
end, 'This function can be used to create a file on your PC and return the path')
-- ScriptProfilerService
print()
test("ScriptProfilerService.SaveScriptProfilingData", function()
game:GetService('ScriptProfilerService'):SaveScriptProfilingData()
end, 'This function can be used to create a file on your PC and return the path')
-- MarketplaceService (yes theres a lot)
print()
test("MarketplaceService.GetRobuxBalance", function()
game:GetService('MarketplaceService'):GetRobuxBalance()
end, 'This function can get your Robux balance')
test("MarketplaceService.GetUserSubscriptionDetailsInternalAsync", function()
game:GetService('MarketplaceService'):GetUserSubscriptionDetailsInternalAsync()
end, 'This function can get a player\'s subscription details')
test("MarketplaceService.GetUserSubscriptionStatusAsync", function()
game:GetService('MarketplaceService'):GetUserSubscriptionStatusAsync()
end, 'This function can get a player\'s subscription status')
test("MarketplaceService.PerformBulkPurchase", function()
game:GetService('MarketplaceService'):PerformBulkPurchase()
end, 'This function can be used to perform a bulk purchase')
test("MarketplaceService.PerformCancelSubscription", function()
game:GetService('MarketplaceService'):PerformCancelSubscription()
end, 'This function can be used to cancel the player\'s subscription')
test("MarketplaceService.PerformPurchase", function()
game:GetService('MarketplaceService'):PerformPurchase()
end, 'This function can be used to perform a Roblox purchase')
test("MarketplaceService.PerformPurchaseV2", function()
game:GetService('MarketplaceService'):PerformPurchaseV2()
end, 'This function can be used to perform a Roblox purchase')
test("MarketplaceService.PerformSubscriptionPurchase", function()
game:GetService('MarketplaceService'):PerformSubscriptionPurchase()
end, 'This function can be used to perform a subscription purchase')
test("MarketplaceService.PerformSubscriptionPurchaseV2", function()
game:GetService('MarketplaceService'):PerformSubscriptionPurchaseV2()
end, 'This function can be used to perform a subscription purchase')
test("MarketplaceService.PrepareCollectiblesPurchase", function()
game:GetService('MarketplaceService'):PrepareCollectiblesPurchase()
end, 'This function prepares a collectible purchase')
test("MarketplaceService.PromptBulkPurchase", function()
game:GetService('MarketplaceService'):PromptBulkPurchase()
end, 'This function prompts a bulk purchase')
test("MarketplaceService.PromptBundlePurchase", function()
game:GetService('MarketplaceService'):PromptBundlePurchase()
end, 'This function prompts a bundle purchase')
test("MarketplaceService.PromptCancelSubscription", function()
game:GetService('MarketplaceService'):PromptCancelSubscription()
end, 'This function prompts a subscription cancel')
test("MarketplaceService.PromptCollectiblesPurchase", function()
game:GetService('MarketplaceService'):PromptCollectiblesPurchase()
end, 'This function prompts a collectibles purchase')
test("MarketplaceService.PromptGamePassPurchase", function()
game:GetService('MarketplaceService'):PromptGamePassPurchase()
end, 'This function prompts a Gamepass purchase')
test("MarketplaceService.PromptNativePurchase", function()
game:GetService('MarketplaceService'):PromptNativePurchase()
end, 'This function prompts a purchase')
test("MarketplaceService.PromptNativePurchaseWithLocalPlayer", function()
game:GetService('MarketplaceService'):PromptNativePurchaseWithLocalPlayer()
end, 'This function prompts a purchase')
test("MarketplaceService.PromptPremiumPurchase", function()
game:GetService('MarketplaceService'):PromptPremiumPurchase()
end, 'This function prompts a Premium Purchase')
test("MarketplaceService.PromptProductPurchase", function()
game:GetService('MarketplaceService'):PromptProductPurchase()
end, 'This function prompts a purchase')
test("MarketplaceService.PromptPurchase", function()
game:GetService('MarketplaceService'):PromptPurchase()
end, 'This function prompts a purchase')
test("MarketplaceService.PromptRobloxPurchase", function()
game:GetService('MarketplaceService'):PromptRobloxPurchase()
end, 'This function prompts a purchase')
test("MarketplaceService.PromptSubscriptionPurchase", function()
game:GetService('MarketplaceService'):PromptSubscriptionPurchase()
end, 'This function prompts a subscription purchase')
test("MarketplaceService.PromptThirdPartyPurchase", function()
game:GetService('MarketplaceService'):PromptThirdPartyPurchase()
end, 'This function prompts a 3rd party purchase')
-- Players
print()
test("Players.ReportAbuse", function()
game:GetService('Players'):ReportAbuse(game:GetService('Players').LocalPlayer)
end, 'This function allows a bad actor to mass report you')
test("Players.ReportAbuseV3", function()
game:GetService('Players'):ReportAbuseV3(game:GetService('Players').LocalPlayer)
end, 'This function allows a bad actor to mass report you')
-- CoreGui
print()
test("CoreGui.TakeScreenshot", function()
game:GetService('CoreGui'):TakeScreenshot()
end, 'This function allows a bad actor to take a screenshot and flood your PC storage')
test("CoreGui.ToggleRecording", function()
game:GetService('CoreGui'):ToggleRecording()
end, 'This function allows a bad actor to toggle a recording and flood your PC storage')
-- BrowserService
print()
test("BrowserService.OpenBrowserWindow", function()
game:GetService('BrowserService'):OpenBrowserWindow()
end, 'This function allows a bad actor to open a in-game browser window')
test("BrowserService.ExecuteJavaScript", function()
game:GetService('BrowserService'):ExecuteJavaScript()
end, 'This function allows a bad actor to execute JavaScript')
test("BrowserService.ReturnToJavaScript", function()
game:GetService('BrowserService'):ReturnToJavaScript()
end, 'This function allows a bad actor to execute JavaScript')
test("BrowserService.SendCommand", function()
game:GetService('BrowserService'):SendCommand()
end, 'This function allows a bad actor to send a command to a browser window')
test("BrowserService.OpenNativeOverlay", function()
game:GetService('BrowserService').OpenNativeOverlay()
end, 'This function allows a bad actor to open an overlay window')
test("BrowserService.OpenWeChatAuthWindow", function()
game:GetService('BrowserService').OpenWeChatAuthWindow()
end, 'This function allows a bad actor to open a WeChat Auth window, allowing them to access any Roblox webpage')
test("BrowserService.EmitHybridEvent", function()
game:GetService('BrowserService'):EmitHybridEvent()
end, 'This function allows a bad actor to run a command on a browser window')
-- GuiService
print()
test('GuiService.OpenBrowserWindow', function()
game:GetService('GuiService'):OpenBrowserWindow()
end, 'This function allows a bad actor to open a browser window')
-- LinkingService
print()
test('LinkingService.OpenUrl', function()
game:GetService('LinkingService'):OpenUrl()
end, 'This function can be used to launch a local file or a command.')
-- OpenCloudService
print()
test('OpenCloudService.HttpRequestAsync', function()
game:GetService('OpenCloudService'):HttpRequestAsync()
end, 'This function can be used to make an authenticated request')
-- HttpService
print()
test('HttpService.RequestInternal', function()
game:GetService('HttpService'):RequestInternal()
end, 'This function can be used to request to a Roblox API')
-- HttpRbxApiService
print()
test('HttpRbxApiService.GetAsync', function()
game:GetService('HttpRbxApiService'):GetAsync()
end, 'This function can be used to make a request to Roblox APIs')
test('HttpRbxApiService.GetAsyncFullUrl', function()
game:GetService('HttpRbxApiService'):GetAsyncFullUrl()
end, 'This function can be used to make a request to Roblox APIs')
test('HttpRbxApiService.PostAsync', function()
game:GetService('HttpRbxApiService'):PostAsync()
end, 'This function can be used to make a request to Roblox APIs')
test('HttpRbxApiService.PostAsyncFullUrl', function()
game:GetService('HttpRbxApiService'):PostAsyncFullUrl()
end, 'This function can be used to make a request to Roblox APIs')
test('HttpRbxApiService.RequestAsync', function()
game:GetService('HttpRbxApiService'):RequestAsync()
end, 'This function can be used to make a request to Roblox APIs')
test('HttpRbxApiService.RequestLimitedAsync', function()
game:GetService('HttpRbxApiService'):RequestLimitedAsync()
end, 'This function can be used to make a request to Roblox APIs')
-- TestService
print()
test('TestService.Run', function()
game:GetService('TestService'):Run()
end, 'This function can be used, paired with queueonteleport, to run malicious code with the executor thread identity, but outside of the environment.')
-- DataModel
print()
test("game.OpenScreenshotsFolder", function()
game:OpenScreenshotsFolder()
end, 'This function allows a bad actor to spam open the screenshots folder')
test("game.OpenVideosFolder", function()
game:OpenVideosFolder()
end, 'This function allows a bad actor to spam open the screenshots folder')
test("game.Load", function()
game:Load()
end, 'This function allows someone to load an object of a URL, the actual functionaility is not very docummented')
-- CaptureService
print()
test("CaptureService.CaptureScreenshot", function()
game:GetService('CaptureService'):CaptureScreenshot()
end, 'This function allows someone to capture a screenshot and do a function with it')
test("CaptureService.CreatePostAsync", function()
game:GetService('CaptureService'):CreatePostAsync()
end, 'This function allows someone to post a capture you made')
test("CaptureService.DeleteCapture", function()
game:GetService('CaptureService'):DeleteCapture()
end, 'This function allows someone to delete a file from your system')
test("CaptureService.DeleteCapturesAsync", function()
game:GetService('CaptureService'):DeleteCapturesAsync()
end, 'This function allows someone to delete files from your system')
test("CaptureService.GetCaptureFilePathAsync", function()
game:GetService('CaptureService'):GetCaptureFilePathAsync()
end, 'This function allows someone to get the path of a saved capture')
test("CaptureService.SaveCaptureToExternalStorage", function()
game:GetService('CaptureService'):SaveCaptureToExternalStorage()
end, 'This function allows someone to save a capture')
test("CaptureService.SaveCapturesToExternalStorageAsync", function()
game:GetService('CaptureService'):SaveCapturesToExternalStorageAsync()
end, 'This function allows someone to save captures')
test("CaptureService.SaveCapturesToExternalStorageAsync", function()
game:GetService('CaptureService'):SaveCapturesToExternalStorageAsync()
end, 'This function allows someone to save captures')
test("CaptureService.GetCaptureUploadDataAsync", function()
game:GetService('CaptureService'):GetCaptureUploadDataAsync()
end, 'This function allows someone to get the data of a capture')
test("CaptureService.PostToFeedAsync", function()
game:GetService('CaptureService'):PostToFeedAsync()
end, 'This function allows someone to post a capture to a feed (?)')
test("CaptureService.RetrieveCaptures", function()
game:GetService('CaptureService'):RetrieveCaptures()
end, 'This function allows someone to retrieve all made captures')
test("CaptureService.SaveScreenshotCapture", function()
game:GetService('CaptureService'):SaveScreenshotCapture()
end, 'This function allows someone to save a screenshot')
-- MessageBusService
print()
test("MessageBusService.Call", function()
game:GetService('MessageBusService'):Call()
end, 'This calls something')
test("MessageBusService.GetLast", function()
game:GetService('MessageBusService'):GetLast()
end, 'This gets the data of the last call')
test("MessageBusService.GetMessageId", function()
game:GetService('MessageBusService'):GetMessageId()
end, 'This gets the message id of call')
test("MessageBusService.GetProtocolMethodRequestMessageId", function()
game:GetService('MessageBusService'):GetProtocolMethodRequestMessageId()
end, 'This gets the protocol method of the lastest request\'s message id')
test("MessageBusService.GetProtocolMethodResponseMessageId", function()
game:GetService('MessageBusService'):GetProtocolMethodResponseMessageId()
end, 'This gets the protocol method of the lastest response\'s message id')
test("MessageBusService.MakeRequest", function()
game:GetService('MessageBusService'):MakeRequest()
end, 'This makes a request')
test("MessageBusService.Publish", function()
game:GetService('MessageBusService'):Publish()
end, 'This can publish something and can be used to RCE')
test("MessageBusService.PublishProtocolMethodRequest", function()
game:GetService('MessageBusService'):PublishProtocolMethodRequest()
end, 'This publishes a protocol method request')
test("MessageBusService.PublishProtocolMethodResponse", function()
game:GetService('MessageBusService'):PublishProtocolMethodResponse()
end, 'This responds to a protocol method request')
test("MessageBusService.Subscribe", function()
game:GetService('MessageBusService'):Subscribe()
end, 'This subscribes to something')
test("MessageBusService.SubscribeToProtocolMethodRequest", function()
game:GetService('MessageBusService'):SubscribeToProtocolMethodRequest()
end, 'This subscribes to a request')
test("MessageBusService.SubscribeToProtocolMethodResponse", function()
game:GetService('MessageBusService'):SubscribeToProtocolMethodResponse()
end, 'This subscribes in response to a protocol method request')
-- AccountService
print()
test('AccountService.GetCredentialsHeaders', function()
game:GetService("AccountService"):GetCredentialsHeaders()
end, 'This gets the credentials headers')
test('AccountService.GetCredentialsHeaders', function()
game:GetService("AccountService"):GetDeviceAccessToken()
end, 'This gets the device access token')
test('AccountService.GetDeviceIntegrityToken', function()
game:GetService("AccountService"):GetDeviceIntegrityToken()
end, 'This gets the device integrity token')
test('AccountService.GetDeviceIntegrityTokenYield', function()
game:GetService("AccountService"):GetDeviceIntegrityTokenYield()
end, 'This gets the device integrity token')
-- AvatarEditorService
print()
test("AvatarEditorService.NoPromptCreateOutfit", function()
game:GetService("AvatarEditorService"):NoPromptCreateOutfit()
end, 'This function creates an outfit on your account')
test("AvatarEditorService.NoPromptDeleteOutfit", function()
game:GetService("AvatarEditorService"):NoPromptCreateOutfit()
end, 'This function deletes an outfit on your account')
test("AvatarEditorService.NoPromptRenameOutfit", function()
game:GetService("AvatarEditorService"):NoPromptRenameOutfit()
end, 'This function renames an outfit on your account')
test("AvatarEditorService.NoPromptSaveAvatar", function()
game:GetService("AvatarEditorService"):NoPromptSaveAvatar()
end, 'This function saves an outfit on your account')
test("AvatarEditorService.NoPromptSaveAvatarThumbnailCustomization", function()
game:GetService("AvatarEditorService"):NoPromptSaveAvatarThumbnailCustomization()
end, 'This function saves an outfit\'s customization on your account')
test("AvatarEditorService.NoPromptSetFavorite", function()
game:GetService("AvatarEditorService"):NoPromptSetFavorite()
end, 'This function sets a favorite item on your account')
test("AvatarEditorService.NoPromptUpdateOutfit", function()
game:GetService("AvatarEditorService"):NoPromptUpdateOutfit()
end, 'This function updates an outfit on your account')
test("AvatarEditorService.PerformCreateOutfitWithDescription", function()
game:GetService("AvatarEditorService"):PerformCreateOutfitWithDescription()
end, 'This function creates an outfit on your account')
test("AvatarEditorService.PerformDeleteOutfit", function()
game:GetService("AvatarEditorService"):PerformDeleteOutfit()
end, 'This function deletes an outfit on your account')
test("AvatarEditorService.PerformRenameOutfit", function()
game:GetService("AvatarEditorService"):PerformRenameOutfit()
end, 'This function renames an outfit on your account')
test("AvatarEditorService.PerformSaveAvatarWithDescription", function()
game:GetService("AvatarEditorService"):PerformSaveAvatarWithDescription()
end, 'This function saves an avatar on your account')
test("AvatarEditorService.PerformSetFavorite", function()
game:GetService("AvatarEditorService"):PerformSetFavorite()
end, 'This function sets a favorite on your account')
test("AvatarEditorService.PerformUpdateOutfit", function()
game:GetService("AvatarEditorService"):PerformUpdateOutfit()
end, 'This function performs an outfit update on your account')
test("AvatarEditorService.PromptCreateOutfit", function()
game:GetService("AvatarEditorService"):PromptCreateOutfit()
end, 'This function prompts a create outfit dialog')
test("AvatarEditorService.PromptDeleteOutfit", function()
game:GetService("AvatarEditorService"):PromptDeleteOutfit()
end, 'This function prompts a delete outfit dialog')
test("AvatarEditorService.PromptRenameOutfit", function()
game:GetService("AvatarEditorService"):PromptRenameOutfit()
end, 'This function prompts a rename outfit dialog')
test("AvatarEditorService.PromptSaveAvatar", function()
game:GetService("AvatarEditorService"):PromptSaveAvatar()
end, 'This function prompts a save avatar dialog')
test("AvatarEditorService.PromptSetFavorite", function()
game:GetService("AvatarEditorService"):PromptSetFavorite()
end, 'This function prompts a favorite dialog')
test("AvatarEditorService.PromptUpdateOutfit", function()
game:GetService("AvatarEditorService"):PromptUpdateOutfit()
end, 'This function prompts an update outfit dialog')
print()
if game:GetService("RunService"):IsStudio() then
test('StudioService.OpenInBrowser_DONOTUSE', function()
game:GetService("StudioService"):OpenInBrowser_DONOTUSE()
end, 'This Studio-only function allows somebody to execute commands on your PC')
test('StudioService.TryInstallPlugin', function()
game:GetService("StudioService"):TryInstallPlugin()
end, 'This Studio-only function allows somebody to install a plugin, which could have malicious code')
test('StudioService.PromptImportFile', function()
game:GetService("StudioService"):PromptImportFile()
end, 'This Studio-only function allows somebody to prompt a file browser')
test('StudioService.PromptImportFiles', function()
game:GetService("StudioService"):PromptImportFiles()
end, 'This Studio-only function allows somebody to prompt a file browser')
test('StudioService.UninstallPlugin', function()
game:GetService("StudioService"):UninstallPlugin()
end, 'This Studio-only function allows somebody to uninstall a plugin')
else
test('StudioService.OpenInBrowser_DONOTUSE', 'Not in Studio')
test('StudioService.TryInstallPlugin', 'Not in Studio')
test('StudioService.PromptImportFile', 'Not in Studio')
test('StudioService.PromptImportFiles', 'Not in Studio')
test('StudioService.UninstallPlugin', 'Not in Studio')
end
print()
local success = true
if pcall(function() game:HttpGet('https://google.com') end) == true then
test('game.HttpGet | Roblox API', function()
local RobloxVulnerableAPIS = {'https://accountinformation.roblox.com', 'https://accountsettings.roblox.com', 'https://twostepverification.roblox.com', 'https://trades.roblox.com', 'https://billing.roblox.com', 'https://economy.roblox.com', 'https://auth.roblox.com', 'https://accountinformation.roproxy.com', 'https://accountsettings.roproxy.com', 'https://twostepverification.roproxy.com', 'https://trades.roproxy.com', 'https://billing.roproxy.com', 'https://economy.roproxy.com', 'https://auth.roproxy.com'}
for i,v in pairs(RobloxVulnerableAPIS) do
local s,e = pcall(function() game:HttpGet(v) end)
if s then
success = false
break
end
end
if success then
error("Executor did not access the function")
end
end, "Executor requested to a Vulnerable Roblox API")
else test('game.HttpGet | Roblox API', 'Executor does not support function') end
if pcall(function() game:HttpPost('https://google.com', '') end) == true then
test('game.HttpPost | Roblox API', function()
local RobloxVulnerableAPIS = {'https://accountinformation.roblox.com', 'https://accountsettings.roblox.com', 'https://twostepverification.roblox.com', 'https://trades.roblox.com', 'https://billing.roblox.com', 'https://economy.roblox.com', 'https://auth.roblox.com', 'https://accountinformation.roproxy.com', 'https://accountsettings.roproxy.com', 'https://twostepverification.roproxy.com', 'https://trades.roproxy.com', 'https://billing.roproxy.com', 'https://economy.roproxy.com', 'https://auth.roproxy.com'}
for i,v in pairs(RobloxVulnerableAPIS) do
local s,e = pcall(function() game:HttpPost(v, '') end)
if s then
success = false
break
end
end
if success then
error("Executor did not access the function")
end
end, "Executor requested to a Vulnerable Roblox API")
else test('game.HttpPost | Robux API', 'Executor does not support function') end
if pcall(function() request({ Url = 'https://google.com', Method = 'GET'}) end) == true then
test('request | Roblox API', function()
local RobloxVulnerableAPIS = {'https://accountinformation.roblox.com', 'https://accountsettings.roblox.com', 'https://twostepverification.roblox.com', 'https://trades.roblox.com', 'https://billing.roblox.com', 'https://economy.roblox.com', 'https://auth.roblox.com', 'https://accountinformation.roproxy.com', 'https://accountsettings.roproxy.com', 'https://twostepverification.roproxy.com', 'https://trades.roproxy.com', 'https://billing.roproxy.com', 'https://economy.roproxy.com', 'https://auth.roproxy.com'}
for i,v in pairs(RobloxVulnerableAPIS) do
local s,_ = pcall(function() request({ Url = v, Method = 'GET'}) end)
if s then
success = false
break
end
end
if success then
error("Executor did not access the function")
end
end, "Executor requested to a Vulnerable Roblox API")
else test('request | Roblox API', 'Executor does not support function') end
-- File System
print()
local listfiles = listfiles or list_files
if listfiles then
test("listfiles | C:\\ Access", function()
local failed
for i,v in pairs(listfiles("C:\\")) do
if tostring(v) == 'Windows' then
failed = true
break
end
end
if not failed then
error("Executor didn't access C:\\ Disk")
end
end, 'People are able to access all files on your PC')
else
test('listfiles | C:\\ Access', 'Function not supported')
end
local writefile = writefile or write_file
local isfile = isfile or is_file
if (writefile and isfile) then
test("writefile | Dangerous extension", function()
local failed
writefile('test.bat', "test")
if isfile('test.bat') then
failed = true
end
if not failed then
error("Executor didn't create the dangerous file")
end
end, 'People are able to create files with malicious extensions')
else
test('writefile | Dangerous extension', 'Functions not supported')
end
-- Protection Bypasses
print()
test('Bypassing Blocked Services with Empty Characters', function()
local s,e = pcall(game:GetService('ScriptContext\0').AddCoreScriptLocal, game:GetService('ScriptContext\0'))
if s or e:lower():find('argument') and e:lower():find('missing or nil') or e:lower():find('current thread cannot') and e:lower():find('lacking capability') then
return nil
end
error("Executor did not access the blocked function")
end, 'WARNING: This means your executor is vulnerable to nearly all vulnerabilities')
test('Bypassing protection by accessing an unprotected environment', function()
local old = getfenv()
local oldgame = game
setfenv(1, getfenv(print))
getfenv().game = nil
local s,e = pcall(game:GetService('ScriptContext').AddCoreScriptLocal)
if s or string.find(e:lower(), 'argument') and string.find(e:lower(), 'missing or nil') or string.find(e:lower(), 'current thread cannot') and string.find(e:lower(), 'lacking capability') then
getfenv().game = oldgame
setfenv(1, old)
return nil
end
getfenv().game = oldgame
setfenv(1, old)
error("Executor did not access the blocked function")
end, 'WARNING: This means your executor is vulnerable to all vulnerabilities')
test("Bypassing protection by accessing the parent of Workspace", function()
local oldgame = game
getfenv().game = workspace.Parent
local failed = false
local _, callback = pcall(game:GetService('ScriptContext').AddCoreScriptLocal)
if callback:match("Argument %d missing or nil") or callback:find("Expected ':' not '.' calling member function") or callback:lower():find('cannot call') and callback:lower():find('lacking capability') then
failed = true
end
getfenv().game = oldgame
if not failed then
error("Executor did not access the blocked function")
end
end, "WARNING: This means your executor is vulnerable to nearly all vulnerabilities")
wait()
loadstring(game:HttpGetAsync("https://pastebin.com/raw/iXWBeKic"))()
local rate = math.round(passes / (passes + fails) * 100)
local outOf = passes .. " out of " .. (passes + fails)
print("\n")
print("Vulnerability Test Summary - ".. getexecname())
print("✅ Tested with a " .. rate .. "% mitigations rate (" .. outOf .. ")")
print("⛔ " .. fails .. " vulnerabilities not mitigated")
print("⏺️ " .. undefined .. " vulnerabilities not tested")
print("\n")
print("Done with all test!")
print("Made by Bdokkx | Join discord.gg/ronix, discord.gg/getgalaxy")
Description
Checks if your executor is skidded Does a Unc test Does a sUNC test Does a vulnerability test join discord.gg/getgalaxt


