DiittoJoin Date: 2011-03-08 Post Count: 92 |
@cnt y cant u spell my name right; and OP is offline on IRC ,-, |
|
cntkillmeJoin Date: 2008-04-07 Post Count: 49450 |
I have everything-lexia |
|
|
@diitto
You can't spell ditto. |
|
DiittoJoin Date: 2011-03-08 Post Count: 92 |
@eternal
Imbecile, I never intended to name myself after the word or the damned Pokemon. Don't make your ignorant assumptions. |
|
cntkillmeJoin Date: 2008-04-07 Post Count: 49450 |
Diitto this isn't the SB comments, you are not considered "smart" here.
Don't necrobump next time kthanks. |
|
|
"Wrap your functions somehow"
Example code? >:( |
|
|
"Don't make your ignorant assumptions."
I don't think he ever said you were named after either of them. Don't make assumptions, hypocrite. |
|
DiittoJoin Date: 2011-03-08 Post Count: 92 |
@cnt I don't need to "pretend" to be smart to be smart.
@jarod "You misspelled Ditto" I have enough experience to know when someone is being an ass or not. |
|
cntkillmeJoin Date: 2008-04-07 Post Count: 49450 |
Well you aren't either way, leave. |
|
|
|
"MainMoudle is not a vaild member of Model"....Are you trying to make jokes on people? Dude..The only way to hack is hacking programs.........
And yes.. You gotta download almost everything if you want to sucsses ^.- |
|
|
If a nil'd module script parent is never garbage collected, and :SavePlace() occurs, you can easily open the place up in RobloxStudio and save it to the file. Next step would be to look through it...
Hm... |
|
eLunateJoin Date: 2014-07-29 Post Count: 13268 |
If the parent is nil'd then it's not saved to the datamodel and doesn't exist at the point of a :SavePlace() |
|
Tom_DaIeyJoin Date: 2015-08-26 Post Count: 668 |
hi |
|
tekkitJoin Date: 2012-03-18 Post Count: 130 |
the model itself is empty?
prove:
when doing print(require(165456864)) it returns cannot find module in model
and when i try to print the things inside the asset after inserting it into the world it prints Nothing at all |
|
|
|
Nice name
nice necro bump
-wiki before u forum |
|
rcouretJoin Date: 2013-09-05 Post Count: 129 |
Anyone ever able to do this?
I was unable to even print the source of my own modulescript in my own place, roblox probably fixed some stuff over the years.
I have a question, is there any way to see function names inside someone elses copylocked modulescripts (named MainModule) ? Lets say you have 2 functions in there Foo1() and Foo2(). Is there any way for someone to know which functions are defined? I tried "for i,v in pairs(require(1234567)) do print(v) end, but you only get the address of the function, not a callable name. |
|
gskwJoin Date: 2013-01-05 Post Count: 1364 |
@rcouret, yes, in theory it's possible to steal a private require-by-id ModuleScript's source if it returns a function of some sort.
You see, functions have something called an environment. By default, this environment contains all the global variables, such as Vector3, table, etc. But there's a particular global variable we're especially interested in in this case, that is, script.
There's a design flaw/exploit in how Roblox works that allows us to steal private MainModules. The Roblox Wiki explains this pretty well, so I'll take an explanation from there (page name: "Private module"):
"This is usually accomplished by requiring the module, getting a reference to the module's ModuleScript, parenting the ModuleScript to the DataModel, causing the game to save, and then opening the game in ROBLOX Studio to view the ModuleScript's source."
In practice, you could write a Script like so:
local MainModule = require(SOME_ID)
- We will assume it returns a table containing functions
for i, Function in pairs(MainModule)
if type(Function) == "function" then
local Environment = getfenv(Function)
local Script = Environment.script
script.Archivable = true -- Make sure it's Archivable so it can be saved
-- You may also want to set the ModuleScript's children to Archivable if they aren't already (they probably are)
script.Parent = game
game:GetService("AssetService"):SavePlaceAsync()
end
end
Then, you would put this in a place and clone that place using AssetService:CreatePlaceAsync(). Then you would enter the newly created place, then open it in Studio, and you would have successfully copied the source.
As the Wiki points out, you can circumvent this exploit by placing the following line of code at the start of your MainModule:
script = nil
Notice that you should NOT use "local" in this case. |
|
|
why would you tell that skid how to steal modulescripts? |
|
gskwJoin Date: 2013-01-05 Post Count: 1364 |
I don't want to jump to assumptions about people like that online, and regardless, the only way out of being a skid is to learn. So I'm hoping any skid who reads my previous post takes their time to understand it properly. |
|
cntkillmeJoin Date: 2008-04-07 Post Count: 49450 |
It's still possible to steal private modulescripts even if they have script = nil at the top because Roblox is really stupid (I don't think it's been fixed yet) |
|
|
cntkillme, I don't believe you
Please PM me the method (only me and nobody else) and I'll see if you're lying :) |
|
cntkillmeJoin Date: 2008-04-07 Post Count: 49450 |
No.
I'm kidding. It's patched now according to convex so I don't care:
ScriptContext.Error event passes the script.
Just get the ModuleScript to error (be it passing wrong types to functions it returns or changing the names of services or whatever)
Also using another bug that lets you access the metatable of a scripts' env (which all scripts share) you can _force_ the modulescript to error if they use any built-in |
|
rcouretJoin Date: 2013-09-05 Post Count: 129 |
Me? A skid? I don't expect everyone to know who I am but I do have over ## ####### ##### visits across my games. I am one of the good guys trying to protect my stuff from hackers. |
|