Reverse Engineering by ZyD22


									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


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,

• 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.

To top