Ingénierie inverse
Publié: 2022-03-10Dernière mise à jour le 21 mars 2022
Je vais parler de ce qu'est l'ingénierie inverse et pourquoi elle est importante. Beaucoup de gens qui ne sont pas développeurs pensent qu'ils savent ce qu'est l'ingénierie inverse parce qu'ils l'ont vu dans les films, mais c'est une idée fausse. L'ingénierie inverse a beaucoup de significations pour de nombreuses personnes différentes, et ce que je vais vous dire sera très différent de la définition de quelqu'un d'autre.
Pour White Label Software, l'ingénierie inverse consiste essentiellement à prendre un programme et à déterminer comment il fonctionne et ce qu'il peut faire. Pour être plus précis, cependant, l'ingénierie inverse consiste à prendre un programme existant et à apprendre son fonctionnement interne afin que vous puissiez modifier le programme pour faire des choses autres que ce que l'auteur avait prévu. Vous pouvez en savoir plus sur ce que signifie la marque blanche lorsque vous naviguez sur notre site !
Dans le développement de logiciels, nous disons que vous faites de l'ingénierie inverse lorsque vous le démontez et découvrez comment cela fonctionne. La rétro-ingénierie est bénéfique pour apprendre à utiliser le logiciel et son fonctionnement. Il peut également être utilisé dans de nombreuses choses différentes comme le marketing numérique, la défense de votre entreprise, le piratage et bien d'autres choses.
Ingénierie inverse en marketing
Si vous avez l'intention de créer une nouvelle campagne marketing, vous pouvez désosser le logiciel pour savoir ce qu'il fait ou comment il devrait fonctionner. Ensuite, vous pouvez modifier le code pour l'adapter à vos besoins. Vous pouvez faire de même avec des publicités ou d'autres types de marketing. Il est également possible de trouver des informations sur les concurrents, les spécifications et les performances d'un produit et bien d'autres choses.
Lorsque vous voulez créer quelque chose, vous devez d'abord commencer par un design. Vous pouvez utiliser des outils pour vous aider à créer la conception, mais vous devez également la tester avec vos éléments, car il est important de savoir si les éléments interagiront de manière adéquate. Parfois, vous devez vous amuser dans les programmes et découvrir comment ils fonctionnent en créant de fausses sorties. Vous pouvez même conduire une voiture avec une image d'une vraie voiture, surtout si vous voulez voir comment elle se comporte. Nous appelons cela la conduite virtuelle ou la conduite virtuelle.
Qu'est-ce que l'ingénierie inverse ?
C'est le processus d'analyse d'un programme informatique pour déterminer sa structure interne, son code source, ses algorithmes et son flux de données. Le but de la rétro-ingénierie est de comprendre comment fonctionne un programme informatique et ce qu'il contient. Lorsque vous lisez ces informations, elles peuvent être appelées analyse de plantage, désassemblage, ingénierie inverse ou débogage. J'aime le "débogage" car cela ressemble plus à une activité effectuée par un programmeur alors que ce n'est pas le cas. De nos jours, la plupart des programmeurs ne savent même pas qu'ils font de l'ingénierie inverse.
L'ingénierie inverse est le processus consistant à prendre un logiciel, un programme (ou un cracker), pour effectuer une action pour laquelle le développeur n'a jamais prévu qu'il soit utilisé (mais qui se produit parfois). Dans ce scénario, le pirate a trouvé une faille de code dans un programme et a compris comment l'utiliser pour obtenir l'effet souhaité. Par exemple, les pirates ont des jeux rétro-conçus et savent comment ils fonctionnent ou quel type d'informations ils peuvent apprendre.
Pourquoi c'est important?
Presque tous les logiciels sur le marché font l'objet d'une ingénierie inverse. Il existe quelques programmes qui ne sont pas inversés. Même les applications de Microsoft ont fait l'objet d'une ingénierie inverse. Même des entreprises entières ne font que désosser des logiciels pour de l'argent.
L'ingénierie inverse est devenue de plus en plus importante depuis que le gouvernement américain a adopté des lois sur la protection des logiciels ou la gestion des droits numériques (DRM). Il n'y aurait pas de logiciel avec DRM s'il n'était pas rétro-conçu, et les programmes rétro-conçus ne seraient pas protégés par DRM. Il y a d'autres raisons pour lesquelles l'ingénierie inverse est importante, mais c'est un sujet pour tout un livre (ou une série de livres).
L'ingénierie inverse a changé le monde. Cela a complètement changé la façon dont les gens vivent. Il y a beaucoup d'avantages à cela :
- Vous pouvez faire en sorte que le logiciel fasse ce que vous voulez qu'il fasse.
- Vous pouvez découvrir comment supprimer des éléments d'un programme qui ne sont pas censés s'y trouver.
- Il devient plus facile de décomposer quelque chose en ses composants et de l'analyser plus avant.
Quels sont les avantages de la rétro-ingénierie ?
Vous pouvez voir ce qu'il fait et en apprendre davantage sur ses mécanismes internes en inversant le programme. Vous pouvez apporter des modifications au programme sans affecter les autres programmes ou le système d'exploitation. C'est un avantage non négligeable puisque la plupart des programmes doivent être compatibles avec les bibliothèques et les systèmes d'exploitation fournis par leurs éditeurs. Apporter des modifications à un programme peut non seulement endommager gravement votre système, mais également celui des autres utilisateurs. La rétro-ingénierie vous donne accès à tous les mécanismes internes, bibliothèques et informations sur son fonctionnement. Vous pouvez créer des programmes qui peuvent utiliser des bibliothèques et des systèmes d'exploitation sans les payer.
Qu'est-ce que le processus de rétro-ingénierie ?
C'est une question compliquée car la réponse dépend de votre programme de rétro-ingénierie. La meilleure réponse que je puisse vous donner est : « Cela dépend… ». Les programmes modernes ont un code anti-débogage, anti-ingénierie inverse et anti-écrasement. Cela signifie que l'ingénierie inverse implique une utilisation intensive de l'obscurcissement, ce qui fait perdre du temps et peut parfois entraîner des plantages de programme.
L'obscurcissement est une technique anti-ingénierie inverse qui rend plus difficile l'ingénierie inverse du programme. Les sous-programmes, fonctions et autres parties d'un programme sont généralement déplacés vers différents endroits de la mémoire et les structures de données sont modifiées avec des nombres magiques. Parfois, le code est crypté ou scanné pour des mots particuliers qui pourraient donner des informations sur sa structure. Ce n'est pas toujours suffisant pour vaincre les rétro-ingénieurs, donc parfois, un programme plantera en essayant de le désassembler avec des outils spécifiques. Dans de nombreux pays, c'est illégal même si vous possédez une copie du logiciel et que vous ne l'avez modifié d'aucune façon.
Comment désosser des logiciels/programmes ?
Si vous n'êtes pas habitué aux logiciels d'ingénierie inverse, il est sage de commencer par les programmes accessibles. Il serait préférable que vous essayiez d'apprendre des outils spécifiques à l'ingénierie inverse avant de vous lancer dans les profondeurs de la piscine. Un bon outil pour les débutants est IDA Pro. (IDA signifie Intrusion Detection Analysis). Il est gratuit, facilement accessible et peut inverser presque tous les programmes tant qu'il est en 32 bits. IDA Pro fonctionne en analysant le code compilé ou désassemblé, puis l'affiche d'une manière qui vous permet de le lire, de le comprendre et même de le modifier plus facilement. IDA Pro est un bon outil pour un rétro-ingénieur, mais il ne convient pas à toutes les situations.
Un autre outil est GDB qui est un outil de débogage, comme Visual Studio. Cependant, GDB déboguera le code lors de son exécution, tout comme Visual Studio. La différence est que vous pouvez apporter des modifications au code lors de l'exécution, puis provoquer un plantage du programme. Cela vous permettra de voir l'erreur dans la logique (en supposant qu'un mécanisme anti-débogage/anti-ingénierie inverse ne la masque pas). Après cela, vous pouvez corriger l'erreur ou continuer l'exécution jusqu'à ce qu'une autre partie du programme pose un problème.
Quels sont les risques de l'ingénierie inverse ?
Il est illégal dans la plupart des pays de désosser un logiciel. Cependant, ce n'est pas illégal dans certaines situations aux États-Unis tant que vous possédez une copie du programme et que vous pouvez prouver qu'il a été acquis légalement (en utilisant un numéro de série ou une clé de CD). Il existe également des exceptions pour les mécanismes anti-copie et anti-piratage, qui ne permettent qu'à des fins éducatives. Pour désosser un programme, vous devez disposer de suffisamment d'informations pour le faire. Cela signifie généralement comprendre le code source du programme dont vous faites l'ingénierie inverse. Ce n'est pas toujours facile, même si vous pouvez lire le code source, principalement si un mécanisme anti-débogage/anti-rétro-ingénierie a été utilisé.
J'espère que vous aurez une meilleure idée de ce que signifie l'ingénierie inverse et comment l'appliquer à différents cas de choses. J'espère également que vous deviendrez plus compétent dans ce domaine et que vous aiderez votre entreprise et vos clients à se développer en utilisant leurs outils de connaissance d'une manière plus moderne.