Code+Name obfuscator, should I release?

  • Two Factor Authentication is now available on BeyondUnreal Forums. To configure it, visit your Profile and look for the "Two Step Verification" option on the left side. We can send codes via email (may be slower) or you can set up any TOTP Authenticator app on your phone (Authy, Google Authenticator, etc) to deliver codes. It is highly recommended that you configure this to keep your account safe.

Should I release this program?

  • Yes - Closed Source

    Votes: 10 30.3%
  • Yes - Open Source (BSD license)

    Votes: 8 24.2%
  • No.

    Votes: 15 45.5%

  • Total voters
    33

NeoCron

New Member
Apr 2, 2001
3
0
0
54
www.eneqvist.nu
First off Id like to point out that relying on obfuscation as a protection scheme is a very bad idea, it will never stop the really dedicated guys anyway. As DrSin pointed out their obfuscation (which accordingly to the posts in this thread is rather advanced) was broken in a few days. What is a few days in a cheaters lifecycle? 1 minute or a day it doesnt matter.

You might stop some noob that even if he had the code couldnt do anything with it.

Secondly since there are several packages and documents out there describing the storage format you can be sure that the cheating community already has these tools and dont care what you do.

When it comes to rights for code most contracts between an employer and an employee lists that code developed by the employee that has been developed on hardware belonging to the employer or has been derived from knowledge gained during employment belongs to the employer. Also it also lists work that are within a marketsegment targeted by the employer as owned.

Now this is employment contracts, I havent read the license distributed with the game. If however the license in the gamepackage doesnt mention any rights then Epic dont have it.

On the other hand, if you for instance look at the license for things like GNUs flex/bison etc which generates code from a template it actually lists the generated code as owned by GNU. They might not own the template but what are you gonna do with it?

I however is always for releasing code, the benefits far outweigh the disadvantages. For instance you have a huge knowledge base which could aid in detecting problems or weak spots in the code and possibly even come up with better ways to do things. Which in the end would benefit the project.

In your case since its an isolated tool thats probably not being developed further these point might not strike home to you but its my take on things anyway.

My point on the question you asked to start with is; It really doesnt matter do whatever you like.

PS: As a request could you if you released the code add a crypto function also?
 

inio

many fauceted scarlet emerald
Feb 8, 2002
105
0
0
CA, USA
www.inio.org
Originally posted by NeoCron
First off Id like to point out that relying on obfuscation as a protection scheme is a very bad idea, it will never stop the really dedicated guys anyway...

The problem is that because of the way UnrealScript works, obfuscation is the only option. With UTPT available, your only options are removing the symbols necesary for easy decompilation and producing a corrupt package which UTPT won't on. UTPure does both of these - my code only does symbol obfuscation.

You might stop some noob that even if he had the code couldnt do anything with it.

This was my exact intent in writing the code. I wrote a class which displays a "Made on a Mac" badge when my maps load. I didn't want some newbie copy/pasting this into their map and replacing the texture & text. By obfuscating the code I prevent this from happening.

I however is always for releasing code, the benefits far outweigh the disadvantages. For instance you have a huge knowledge base which could aid in detecting problems or weak spots in the code and possibly even come up with better ways to do things. Which in the end would benefit the project.

In your case since its an isolated tool thats probably not being developed further these point might not strike home to you but its my take on things anyway.

My only reason for not releasing source is that obfuscating and deobfuscating are symmetric processes. Turning my code into a deobfuscator (capable of producing a recompilable CSHP) would require approximately 1 changed and 2 new lines of code. It could also be used to produce compiled UnrealScript that links against an unmodified CSHP with slightly more changes.
 

Captain Kewl

I know kewl.
Feb 13, 2001
794
0
0
IN YOUR HOUSE
Visit site
Originally posted by inio

This was my exact intent in writing the code. I wrote a class which displays a "Made on a Mac" badge when my maps load. I didn't want some newbie copy/pasting this into their map and replacing the texture & text. By obfuscating the code I prevent this from happening.

