How do developers protect their products from 'digital theft' or 'piracy' i.e. using serial keys, code obfuscation, legislation and copyrights, whatever, and how do folks always manage to reverse-engineer and 'crack' open the software?
One thing that most people do not realize about copyright is that once an intellectual property is put down in some form, whether it be written on paper, coded into a program, recorded on to audio media, etc., it establishes a copyright. This is why in your question about commenting code I mentioned that you should always include your name and date in the comments. Copyright law protects these works even if you do not register the copyright. However, registering the copyright provides you the legal proof that will help you solidify the fact that you are in fact the creator of the work. Otherwise you have to be able to prove in some other way that you are the originator (a notarized manuscript would be an example of proof in absence of copyright registration). Serial keys are software protection that is coded into the software that disabled the software in the event a wrong key is entered or if it is a trail version disables it after a period of time. I'm not sure exactly how to code a serial key into a program, but I'm sure the information is out there. Obfuscation is used to make the code very difficult to read. there is software that can do this for you, but it can also be done manually. The disadvantage of code obfuscation is that it not only makes the code difficult to read and follow for a someone trying to pirate your software, it makes it hard for you or your co-workers to read and follow as well. For software that needs to be maintained obfuscation can just create a big pain in the retrice Of course there are ways to work around this, such as obfuscating before release and keeping and unobfuscated copy for yourself, but this of course adds more steps (read: work) to your development process. Reverse engineering usually begins with decompiling the code and then going through it to find all that the compiler stripped out. I have never done this so that is about all I can say about that.
Typically serial keys and heavier handed DRM. Serial keys are for developers who are actually just trying to encourage buying their products, heavy duty DRM is for companies that want to protect their profits and insist on doing it despite the fact that it harms their legitimate customers and the pirating ones will still find a way to pirate it. Nowadays, as app stores are coming into being for desktop computing, it's almost not worth it to build in any sort of verification mechanism to your app. Use app store verification, and accept the fact that your code may well be pirated to some extent. It's a fact of life. Making copies does not cost anything anymore, so it will be done. People manage to reverse engineer the processes because generally speaking any sort of protection system requires giving someone the lock (the software that locks the software without a serial key or with heavy-handed DRM) and the key (the part of the software that allows you into the software if you have the key, or loosens the DRM just enough to let you use it) to the door. Once you have both, creating a new key is straightforward, so all crackers have to do is reverse engineer how the key fits in the lock.
If your question is what are the actual mechanics of protecting a program, then the answer is in several ways - though they all boil down to implementing either a routine, library or whole other program built to "ensure", though cracks show most can be circumvented that the integrity of the program remains intact.
the cracker guys are ahead of the game, tbh; its typical to see cracked software BEFORE their official release like MS Visual Studio (I forgot which one.. I think 2008)
Yes - the crackers are good but as more and more software is able to move key components to the cloud it will greatly diminish the ability of the crackers to pirate software. For example, World of Warcraft requires authenticated access to the Internet in order to play so any pirated key can be easily noticed and banned. As long as all of the code needed to run an application is on the client, it is vulnerable. With the new "hybrid" deployment models, piracy will be more difficult.
Join our real-time social learning platform and learn together with your friends!