What is Reverse Engineering and Software Reverse Engineering?
Reverse Engineering – 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 -1 – Reverse engineering for beginners
What Is Reverse Engineering?
Reverse engineering is the process of extracting the knowledge or design blueprints from anything man-made. The concept has been around since long before computers or modern technology and probably dates back to the days of the industrial revolution. It is very similar to scientific research, in which a researcher is attempting to work out the “blueprint” of the atom or the human mind. The difference between reverse engineering and conventional scientific research is that with reverse engineering the artifact being investigated is man-made, unlike scientific research where it is a natural phenomenon.
Reverse engineering is usually conducted to obtain missing knowledge, ideas, and design philosophy when such information is unavailable. In some cases, the information is owned by someone who isn’t willing to share them. In other cases, the information has been lost or destroyed. Traditionally, reverse engineering has been about taking shrink-wrapped products and physically dissecting them to uncover the secrets of their design. Such secrets were then typically used to make similar or better products. In many industries, reverse engineering involves examining the product under a microscope or taking it apart and figuring out what each piece does. Not too long ago, reverse engineering was actually a fairly popular hobby, practiced by a large number of people (even if it wasn’t referred to as reverse engineering). Remember how in the early days of modern electronics, many people were so amazed by modern appliances such as the radio and television set that it became common practice to take them apart and see what goes on inside? That was reverse engineering. Of course, advances in the electronics industry have made this practice far less relevant. Modern digital electronics are so miniaturized that nowadays you really wouldn’t be able to see much of the interesting stuff by just opening the box.
Software Reverse Engineering: Reversing
The software is one of the most complex and intriguing technologies around us nowadays, and software reverse engineering is about opening up a program’s “box,” and looking inside. Of course, we won’t need any screwdrivers on this journey. Just like software engineering, software reverse engineering is a purely virtual process, involving only a CPU, and the human mind. Software reverse engineering requires a combination of skills and a thorough understanding of computers and software development, but like most worthwhile subjects, the only real prerequisite is a strong curiosity and desire to learn. Software reverse engineering integrates several arts: code breaking, puzzle solving, programming, and logical analysis. The process is used by a variety of different people for a variety of different purposes, many of which will be discussed throughout this book. Reversing Applications
It would be fair to say that in most industries reverse engineering for the purpose of developing competing products is the most well-known application of reverse engineering. The interesting thing is that it really isn’t as popular in the software industry as one would expect. There are several reasons for this, but it is primarily because the software is so complex that in many cases reverse engineering for competitive purposes is thought to be such a complex process that it just doesn’t make sense financially
So what are the common applications of reverse engineering in the software world? Generally speaking, there are two categories of reverse engineering applications: security-related and software development–related. The following sections present the various reversing applications in both categories.