Distribution Dear new programmers, THERE IS NO SUCH THING AS A DECOMPILER.

Sybok

Member
it means that no matter the result, the end process leaves out essential information with what ever it can produce.
That's incorrect also. If it is decompiled it can be recompiled. Doesn't matter if it's not in the exact form you'd like.

As @rIKmAN said, you keep moving the goal posts to suit yourself. I hate that.

You've gone from "THERE IS NO SUCH THING AS A DECOMPILER" and " There is no such thing as a decompiler for game maker studio, gcc, g++, or whatever compiler "

to

"you can't decompile C++ very well".

Shifting your whole argument to a specific language (which still can be compiled).


Honest question. Is this a troll topic?
 

Samuel Venable

Time Killer
This community is usually in a much happier mood. I don't understand why this is such a heated discussion. If you disagree with the OP and he won't agree, it's not the end of the world. Sheesh.

I really think this topic should be locked because saying anything about decompiler whether put in a positive or negative light draws too much attention to something we shouldn't waste out time with talking about. Nothing personal to the OP or anyone else. This has gotten really stinky.
 
Last edited:

Yal

🐧 *penguin noises*
GMC Elder
Someone asked me if there is a decompiler for game maker studio because some of our students are using game maker studio at our college on their laptops. The answer is NO!
There exists several decompilers for GameMaker: Studio. (The file format had changes between GM6 and GM8, and again in GMS1.x, which necessitated changes). Earlier versions interpreted all the code in the game, which made it trivial to decompile the original source. I've even seen a project where someone made a game-making program in Game Maker, which copied its own executable to create the generated executable, and then inserted the new data. (Because making interpreted code run interpreted code totally is good for performance). GMS1 and GMS2 both have received pretty large changes to make them harder to reverse-engineer, but, you know, the data still is there in the game executable, so someone's gonna figure out how to extract it sooner or later if they want to.

The decompilers not only existed, but got really notorious at the end of the GM8 lifespan. Basically everyone was aware of the anti-decompiler obfuscator (and also the official thing that made GM6 games run properly on Vista-and-later-windowses), and there were several incidents where people released slightly changed decompiled games (just decompiling games and changing the creator names in a lot of cases). I remember a particular case where some script kiddie would decompile tons of games and putting the sources up for download on their site "for educational purposes" and then aggressively post about it on the GMC.


