| |
|
71428
|
  |
| Joined: 06 Aug 2015 |
| Total Posts: 339 |
|
|
| 15 Aug 2015 12:32 AM |
| Stop. Why does obfuscating of scripts even take place on Roblox? You gonna copyright scripts or something? The only reason is if you're hiding something malicious. Leave. |
|
|
| Report Abuse |
|
|
TimeTicks
|
  |
| Joined: 27 Apr 2011 |
| Total Posts: 27115 |
|
|
| 15 Aug 2015 12:32 AM |
Here is my list:
1. Its unnecessary to obfuscate code. Now stop. 1 copied script from some skid expliter won't be the end of the world.
"Talk is cheap. Show me the code." - Linus Torvalds |
|
|
| Report Abuse |
|
|
| |
|
wurzer
|
  |
| Joined: 08 Jul 2015 |
| Total Posts: 71 |
|
|
| 15 Aug 2015 02:52 PM |
@cpmoderator12345
Shouldn't you be in school? |
|
|
| Report Abuse |
|
|
cntkillme
|
  |
| Joined: 07 Apr 2008 |
| Total Posts: 44956 |
|
|
| 15 Aug 2015 02:52 PM |
| Just use ModuleScripts and keep the copylocked so they can only require. |
|
|
| Report Abuse |
|
|
|
| 15 Aug 2015 07:33 PM |
"Shouldn't you be in school?" no school is on 8/31/15 |
|
|
| Report Abuse |
|
|
|
| 15 Aug 2015 07:35 PM |
funny how nobody was saying its unnecessary when places were being stolen a few days ago LOL btw obfuscation is impossible in rbx.lua the closest you'll get is converting your code to bytecode but gskw told me how to deobfuscate it XD |
|
|
| Report Abuse |
|
|
awotn
|
  |
| Joined: 01 Nov 2014 |
| Total Posts: 226 |
|
|
| 15 Aug 2015 07:37 PM |
| there are almost no easy mechanisms for obf in Lua, and especially Rbx.Lua |
|
|
| Report Abuse |
|
|
cntkillme
|
  |
| Joined: 07 Apr 2008 |
| Total Posts: 44956 |
|
|
| 15 Aug 2015 07:55 PM |
'btw obfuscation is impossible in rbx.lua' No
'the closest you'll get is converting your code to bytecode but gskw told me how to deobfuscate it XD' You don't know what bytecode is, and there is no way to "decode" it, only decompile it. And the code won't be exactly the same.
|
|
|
| Report Abuse |
|
|
morash
|
  |
| Joined: 22 May 2010 |
| Total Posts: 5834 |
|
|
| 15 Aug 2015 08:01 PM |
| Convert all your variable names into random characters. |
|
|
| Report Abuse |
|
|
|
| 15 Aug 2015 08:02 PM |
actually you can convert strings to hex or bytecode, like others said, remove whitespaces according to wiki, and something i thought of myself: calling functions via function via function. Basically a whole thread gets executed with a bunch of functions... All in the mininum number of lines... That must be hard to read. But elunate suggested using loadstring oddly... er... why? |
|
|
| Report Abuse |
|
|
cntkillme
|
  |
| Joined: 07 Apr 2008 |
| Total Posts: 44956 |
|
|
| 15 Aug 2015 08:05 PM |
'you can convert strings to hex or bytecode' Uhm, no
"\91" == "a" They're byte escapes, and they don't make it harder to read considering you can print it. Also you're using the term "bytecode" wrong. |
|
|
| Report Abuse |
|
|
cntkillme
|
  |
| Joined: 07 Apr 2008 |
| Total Posts: 44956 |
|
|
| 15 Aug 2015 08:06 PM |
when you do
local var = "\91" The variable at this point (when it is initialized) is "a", hence why your method won't be good for 'obfuscation' alone |
|
|
| Report Abuse |
|
|
|
| 15 Aug 2015 08:08 PM |
'btw obfuscation is impossible in rbx.lua' "No" Yes
you know what im talking about -_- with the code i tested, it looked like i was able to convert it to the original code i only tested with ~4 simple lines though |
|
|
| Report Abuse |
|
|
cntkillme
|
  |
