To decompile software means to take that software and change the language it is written in to something that is more understandable to humans. It does this by taking the language of the original program and changing it into a source code that can be better understood. If done correctly, when a person attempts to decompile software, he or she can create a program that acts very similar, if not exactly like, the original software.
There are many programs which can be used to decompile software. Some of these programs have legitimate uses and others do not. It should be noted that anyone attempting to decompile software for illegal purposes could be in violation of stealing intellectual property, which is a punishable by criminal statute in many countries.
In fact, making pirated copies of software, or making a product that has the same function as the original software, may be the most common reason to decompile software. This is because it may be possible to use a software decompiler to strip the software of its anti-copy protection. Thus, anyone who can successfully decompile software in such a way has an unlimited ability to make copies of the program.
While many companies would like to see computer programs that decompile software outlawed for that reason alone, there are some legitimate uses for software decompilation as well. Those include finding bugs in the program, finding malware and checking code. In addition, using a program to decompile software can act as a learning aid for students studying programming. These instances can be very valid reasons to decompile software.
Often, a decompiler can be a useful tool for those who are dealing with open source software, who may want to add to a certain program's features or value. In this case, a decompiler can aid substantially in the progress toward rewriting, or adding to, the program. However, this is far different than decompiling a program from a major software manufacturer, most of which are protected by license agreements and anti-copy code.
It should be noted that decompiling software does not mean just to disassemble a program, though the name may suggest that is the only thing being done. The translation part of the decompilation is also very important. Often, once it is translated, it is then compiled back together to see if the desired results have been obtained. If not, further work may need to be done.