Reverse engineering, the art of understanding a piece of software without its source code, is a key tool to build a more secure digital world. In fact, one of the key principles in cybersecurity is to avoid the so-called "security through obscurity", which means that a system should be designed to be safe even if an adversary has a detailed knowledge of the whole target system. However, this principle is often ignored by developers, that tend, mostly due to resource constraints, to rely on the fact that an attacker doesn't have the source code of an application at his disposal.
In this context, reverse engineering allows an analyst to understand and examine a piece of software for which the source code is not available, enabling him to identify vulnerabilities and backdoors.
Our project, rev.ng aims at increasing the software that can be analyzed efficiently without source code. Specifically, we target software running on emerging platforms such as IoT devices and smartphones that is currently extremely difficult.
To do this, we need to optimize the quality of our output to make it quick and easy for the analyst to understand the analyzed application. On top of this, the user interface the analyst has to deal with has to be designed to maximize the efficiency of the time spent on it, a fact that has been largely disregarded in similar analysis tools.