| Joined: 07 Apr 2008 |
| Total Posts: 44956 |
|
|
| 15 Aug 2015 08:12 PM |
Do you know the definition of obfuscation? 'make obscure or unclear' Here is something that is pretty damn hard to read:
setfenv((math.ceil(math.log(math.abs(math.tan(-(math.pi/4)))))+math.log10(math.log(math.exp(6))+math.sin(math.pi/2)+math.abs(math.cos(math.pi))+math.tan(math.pi/4)+(math.log10(100) - 1))*math.log(math.exp(math.log(math.exp(math.log10(math.deg(math.pi/2)-math.abs(100-math.deg(math.pi)))))))),getfenv(math.cos(math.pi/2))[string["r"..[[everse]]]("elbatatemtes")]({x=math.pi,print=print,getfenv=getfenv,math=math,string=string},{}))getfenv(math.exp(math.log(math.sin(math.pi/2))))[string.lower(string.gsub(string.gsub("XXPXrXXX1XNTX", "X", ""), "1", "I"))](x)
Like, I wonder what that does (it's not hard to figure out) but it prints math.pi I wrote a couple of these sorts of things and it's not fun to read. |
|
|
| Report Abuse |
|
|
|
| 15 Aug 2015 08:14 PM |
i do but its useless if i can deobfuscate it in a few minutes
print((math.ceil(math.log(math.abs(math.tan(-(math.pi/4)))))+math.log10(math.log(math.exp(6))+math.sin(math.pi/2)+math.abs(math.cos(math.pi))+math.tan(math.pi/4)+(math.log10(100) - 1))*math.log(math.exp(math.log(math.exp(math.log10(math.deg(math.pi/2)-math.abs(100-math.deg(math.pi)))))))),getfenv(math.cos(math.pi/2))[string["r"..[[everse]]]("elbatatemtes")]({x=math.pi,print=print,getfenv=getfenv,math=math,string=string},{}))getfenv(math.exp(math.log(math.sin(math.pi/2))))
print(string.lower(string.gsub(string.gsub("XXPXrXXX1XNTX", "X", ""), "1", "I"))) |
|
|
| Report Abuse |
|
|
cntkillme
|
  |
| Joined: 07 Apr 2008 |
| Total Posts: 44956 |
|
|
| 15 Aug 2015 08:15 PM |
Okay, a 'few' minutes is much longer than a single second x = math.pi; print(x) |
|
|
| Report Abuse |
|
|
|
| 15 Aug 2015 08:22 PM |
| Bytecode is impossible to "reverse", as it is the minimum instructions required for the compiler. You cannot get the source from it. It is the same as trying to decompile an exe file. |
|
|
| Report Abuse |
|
|
76km
|
  |
| Joined: 14 Aug 2015 |
| Total Posts: 5455 |
|
|
| 15 Aug 2015 08:23 PM |
wiki.roblox.com
start there its a great place.
wiki.roblox.com
start there its a great place.
wiki.roblox.com
start there its a great place.
wiki.roblox.com
start there its a great place.
wiki.roblox.com
start there its a great place. |
|
|
| Report Abuse |
|
|
cntkillme
|
  |
| Joined: 07 Apr 2008 |
| Total Posts: 44956 |
|
|
| 15 Aug 2015 08:25 PM |
'Bytecode is impossible to "reverse", as it is the minimum instructions required for the compiler. You cannot get the source from it. It is the same as trying to decompile an exe file.' Generally, that usually implies. The ANSI C Lua compiler however doesn't really do optimizations, so code as simple as:
local xyz = 123; print(xyz);
Can exactly be reverted back (the local variable name can if debug data was stored during compilation, which it usually is anyways) |
|
|
| Report Abuse |
|
|
|
| 15 Aug 2015 08:41 PM |
Well, for simple stuff, yes, that would apply. But for API calls and such, like PostAsync, it cannot, only be approximated. |
|
|
| Report Abuse |
|
|
cntkillme
|
  |
| Joined: 07 Apr 2008 |
| Total Posts: 44956 |
|
|
| 15 Aug 2015 08:43 PM |
It still can (to an extent). Like if you did game:GetService("HttpService"):PostAsync("blah")
Can easily be reversed (sort of). The decompiler might assume that you are doing: local var = game:GetService("HttpService") var:PostAsync("blah")
Or something. |
|
|
| Report Abuse |
|
|
|
| 15 Aug 2015 08:44 PM |
| The second one is shown as the first when parsing bytecode. It removes variables from the string |
|
|
| Report Abuse |
|
|
cntkillme
|
  |
| Joined: 07 Apr 2008 |
| Total Posts: 44956 |
|
|
| 15 Aug 2015 08:46 PM |
| What do you mean it removes variables from the string? What string? You mean the source code? |
|
|
| Report Abuse |
|
|