0
13kviews
Explain Software Reverse Engineering

Subject: System Web Security

Topic: Software Security

Difficulty: High

1 Answer
2
259views

Reverse Engineering

Reverse engineering is the process of design recovery. In reverse engineering the data, architectural and procedural information is extracted from a source code.

There are three important issues in reverse engineering.

1. Abstraction Level

  • This level helps in obtaining the design information from the source code.
  • Ideally, abstraction level should be as high as possible.
  • It is expected that abstraction level should be high in reverse engineering, so High abstraction level helps the software engineer to understand the program.
  • Reverse Engineering process should be capable of deriving procedural design representation (a low-level abstraction), program and data structure information (a high-level abstraction), and UML class, state and deployment diagram (high level of abstraction).
  • As the abstraction level increases, the software engineer provided with information that will allow easier understanding of the program.

2. Completeness level

  • The completeness of reverse engineering process refers to the level of details that is provided at an abstraction level.
  • The completeness decreases an abstraction level increases.

    For example –

    From a given source code listing one can easily develop a complete procedural design representation. But it is very difficult to develop complete set of data flow diagram or entity relationship diagram. The completeness in reverse engineering process develops the interactivity. The term interactivity means the degree to which human “integrated” with automated tools to create effective reverse engineering process. As the abstraction level increases the interactivity must increase to bring the completeness.

3. Directionality level

  • Directionality means extracting the information from source code and give it to software engineer.
  • The directionality can be one way or two way.
  • The one way directionality means extracting all information from source code and give it to software engineer.
  • The two way directionality means the information taken from source code is fed to a re-engineering tool that attempts to restructure or regenerate old program.
  • Following fig shows process of reverse engineering.

enter image description here

Fig: Reverse Engineering

  • Initially the dirty source code or unstructured source code is taken and processed and code is restructured.
  • After restructuring process the source code becomes clean source code.
  • The core to reverse engineering is an activity called extract abstractions.
  • In abstraction activity, the engineer must evaluate older program and extract information about procedures, interface, data structure or database used.
  • The output of reverse engineering process is a clear, unambiguous final specification obtained from unstructured source code.
  • The final specification helps in easy understanding of source code.
Please log in to add an answer.