How do pirates pirate?
April 23, 2010 8:31 AM Subscribe
When a software pirate cracks a program, what exactly does s/he do?
As a layperson, it's easy to understand some forms of piracy: building a torrent of MP3 files ripped from CD can be done with any music program and a torrent client, and discs without security measures can be ripped as .iso files and shared with the medium of choice.
Conversely, say that a new game comes out with a new form of DRM. Within hours, someone has cracked the security and is illegally distributing modified versions of the game that bypasses the DRM. I don't understand how this is possible for closed-source/proprietary products. If the only pieces we have are various bits of compiled code, some in proprietary formats, how does someone explore those files to not only identify how the DRM works, but also modify the actual software to bypass those measures? If the DRM functions by contacting a separate server, how do pirates figure out how to spoof a validation message when the game company presumably does not publicize its DRM mechanisms?
Obviously, I don't want step-by-step information about how to perform illegal activity. I want help understanding concepts of software engineering. Are compiled objects much less opaque than I understand them to be? If we don't know what language the software was coded in or what compiler turned it into software, how do software engineers explore its internal workings? How do programmers modify that software when they don't have the source code?
posted by Lifeson to computers & internet (19 answers total) 22 users marked this as a favorite
Say you have code that is like:
if (! check_drm()) quit();
That gets compiled down to a short list of machine code instructions. One to call the check_drm function, several to do the if statement.
It's not easy, but you can find those statements in the compiled version of the code. Then you change the machine instructions to say if (false), so that the quit() command never happens. To make this change, it requires hex editor, and a fairly detailed knowledge of assembly language.
Modern DRM then fights back against this kind of thing by doing lots of checks throughout the program, calling to the internet to get an encryption key, and other kinds of fixes. The details on how to break each DRM are different, but that's the basis.
posted by cschneid at 8:41 AM on April 23, 2010