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
Reversing in Software Development
Reversing in Software Development – Curing can be incredibly helpful to software developers. Regarding instance, software developers can employ reversing ways to find out how to interoperate along with undocumented or partially noted software. In other situations, reversing works extremely well to determine the standard of third-party code, such as the code collection or also a working system. Lastly, it really is sometimes possible to use reversing techniques for extracting valuable information through a competitor’s product for the purpose of increasing your own technologies. The particular applications of reversing in software development are talked about in the following areas.
Achieving Interoperability with Proprietary Software – Reversing in Software Development
Interoperability is exactly where most software engineers can benefit from reversing nearly daily. When working along with a proprietary software collection or operating system API, documentation is almost always insufficient. Regardless how much difficulty the library vendor has taken to ensure that all possible cases are usually protected in the documentation, users almost always find by themselves scratching their heads with unanswered questions. Most programmers will either be persistent and keep seeking to for some reason get things to work or contact the merchant regarding answers. On the particular, another hand, those with reversing skills will often find it remarkably an easy task to cope with such situations. Using reversing it is possible to resolve many of these problems in very little time and with the relatively little effort. Chapters 5 and 6 show several different applications for curing in the framework of reaching interoperability.
Establishing Competing Software – Reversing in Software Development
As I have mentioned previously, in the majority of sectors this really is by significantly the most popular software for reverse engineering. The software program is likely to be more complicated than most products, and so reversing an entire software product in order to produce a competing product just doesn’t make any sense. It will always be much easier to design and create a product from scratch, or simply license the more complex components from the third party rather than develop them in-house. In the software industry, even in case a rival has an unpatented technology (and I’ll get into patent/trade-secret issues later in this chapter), it would never make sense to reverse engineer their whole product. It is almost always easier to independently develop your own software. The exception is highly complex or unique designs/algorithms that are extremely difficult or costly to develop. In such cases, the majority of the application form would still have to be developed independently, but highly complex or unusual components might be reversed and reimplemented in the new product. The legal aspects of this sort of reverse engineering are talked about in the legal area later in this section.
Evaluating Software Quality and Robustness – Reversing in Software Development
Just as you are able to audit a program binary to judge its security and vulnerability, it is also possible to try and sample a program binary in order to get an estimate of the general quality of the coding practices used in the program. The need is very similar: open-source software is a book that allows its users to evaluate its quality before committing to it. Software vendors that do not publish their software’s source code are essentially inquiring their customers to “just trust them. ” It is like buying a used car where you just can’t pop up the hood. You have no idea what you are really buying. The need for having source-code access to key software products such as operating systems has been made clear by large corporations; several years ago Microsoft announced that large customers purchasing over 1, 000 chairs may obtain access to the Windows source code for assessment purposes. Those who lack the purchasing energy to convince a major corporation to grant them access to the product’s source code must either take the company’s phrase that the product is well built, or vacation resort to reversing. Again, reversing would never reveal as much about the product’s program code quality and overall reliability as taking a look at the source code, but it can be highly informative. There are no special techniques required here. Once you are comfortable enough with reversing that you can fairly quickly go over binary code, you can use that ability to try and assess its quality. This book provides everything you need to achieve that.