Reverse Engineering

Authored by Sanjana Udar

Under Software Maintenance Knowledge Area

3 min to read

Table Of Contents #

Introduction of Skill #


Reverse engineering may refer to any of the following: 1. When referring to computer science/programming, reverse engineering means to “break down” the programming code.Generally speaking, the purpose is to fix errors in the software engineer’s code, or create a program like the one being deconstructed.

Classification of Skill #


Software maintenance

In a software lifetime, type of maintenance may vary based on its nature. It may be just a routine maintenance tasks as some bug discovered by some user or it may be a large event in itself based on maintenance size or nature. Following are some types of maintenance based on their characteristics:

Corrective Maintenance - This includes modifications and updations done in order to correct or fix problems, which are either discovered by user or concluded by user error reports.

Adaptive Maintenance - This includes modifications and updations applied to keep the software product up-to date and tuned to the ever changing world of technology and business environment.

Perfective Maintenance - This includes modifications and updates done in order to keep the software usable over long period of time. It includes new features, new user requirements for refining the software and improve its reliability and performance.

Preventive Maintenance - This includes modifications and updations to prevent future problems of the software. It aims to attend problems, which are not significant at this moment but may cause serious issues in future.

Prerequisites for Skill #


  • Basic knowledge of programming such as variables, keywords, the basic coding standards and naming conventions.
  • Logic understanding and creation.

Software migration #

is the practice of transferring data, accounts, and functionality from one operating environment to another.

Software Testing #

it's a process or method of finding error/s in a software application or program so that the application functions according to the end user's requirement.

Rationale for Skill #


  • Allows us to see what already exists.Examining current products leads to innovation and discovery, all thanks to reverse engineering.
  • Reconstructing a product that is outdated.
  • It supports finding faults in the product.
  • Lastly, reverse engineering gives way for innovative design. During the process, an engineer might discover a system that could be useful for a completely different project.

Roles for Skill #


  1. Software Reverse Engineering Analyst
    [Requirements] https://www.linkedin.com/jobs/view/senior-software-reverse-engineering-analyst-at-techinsights-1928822326/?utm_campaign=google_jobs_apply&utm_source=google_jobs_apply&utm_medium=organic&originalSubdomain=ca
  2. Software maintenance Specialist

  • Data Restructuring
    It is the process to restructure the source data to the target data during data transformation.
  • Code Refactoring
    It is the process of restructuring existing computer code—changing the factoring—without changing its external behavior.

Real-World Example/Scenario of Skill (Text, Graphic, Audio, Video) #


Reverse engineering, also called back engineering, is the process by which a man-made object is deconstructed to reveal its designs, architecture, code or to extract knowledge from the object. This general defition as coined in Wikipedia justifies that reverse engineering can be applicable in field.

"Basically, if reverse engineering is banned, then a lot of the open source community is doomed to fail." -Jon Lech Johansen

Role of Academia or Industry in Cultivating the Skill #


Most engineering programs provide a course on Reverse Enigeering. The skill is considered to be crucial for making new innovations.
In the time where we have technically acheived a tons, reverse engineering old systems can be very insightful and inspire and guide us to create something new.

More often than not, many companies perform reverse engineering on a particular technology or product to make a better or similar version of the same. An implementation of such an activity can also be seen in negative [news] https://www.kitguru.net/lifestyle/mobile/damien-cox/huawei-has-been-accused-of-reverse-engineering-apple-tech/

Tools Supporting the Skill #


  • Ghidra
  • NetBeans
  • Eclipse
  • IDA Pro
  • Binary Ninja

Skill Self-Assessment #


5 - While I have applied the skill on a academic project, I don't have experience in reverse engineering a real world project.

References #


  1. [Wikipedia]https://en.wikipedia.org/wiki/Reverse_engineering
  2. [Intro]https://medium.com/swlh/intro-to-reverse-engineering-45b38370384#:~:text=Reverse engineering is a process,to hack it more effectively.
  3. [Tools] https://techbeacon.com/security/reverse-engineering-attacks-6-tools-your-team-needs-know

Back to Home Page