Reverse Engineering (RCE): For Beginners

Reverse engineering is a critical set of techniques and tools for understanding what software is really all about. Formally, it is “the process of analyzing a subject system to identify the system’s components and their interrelationships and to create representations of the system in another form or at a higher level of abstraction” (IEEE 1990). This allows us to visualize the software’s structure, its ways of operation, and the features that drive its behaviour, even when the source code and documentation for the software are unavailable. It also equips us with the ability to modify software applications according to our needs.

Learning software reverse engineering requires a combination of skills and a thorough understanding of computers and software development, but like most worthwhile subjects, the only real prerequisite is a strong curiosity and desire to learn. Software reverse engineering integrates several arts: code breaking, puzzle solving, programming, and logical analysis.



While on one hand reverse engineering is used by software analysts to find flaws and faults in a software, to develop a strong protection scheme for the software and to improve the original code, it is also used (and I suppose more often) by hackers and crackers to modify an application to overcome its protection schemes, inject malicious features into an application and enable-disable restricted features. Reverse engineering, as Elliot Chikofsky describes in his foreword to the book “Reversing: Secrets of Reverse Engineering”, is like a stethoscope, which could not only be used by a doctor to detect breathing or heart problems but also by a burglar to listen to the lock mechanism of a safe as the tumblers fall in place. It is a tool which is not inherently good or bad but the issue is the use to which it is put.

While legal issues surround the usage and application of reverse engineering, acquiring knowledge about the techniques of reverse engineering is perfectly legal. As a beginner, you can learn how to create patches for a software in order to bypass restrictions. You can learn the internal working of a protection scheme to be able to find a password/ serial key for it or (even more) to be able to write a keygen for it. More advanced techniques may also teach you how to inject your own code into a piece of software. It is important for good guys to know these techniques too, as it provides one with a perspective of a hacker. To be able to think like hackers motivates one to develop stronger protection schemes and take anti-reversing measures for your software.

On a more personal note, learning reverse engineering is fun. You suddenly find yourself in a world of endless possibilities. There are several websites offering legal “crackme” files. It can be challenging, mentally satisfying and often addicting, when cracking these files. You force your mind to work analytically as never before. You can take your first step in being someone different from those you see all around you.

I wrote this article a few months back to help people (beginners) understand what reverse code enginerring is all about. I myself am a beginner in this field and hopefully someday I could advance to the next level. For now I
already have enough stuff at hand !!


Read more >>

This is Amulya Khare's blog cum website. You can know more about him by viewing his profile.

Read about his views and ideas on topics that grab his attention.

Also you can view his work and projects.

Included here are some resources and articles that you might find interesting or helpful.