Original Post
🔒 Locked
Hiding Code
Advertisement
On what level? Native code -- C, C++, et cetera -- gets turned into machine code. There is no way you can hide that, short of removing it, which means you no longer have a program. It is very difficult to turn machine code back into source code for higher level languages that is reasonably useful.
Interpreted, JIT-compiled, et cetera code is more likely to be accessible in a higher level form. They can be obfuscated, but that is of questionable utility.
The bigger question is why do you care? This sort of obscurity will not protect you from a security standpoint, and it is unlikely that somebody will want to "steal" your code -- and if so, there are better ways to guard against that (legal ones).
Interpreted, JIT-compiled, et cetera code is more likely to be accessible in a higher level form. They can be obfuscated, but that is of questionable utility.
The bigger question is why do you care? This sort of obscurity will not protect you from a security standpoint, and it is unlikely that somebody will want to "steal" your code -- and if so, there are better ways to guard against that (legal ones).
Quote:Have to agree there. It is hard, difficult to do for any large-scale application, but any motivated asm coder could do it. If it's a problem, the courts can easily handle an infringement case.
Original post by jpetrie
The bigger question is why do you care? This sort of obscurity will not protect you from a security standpoint, and it is unlikely that somebody will want to "steal" your code -- and if so, there are better ways to guard against that (legal ones).
Tools like this have existed for years. While you can do some things to reverse the process, that doesn't mean it is easy.
Compiling the code is much like making hamburger: The process is irreversible, and many parts are permanently lost. It is impossible to get the raw source material back. But if you do a lot of low-level analysis, you can learn a great deal about what went into the grinder.
Tools like this can easily reconstruct known library calls. They can almost always figure out function boundaries, and mostly reconstruct classes. They do a pretty good job at identifying common programming idioms. But...
They do not recreate easily-readable code. They can't recover object/function/class/other names, comments, inlined functions, namespaces, enumerations, etc. They can't reverse all code blocks, especially highly optimized blocks, and they'll always have blocks of code that are still in native assembly.
You can never prevent them from doing it, since possessing a runnable executable means they can decode it, and therefore reverse engineer it. But it isn't exactly a trivial process, either.
Well, cheats wouldn't be there if you do not want someone eventually discovers them... :)
And if that one is used to recognize cheat codes by looking at compiled assembly, he/she deserves to use them :P
Marco.
And if that one is used to recognize cheat codes by looking at compiled assembly, he/she deserves to use them :P
Marco.
Quote:
Original post by NecoSpes
Well, in my program I might put cheats in there, but I don't really want it to be easy to find by opening up the program in OllyDbg.
Once they're known, and if your game is remotely popular, a simple Google search will suffice. ;)
So why don't you just leave out the cheats from the final build and be done with it? Or, if you want those cheats to be found eventually, why don't you stop bothering about it? Keep in mind, you are a programmer, but many players are not. Not everyone knows what tools to use for things like this, so you're probably making the 'problem' a lot bigger than it really is.
Topic Locked
This topic has been locked by a moderator. New replies are not allowed.
Sign in to reply to this topic.
Advertisement