Wikipedia defines Reverse Engineering as “the process of extracting knowledge of design information from a product and reproducing it or reproducing anything based on the extracted information”. We would add “altering the way the certain product works” to this definition for completeness.
While this definition may sound as definition of the illegal process, it is in fact not. It is, of course, not legal to take someone else’s work, reverse engineer it, build an equivalent and represent it as your own product. Neither is it legal to, for example, alter a commercial product so that it would be possible to use it for free. However, there are plenty of cases when Reverse Engineering is not only legal but is a crucial necessity.
It would simply be impossible to perform complete malware analysis without reverse engineering of a malicious sample.
Legacy code may be a real headache. Compilers, frameworks, and programming languages are constantly evolving, so that something that could easily be compiled 5 years ago may well be impossible to build with modern tools, in which case the only solution would be adapting the source code to current reality. It may get much worse when a change is needed to be made in an old executable, but the source code is no longer there.
Sometimes simply debugging a product being developed is not enough and a certain portion of Reverse Engineering is needed.
Whatever your needs may be, we are just a click away.