Reverse Engineering Back in the days of mechanical clocks, curious kids would sometimes take a clock apart to try to figure out how it worked. A few were even able to reassemble the clock correctly— these youngsters were likely to become engineers! With software, reverse engineering is the process of “taking apart” software and analyzing its operation without having access to the program code itself. Among other possibilities, reverse engineering may allow one to: • provide equivalent functions without violating copyright laws • emulate one operating system within another • determine a file format so other programs can use it as well (interoperability) • document the operation of a program whose documentation is lost or no longer available • determine whether a competing product violates one’s patents or copyrights Techniques Reverse engineering can be thought of as running the development process backwards (see software development). Instead of starting with the specification of the system and writing code, one starts with the operating program and constructs a detailed description of its organization. Several general techniques can be used: • disassembly (turning the machine-level code into somewhat higher-level code with symbolic labels, etc.) • decompilation (which attempts to turn machine code into a higher-level language such as C) • systematically supplying data of various types and analyzing the program’s response (this is especially used when analyzing communications protocols) Perhaps the most significant example of reverse engineering occurred in the early 1980s when competitors reverse engineered the built-in code (see BIOS ) that controlled the low-level functions of the original IBM PC, thus enabling the manufacture of legal “clones” by such companies as Compaq. This was done by creating a “clean room” staffed with engineers who had no involvement with IBM and were not privy to any of the internal secrets of the BIOS. Reverse engineering has been widely used to provide open-source implementations of formerly proprietary technologies. Examples include Samba (Windows SMB file sharing), Open Office (similar to Microsoft Office), Mono (Windows .NET API), and especially Windows emulators for Linux such as Wine. Generally, under the Digital Millennium Copyright Act of 1998, courts have been sympathetic to reverse engineering that enables users to exercise what would be considered “fair use” under copyright laws or to provide more widespread compatibility with other products. However, reverse engineering may be illegal when the intent is to bypass software “locks” (see copy protection) in order to make illegal copies, or when the machine code is copied or manipulated (such as by decompiling). There are a number of ways in which reverse engineering (or similar practices) can be applied to technology other than software. Perhaps the most unusual example was the successful reconstruction of an ancient Greek astronomical calculator called the Antikythera mechanism. In general, the process of reverse engineering, by spreading knowledge of how to access and interface systems and provide functionality, ultimately contributes to the development of new technology and software.
Pages to are hidden for
"Reverse Engineering"Please download to view full document