Introduction au Reverse Engineering

logo tux ouvrier

Généralités

Architecture type

Pour identifier clairement le domaine associé au Reverse Engineering, voici un schéma "d'architecture" représentant le cycle normal de la création d'une application, ainsi que le cycle associé à son "reversing":

Architecture type

On retrouve ici:

C'est dans ce cadre que l'on peut définir les contextes d'analyse :

logo nsa sword logo anonymous | we are legion

Winter is coming; Game of Thrones, Eddard ’Ned’ Stark

Contexte d'analyse

Une analyse en boîte blanche ou en boîte noire ne représente pas uniquement les seules contextes d'analyse pouvant subvenir pendant le reversing.

En effet, on retrouve également la notion de contexte d'analyse statique et dynamique.

Pour bien comprendre ces notions, nous allons définir les contextes d'analyses en boîte noire et blanche, ainsi que les notions sous-jacentes à ces situations.

Voici un schéma type d'une analyse en contexte boîte noire :

analyse boite noire

Une analyse en boîte noire signifie que l'on n'a pas d'accès au binaire ou programme que l'on souhaite étudier. Il faut donc explorer, approfondir le comportement de ce dernier durant son exécution.

Une analyse dépendant d'une exécution du produit représente une analyse dynamique. Dans le cadre d'une boîte noire, une analyse statique n'a aucun sens. En effet, cela signifierait analyser un produit sans y avoir accès, et en dehors de toute exécution, ce qui n'est de facto pas possible.

On peut décomposer une analyse en boîte noire dynamique selon deux cas :

Voici un schéma type d'une analyse en contexte boîte blanche :

analyse boite blanche

Une analyse en boîte blanche signifie que l'on dispose d'un accès au binaire ou programme que l'on souhaite étudier. On peut donc explorer et approfondir le comportement de ce dernier durant son exécution.

Une analyse en boîte blanche peut se décomposer selon deux cas :

Niveaux d'abstractions

Un autre concept spécifique au Reverse Engineering est le niveau d'abstraction que l'on peut prendre durant le cadre d'une analyse.

En effet, une analyse peut s'effectuer à différents niveaux, dont voici les principaux à retenir :

Il faut bien entendu connaître le domaine applicatif avant d'étudier l'implémentation du logiciel analysé, pour ainsi avoir une vue globale avant de redescendre au niveau de la structure et de l'implémentation.