CTF-All-In-One

8.13 New Frontiers of Reverse Engineering

paper

What is your take-away message from this paper

This paper briefly presents an overview of the field of reverse engineering, reviews main achievements and areas of application, and highlights key open research issues for the future.

What are motivations for this work

What is reverse engineering

The term reverse engineering was defined as:

the process of analyzing a subject system to

(i) identify the system’s components and their inter-relationships and

(ii) create representations of the system in another form or at a higher level of abstraction.

So, the core of reverse engineering consists two parts:

  1. deriving information from the available software artifacts
  2. translating the information into abstract representations more easily understandable by humans

Why we need reverse engineering

Reverse engineering is a key supporting technology to deal with systems that have the source code as the only reliable representation.

Previous reverse engineering

Reverse engineering has been traditionally viewed as a two step process: information extraction and abstraction.

img

img

The discussion of the main achievements of reverse engineering in last 10 years is organized three main threads:

Program analysis and its applications

Several analysis and transformation toolkits provide facilities for parsing the source code and performing rule-based transformations.

Architecture and design recovery

Visualization

Software visualization is a crucial step for reverse engineering.

program analysis

So, Reverse engineering research has highlighted the dualism between static and dynamic analysis and the need to complement the two techniques, trying to exploit the advantages of both and limit their disadvantages. And recent years the third dimension named historical analysis added.

design recovery

visualization

Effective visualizations should be able to :

  1. show the right level of detail a particular user needs, and let the user choose to view an artifact at a deeper level or detail, or to have a coarse-grain, in-the-large, view
  2. show the information in a form the user is able to understand. Simpler visualizations should be favored over more complex ones, like 3D or animations, when this does not necessarily bring additional information that cannot be visualized in a simpler way

Reverse engineering in emerging software development scenarios

The challenges for reverse engineering:

  1. on the one hand, the analysis of systems having high dynamism, distribution and heterogeneity and, on the other hand, support their development by providing techniques to help developers enable mechanisms such as automatic discovery and reconfiguration
  2. the need for a full integration of reverse engineering with the development process, which will benefit from on-the-fly application of reverse engineering techniques while a developer is writing the code, working on a design model, etc.

Final

img