Game Maker Obfuscator -protect Your Gm Source, Now with a debug feature! |
This forum is meant for discussion of specific distribution issues related to your freeware, shareware, or commercial GM products.
Make sure that you READ these rules prior to posting. And remember that the General GMC Rules apply here too.
![]() ![]() |
Game Maker Obfuscator -protect Your Gm Source, Now with a debug feature! |
May 1 2008, 04:09 PM
Post
#1
|
|
|
Valen Shadowbreath Group: GMC Member Posts: 1481 Joined: 20-October 05 From: The Abyss Member No.: 37333 |
GM Obfuscator Written by Schreib in Java "I tested this program on a few simple games, and it sure got me. The source code is rendered nearly impossible to read, by anyone other than the amazingly desperate." - anonymouss A screenshot of the obfuscator v0.2.3 Update 0.2.3: Option to let native GM constants be replaced by their values; vk_left is replaced by (37) and so forth. I. What is an obfuscator? An obfuscator is a program that will rewrite source code of a program to make it as unreadable as possible to users, often to prevent people from decompiling/reverse engineering the program and stealing bits of code from it. This project is such a program - except that it will take a II. What was the purpose of this project? The project was to disthirsten the crave GMC members had for a decompilation protection. However, this program does not make your games undecompilable. Additionally, the program was NOT written to hinder the decompilation project, as I respect their work a lot. The program's main purpose was to hinder those "noobs" who used the decompiler to understand the game source structure and code. That being said, I will not appreciate any comments saying that I hindered the decompilation project, as I have not. I have put in a lot of energy into this project, so please don't screw around with it. Follow the licence and common sense and you will be OK. III. I'm having problems with this! It messes up my game completely! Here are a few pointers.
IV. Who made this program, and what was it written in? The program was made solely by me, Schreib. I've received much Java help from others, including the person going unnamed who made the decompiler. A personal note to him; I'm sorry I said this program was going to be personal, but I realized it's use would be void in that case since I don't release many games. Moreover, remember that this project was not intended to hinder your efforts in any way. Much help was gotten from the GM6file documentation, written by IsmAvatar. Thanks! The program was written in Java using the open-source development platform Eclipse, utilizing JavaX Swing components to make the GUI. V. How do I use this program? The program is rather straightforward. Simply load your GM6 or GMK file into the program (don't forget to read the license!), specify your settings and process your GM6 or GMK to a new location. The program utilizes SwingWorker, a threaded operation utility which means you'll be able to see the progress of the obfuscation. If you wonder what a certain setting does, hover your cursor over it and a tooltip will appear explaining what it does. Take this final file, open it and create an executable out of it. That's it, your game functions just as well as before, but when decompiled is quite difficult to understand. VI. "When I open the ZIP all I see is .class files. How do I run the program?" This happens to people using IE and think the JAR (Java ARchive) is a ZIP file. A tip; throw away IE and use either Opera or FireFox. Then run the JAR file, providing you have the latest (v6) Java virtual environment installed. VII. Screenshots Here are few screenshots of GM6 projects I have obfuscated with my obfuscator. ![]() Other images: [2] [3] [4] VIII. Download Download the JAR (read section V above, IE users!) from one of these two mirrors: WillHostForFood.com - Version 0.2.3 ~Newest~ Download! MediaFire - Version 0.2.3 ~Newest~ Download! Old links (0.2.2): http://www.willhostforfood.com/access.php?fileid=22120 http://www.mediafire.com/?2wrb2jmd5ag IX. Acknowledgements I would like to sincerely thank X. Bugs & Suggestions This program has been throughly tested on my own GM6/GMKs and other people's, including a lot of variety like D&D, code and so on. This program might not be able to obfuscate your coding style! The program was written in mind with the default Java coding&indentation standard, and since GM is quite forgiving when it comes to syntax, be aware that the obfuscator might not be able to obfuscate certain pieces of your code! If it cannot do so, it will report with an error of the script/code/object in question, and the line the obfuscator found confusing. Even if it is successful, there is no guarantee that your game will be syntax-error free. (I hope it will, I have tested this a lot and no errors have popped up for my and others GM6/GMKs). If you want to report a bug, send me a PM with the ORIGINAL file and the script/code the obfuscator couldn't obfuscate. If you have any suggestions, you are free to do so as well. XI. Licencing and terms of use This program utilizes reading the GM6 and GMK format, created by Mark Overmars. I hold no responsibility or accountability if the program is not able to read your particular file, and neither does Mark Overmars or YoYoGames. This tool does not interact with the executables created by Game Maker nor Game Maker itself - only the editable source files Game Maker can create. This project is not officially supported by neither YoYoGames or Mark Overmars - yet. As close as today YoYoJim reported to me that this sounds good, and they might give their official consent. This software is provided as-is and may only be redistributed on the condition that no modifications are made to the original package and that no commercial profit, either abstract or concrete, is made when redistributing. No warranty, support, responsibility or accountability - either expressed or implied - is provided for any direct or indirect loss, harm or damage caused as a result of using this software. This includes any licence infringements any user may commit by utilizing this software. You may not reverse engineer, decompile or disassemble this software in any way. XII. Final words Well, this is it, after months of work. I guess the only words I can tell you is good luck, and focus on making good games instead of creating protection. That the job of others. © Copyright 2008 Schreib This post has been edited by Schreib: Apr 7 2009, 03:16 PM |
|
|
|
May 1 2008, 04:15 PM
Post
#2
|
|
|
GMC Member Group: GMC Member Posts: 224 Joined: 12-February 08 Member No.: 99890 |
pretty cool FIRST POST!
edit: it works like a charm! is it only for gm6? This post has been edited by enterstations: May 1 2008, 04:16 PM |
|
|
|
May 1 2008, 05:27 PM
Post
#3
|
|
|
GMC Member Group: GMC Member Posts: 4613 Joined: 23-April 07 Member No.: 77112 |
Unlike the previous non-solutions to the decompiler. This project has a tremendous amount of potential. As Shreib describes, this does not prevent decompiling, but renders the decompiled output almost useless.
This is the type of solution that Java, and other decompilable languages uses. I hope this project is well received, and expanded to include GM 7. Excellent work Shreib! |
|
|
|
May 1 2008, 05:35 PM
Post
#4
|
|
|
GMC Member Group: GMC Member Posts: 360 Joined: 31-December 07 From: Cornwall, England Member No.: 96542 |
this seems pretty cool! I would use it but, alas, i use GM7. Still, keep up the good work
|
|
|
|
May 1 2008, 06:33 PM
Post
#5
|
|
|
Zarplax CEO Group: GMC Member Posts: 730 Joined: 10-June 06 From: Belgium Member No.: 52068 |
I like the fact that you can only delete the comments. This will decrease the game file size if you don't check the other options.
Grtz, Samscam |
|
|
|
May 1 2008, 06:50 PM
Post
#6
|
|
|
Wanna Play? Group: GMC Member Posts: 2105 Joined: 29-January 08 Member No.: 98677 |
Before I use this, I have a question: Does it raise or lower the filesize?
|
|
|
|
May 1 2008, 07:01 PM
Post
#7
|
|
|
Valen Shadowbreath Group: GMC Member Posts: 1481 Joined: 20-October 05 From: The Abyss Member No.: 37333 |
The initial file will be about a meg higher, from a lazy me. It's actually about a meg of null bytes in the end of the file, but GM ignores those anyway. When you've processed the file, open the processed one and resave it to yet another file. That rids the null bytes, and the final file will be... i'd say 5 kb larger than the original, since it renames variables and names to larger ones.
|
|
|
|
May 1 2008, 07:06 PM
Post
#8
|
|
|
Revel Entertainment Group: GMC Member Posts: 4420 Joined: 3-February 07 From: Canada. GM: 7.0 Pro Member No.: 69882 |
What does "Insert crap" do?
This post has been edited by Revel: May 1 2008, 07:07 PM |
|
|
|
May 1 2008, 07:11 PM
Post
#9
|
|
|
GMC Member Group: GMC Member Posts: 4613 Joined: 23-April 07 Member No.: 77112 |
QUOTE What does "Insert crap" do? It emulates a typical GMC post. |
|
|
|
May 1 2008, 07:12 PM
Post
#10
|
|
|
Valen Shadowbreath Group: GMC Member Posts: 1481 Joined: 20-October 05 From: The Abyss Member No.: 37333 |
QUOTE ("My first post") If you wonder what a certain setting does, hover your cursor over it and a tooltip will appear explaining what it does.
|
|
|
|
May 1 2008, 07:15 PM
Post
#11
|
|
|
Revel Entertainment Group: GMC Member Posts: 4420 Joined: 3-February 07 From: Canada. GM: 7.0 Pro Member No.: 69882 |
Oh, sorry. I missed that part.
Nice software! It would be great if you released a GMK version. This post has been edited by Revel: May 1 2008, 07:18 PM |
|
|
|
May 1 2008, 07:22 PM
Post
#12
|
|
|
Behemoth Creator Group: GMC Member Posts: 439 Joined: 11-October 06 From: Kingsport, Tennessee Member No.: 61283 |
Good work.
[Edited my noob post.] This post has been edited by X-tra Fear: Feb 24 2009, 09:09 PM |
|
|
|
May 1 2008, 07:28 PM
Post
#13
|
|
|
GMC Member Group: GMC Member Posts: 1514 Joined: 29-October 05 From: The Netherlands Aged: 18 Member No.: 37851 |
Good job. Legal, simple and effective.
I didn't noticed much of the inserted crap btw. But the name sounds funny. This post has been edited by Somelauw: May 1 2008, 07:38 PM |
|
|
|
May 1 2008, 07:28 PM
Post
#14
|
|
|
Valen Shadowbreath Group: GMC Member Posts: 1481 Joined: 20-October 05 From: The Abyss Member No.: 37333 |
Do I have to repeat I did not make this to stop the decompilation project?
QUOTE I haven't tried it yet, but I suggest you also remove all indentation and remove all linefeeds. I also suggest you put an example of obfuscated code in your first post. It's noticable that you haven't tried it yet. This post has been edited by Schreib: May 1 2008, 07:29 PM |
|
|
|
May 1 2008, 07:36 PM
Post
#15
|
|
|
GMC Member Group: GMC Member Posts: 293 Joined: 27-January 07 From: Norfolk Member No.: 69297 |
Nice, simple awesome idea works great! Although its not gonna stop the "uber noobs" that just decompile a game and change the sprites.
|
|
|
|
May 1 2008, 07:39 PM
Post
#16
|
|
|
JJTGames Group: GMC Member Posts: 621 Joined: 6-February 07 From: On the moon Member No.: 70194 |
Awesome!
But, when i checked the 'insert crap' button, there was a compile error |
|
|
|
May 1 2008, 07:40 PM
Post
#17
|
|
|
GMC Member Group: GMC Member Posts: 1826 Joined: 1-March 05 From: Here in holland Member No.: 23016 |
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?
|
|
|
|
May 1 2008, 07:42 PM
Post
#18
|
|
|
Damaged's Tool Group: Local Moderators Posts: 2567 Joined: 28-October 03 From: Between here and there. Member No.: 904 |
QUOTE and i dont see why everyone is making these things Really? First I've seen. QUOTE no games are worth decompiling anyway Few, maybe, I wouldn't say none though. QUOTE and u WONT be making it for GMKs as usual, useless stuff flooding the GMC. That doesn't make it less useful to users of GM6. Perhaps the next project might be a de-obfuscator, that could correct grammar and capitalization in posts. I know I'd find that useful. |
|
|
|
May 1 2008, 07:47 PM
Post
#19
|
|
|
GMC Member Group: GMC Member Posts: 2087 Joined: 21-November 07 Member No.: 93546 |
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. |
|
|
|
May 1 2008, 07:48 PM
Post
#20
|
|
|
GMC Member Group: GMC Member Posts: 685 Joined: 11-March 08 From: USA Member No.: 101909 |
Sweet idea! I'll look forward to the final version!
(I hope it's gm7 compatable...) EDIT: ...crap. This post has been edited by SunnyKatt: May 2 2008, 08:19 PM |
|
|
|
![]() ![]() |
|
Lo-Fi Version | Time is now: 9th February 2010 - 04:36 PM |