Accueil Technologie

Comprendre les concepts de l’ingénierie inverse

Les ingénieurs doivent parfois penser à l’envers pour analyser un produit. Par exemple, un ingénieur en mécanique peut tirer des conclusions sur la production d’un produit à partir de sa conception et de ses propriétés physiques. Il peut même être capable de fabriquer le même produit s’il en a une connaissance approfondie.


On peut également comparer l’ingénierie inverse aux preuves d’équations mathématiques. Alors, comment utilise-t-on l’ingénierie inverse ?

Qu’est-ce que la rétroconception ?

La rétroconception est le processus d’analyse d’un système dans le but de le reproduire ou de l’améliorer. Si vous examinez les domaines de travail de l’ingénierie inverse, vous constaterez qu’elle peut être utilisée à des fins très diverses. Si vous l’examinez du point de vue de la cybersécurité, il est possible d’effectuer les opérations suivantes avec des méthodes d’ingénierie inverse :

  • Analyse de la source d’un logiciel non-open source
  • Analyse des vulnérabilités
  • Analyse des logiciels malveillants
  • Cracking et Patching

De nos jours, l’ingénierie inverse est utilisée même dans les jeux vidéo. Par exemple, les développeurs créent souvent des mods de logiciels en utilisant des méthodes d’ingénierie inverse.

Dans le domaine de la rétro-ingénierie, il existe deux méthodes d’analyse différentes : statique et dynamique. Vous effectuez une analyse statique lorsque vous analysez un programme sans l’exécuter. Une méthode d’analyse dynamique, par contre, exige que vous exécutiez le programme pour observer son comportement et les données qu’il utilise.

Mais avant d’effectuer une analyse pour la rétro-ingénierie, vous devez connaître certains termes importants sur le fonctionnement de l’architecture des ordinateurs.

Lire  La manette de la Xbox One ne fonctionne pas ? Conseils pour la réparer

Principales parties de l’architecture d’un ordinateur

La rétroconception est pratiquement impossible si vous ne comprenez pas l’architecture des ordinateurs. Vous devez étudier les quatre parties principales :

  • Entrée: Un ensemble de méthodes permettant de saisir des données.
  • CPU: L’unité centrale traite les données entrantes et les transmet à ses propriétaires. C’est l’unité centrale de traitement.
  • Mémoire: L’espace qui retient temporairement les données pendant le traitement.
  • Sortie: Le résultat que l’utilisateur final voit.

Vous pouvez garder toutes ces questions principales à l’esprit avec un exemple, comme lorsque vous appuyez sur la lettre A sur votre clavier. Lorsque vous appuyez sur cette lettre, un événement d’entrée se produit. Après cette étape, le CPU traite les données et utilise un petit espace en mémoire pour les stocker. Enfin, vous verrez la lettre A sur votre écran, ce qui met fin au processus avec la sortie.

Plonger dans les profondeurs de l’UC

Gros plan d'une unité centrale sur un circuit imprimé.

Si vous voulez vraiment devenir un expert en rétro-ingénierie et vous plonger dans ce sujet, vous devez avoir une connaissance détaillée du matériel, des langages de bas niveau et surtout du CPU. Les principaux sujets que vous devrez connaître sur le CPU sont les suivants :

  1. Unité de contrôle: Cette unité est responsable du traitement des données dans l’unité centrale et de leur transfert vers les zones concernées. Vous pouvez considérer cette unité comme un mécanisme de contrôle du routage.
  2. ALU: C’est l’abréviation de Arithmetic Logic Unit. C’est là que se déroulent certaines opérations arithmétiques et logiques. Si vous creusez plus profondément dans les mathématiques, vous verrez que les quatre opérations de base sont essentiellement des variations de l’addition. L’ALU est donc basée sur l’agrégation. Par exemple, soustraire deux de trois revient à ajouter moins deux à trois.
  3. Registres: Ce sont les zones à l’intérieur de l’unité centrale qui contiennent les données traitées. Il existe différents types de registres, tout comme il existe différents types de variables dans un langage de programmation. Un registre est chargé de maintenir le type et les attributs des données qui lui sont assignées.
  4. Signaux: Si vous voulez que l’unité centrale exécute de nombreuses opérations différentes en même temps, une méthode pour les organiser est nécessaire. Les éléments qui permettent cette organisation sont appelés signaux. Chaque opération agit selon des signaux qui garantissent qu’elle n’interfère pas avec un autre processus.
  5. Bus: Le chemin utilisé par les données pour se déplacer d’une unité à l’autre. Notez comment le nom suggère le transport.

Concepts que vous entendrez souvent en rétro-ingénierie

Comprendre comment le CPU traite les données et les stocke en mémoire, ainsi que le concept de registres, peut être très utile lors de la rétro-ingénierie. En particulier, vous pouvez utiliser le diagramme ci-dessous pour mieux comprendre le concept de mémoire :

Un diagramme montrant les différentes parties de la mémoire, dont la pile et le tas.

Enfin, pour l’analyse par rétro-ingénierie, vous devez connaître quelques concepts de base sur les registres. Ils sont l’un des sujets sur lesquels vous vous concentrerez le plus. Voici quelques explications sur les registres de données, de pointeurs et d’index qui vous seront utiles de la manière la plus concise possible :

  • 1. EAX: Signifie Registre Accumulateur. Il enregistre généralement les données qui entrent dans la catégorie des opérations arithmétiques ici.
  • 2. EBX: Signifie registre de base. Il joue un rôle dans l’adressage indirect.
  • 3. EDX: Correspond au registre de données. EDX aide les autres registres.
  • 4. EIP: Signifie Instruction Pointer. Détient l’adresse du domaine à exécuter.
  • 5. ESP: Détient l’adresse de base.
  • 6. ESI: Contient l’information sur l’index de la source.
  • 7. EDI: Conserve l’information de l’index de destination.

Vous devez rechercher tous ces éléments séparément pour comprendre leurs nuances. Mais si vous regardez les bases et essayez de comprendre la logique métier, quelle que soit l’architecture de processeur avec laquelle vous travaillez, l’analyse du code pour la rétroconception sera assez facile.

La rétro-ingénierie commence souvent par le code machine. Vous pouvez comprendre bon nombre des termes ci-dessus si vous êtes familier avec l’assemblage ou si vous maîtrisez les architectures de processeur 32 ou 64 bits. Si vous souhaitez apprendre l’assemblage à partir de la base, cela vous sera extrêmement utile pour la rétro-ingénierie.

Que ferez-vous de tout cela ?

Si vous avez une bonne connaissance de l’ingénierie inverse, vous pouvez effectuer une analyse de code, quel que soit le système d’exploitation ou l’architecture du processeur avec lequel vous travaillez. Par exemple, il est possible de trouver des versions craquées de nombreux programmes ou jeux informatiques. Il s’agit d’une méthode totalement illégale.

Cependant, si vous voulez être un professionnel de la cybersécurité éthique, vous devrez utiliser l’ingénierie inverse pour comprendre pourquoi ces programmes sont craqués. Si vous voulez progresser dans le domaine de l’ingénierie inverse ou si vous débutez, il serait bon que vous essayiez d’apprendre la relation entre le matériel et le code machine.