Reversing : The Hacker's Guide to Reverse Engineering

(ff) #1

to apply some kind of decompilation process to a program and recompile its
output in a way that generates a binary with identical functionality but with
seemingly different code. This is similar to the previous example, except that in
this case it might be far more difficult to prove that code had actually been
stolen.
Finally, a more relevant (and ethical) kind of reverse engineering in a com-
peting product situation is one where reverse engineering is applied only to
small parts of a product and is only used for the gathering of information, and
not code. In these cases most of the product is developed independently with-
out any use of reverse engineering and only the most complex and unique
areas of the competitor’s product are reverse engineered and reimplemented
in the new product.


Copyright Law


Copyright laws aim to protect software and other intellectual property from
any kind of unauthorized duplication, and so on. The best example of where
copyright laws apply to reverse engineering is in the development of compet-
ing software. As I described earlier, in software there is a very fine line
between directly stealing a competitor’s code and reimplementing it. One
thing that is generally considered a violation of copyright law is to directly
copy protected code sequences from a competitor’s product into your own
product, but there are other, far more indefinite cases.
How does copyright law affect the process of reverse engineering a com-
petitor’s code for the purpose of reimplementing it in your own product? In
the past, opponents of reverse engineering have claimed that this process vio-
lates copyright law because of the creation of intermediate copiesduring the
reverse-engineering process. Consider the decompilation of a program as an
example. In order to decompile a program, that program must be duplicated
at least once, either in memory, on disk, or both. The idea is that even if the
actual decompilation is legal, this intermediate copying violates copyright law.
However, this claim has not held up in courts; there have been several cases
including Sega v. Accoladeand Sony v. Connectix, where intermediate copying
was considered fair use, primarily because the final product did not actually
contain anything that was directly copied from the original product.
From a technological perspective, this makes perfect sense—intermediate
copies are always created while software is being used, regardless of reverse
engineering. Consider what happens when a program is installed from an
optical media such as a DVD-ROM onto a hard-drive—a copy of the software
is made. This happens again when that program is launched—the executable
file on disk is duplicated into memory in order for the code to be executed.


Foundations 19
Free download pdf