Jump to content


Photo

Game Maker Obfuscator - Protect your GM source


  • Please log in to reply
993 replies to this topic

#21 Schreib

Schreib

    Valen Shadowbreath

  • GMC Member
  • 1455 posts

Posted 01 May 2008 - 07:45 PM

paul23, you are right, it ignores such strings. As I explained in the "About" in the program, there are most likely numerous bugs with the program.

I could add special support for those functions, but I would need a list of all "critical" functions in that case.
  • 0

#22 IsmAvatar

IsmAvatar

    Good Samaritan

  • GMC Member
  • 2411 posts
  • Version:GM8

Posted 01 May 2008 - 08:02 PM

I will see if I can help provide a silver platter for your GMK support. I wasn't aware that a golden platter was not sufficient.

You can begin by reading this (GM7 file format):
http://ismavatar.pro...i...&thread=471

and this (Encryption/Obfuscation documentation):
http://ismavatar.pro...i...&thread=476

and this (LateralGM's GmStreamDecoder/Encoder, 2 classes which makes reading/writing little-endian files and GMKrypted files that much easier):
https://opensvn.csie...eamDecoder.java
https://opensvn.csie...tException.java

and this (LateralGM's GmFileReader/Writer, 2 classes which make use of the Decoder/Encoder, so you could use them for examples)
https://opensvn.csie...FileReader.java
https://opensvn.csie...FileWriter.java

Of course, LateralGM, whilst conveniently written in Java, is (as are the files within) covered under the GNU GPL 3+, which mandates open source, so it would be incompatible with your closed-source obfuscater, but one could write similar ones from scratch, once they have obtained the knowledge needed from the files.
  • 0

#23 Schreib

Schreib

    Valen Shadowbreath

  • GMC Member
  • 1455 posts

Posted 01 May 2008 - 08:04 PM

IsmAvatar, you'd be the first person anyway I'd be running to for support when it comes to the GM format.

Again, thanks for the GM6 file documentation.
  • 0

#24 erthgy

erthgy

    GMC Member

  • New Member
  • 1718 posts

Posted 01 May 2008 - 08:05 PM

nvm, perfectly legal.

Apparently, decompiling isn't :D

GM6.

Sadly, I don't think it's possible for him to make a GM7 version.

and i dont see why everyone is making these things

You mean, you don't care if x years of your blood, sweat, tears, (and passion) of making a commercial game gets hacked, and some one steals the idea?

no games are worth decompiling anyway.

Call our Game Maker Creations' worthless all you want, our work still continues.

and if u decompile a game ur not a noob.

Maybe not nooby, just illegal.

and u WONT be making it for GMKs.

I don't see you trying to help him, so, why complain?

as usual, useless stuff flooding the GMC.

I could tell from your horrible grammar, badly thought out post content, and of course, the order that it was all posted in..

You couldn't make anything better.

You proved that the saying still lives on...
Schreib, this is pretty cool, perhaps, you could contact YYG and maybe... Work, for them? I mean seriously, this could make you a lot of money (from them funding you somehow). Don't ever be "lazy". Just finish that lazy part you were talking about, and listen to the (constructive) feedback that people give you. Apparently you mentioned NPT not liking these types of programs, well, now he likes yours :GM6:.
P.S: Don't use curse words in the first post, they will generate flame! (try replacing the F-word, with the word "chicken" ^_^.) (Also, sorry this post was so long! :D)

Edited by erthgy, 01 May 2008 - 08:07 PM.

  • 0

#25 uuf6429

uuf6429

    Covac Software

  • New Member
  • 2522 posts

Posted 01 May 2008 - 08:08 PM

I was wondering when something like this would come out. The idea was to obfuscate the code, but you did a better job and added the finishing touches.

It keeps away the (at least lazy) noobs.

A suggestion to section V.: Just rename the file from zip to jar!! :D

Kind regards,
Christian
  • 0

#26 NakedPaulToast

NakedPaulToast

    GM Studio/Mac/Win

  • GMC Member
  • 7202 posts
  • Version:GM:Studio

Posted 01 May 2008 - 08:33 PM

Apparently you mentioned NPT not liking these types of programs, well, now he likes yours .


Apparently, you misunderstood, what Schreib said. A program like this for GM has never been released publicly before. My dislike for previous "decompiler solutions" were not because they attempted to solve the problem, it was because they didn't solve anything. I also disliked how the promoters never disclosed the the shortcomings.

Schreib's obfuscator is a completely different type of solution, and his topic is candid and honest regarding it's capabilities.

I commented specifically on obfuscation and decompiling before I was aware that Schreib was working on one.

[link removed]

Some ideas for future versions of Game Maker.

  • Change the exe format, with some deliberate obfuscation designed to inhibit decompiling.
  • Allow variable and resource names to be obfuscated. Yes, this could possibly break execute_string() and execute_file().
  • Make obfuscation an option, conditional that execute_*() commands can’t be used. This will also help protect exes from techniques that force open the interactive debugger.
  • Assuming variable and resource obfuscation is implemented. Give every resource an obfuscate option, create a keyword volatile, for variables. During traditional compile and runs, no obfuscation occurs. This way the debugger still works. When a release exe is being generated, then the obfuscation option gets selected, all resources and variables are obfuscated except resources without the obfuscation option, and variables defined as volatile. This way execute_*() could still be used with those.


  • 0

#27 paul23

paul23

    GMC Member

  • Global Moderators
  • 3363 posts
  • Version:GM8

Posted 01 May 2008 - 09:32 PM

uhm aren't there a mega number of bugs with such a tool? - Renaming resource names would potentially remove a lot of functionality (things like "if (object_get_name(OBJECT) = BLALBLA)" don't work.. Neither does the function "Variable_exists()" work anymore! Or does it look inside strings too?

Nope. It doesn't mess with functions, and when it changes a name it changes everything about the name. if's aren't messed with.



So what happens if I have this variable named "team"..

now in the creation event I do:
if (!variable_local_exists("team"))
{
	team=0
}
If I put in the creation code of objects in the room event, which executed before the creation event, "team=1", what will happen? - Cause I mean, if a name got changed checking for the existance of "team" is pretty useless..
  • 0

#28 Loaf

Loaf

    Just loafing around

  • GMC Member
  • 1306 posts
  • Version:GM:Studio

Posted 01 May 2008 - 09:34 PM

Good work. I'd love to feature this in GM Fetch, as the whole theme of issue 2 is decompilers, and ways to protect your games. Permission? :D
  • 0

#29 Chronic

Chronic

    Administrator

  • Global Moderators
  • 2713 posts
  • Version:GM:Studio

Posted 01 May 2008 - 10:00 PM

paul23, the easiest way to understand this is by thinking of it as a search and replace tool. It looks for a resource name and then changes that to a random string. Then goes and finds other locations of that resource name changing it to the same random string.

Thats why this tool won't work if for some reason you need to have your (eg, sprite and object) resources named the same (btw, the tool does warn you about this if it finds dupe resource names).


Gamma6, you might want to PM him about that. Your post could be over looked.
  • 0

#30 Loaf

Loaf

    Just loafing around

  • GMC Member
  • 1306 posts
  • Version:GM:Studio

Posted 01 May 2008 - 10:28 PM

Yeah your right...
  • 0

#31 JakeX

JakeX

    GMC Member

  • New Member
  • 548 posts

Posted 01 May 2008 - 10:39 PM

Huh. The other day I was wondering if anyone would make an obfuscation program for Game Maker files - guess this is the answer, mm?
Anyway, for anyone who's not really sure what this does, it takes your gm6 files, looks through them, and renames everything so that none of the resource and variable names make any sense. It's harder to figure out what your code is supposed to do when it uses variable names like Fd3_37Q, yes?

As for what Chronic said about duplicate resource names, I think any Game Maker user who makes those sort of mistakes isn't really in a position to be worried about people wanting to decompile their game anyway.

Edited by JakeX, 01 May 2008 - 10:40 PM.

  • 0

#32 Dmaster270

Dmaster270

    GMC Member

  • New Member
  • 1736 posts

Posted 01 May 2008 - 10:46 PM

Huh. The other day I was wondering if anyone would make an obfuscation program for Game Maker files - guess this is the answer, mm?
Anyway, for anyone who's not really sure what this does, it takes your gm6 files, looks through them, and renames everything so that none of the resource and variable names make any sense. It's harder to figure out what your code is supposed to do when it uses variable names like Fd3_37Q, yes?

@last sentence
Which is exactly why you should use this right before you compile the exe.
  • 0

#33 JakeX

JakeX

    GMC Member

  • New Member
  • 548 posts

Posted 01 May 2008 - 10:50 PM

If the author has any sense of logic, this program won't overwrite the original source file.
  • 0

#34 Schreib

Schreib

    Valen Shadowbreath

  • GMC Member
  • 1455 posts

Posted 01 May 2008 - 11:06 PM

Of course it will not, as I stated in my first post.

I think I quite throroughly explained what an obfuscator does in paragraph I, however.
  • 0

#35 candc32

candc32

    GMC Member

  • GMC Member
  • 895 posts

Posted 01 May 2008 - 11:26 PM

WOW, that is really neat; you should definitely make a GMK compatible version.
EDIT:
also, if it is possible, you should make it rename the sub folders to further confuse hackers/decompilers.
EDIT2:
if you are using D&D with things like the show message it will Obfuscate them as well.

Edited by candc32, 01 May 2008 - 11:46 PM.

  • 0

#36 Tahnok

Tahnok

    Friendly Madman

  • GMC Member
  • 1730 posts
  • Version:Unknown

Posted 01 May 2008 - 11:29 PM

Thank you! I've been waiting for this. If it worked with GM7 then it would be perfect.

As a note to other users, running a gmk through LGM to get the gm6 will cause this program to error unless you open the gm6 in GM and save it again.

Also, it seems to mess up with case statements that contain a default case (it replaces the "default" keyword).
  • 0

#37 Schreib

Schreib

    Valen Shadowbreath

  • GMC Member
  • 1455 posts

Posted 01 May 2008 - 11:32 PM

Thank you! I've been waiting for this. If it worked with GM7 then it would be perfect.

As a note to other users, running a gmk through LGM to get the gm6 will cause this program to error unless you open the gm6 in GM and save it again.

Also, it seems to mess up with case statements that contain a default case (it replaces the "default" keyword).

Thank you. These are the kinds of posts I need. I'll have this fixed right away.

also, if it is possible, you should make it rename the sub folders to further confuse hackers/decompilers.

This is not required, because GM discards the resource tree when compiling. That means that when you decompile an exe, all resources will lie in a big clump and will not be organized as before. I had that in plan before I discovered this.
  • 0

#38 Qwertyman

Qwertyman

    C&D Games

  • New Member
  • 1178 posts

Posted 01 May 2008 - 11:36 PM

Thats why this tool won't work if for some reason you need to have your (eg, sprite and object) resources named the same (btw, the tool does warn you about this if it finds dupe resource names).

That's a bad idea in general, so it's probably a good thing the tool warns you.
  • 0

#39 theweirdn8

theweirdn8

    Unrivaled Legend

  • GMC Member
  • 3833 posts
  • Version:GM8.1

Posted 02 May 2008 - 03:11 AM

OMG COME ON PEOPLE REPORT!
  • 0

#40 IsmAvatar

IsmAvatar

    Good Samaritan

  • GMC Member
  • 2411 posts
  • Version:GM8

Posted 02 May 2008 - 03:13 AM

Report why? This is not a bad tool, it's a good tool. It *hinders* hackers - it's a *counter* measure against the decompiler.
  • 0




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users