Reverse engineering is the scientific method of taking something apart in order to figure out how it works. Reverse engineering has been used by innovators to determine a product's structure in order to develop competing or interoperable products. Reverse engineering is also an invaluable teaching tool used by researchers, academics and students in many disciplines, who reverse engineer technology to discover, and learn from, its structure and design.
Although some reverse engineering techniques require making a copy of the software being investigated, an act that would otherwise be considered a copyright violation, copyright law has allowed these reverse engineering copies as a form of "fair use." Increasingly, however, contract clauses forbidding reverse engineering are included in technology licenses. Sometimes sellers include these clauses in "shrink-wrap," "click-wrap," or "browse-wrap" licenses without enabling the user to negotiate the terms of such a license. In many instances, users are not even aware of the terms to which they are binding themselves. The proposed amendment to contract law called the Uniform Computer Information Transactions Act (UCITA), adopted by two state legislatures, would make these kinds of contracts enforceable, and therefore more difficult to challenge their anti- reverse engineering provisions.
When creative expression is protected by a technological protection measure, the situation becomes even more complex. The Digital Millennium Copyright Act (DMCA) generally prohibits circumvention of technological protection measures. On its face, since circumvention is generally required for reverse engineering, this prohibition would prevent reverse engineering of those measures that control access to a copyrighted work. The DMCA contains a limited exception to the ban on circumvention, which permits reverse engineering of the technology by specific classes of people for limited purposes [17 USC §1201(f)]. The exception allows reverse engineering of computer programs if the reverse engineer lawfully obtains the program, seeks permission from the copyright owner, only uses the results of their efforts to create an interoperable computer program and does not publish the results. The resulting program must only interoperate with the reverse engineered software, however, and cannot interoperate with the technologically protected content (movie, book, video game, etc.) itself. Under the DMCA, engineers may also develop programs that facilitate reverse engineering for their own use or the use of others if they meet the above test. Reverse engineers must carefully consider their planned work and whether it fits into the exception, because the exception is far too narrow to be useful for many reverse engineering needs.