Software Reverse Engineering is the process of discovering the technological and design principles of a software program and reversing a program’s machine code back into the source code. Reverse Engineering as a method is not confined to any particular purpose. This can be helpful in, to study program behavior, analyze its performance, perform security audits, identify bugs and malicious content in a program or make a program compatible with various machines and microprocessors.
In today’s intensely competitive global market, software enterprises are constantly seeking new ways to shorten development time and efforts for new products and try to meet customer expectations by including all the features that their rivals are offering. Reverse Engineering emerged as technology for business benefits and the practice is now frequently used to create duplicate or identical software products, capture the logic used in development and designing of software or to find out security flaws for damaging market reputation of software product. One can learn about competitor’s software product by capturing a prototype and dismantling it with the help of tools.
Someone doing reverse engineering on software may use several tools to disassemble a program. Such common tools are hexadecimal dumper, disassembler and decompiler which can read the binary code and then convert it into understandable form. These tools might be used to obtain source code and architecture design of a software. One globally famous case of reverse engineering was the copy of PC BIOS that was compatible with IBM PCs. Earlier that, only IBM creates BIOS for their compatible PCs which has been the overwhelmingly dominant computer hardware platform for many years. The Samba software and wine project for Linux and other platforms are also the results of reverse engineering, which allows sharing and executing files from Microsoft Windows platform. Few operating systems have also been reverse engineered with their millions of lines of code.
You can make your application hard to reverse engineer but you can’t make this impossible. Legally, copyright and patent protection can help to overcome bad consequences of this. Additionally, there are several technological strategies available to shield this. Some of them are:
» Code Obfuscation, is the simplest method to harden or protect source code from reversing. It changes function names, alters the sequence of code, and adds noise, without changing the functionality of the code itself.
» Encrypting source code, is another way to safeguard it. Envelope protection can be used to implement it easily. Pass your software through a special tools available commercially, and it comes out encrypted, with the envelope protecting it.
Featured Image Credit: s3.amazonaws.com