collapse Table of Contents
  1. Reverse Engineering - Jonathan Pryor's web log
    1. Reverse Engineering

Reverse Engineering - Jonathan Pryor's web log

« Airport ID Checks are Constitutional | Main | Profiling and its Problems »

Reverse Engineering

Occasionally I run across blatant misunderstandings about what reverse engineering is, for example a recent slashdot post regarding Wine benchmarks, and on mono-list.

The confusion exists because there are two forms of reverse engineering: white box reverse engineering and black box reverse engineering (similar in many respects to white box testing and black box testing).

White box reverse engineering, when applied to software, frequently involves decompiling the binary to view either the underlying assembly or some higher level representation. (For example, there are Java decompilers which can recreate the original Java source, absent any comments.) The results of White box reverse engineering cannot be used in a commercial product, as it creates copyright violation possilibities (since you may inadvertantly copy the original product). Nevertheless, it can be very useful in a security context, such as the creation of the unofficial WMF patch, or for determining how a virus operates.

Black box reverse engineering is closer to the scientific method, only applied to hardware or software:

  1. Gather information and resources, typically by reading any available public documentation.
  2. Form a hypothesis, such as how something is implemented.
  3. Perform experiment and collect data. For software, the "experiment" is typically a test program of some sort.
  4. Analyze data.
  5. Interpret data and draw conclusions.
  6. Repeat 2..5 until the underlying hardware or software is understood.

If black-box reverse engineering wasn't allowed, then any market that depends on interoperability would be killed. Samba, Wine, Mono: dead. The PC Clone industry? Couldn't happen without Compaq reverse-engineering the original BIOS. Garage door openers? Forget it (though there was an interesting use of the DMCA to try and prevent the creation of compatible garage door openers).

Reverse engineering is a necessary component to a free market. Without it, monopolies cannot be challenged, compatibility can not be assured (compatibility is at the whim of the original creator), and the market is stifled.

Posted on 31 Jan 2006 | Path: /development/ | Permalink
blog comments powered by Disqus