Reverse engineering is the process of taking something apart, analyzing its features and components, and putting it back together to fully understand the device. In computers, reverse engineering tools can be used to break down things like software and databases, or they can be used for scientific purposes like simplifying and breaking down the human genome for better understanding and scientific contribution. Though reverse engineering tools have come under fire for their legality, there are a number of tools that exist to break down and understand many different kinds of products, particularly software.
Some software is available as open source reverse engineering tools and can be easily downloaded from the Internet. One kind of open source materials includes Java reverse engineering tools, allowing deobfuscation of Java classes that are compiled. They access source code, making a deobfuscator that is quasi code. The reverse engineering tools are designed to work by assigning random nouns to obfuscated classes in Java, and will assign random verbs from the English language to obfuscated class methods in Java. Getting a tool like this requires a simple download and installation of the software onto a computer.
Other open source tools that can be easily downloaded and installed from the Internet include analyzers for network protocols. These types of engineering software capture packets of data on a network to be analyzed at a later time. They are used to understand the operations of networking protocols in proprietary multimedia. The software is free to download and is consistently being enhanced and improved.
Another variety of software for reverse engineering allows the construction of tools for dynamic analysis. These types of reverse engineering tools are used in the detection of threading bugs as well as memory management. The software includes many different types of tools, including a detector for memory error, a prediction profiler for caches and branches, and a generator of call graphs, amongst many others.
There are also reverse engineering tools that can be run on certain operating systems (OSs) as debuggers and disassemblers. This type of software can be open source or purchased over the Internet. One such tool comes with PDF instructions and tutorials on how to use it with different OSs, allowing the user to better understand the functionality of the device and OS. It has come under fire, however, with certain mobile devices and smart phones, and is no longer readily available to use.