Reversing : The Hacker's Guide to Reverse Engineering

(ff) #1
25

This chapter provides an introduction to low-level software, which is a critical
aspect of the field of reverse engineering. Low-level software is a general name
for the infrastructural aspects of the software world. Because the low-level
aspects of software are often the only ones visible to us as reverse engineers,
we must develop a firm understanding of these layers that together make up
the realm of low-level software.
This chapter opens with a very brief overview of the conventional, high-level
perspective of software that every software developer has been exposed to. We
then proceed to an introduction of low-level software and demonstrate how
fundamental high-level software concepts map onto the low-level realm. This
is followed by an introduction to assembly language, which is a key element in
the reversing process and an important part of this book. Finally, we introduce
several auxiliary low-level software topics that can assist in low-level software
comprehension: compilers and software execution environments.
If you are an experienced software developer, parts of this chapter might
seem trivial, particularly the high-level perspectives in the first part of this
chapter. If that is the case, it is recommended that you start reading from the
section titled “Low-Level Perspectives” later in this chapter, which provides a
low-level perspective on familiar software development concepts.


Low-Level Software


CHAPTER


2

Free download pdf