I can't believe you went through the trouble of poring through UT tecnical docs and then writing a program just to "protect" this. It'd better be one impressive piece of script.
 

Doctor SiN

New Member
Feb 23, 2002
5
0
0
www.midnightinteractive.com
First off Id like to point out that relying on obfuscation as a protection scheme is a very bad idea, it will never stop the really dedicated guys anyway. As DrSin pointed out their obfuscation (which accordingly to the posts in this thread is rather advanced) was broken in a few days. What is a few days in a cheaters lifecycle? 1 minute or a day it doesnt matter.

Actually.. the first version took a week or so to crack, and then they didn't crack the obfuscation, but used an exploite to get around it. It took some time before someone was easilly able to see around it. But that's not important..

Hiding code in this case was never meant to stop that 1 or 2 people, but to stop the 2000 others.. and there it worked.

This was my exact intent in writing the code. I wrote a class which displays a "Made on a Mac" badge when my maps load. I didn't want some newbie copy/pasting this into their map and replacing the texture & text. By obfuscating the code I prevent this from happening.

This is the type of code that should be made available actually. Maybe not in an easy to use object, but something that people can learn from.
 

EvilDrWong

Every line of code elevates you
Jun 16, 2001
932
0
0
40
Inside the machine
Visit site
hold on a second... i dont quite understand this argument... possibly its because im rather tired, and coming off a nasty high. But still. From my skewed view i see one guy offering a service to developers who dont want people to snatch ideas that they feel are theirs and theirs alone. And on the other side i see people who're saying "let us see what we want" kinda thing? am i right? like... it seems as if one group is deciding that everyone who codes should let everyone else know how they did it... kinda like a magician who HAS to tell the audience how he does a trick after the show? maybe? or am i wrong? im sure ill get flamed for this, mostly because im questioning the all encompassing decision of the "council of elder coders" but hell if that matters. In the end i think it should be up to the programmer whether or not they want their material to be public or not. Maybe there are clauses in the EULA or something... i dont know, it just seems to me that there are a few people who care a bit too much about the topic who're kinda ruining a possibly rewarding possibility... i could be wrong. thats just my 2 cents. BTW: how old is this topic anyway? im gonna feel like a real big moron if its weeks old and ive completely missed the whole thing...
 

Wormbo

Administrator
Staff member
Jun 4, 2001
5,913
36
48
Germany
www.koehler-homepage.de
It's actually four weeks old.:p

This is not meant as an offense, but I don't know, why one should support the selfishness of some little mod author who want to keep the code all to himself. Sometimes after I downloaded a mod I get curious how this thing works.

One example is the External Sniper mutator. I guess there wouldn't be a missile cam in Rockets UT if I never had a chance to look at the code of this mutator.
Another example, also from my Rockets UT mod, is the target lock indicator. I tried using code from the redeemer first, but it sucked. Then I found the code of the soulflares in Slave Master. It wasn't perfect, but at least much more accurate. I ended up taking a sheet of paper and trying to find out a formula for projecting a given position in 3D space onto the HUD.

What I want to say is that mods/mutators and especially their code can bring up new ideas and if there already is a working solution, then why would somebody let others re-invent the wheel?
 

Dark[NSF]

Northwest Secessionalist Forces
Leave it how it is..

People learn by reading source, and even if they do steal code, what does it matter? If they make a better mod with the ripped code doesn't that just make the community stronger by constant improvement?

Except ofcource there is variable hacking :p I don't know... Confusing subject.
 

Wormbo

Administrator
Staff member
Jun 4, 2001
5,913
36
48
Germany
www.koehler-homepage.de
Ugh, where did you dig out this thing?

Anyway, there have been numerous discussions about this very topic and the bottom line is:
  • The code is there to provide newcomers to UnrealScript a chance to learn the language by modifying existing code first before trying to create something from scratch.
  • Don't hide your code because you don't want anyone to rip it off, it won't work. Obfuscating code probably won't prevent people from re-using it anyway.
  • If you strip your code from the package to reduce filse size, at least tell people where they can get the complete code if they want it. However, in most cases the filesize doesn't reduce significantly.
 

