As a student programmer, I only have very limited knowledge of the workings of much of the consumer software. I would love to one day be able to reverse engineer software to learn what makes it tick and implement it in different ways. My real question what is the general process that reverse engineering requires. I am aware that this is very broad. I was just wondering the tools such as decompilers that people use.
closed as not a real question by World Engineer♦, Matthieu, Jim G., Mark Trapp, Walter Aug 30 '12 at 13:33
It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center. If this question can be reworded to fit the rules in the help center, please edit the question.
Rather than reverse engineer closed source code, which might be illegal or unethical, I would suggest reading code from open-source projects.
There is no need to go through reverse engineering procedures (unless that is your express goal) and you can learn a lot.
Some open source software is consumer software or comparable to consumer software.
Also closed source commercial software is usually copyrighted.
As for reverse-engineering software which you don't have express access to the source code to, you can use a decompiler. These programs exists for different languages.
For languages compiled for .Net, there exists several software you can use to do this, ie: Jetbrains DotPeek, Telerik JustDecompile, RedGate Reflector.
These softwares will take a compiled .Net dll and show source code.
Know that the authors of the software might have obfuscated their .Net code. This is a procedure designed to render the output of "reflected" or "decompiled" .Net code difficult to read and comprehend.
More on decompilers
Decompilers have been made for several languages. Different languages are easier to decompile than others, so the result will vary.