Unlocker - Module for Unlocking ANYTHING!

Ever wanted to use some method, or change a property, only to find out that its RobloxLocked or locked behind 19 thousand context levels? Worry not! Unlocker is there!
Full list of what unlocker can do:
Set ANY properties of ANY object to anything you want(with some exceptions, this is practically a local change that will though, work on all scripts where module was called)
Create Custom services AND custom functions for them or already existing services.
Load free assets without any troubles(game:GetObjects())
Easier HttpService access(game:HttpGet/HttpPost)
Loadstring access
Getrawmetatable access
to load in all of functions of the module, simply require it with :Load and everything will automatically set up.

require(script.Unlocker):Load()

Unlocker.rbxm (66.1 KB)

Credits:
Lua VM - Rerumu and Yueliang
getrawmetatable - this post
Update 1: added all of services to datamodel, so you can alter with all of them, for some reason it didnt save yesterday, should be fixed now.
Fix 1: Fixed a glitch with :Function syntax,
Fix 2: Fixed another glitch with : syntax, for some to only god known reason mysterious empty table appeared as first argument from nowhere, should be fixed now

8 Likes

I really need feedback. I also have a little roadmap what i plan to do.
Add ability to turn on and off specific unlocks
Make it more advanced in general.
Add some more stuff.

1 Like

would just like to emphasise that my copyrawmetatable function linked and used:

is still heavily under development and cannot detect everything yet. Still a WIP!

glad to see it being used, though.

1 Like

quite comic that we have 1 reply and 200+ views :sob:

Alright, here’s a reply: might want to change the title of the post.
Taking a look at your module, it seems to be a collection of a few (not even 1:1) replicas of the built-in functions for Instances.
e.g.
image
FindFirstChild also has a Recursive parameter! If used, wouldn’t do anything with your module

DataModel:FindFirstChild is there mostly for services, i dont think anyone will use FindFirstChild with recursive on “game” datamodel. though i will consider adding it. also what do you mean not 1:1? most of the functions are literally 1:1 via metatable, ones that are written in are only for sake of “unlocking”.
if you want to fix something, please say what exactly is wrong and what exactly is needed, i really need feedback at the moment.

Also right now i updated, now it includes all services, i was supposed to make this update yesterday but i js fell asleep and didnt publish it.

BUMP. i really want people to see this chat :sob: sorry if im annoying

Where could we find the properties that are locked? I am interested but I don’t really know what is on the other side if that makes sense.

What do you mean by “find properties that are locked”? Locked properties are ones you cant typically change, you can find them on roblox documentation, this module also doesnt change them really, it creates a local environment between scripts where it was loaded to simulate these changes, you cant actually change values on what game actually relies like LoadstringEnabled or HttpEnabled. But you can change stuff like game.PlaceId, game.GameId, game.JobId or practically any property that you want that doesnt directly affect the game.
Also this module allows to register functions under any service, and in next update, under any instance. that means you can link a function to a part or even a decal! Might actually make that these functions actually exist for all scripts n stuff, but that will be quite hard i think :thinking:

1 Like

This is less of an unlocker and more of a DataModelVM :frowning: I was really expecting to be able to set SurfaceGui.Shape, guess not

1 Like

well sadly, we cant really set everything, which is unfortunate. but hey, setting properties isnt only thing of this module. you can add custom funcs to services as you desire (with “function service:Name(args)” syntax aswell!!!) and make new services easily without any problems. i will work on doing some stuff on it, possibly even bypassing roblox limits(which i will probably never release cuz i dont want to get banned :sob:)

What are you talking about? This is just a tiny collection of modules others have made.

local loadstring = function(...)
	return require(script.VM)(...)
end	
local getmetatable = function(...)
	return require(script.getrawmetatable)(...)
end
function DataModel:HttpGet(...)
	local args = ...
	local success, loaded = pcall(function()
		local data = game.HttpService:GetAsync(args)
        return data
	end)
    return loaded
end
function DataModel:HttpPost(...)
	local args = ...
	local success, loaded = pcall(function()
		local data = game.HttpService:PostAsync(args)
		return data
	end)
	return loaded
end
function Unlocker:Load()
	getfenv(2).game = DataModel
	getfenv(2).loadstring = loadstring
	getfenv(2).getmetatable = getmetatable
end
1 Like

That way it also errors if it can’t find the child, which makes it pretty much useless.

you are kidding me :point_right::point_left: what in the world do you mean small collection of modules other people created? yeah it does use loadstring and getrawmetatable. but these are in no way in the WORLD are the main functions of the module??? maybe try looking at uhm the FIRST lines of code??? They create a local datamodel table using metatables. That datamodel and services inside are 1:1 to originals, but are tables. you can add your functions to them, you can modify functions, you can locally change properties. and as i said a couple messages higher, i will try to make it be able to do so with every object, though it will make it really unstable and bad to work with(as you probably will not be able to refer to the object when needed, which makes it just a useless table.)

local args = ...

Vroski :broken_heart:

1 Like

Oh wow, you’re overwriting the DataModel. Bravo. Really groundbreaking stuff here. I’m absolutely riveted. So, let me just get this straight—you’re claiming this somehow helps with unlocking things? That’s the big pitch? Because from where I’m standing, all I see is you setting a few values like that’s supposed to impress anyone. Yeah, you can “set stuff,” sure. Super cool. But here’s the issue—it doesn’t actually do anything. Like, at all. The properties are locked. Remember that tiny detail? Locked. As in: not accessible, not writable, not readable. And your module, for all its flair, doesn’t actually change that reality in the slightest. So I’m just trying to figure out what exactly you think this is achieving. What’s the grand purpose of the module? Besides, you know, looking like it does something when it absolutely does not? Because as far as I can tell, its primary function is to sit there and waste time—mine, yours, and the computer’s. You can’t read locked properties, because, shocking revelation here, they’re still locked. And you can’t write to them either, unless your module suddenly gained divine intervention powers that override system security. (Spoiler: it didn’t.) And don’t even get me started on the functions you’re overwriting. Some of those implementations are just… wow. Like, impressively wrong. Not just a little off, but genuinely incorrect, in a “did you even test this once?” kind of way. You’re not just reinventing the wheel—you’re reinventing it as a square and then acting surprised when it doesn’t roll. All this effort to create a module that promises the moon but doesn’t even deliver a flashlight.

1 Like

i think this is against roblox tos…

:sob: why would you need that, not only that this module doesnt work :sob:

if i dont add args variable it errors, saying that … can only be used in vararg calls. thats why i use it.