Qu’est-ce que le reverse engineering ?

On définit le reverse engineering comme le fait de dé-compiler un programme, c’est-à-dire qu’on traduit un langage compréhensible par une machine en un langage lisible et compréhensible par un être humain.

Plus concrètement, le processus d’apprentissage du reverse engineering est similaire à l’acquisition de n’importe quel langage pour un humain :

  • La première étape d’apprentissage commence avec l’introduction des lettres dans un alphabet, qui sont ensuite utilisées pour construire des mots avec une sémantique bien définie.
  • La deuxième étape implique de comprendre les règles de grammaire, comment les mots sont assemblés les uns avec les autres pour enfin former des phrases.

Dans cette analogie, le reverse engineering consisterait à lire un livre afin d’assimiler les différentes idées qu’il en dégage.

Dans le reverse engineering, le langage est le langage assembleur et architectural (on parle ici d’architecture logicielle, rien à voir avec l’époque baroque du 18e siècle ^^) :

  • un mot représenterait une instruction en assembleur
  • les paragraphes seraient un ensemble d’instructions, un équivalent d’une fonction dans un langage informatique
  • un livre représenterait un programme

Le plus important est donc de connaitre le vocabulaire et la grammaire pour comprendre un livre.

Dans la pratique, le reverse engineering consiste à analyser le fonctionnement d’un programme ou d’un périphérique, ou alors en examinant pas à pas les résultats de son exécution.

 

A quoi sert le reverse engineering ?

De par sa nature, l’homme est curieux et cherche souvent à savoir comment tel ou tel chose fonctionne. Le reverse engineering part de cette philosophie. L’être humain, lorsqu’il installe un logiciel, va regarder comment l’utiliser en récupérant un maximum d’information à son sujet. Grace au reverse engineering, il va pouvoir comprendre dans les moindres détails les différents mécanismes présents dans ce logiciel.

Le reverse engineering permet d’améliorer ses capacités dans le domaine de la programmation informatique. Grâce à lui, on comprend mieux comment un ordinateur ou un logiciel fonctionne. C’est également une grande source d’informations sur la programmation, très utile pour optimiser des lignes de codes.

Le reverse engineering peut être utilisé pour de mauvaises raisons, comme pour ne pas payer de logiciels propriétaires. Dans ce cas, on parle de cracking. Le principe est de « désassembler » le programme, analyser les protections mises en place par l’éditeur, et de créer par exemple un programme qui va générer des numéros de licences (« keygen »).

On peut se servir également du reverse engineering pour lire des formats de fichiers propriétaire (.mp3 ou docx…). Pour l’anecdote, le logiciel multi-plateforme « samba » permettant de partager des fichiers entre différents OS via le protocole SMB est basé uniquement sur du reverse engineering.

 

Le reverse engineering, est-ce légal ?

En France, il est légal de procéder à du reverse engineering dans certaines situations particulières stipulées dans l’article L112-6-1 du Code de Propriété Intellectuelle.

D’une part, si la licence n’interdit pas cette pratique, il n’est pas illicite de s’adonner au reverse engineering d’un logiciel. Si le concepteur d’un logiciel veut s’y opposer, il faut que cela soit spécifié dans le contrat que l’on doit normalement lire avant de cliquer sur « J’accepte les termes et conditions d’utilisation ». Si cela n’est pas mentionné, rien ne s’y oppose. Qui dit acceptation des termes et conditions d’utilisation dit acquisition légale du logiciel et cela fait partie des conditions posées dans l’article L112-6-1.

L’autre condition essentielle est celle de l’interopérabilité. L’interopérabilité est la faculté pour un logiciel à fonctionner sur l’ensemble des plateformes existantes. Ainsi, si on étudie le fonctionnement d’un logiciel afin de le rendre compatible avec un autre système que celui pour lequel il a été initialement conçu, cela reste tout à fait légal, surtout si cela n’a pas été fait par le concepteur d’origine. Cela concerne également les traductions et la documentation nécessaire. Or, certains outils n’existent que pour Windows ou pour MAC mais ne sont pas utilisables sur une distribution Linux, par exemple Paraben, un outil de mobile forensic qui n’existe que pour Windows. Néanmoins, il faut que la partie du reverse se cantonne à cette question de l’interopérabilité. Il est illicite de se servir du reverse engineering pour plagier un logiciel pour le revendre par exemple.

About the author

Stan

Membre actif de la cyber sécurité en entreprise, c’est afin de limiter ma présence sur internet que j’ai choisi l’anonymat pour partager avec vous des actualités sécuritaires, des bonnes pratiques à suivre et des conseils pour vous protéger vous, votre entourage et votre entreprise.

View all articles