Flux RSS - La vie du site - Nouveautés et mises à jour
Assiste.com - Sécurité informatique - Décontamination - Antivirus - Protection - Protection de la Vie Privée Assiste.com - Sécurité informatique préventive - Décontamination - Antivirus - Protection - Protection de la Vie Privée

Ingénierie inverse (Reverse engineering)

Dernière mise à jour : 2018-10-12T14:52 - 12.10.2018
16.05.2016 - 00h00 - Paris - (Assiste - Pierre Pinard) - Mise à jour

Ingénierie inverse (Reverse engineering)

Ingénierie inverse (Reverse engineering)Ingénierie inverse (Reverse engineering)Ingénierie inverse (Reverse engineering)

En informatique, l'Ingénierie inverse (Rétro-ingénierie - Reverse engineering) est un terme essentiellement utilisé dans les tentatives de remonter du code exécutable d'un programme à son code source afin de comprendre ce qu'il fait (dont en recherches de malveillances de toutes natures) et, éventuellement, ce qu'il cache (suspission d'espionnage), etc.

L'Ingénierie inverse se classe dans l'espionnage industriel (intelligence industrielle) et s'applique, globalement à tous les produits et services.

En matière de logiciels informatiques, l'Ingénierie inverse commence par l'utilisation d'outils de désassemblage et de décompilation d'un code exécutable. Si le code est compilé, il est possible d'en obtenir une écriture en "assembleur" (langage de très bas niveau s'adressant directement aux processeurs). Si le code est un code intermédiaire, type P-Code, Java, .Net, etc. la décompilation permet de remonter directement, ou presque, au code source.

Une autre méthode d'Ingénierie inverse appliquée aux logiciels informatiques consiste à considérer l'objet logiciel dont on cherche à comprendre le fonctionnement et le comportement, comme une boîte noire ayant des entrées (des données en entrée), et des sorties (des données en sortie). On entre des jeux d'essai de données en entrée et on observe les sorties pour en déduire :

  • Ce qui se passe dans la boîte noire (les algorithmes).
  • Les structures des données en entrée comme en sortie, lorsque ces structures sont inconnues.

Cracker un logiciel relève de l'Ingénierie inverse.

Analyser un virus pour en déterminer son comportement, ses méthodes de camouflage, ce qu'il fait, etc. relève de l'Ingénierie inverse. Les laboratoires de chacun des antivirus passent leur vie à faire de l'Ingénierie inverse.

La protection par des clauses contractuelles interdisant l'Ingénierie inverse n'est pas dissuasive.

La protection par des brevets est coûteuse mais empêche une copie pure et simple. L'Ingénierie inverse va alors permettre de comprendre puis d'imiter sans violer le brevet.

Ce problème n'existe pas avec les logiciels « Open Source » dont le code est public (rien n'est caché, tout le monde peut examiner et analyser le code source, et il n'y a alors pas de suspission).

Les éditeurs de logiciels qui clament que leur logiciel est « Open Source » alors que, simultanément, leurs clauses contractuelles interdisent l'Ingénierie inverse, sont des menteurs et leurs logiciels ne sont pas « Open Source ». C'est le cas de Google avec l'insistant buzz qui fait entendre que Chrome est « Open Source » alors qu'il n'en est rien (seul le moteur de rendu, une infime partie d'un navigateur Web qui n'a aucune interaction avec l'utilisateur) est « Open Source ». Dans les clauses contractuelles, obligatoirement acceptées, des « Conditions d'utilisation de Google Chrome » (dernière vérification le 06.01.2018 - article 9.2) :

  • « …/… vous n'êtes pas autorisé (et ne pouvez pas autoriser un tiers) à copier, modifier, créer des travaux dérivés, faire de l'ingénierie inverse, décompiler ou tenter d'extraire de quelque manière que ce soit le code source du Logiciel ou d'une partie de celui-ci …/… »

Rappel : Chrome n'est pas Chromium. Chrome est un navigateur web propriétaire, simplement basé sur Chromium (sinon, les compilations de l'un et de l'autre donneraient les mêmes condensats (hashcodes).