The Reversing Process : Reverse Engineering For Beginners
Chapter – 1
- Part 1 : What is Reverse Engineering and Software Reverse Engineering?
- Part 2 : Reversing Applications – Reverse Engineering For Beginners
- Part 3 : Reversing in Software Development – Reverse Engineering For Beginners
- Part 4 : Low Level Software – Reverse Engineering For Beginners
- Part 5 : The Reversing Process : Reverse Engineering For Beginners
- Part 6 : The Tools : Reverse engineering for beginners
- Part 7 : Is Reversing Legal? – Reverse engineering for beginners
part – 5
The Reversing Process
How really does one get started reversing process? Presently there are really many different approaches that work, and I’ll try to discuss as much of them as possible throughout this book. For starters, I usually attempt to divide reversing periods into two separate phases. The very first, which is absolutely a kind of large-scale observation of the earlier
program, is called system-level curing. System-level reversing techniques help determine the general structure of this program and sometimes even locate areas of interest within it. Once you set up a general understanding of the layout of the program and determine areas of special interest within it you can go to more in-depth work using code-level reversing techniques. Codelevel techniques provide detailed home elevators a selected program code chunk. The following sections describe each of the two techniques.
System-Level Reversing Process
System-level reversing involves operating various tools on the program and utilizing various os services to obtain information, examine program executables, track program input and output, and so forth. Most of this information comes from the operating-system because by definition every interaction that a program has with the outside world must feel the operating system. This particular is the reason why reversers must understand working systems—they can be used during reversing sessions to obtain a wealth of information about the target program being investigated. I actually will be discussing operating system basics in Section 3 and proceed to introduce the various tools commonly used for system-level reversing in Chapter 4.
Code-Level Reversing Process
Code-level reversing is really an art form. Extracting design concepts and algorithms from a program binary is a complex process that requires a competence of reversing techniques and also a solid understanding of software development, the PROCESSOR, and the operating system. Software can be highly complex, and even those with access to a program’s well-written and properly-documented source code is often amazed at how difficult it can be to comprehend. Deciphering the sequences of low-level instructions that make up a program is usually no implied
feat. But fear not, primary of this guide is to offer you the knowledge, tools, and techniques needed to perform effective code-level reversing.
Before covering any actual techniques, you must become familiar with some software-engineering essentials. Code-level reversing observes the code from a very low-level, and we’ll be seeing every little detail of how the software
operates. Many of these details are created automatically by the compiler and not manually by the software developer, which sometimes makes it difficult to comprehend how they associate to the program and its functionality. That is the reason why reversing requires a strong understanding of the low-level aspects of
software, including the link between high-level and low-level programming constructs, assembly language, and the internal workings of compilers. These types of topics are discussed in Chapter 2.