The only thing that might come close, is if you *CAN*, take an executable's machine language coding and turn it into assembly language ( which still has no use to a beginning programmer )
First of all, assembly language has an 1:1 mapping to C (that was one of the original goals with the language, and every version of C as been backwards compatible with the original features (with some small form exceptions like how function declarations work, which only affects the lingual abstractions and not the functionality of the code, which is what the compiler / assembler cares about). So you could go from assembly to human-readable quite trivially.
Secondly, the main goal of someone that decompiles a game isn't to change the code, they just want to make their own version of the game with slightly changed graphics and sell it. It's quite common to see bootleg consoles that has hundreds of stolen NES games with changed graphics assets, for instance:


Finally, usually stealing assets is a bigger concern than stealing code (who'd want your buggy mess anyway?) and there's several large sites dedicated entirely to ripped and recreated assets, which proves that it's possible to do it.
 

Fanatrick

Member
This community is usually in a much happier mood. I don't understand why this is such a heated discussion. If you disagree with the OP and he won't agree, it's not the end of the world. Sheesh.
Part of it is what OP wrote was factually wrong, another part is his pompous delivery.

I've even seen a project where someone made a game-making program in Game Maker, which copied its own executable to create the generated executable, and then inserted the new data. (Because making interpreted code run interpreted code totally is good for performance).
Yup, I could be wrong but this did something similar http://lateralgm.org/

The decompilers not only existed, but got really notorious at the end of the GM8 lifespan. Basically everyone was aware of the anti-decompiler obfuscator (and also the official thing that made GM6 games run properly on Vista-and-later-windowses), and there were several incidents where people released slightly changed decompiled games (just decompiling games and changing the creator names in a lot of cases). I remember a particular case where some script kiddie would decompile tons of games and putting the sources up for download on their site "for educational purposes" and then aggressively post about it on the GMC.
Stick-Online and other "39dll.dll" games were decompiled thousands of times pretty openly as well, to the point where private servers of those games started popping up :banana:
 

curato

Member
anything that can be compiled can decompiled. The result of which can be difficult to read because it isn't going to have descriptive names for anything or comments that give anything any context at all. If someone really does their stuff they can decompile your game and make changes and recompile it. There is nothing that is hack proof the best you can do it take reasonable precautions like use the YYC compilers and don't leave critical datafiles out there in plain text or anything. There are good security features like ds_map_secure_save that you can use to protect progress data. That is really about all you can do use the tools you have to protect your intellectual assets and get on developing a game. After that if someone really is a dedicated hacker that wants to get in they probably will no matter what you do.
 
Ok, here is the thing that I want to make clear, everyone here has pointed to examples of old versions of gms being able to be "decompiled". I am referring to the latest version GMS 2 or 2.3. Secondly, I am referring to the YYC Compiler, which may be based on a C++ compiler. Should a decompiler exist for C++ or a compiler based on a C++ compiler, the executable binary it creates, would not be able to decompile a executable back into the original code. You would have to go through the trouble and piece 9/10s ( nine-tenths ) or the rest of the code what left out.

Its like using a bad tool to get a job done. Well the job was poorly done - now you have to go through the trouble and reinvent the code.
This is something that I would never do, because there are better options.

You can either (1) rewrite the code from scratch ( which is the easy way ) or (2) if you know Assembly language , convert the binary executable back into assembly and use it from there ( which is the hard way ). One of my professors would disagree, who knows assembly language makes everything look easy when he reverse engineers my game in MASM. I am beginning to hate it when he lectures me on how inefficient a compiler is when it optimizes code in the compiling process, and points out where it could have been done better in the assembly scripts from the conversion of the binary executable.

Note, in my original post , I only mentioned gms ( in relevance to the current version that I did not make that clear ) , gcc, g++, and compilers of the same type for Windows.

The reason I posted , the origina post, is that , many students foolishly do not back up their work - and think, because in Windows a file can be recovered after its deleted ( for some older versions of Windows ), find out the hard way that in Linux, when you delete a file - ITS GONE. In my programming religion - a decompiler does not exist If it does, its a poor tool.

The students come to me and ask, "Mr. Williams, is there a decompiler that I can use to get back the actual source code from the executable, because I just discovered that my C++ source code got FUBARed and/or lost by accident. I did not back it up or print out a hard copy , and I really need this badly for my assignment for finals that's comming up next week ". I cant help them with that.

Since, Dr. Stroustrup has stated that a decompiler is only suitable for interpreted and semi-interpreted languages that have the source code aside - still makes the decompiler a worthless tool.

A worthless tool is no good tool at all , in this context to the languages I am speaking about. Its better to reinvent the programfrom scratch. This is the only solution what I tell the students who are raining sweat all over the carpet in the lab, in fear of doing the work all over again.

You can believe what ever you want - maybe a decompiler exists to you in the language you program in ( if its not C or C++ ), but not to me, not in my programming religion .

Maybe in your programming religion, a decompiler exists... but I dont see it because of what I have stated for the languages I use.
I am not going to stop you from what ever you use to get your job done.

While I may impress many of you as eccentric and strange ( or incorrect ), I have a different mindset as to how I think in programming, and in that sense , its part of my programming religion . I dont design my programs like anyone else, and in a sense I don't look at GMS as just a tool for designing games. I think there are other things you can design with it.

off-tangent :

I dont argue with Dr.Stroustrup with what he says when I ask him a question, since he knows more than me. I seldom and rarely go to him for answers, that my professors, books, or what the website can provide. This is the second time that I have ever emailed him. The first time I wanted to ask him since is a member of the ISO committee for his programming language, to add to the standard some kind of portable code to deal with computers that use different binary endians for variables, since at the time I was programming on a Commodore Amiga, which used Motorola 68000 that I had to port code to a PC via null modem.
 
That's incorrect also. If it is decompiled it can be recompiled. Doesn't matter if it's not in the exact form you'd like.

As @rIKmAN said, you keep moving the goal posts to suit yourself. I hate that.

You've gone from "THERE IS NO SUCH THING AS A DECOMPILER" and " There is no such thing as a decompiler for game maker studio, gcc, g++, or whatever compiler "

to

"you can't decompile C++ very well".

Shifting your whole argument to a specific language (which still can be compiled).


Honest question. Is this a troll topic?
No I didn't - I was very specific with what I was talking about , and I said whatever compiler for Windows ( referring to the same languages ).
 

kraifpatrik

Member
I see, you should've said so the first time! Then you should have called this thread "dear followers of my religion, there isn't such a thing as a decompiler", would've been less misleading. Alright, I'm not here to fight against any religion, so you stick to your stuff and I'm out to decompile my DLLs written in C++ from machine code to C, using a decompiler.
 

Sybok

Member
I am referring to the same langauges used by compilers on Windows, not just any compiler.
What does this even mean?

Either way, you are wrong. LMAO! 🤣


Your Professor is making you look like a fool with you blindly following his words. Ever thought it may be a test? Seeing if you will think for yourself? Maybe he is feeding you with $hit, just waiting for the moment for you to say “hang on, that doesn’t sound right”. Instead he goes home once again shaking his head, thinking “One day... One day...”.
 
Last edited:

curato

Member
Well item #2 is exactly what a decompiler is except for you can have it go further and take the machine language back to C or whatever language you are interested in. It is not pretty but it does work.
 
What about the first 3 words where he said "You can decompile" - your original statement was that it could not be done.
You keep moving the goalposts to fit your argument.

It's okay to be wrong - it's how we learn.
However until you're sure of what you are talking about I wouldn't advise giving PSA's in all caps to new programmers that are full of misinformation.
Okay, I am wrong - I will not argue with Dr.Stroustrups statement or contradict it .
 
Top