Skip to main content
gamedev.net
🔒 Locked

Hiding Code

Started by NecoSpes Aug 29, 2008 at 12:58 PM 5 replies 1.5k views
Original Post
NecoSpes
NecoSpes
How would you hide code from things like OllyDebug or something?
jpetrie
jpetrie
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).
frob
frob
Quote:
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).
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.

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.
Antheus
Antheus
Run it on server and only allow dumb clients to access it (web browser, telnet).

As long as network is properly secured, so is the code.
NecoSpes
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.
CoreMeltdown
CoreMeltdown
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.
Captain P
Captain P
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.