Reversing : The Hacker's Guide to Reverse Engineering

(ff) #1
423

This book has so far focused on just one reverse-engineering platform: native
code written for IA-32 and compatible processors. Even though there are
many programs that fall under this category, it still makes sense to discuss
other, emerging development platforms that might become more popular in
the future. There are endless numbers of such platforms. I could discuss other
operating systems that run under IA-32 such as Linux, or discuss other plat-
forms that use entirely different operating systems anddifferent processor
architectures, such as Apple Macintosh. Beyond operating systems and
processor architectures, there are also high-level platforms that use a special
assembly language of their own, and can run under any platform. These are
virtual-machine-based platforms such as Java and .NET.
Even though Java has grown to be an extremely powerful and popular pro-
gramming language, this chapter focuses exclusively on Microsoft’s .NET
platform. There are several reasons why I chose .NET over Java. First of all,
Java has been around longer than .NET, and the subject of Java reverse engi-
neering has been covered quite extensively in various articles and online
resources. Additionally, I think it would be fair to say that Microsoft technolo-
gies have a general tendency of attracting large numbers of hackers and
reversers. The reason why that is so is the subject of some debate, and I won’t
get into it here.
In this chapter, I will be covering the basic techniques for reverse engineer-
ing .NET programs. This requires that you become familiar with some of the


Reversing .NET


CHAPTER


12

Free download pdf