Reversing : The Hacker's Guide to Reverse Engineering

(ff) #1
much safer to run software that has often been inspected and approved by
thousands of impartialsoftware engineers. Needless to say, open-source soft-
ware also provides some real, tangible quality benefits. With open-source soft-
ware, having open access to the program’s source code means that certain
vulnerabilities and security holes can be discovered very early on, often before
malicious programs can take advantage of them. With proprietary software for
which source code is unavailable, reversing becomes a viable (yet admittedly
limited) alternative for searching for security vulnerabilities. Of course,
reverse engineering cannot make proprietary software nearly as accessible
and readable as open-source software, but strong reversing skills enable one to
view code and assess the various security risks it poses. I will be demonstrat-
ing this kind of reverse engineering in Chapter 7.

Reversing in Software Development


Reversing can be incredibly useful to software developers. For instance, soft-
ware developers can employ reversing techniques to discover how to interop-
erate with undocumented or partially documented software. In other cases,
reversing can be used to determine the quality of third-party code, such as a
code library or even an operating system. Finally, it is sometimes possible to
use reversing techniques for extracting valuable information from a competi-
tor’s product for the purpose of improving your own technologies. The appli-
cations of reversing in software development are discussed in the following
sections.

Achieving Interoperability with Proprietary Software

Interoperability is where most software engineers can benefit from reversing
almost daily. When working with a proprietary software library or operating
system API, documentation is almost always insufficient. Regardless of how
much trouble the library vendor has taken to ensure that all possible cases are
covered in the documentation, users almost always find themselves scratching
their heads with unanswered questions. Most developers will either be persis-
tent and keep trying to somehow get things to work, or contact the vendor for
answers. On the other hand, those with reversing skills will often find it
remarkably easy to deal with such situations. Using reversing it is possible to
resolve many of these problems in very little time and with a relatively small
effort. Chapters 5 and 6 demonstrate several different applications for revers-
ing in the context of achieving interoperability.

Developing Competing Software

As I’ve already mentioned, in most industries this is by far the most popular
application of reverse engineering. Software tends to be more complex than

8 Chapter 1

Free download pdf