Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

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.

share|improve this question

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.

1 Answer 1

up vote 2 down vote accepted

Alternative

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.

Reverse-engineering

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.

share|improve this answer
1  
For .NET you can always use the built in Ildasm as well. But definitely +1 for your first point! –  Jetti Dec 10 '11 at 4:36

Not the answer you're looking for? Browse other questions tagged or ask your own question.