Sunday, August 19, 2007

Legal IT Part 1: You do not own the XBox you paid for

While talking with some programmers I know, a point was raised that Microsoft does not sell you the XBox itself. What you paid for was basically a perpetual license to use the XBox. As such, the hardware itself is still legally the property of Microsoft. That's one of the ways MS nails modders. This particular tactic isn't new. IBM used to do it on their mainframes and in fact they still only lease them out. The question now is why?

There are several reasons why Microsoft would do this. One requires a bit of knowledge about software reverse engineering and copyright law. In general, it is illegal for you to directly copy a block of code and call it your own. It is also illegal to make copies of a piece of software and then sell it if it violates the terms of the license or EULA. That's all well and good, as the law states the individual or company that wrote the code owns it, and by law it is theirs.

Reverse engineering basically involves the use of debuggers and other tools to look at a binary package and examine it from an assembly code level. There's a bit more to it, but that's the gist of it. If you did this, it becomes possible to reconstruct the program in a higher level language if you're good with assembly. But the question now is, is that code still the property of the company who created the original program, or is that code now your property? An argument could be made that the assembly code you used was a copy of the program made by the company, which means you just broke the law.

Now here comes the tricky part. Such a straightforward enforcement of the law would mean you couldn't even copy program binaries into memory, which means you couldn't even run the programs. An exception was written in to permit that but in the process opened a whole other can of worms. Everything in a computer's memory in theory belongs to whoever owns the computer. Back in the day, when basically all computers were from IBM, this wasn't an issue. IBM only leased those systems and as such people were not permitted to peak into memory to study the binaries. But with the advent of personal computers, that changed. Now, you and I own our computers and in effect also own everything in memory. This means we own a copy of the program's binary, which we can then use various tools to debug and view it as assembly code.

Companies are very aware of this and often times will include a clause explicitly forbidding reverse engineering in their EULA, so in theory it's still illegal. But you could technically fight the matter in court and you may even prevail depending on the circumstances. A lot of companies would like to eliminate this possibility altogether and one way is what Microsoft did with the XBox.

The other why should be fairly obvious. Microsoft doesn't make money off of "leasing" the Xbox itself, it makes money off of game licenses. If people were suddenly able to run anything they wanted, MS would quickly lose their revenue stream. Game studios also aren't eager to let people take a crack at breaking whatever protection scheme they use, both to prevent copying and also to prevent cheating. But ultimately, it all comes down to money.

Next time we'll explore some of the laws the XBox runs afoul of because of the restrictions Microsoft places upon it. Mind you, these may not be US laws.


Max said...

Interesting. It's also interesting to think that if you make a program in a high-level language, do you also own the assembled/compiled versions? Specifically, do you own every optimized more-machine-readable generation of your high-level code?

Z98 said...

By law, the compiled version of the code is still a copy of your work, and you own the rights to all copies. There's also the fact that the source code is yours, so unless you've given people permission to compile and run it, they're making an illegal copy of the source code to begin with.