elmuerte

Master of Science
Jan 25, 2000
1,936
0
36
42
the Netherlands
elmuerte.com
well, if you have serverpackages you might want to consider stripping the code to a faster download. but this won't matter much when your server package also contains binary data (images, etc.)
 

Asgard

New Member
Oct 6, 2000
265
0
0
Visit site
Actually removing the text bufffer can make a huge difference in download size. I reduced my mutator from 1.4 meg to 900k..Well my mutator contains around 130 scripts and not too many textures etc, but for Unreal1 this is a bonus as theres no file redirecting and downloads really suck the servers bandwidth.. Improved for UT, I know, but every bit helps and can mean a big difference to server performance.

cheers
 

Nighthawk[Opera]

New Member
Sep 21, 2002
9
0
0
52
opera.redeemedsoft.com
I've written an obfuscator as well, but haven't gotten around to packaging it nicely.

In answer to some of the comments above: if you're a would-be mod programmer and want to learn how a mutator works, ASK THE AUTHOR! Don't go hacking away at the code in the hopes that you can figure it out.

In the Half-Life community, people know that they can come to me to ask questions regarding development and implementation; heck, I even hosted a tutorial site (until my time became scarce and the site hasn't been updated in two years). But if I code something and you want to learn how I did it, if you ask me I'll most likely answer you.

I'm also from the school of thought that it's better to be given an explanation on how code's supposed to be created than to be handed the code and figure out what the hell it does. I'm a self-taught programmer, and the concepts, the algorithms, the methods are much more valuable than the source code itself. Cutting and pasting code from one mutator to another doesn't add to one's personal growth and improvement in coding. Asking how its done and then doing it your own way does.

I come from a history of having my concepts and code ripped off by others without acknowledgement, taken by people who claim that the idea was entirely theirs even though we'd come up with it months, even years, before and made it apparent publically.

For this reason, I hate Unreal's manner of providing the source with everything, and make a conscience effort so that, if you feel so desperate to figure out my code by decompiling it and figuring it out the hard way, rather than ask me, that's your problem.

But I'm not going to help you if you don't ASK for help.

Release it. In fact, if you need assistance on it don't hesitate to contact me.
 

Mychaeel

New Member
In the Half-Life community
This is the Unreal community though. Don't make the mistake of simply transferring a community's standards to another one.
I'm a self-taught programmer, and the concepts, the algorithms, the methods are much more valuable than the source code itself. Cutting and pasting code from one mutator to another doesn't add to one's personal growth and improvement in coding.
You're confusing two completely unrelated concepts here. One is what you're talking about---ripping off others' code. That indeed doesn't help anybody's personal improvement, and it is socially (and legally) unacceptable. The other is what I am talking about---reading other people's code and learning from it how something is done. That's perfectly fine in my book. Heck, most of us learned most of what we know that way.

Obfuscating source code doesn't prevent anybody from ripping off code where UnrealScript is concerned; there are several bytecode decompilers readily available. They produce compilable UnrealScript source code, albeit stripped of all useful comments that would help somebody with honest intentions from understanding the code and the algorithms. If anything you are encouraging people to rip off your code instead of just learning from it by obfuscating your source code.

Having to write an email and wait for a reply is not the same as simply having the source code at one's disposal.
 
Last edited:

elmuerte

Master of Science
Jan 25, 2000
1,936
0
36
42
the Netherlands
elmuerte.com
For concepts it's nice to have tutorials and stuff, and the unrealwiki is a nice place for it.
But I don't have the time to write tutorials for all the concepts I use in my mods. By providing the code people can take a look at it and if they can't get it they can still email me for additional info.

I'm also a self-thaugth programmer and most things I learned stuff from looking at code others wrote.