Reversing : The Hacker's Guide to Reverse Engineering

(ff) #1
141

Twenty years ago, programs could almost exist in isolation, barely having to
interface with anything other than the underlying hardware, with which they
frequently communicated directly. Needless to say, things have changed quite
a bit since then. Nowadays the average program runs on top of a humongous
operating system and communicates with dozens of libraries, often developed
by a number of different people.
This chapter deals with one of the most important applications of reversing:
reversing for achieving interoperability. The idea is that by learning reversing
techniques, software developers can more efficiently interoperate with third-
party code (which is something every software developer does every day). That’s
possible because reversing provides the ultimate insight into the third-party’s
code—it takes you beyond the documentation.
In this chapter, I will be demonstrating the relatively extreme case where
reversing techniques are used for learning how to use undocumented system
APIs. I have chosen a relatively complex API set from the Windows native API,
and I will be dissecting the functions in that API to the point where you fully
understand what that each function does and how to use it. I consider this an
extreme case because in many cases one does have some level of documenta-
tion—it just tends to be insufficient.


Beyond the


Documentation


CHAPTER


5

Free download pdf