Vous êtes sur la page 1sur 5

30/11/2021 16:30 Reverse engineering : définition et méthodes | IT-Connect

Reverse engineering : définition et méthodes

La rétro-ingénierie (aussi appelée ingénierie inverse ou inversée) consiste à étudier un objet pour en déterminer le fonctionnement interne ou la
méthode de fabrication.

On parle également de rétro conception. En matière d'informatique’ cela s’applique également sur les logiciels. Pour cela, on utilise des outils d’analyse tels
qu’un désassembleur ou un dé-compilateur. Si cela revient à faire du débogage, on comprend pourquoi, grâce aux outils de Kali Linux, on peut s’en servir pour
simuler un type d’attaque permettant de récupérer les informations auxquelles on n’a pas toujours accès de façon directe.

La rétro-ingénierie est fréquemment utilisée pour les structures de données afin d’en reconstituer un modèle depuis les structures physiques des
fichiers ou des tables.

REMARQUE : la rétro-ingénierie est devenue très populaire grâce aux jeux vidéo et notamment le détournement des protections anti-copie. Cette
activité s’est d’ailleurs appelée cracking.

En effet, pour écrire des pilotes pour certains périphériques tels que les webcams ou autres scanners, les développeurs de logiciels Open Source ont souvent
été contraints à pratiquer la rétro-ingénierie sur le pilote, en interceptant les échanges entre le processeur et celui-ci, découvrant ainsi comment dialoguer
avec la puce électronique de la carte principale.

En cryptographie, la rétro-ingénierie peut aller jusqu'à prendre la forme d’une attaque cryptanalytique, afin d’extraire les informations secrètes depuis la "boite
noire" symbolisant le processus de chiffrement. Ce type d’attaque est baptisée attaque par canaux auxiliaires.

Juridiquement, de nombreux éditeurs de logiciels propriétaires incluent dans leur contrat de licence utilisateur final (abrégé en CLUF), des clauses
d’interdiction de ce procédé. Mais, dans de nombreux pays, la rétro-ingénierie est autorisée par la loi, notamment à des fins d’interopérabilité. En France, ce
droit est garanti par l’article L 122-6-1 du code de la propriété intellectuelle. De plus, la rétro-ingénierie peut être l’occasion de pratiquer un mode défensif,
notamment dans les cas suivants :
https://www.it-connect.fr/chapitres/reverse-engineering-definition-et-methodes/ 1/5
30/11/2021 16:30 Reverse engineering : définition et méthodes | IT-Connect

étude de binaires malicieux (type rootkit), dans le cadre d’une attaque informatique.


étude de virus informatique pour l’amélioration d’un antivirus ou pour éradication.
étude et recherche de vulnérabilités dans les logiciels pour en améliorer la sécurité.

Nous allons ici, voir quelques-uns des nombreux outils permettant de pratiquer le reverse engineering.

A. Utilitaire OllyDbg
Il s’agit d’un programme d’assemblage 32 bits permettant de debugger les applications Microsoft Windows. L’accent mis sur l’analyse de code binaire le rend
particulièrement utile dans les cas où le code source est indisponible. Généralement ce logiciel est utilisé pour cracker les logiciels commerciaux. Afin de
l’ouvrir, il suffit de sélectionner le menu Applications, puis les options suivantes :

https://www.it-connect.fr/chapitres/reverse-engineering-definition-et-methodes/ 2/5
30/11/2021 16:30 Reverse engineering : définition et méthodes | IT-Connect

Afin d’ouvrir un exécutable, on doit alors aller dans le menu ‘Opening folder’ afin de sélectionner le programme binaire en question. On peut alors visualiser
l’intégralité des événements et des échanges s’effectuant au sein du programme :

B. Utilitaire Dex2jar
Dans la mesure où les applications Android font partie des programmes exécutables, on peut aussi s’intéresser à la manière dont une application déployée sur un
téléphone GSM est utilisée. Pour se faire, on peut utiliser le programme dex2jar aidant à la conversion de fichier APK en fichier JAR, dans le but de visualiser
le code source. Ce programme s’utilise en mode ligne de commande de la façon suivante :

# d2j-dex2jar –d /<File>

REMARQUE : le fichier mentionné, doit être précisé avec son chemin d’accès complet. En sortie on devrait alors disposer d’un fichier JAR, comme le montre
la capture suivante :

https://www.it-connect.fr/chapitres/reverse-engineering-definition-et-methodes/ 3/5
30/11/2021 16:30 Reverse engineering : définition et méthodes | IT-Connect

C. Utilitaire jd-gui
Il s’agit d’un utilitaire graphique permettant d’afficher le code source Java d’un fichier .class. On peut ainsi parcourir le code source reconstitué et ainsi
reconstruire le fichier que l’on a récupéré à l’étape précédente en utilisant dex2jar. Pour exécuter ce programme il suffit d’ouvrir un terminal et d’exécuter la
commande jd-gui. Cela permet d’initialiser la fenêtre suivante :

https://www.it-connect.fr/chapitres/reverse-engineering-definition-et-methodes/ 4/5
30/11/2021 16:30 Reverse engineering : définition et méthodes | IT-Connect

Dans le même esprit, on peut aussi ouvrir l’utilitaire apktool afin d’effectuer de l’ingénierie inverse pour des applications Android. Là encore, il s’agit d’un
utilitaire en ligne de commande :

# apktool <Appli>.apk

Ce genre de commande permet alors d’initialiser la décompilation du fichier APK.

Vous voilà avec quelques outils entre les mains pour débuter en reverse engineering 😉

https://www.it-connect.fr/chapitres/reverse-engineering-definition-et-methodes/ 5/5

Vous aimerez peut-être aussi