Recherche

EDC de Mara

Bienvenue sur les EDCs de Dreadcast
Vous trouverez ici tous les articles rédigés par Mara

Cacher

Rétro-ingénierie: les grands principes par Mara - id 65041

Convertir en livre
Rétro-ingénierie: les grands principes

par Mara - id 65041

................................Sommaire
Introduction.............................................page 2
La rétro-ingénierie, qu'est-ce que c'est?..page 3
Exemples de rétro-ingénierie..................page 5
La rétro-ingénierie en mécanique...........page 6
scanner tridimensionnel..........................page 7
machine à mesurer tridimensionnelle.....page 8
La rétro-ingénierie en électronique........page 9
Liaison PIS..............................................page 9
Liaison PAT.............................................page 10
Liaison Debug.........................................page 11
Multicopieur...........................................page 11
La rétro-ingénierie en informatique......page 12
Le désassembleur...................................page 13
Le décompilateur....................................page 15
Le débogueur..........................................page 16
Conclusion..............................................page 18
Bibliographie..........................................page 23
Introduction.
Ce livre a pour ambition de présenter la rétro-ingénierie en tant que concept scientifique, d'expliquer ce que cela implique, de présenter quelques méthodes de travail théoriques, notamment l'utilisation du scanner tridimensionnel des tables de réparation et, en conclusion, la présentation de cas historiques de rétro-ingénierie réalisés en secteur Marran.
Chaque domaine dans lequel intervient la rétro-ingénierie pourrait faire l'objet d'un livre, ici il s'agit avant tout de se familiariser avec les bases et de disposer de quelques connaissances théoriques pour pouvoir passer à la pratique de la rétro-ingénierie.
En effet, si la rétro-ingénierie ne peut se passer de suppositions et de déductions, la principale façon d'avancer reste le travail d'expérimentation dans un atelier.
Les scanners ont leur propre limite et la compréhension des objets physiques passent bien souvent par une étape de désassemblage.

La rétro-ingénierie, qu'est-ce que c'est?
La rétro-ingénierie est l'activité qui consiste à étudier et déterminer la fonctionnalité d'un objet, d'un processus, d'un système ou d'un logiciel, afin de mieux le comprendre, de le modifier ou de vérifier son bon fonctionnement.
Elle ne doit pas être confondue avec l'espionnage industriel. Au contraire, la rétro-ingénierie permet de s'assurer qu'un nouvel objet qui arriverait sur le marché ne soit pas le fruit d'une violation de brevet, en comprenant sa méthode de fabrication, les matières dont il est composé et la façon dont il fonctionne.
La rétro-ingénierie est également essentielle dans la veille technologique, activité qui consiste à s'informer des techniques les plus récentes et surtout leur lancement sur le marché. La veille se pratique dans le respect de la légalité et de la déontologie, elle vise à suivre les évolutions techniques, découvrir des matériaux de substitut qui permettraient de diminuer les coûts de production, augmenter la qualité d'un produit et anticiper sur la concurrence.
Elle se pratique également grâce à l'exploitation de sources, de réseaux et d'informations ouvertes et accessibles à tous. Elle permet, entre autre, de déterminer ses propres limites en matière de production.
La rétro-ingénierie est sollicitée lorsque l'on procède à l'interopérabilité de deux systèmes, c'est à dire de faire en sorte, par exemple, que deux logiciels qui ne pouvaient pas communiquer et travailler ensemble puissent désormais le faire.
Vous l'aurez compris, la rétro-ingénierie s'applique dans différents domaines comme la mécanique, l'électronique, l'informatique et la biologie.
Pour cette dernière on lui préfère le terme de rétro-conception et elle ne sera pas abordée dans ce livre.
Le champ d'application de la rétro-ingénierie, très vaste, en fait une discipline incontournable pour avoir une meilleure compréhension des choses qui nous entourent.
Vous essayez de déterminer les ingrédients d'un plat en le goûtant?
De comprendre le fonctionnement de votre écran de télévision en démontant son boîtier et en identifiants les composants?
De tester un virus en vue de créer le meilleur anti-virus pour le combattre?
De décompiler le code d'un vieux logiciel pour pouvoir l'adapter à une nouvelle architecture informatique?
De comprendre l'usage d'un objet pour le détourner, l'améliorer ou encore l'intégrer à une invention?
Vous dépliez une chaise pliante, pour pouvoir comprendre comment plier l'autre chaise pliante, dépliée, que vous n'arrivez pas à replier depuis cinq minutes?
Vous bidouillez le terminal de l'entreprise pour rédiger un manuel sur son fonctionnement?
Tout cela est de la rétro-ingénierie!
La rétro-ingénierie en mécanique
Rétro-ingénierie orientée dans le domaine de la mécanique, en tant que technique ou activité industrielle de conception de structures, de machines ou de mécanismes.
Cela comprend également la Génie Mécanique, discipline de la mécanique qui vise à produire des structures et des dispositifs capables de produire ou transmettre un mouvement, une force, ou une déformation.
Pour en savoir plus sur la Génie Mécanique je vous invite à lire l'ouvrage Génie Mécanique de Mirmael Estrella Hadrath.
La rétro-ingénierie en mécanique s'étend jusqu'à tout élément manufacturable comme les moteurs, l'outillage, la visserie, les véhicules, les charpentes, les tuyaux, les bouteilles, etc
La principale façon d'étudier un objet physique est de procéder à un échantillonnage de points, fonction remplie à l'aide d'un scanner tridimensionnel ou d'une machine à mesurer tridimensionnelle.
Un scanner tridimensionnel est un appareil de numérisation et d'acquisition 3D. Il permet de réaliser ce que l'on appelle un échantillonnage de points, l'opération qui consiste à reconnaître la surface d'un objet ou d'un sujet et d'y poser un point, dans un système de coordonnées qui permettra une reconstruction 3D de l'objet ou du sujet.
Toutes les tables de réparation sont équipées d'un scanner tridimensionnel, il est essentiel dans le processus de réparation puisqu'il va mettre en lumière les parties endommagées d'un objet.
Il existe plusieurs types de scanner tridimensionnel:
Le scanner avec contact. A l'aide de plusieurs palpeurs montés sur des bras, le scanner va réaliser la reconstruction 3D. Un bon palpeur est capable d'exercer une pression de seulement un micro Newton, permettant ainsi l'étude, entre autre, de pièces microtechniques, comme celles que l'on trouve à l'intérieur des montres mécaniques.
Le scanner sans contact actif. Actif car il utilise un rayonnement et détecte la réflexion de ce rayonnement, pour identifier un objet, un sujet ou son environnement. Le rayonnement peut être de différents types de source: source lumineuse (laser et motifs lumineux), ultrasons et rayons X.
Le scanner sans contact passif. Passif parce qu'il n'utilise pas son propre rayonnement pour mener son analyse, il se base sur le rayonnement ambiant réfléchi autour d'un objet ou d'un sujet, pour exécuter la reconstruction 3D. Il s'agit bien sûr du type de scanner le plus bon marché.
Pour des opérations dignes de la métrologie industrielle, la science de la mesure, et afin de procéder à un contrôle qualité le plus juste possible sur un objet physique, on préfère utiliser une Machine à mesurer tridimensionnelle, MMT.
Il existe différentes sortes de MMT, dont une portable qui nécessite d'être opérée manuellement, mais qui permet de pratiquer la rétro-ingénierie sur le terrain, sans la contrainte de ramener l'objet ou le sujet en laboratoire.
La rétro-ingénierie en électronique
Rétro-ingénierie orientée dans le domaine de l'électronique, l'une des branches de la physique appliquée qui s'intéresse à la conduction électrique et aux équipements qui y sont associés.
Elle consiste à reconstituer un schéma électronique en analysant les connexions d'un circuit imprimé ou le dessin des masques d'un circuit intégré, ou encore en exploitant les liaisons de l'objet que le constructeur aurait fabriqué, comme la liaison PIS, PAT ou encore Debug.
PIS, pour Programmation In-Situ, est une fonctionnalité qui permet aux composants électroniques d'être programmés et reprogrammés à volonté, alors qu'ils sont déjà en place dans le système électronique qu'ils doivent piloter.
La très grande majorité des composants électroniques, comme les micro-controleurs, fonctionnent en PIS.
Cette fonctionnalité fait gagner énormément de temps aux industriels lors de la fabrication d'un objet électronique, puisqu'elle permet d'injecter le programme dans un composant et le tester dans le même temps.
Si l'on devait se passer de la PIS, il faudrait alors programmer les composants avant de les assembler puis de les tester. Une opération industrielle bien plus longue qui demanderait une réorganisation totale des chaînes de montage et l'agrandissement de celles-ci.
Le PAT, ou Port d'Accès de Test, est un test qui sert à s'assurer de la bonne continuité d'une carte électronique, notamment pour vérifier la qualité des soudures.
Le PAT est réalisé à différents endroits de la carte, là où ont été implantés des cellules PAT par le constructeur. Les cellules permettent également de tester des portes logiques et les mémoires en écrivant puis relisant des valeurs de test.
Le Debug est une fonctionnalité qui permet de réinitialiser des composants à leur valeur par défaut.
La réinitialisation intervient dans le débogage du composant en cas d'échec d'un test. Dans le cadre de la rétro-ingénierie il s'agit principalement d'une fonctionnalité qui permet d'isoler un composant du fonctionnement des autres afin de déterminer son rôle dans l'ensemble du système.
La réinitialisation d'un composant dépend de son type, elle est réalisée à l'aide d'une source lumineuse comme les ultraviolets ou d'une tension électrique d'une valeur spécifique aux bornes du composant.
En plus des autres méthodes, il convient de les associer à l'utilisation d'un multicopieur.
Le multicopieur est un appareil électronique qui permet la copie ou la programmation des puces électroniques.
Principalement utilisé en maintenance électronique et dans le contrôle qualité, il est un allié de taille en rétro-ingénierie.
La rétro-ingénierie en informatique
Rétro-ingénierie orientée dans le domaine de l'informatique, elle s'applique aux appareils, systèmes et logiciels informatiques.
De loin la plus complexe, la rétro-ingénierie en informatique se heurte à plusieurs difficultés techniques, comme les intentions originales du programmeur, un code altéré pour répondre au besoin urgent d'une maintenance, l'évolution du langage sémantique ou de la plate-forme de portage, etc.
Les pratiques de la rétro-ingénierie en logiciels s'apparentent à du débogage: on utilise des outils d'analyses, comme un désassembleur, un décompilateur ou un débogueur, mais des méthodes plus brutales peuvent être employées, comme les attaques cryptanalytiques.
La discipline est également employée à des fins d'audits de sécurité et de vulnérabilités logicielles.
Un désassembleur est un programme informatique qui traduit du langage machine en langage assembleur.
Le langage machine est le langage interprété par le processeur d'un ordinateur, chaque processeur possède son propre langage machine.
Le langage assembleur est un langage machine d'une pauvreté suffisante pour nous permettre de le comprendre.
Lorsqu'il opère, le désassembleur mène une opération dite de désassemblage. C'est l'inverse de celle effectuée par un programme assembleur, l'assemblage.
Le désassembleur permet de lire le code de manière simplifiée, dans un langage plus compréhensible pour nous, au lieu des suites de bits du langage machine, en utilisant notamment des symboles mnémotechniques, c'est à dire faciles à retenir.
En effet, la mnémotechnique est la pratique de la recherche en psychologie sur la mémoire et des techniques facilitant la mémorisation.
Ainsi, en langage machine: 01001 01110 01110 1001
donnerait en langage assembleur: add 16 %vente
qu'on pourrait interpréter: ajouter la valeur 16 au registre vente.
La pauvreté du langage assembleur génère d'importantes difficultés de traduction et toutes les informations n'apparaissent pas.
Les commentaires du programmeur, notamment, qui ne sont pas nécessaires à la bonne exécution du programme et disparaissent donc dans le langage assembleur, au moment de l'assemblage.
Or les commentaires du programmeur constituent des informations capitales pour la bonne compréhension du logiciel, puisqu'ils permettent de mieux cerner ses intentions au moment de la programmation.
Il existe également une difficulté de taille lors des opérations de désassemblage: le programmeur peut avoir protégé son code, en supprimant la possibilité de différencier code et donnée ou en utilisant un code auto-modifiant.
Un décompilateur est un programme informatique qui traduit du langage machine en code source.
Lorsqu'il opère, le décompilateur mène une opération dite de décompilage. C'est l'inverse de celle effectuée par un programme compileur, le compilage.
Le décompileur diffère peu de du désassembleur et rencontre les mêmes problèmes techniques que lui, à la différence majeure que la traduction est beaucoup plus compréhensible pour son utilisateur que celle d'un désassembleur.
Le décompilateur et le désassembleur sont complémentaires en rétro-ingénierie, car ils ne s'intéressent pas au même langage. Ils permettent tout deux de comprendre les fonctionnalités d'un programme en traduisant le langage machine de façon différente.

Un débogueur est un programme informatique qui permet d'analyser les bugs d'un programme en l'exécutant de façon spécifique: pas-à-pas, c'est à dire ligne par ligne.
Il permet au programmeur d'observer et de contrôler l'exécution du programme. Lors de ce contrôle, le programmeur peut modifier la valeur des variables afin d'identifier les causes d'une défaillance logicielle.
Cela permet de tester les limites du programme et, par extension, d'identifier les failles exploitables. Le cracking, activité consistant à modifier un programme afin de désactiver certaines fonctionnalités jugées indésirables (fonctions anti-copies, payantes, etc), représente un atout en rétro-ingénierie informatique.
Bien évidemment, l'informatique étant ce qu'elle est, toute attaque peut être parée. Un programmeur peut faire le choix d'employer des techniques antidébogage lors de la conception de son programme, afin de limiter la recherche de failles à l'aide d'un débogueur.

Le désassembleur, le décompilateur et le débogueur sont des outils avant tout destinés aux analyses, tests et débogages des logiciels.
La rétro-ingénierie en informatique adopte le choix de détourner ces outils en vue de comprendre le fonctionnement d'un logiciel. Il existe cependant des façons beaucoup plus directes et brutales d'y parvenir, comme une attaque cryptanalytique.
Une attaque cryptanalytique est une attaque informatique qui a pour objectif de déduire un texte clair d'un texte chiffré, sans posséder la clé de chiffrement. Elle peut prendre des formes diverses.
Les différentes attaques informatiques existantes pourraient faire l'objet d'un autre livre plus spécialisé. Ce chantier colossal mériterait d'être lancé.
D'ici sa parution et faute de mieux, nous devons continuer de mener des recherches à ce sujet afin de les présenter dans un langage clair et compréhensible.
Mara, Le 5/341.3
Conclusion
La rétro-ingénierie vise à améliorer notre quotidien en le comprenant mieux et se sert d'outils divers pour y parvenir. Elle permet également de mieux comprendre notre passé en étudiant ces objets du quotidien dont la conception originale remonte à un autre temps.
L'une des pépites en rétro-ingénierie informatique fut celle de la (re)production du deck Silmerion.
La reproduction du deck Silmerion, très bien documentée dans le livre Le Silmerion de Laetitia & Ghost White, se base, entre autre, sur l'étude de l'écran du deck Orion, en vue de l'améliorer et d'intégrer cette amélioration biotechnologique dans la fabrication du nouveau deck Silmerion.
La majorité de l'architecture électronique du Silmerion actuel fut également recomposée à l'aide d'un unique plan vieux de trois siècles.
Les techniques d'assemblage n'étant pas les mêmes qu'à l'époque, le travail de réinterprétation et de réadaptation des composants fut le plus laborieux.
Une attaque cryptanalytique sur l'un des prototypes de Kender Silmerion a également été menée, afin de mieux comprendre le fonctionnement du système, qui était jusqu'alors inconnu.
A l'aide de ces attaques cryptanalytiques, l'équipe de recherche a pu finalement obtenir la clef de cryptage du prototype de Kender Silmerion et ainsi se baser sur cette découverte pour créer le système d'exploitation que nous connaissons aujourd'hui.
Un autre cas intéressant de rétro-ingénierie mécanique cette fois: le manuel sur l'Overboard de Hayden Frantz Lutzvenkrieg.
L'auteur est très clair dans la façon dont il mène ses recherches: il y parle de suppositions et surtout d'expérimentations, à des fins de vulgarisation pour les néophytes.
Cette attitude est typique de la rétro-ingénierie: un objet de notre quotidien, dont il n'existe aucune notice, est étudié afin d'en rédiger un manuel clair et accessible à tous.
Un autre cas de rétro-ingénierie électronique cette fois-ci : les recherches de Xarthius sur le neuvopack. Dès la première page du livre, il note ses méthodes d'expérimentation et de recherche.
Il commence par identifier le neuvopack en tant qu'objet physique et utilise le scanner tridimensionnel d'une table de réparation pour se faire (le résultat figure à la page 6 du mémoire)
Ce premier scanner lui permettra par la suite de poursuivre ses recherches, grâce à des suppositions et des expérimentations et de déterminer le fonctionnement du neuvopack.
Ces trois cas pratiques résument globalement ce qu'est la rétro-ingénierie: la recherche du fonctionnement d'un objet, d'un processus, d'un système ou d'un logiciel, afin de mieux le comprendre, de tirer de cet enseignement une notice d'utilisation, de le modifier ou de vérifier son bon fonctionnement.
Chaque rétro-ingénieur a ses propres raisons de pratiquer la rétro-ingénierie et il existe autant de pratiques différentes que de pratiquants différents.
Les motivations des rétro-ingénieurs, variées, convergent toutefois vers un même but: l'acquisition d'un savoir afin de lever le voile de l'inconnu.
Lorsque Hayden testa l'overboard, il le fit dans le but d'en rédiger un manuel, ce qui diminua les accidents d'overboard. La pratique de l'overboard étant devenue plus sécurisée, d'autres engins du même type sont apparus par la suite sur le marché: les celeris, qui reprennent les mêmes fonctionnalités qu'un overboard, mais dont la popularité n'a jamais connu un grand essor.
La rédaction d'un manuel à destination du grand public permet à d'autres acteurs industriels d'en tirer parti grâce à la veille technologique.
Toutefois prudence sur ce dernier point, corrélation ne veut pas dire causalité, il ne s'agit que d'une hypothèse. Les origines des celeris mériteraient de faire l'objet d'une recherche sérieuse. La rétro-ingénierie peut bien évidemment y contribuer.
Aujourd'hui, plus que jamais, nous devons mener un important travail de recherche afin de résoudre la crise énergétique systémique du secteur Marran et poursuivre la veille technologique auprès des autres secteurs de la Ville.
La rétro-ingénierie, sur la question de la crise énergétique, a son rôle à jouer. En effet, en comprenant mieux les choses qui nous entourent, les technologies que nous utilisons quotidiennement et les réseaux dans lesquels nous plongeons, nous pourrions parvenir à maîtriser notre consommation énergétique si nous trouvons des solutions substituantes, moins coûteuses en énergie.
Cependant, la réponse à la crise énergétique n'est pas qu'un problème scientifique, il s'agit également d'un problème politique, qui doit être résolu à l'aide d'une solution politique.
Mara, le 6/341.3
Bibliographie
Vous trouverez ci-dessous la liste de quelques livres qui vous apporteront de plus amples réponses sur la portée de la rétro-ingénierie.
Le Silmerion, par Laetitia et Ghost White.
Une référence en matière de rétro-ingénierie informatique, des techniques très variées ont été employées pendant toute la phase de recherche et la finalité du projet, des citoyens plus connectés entre eux encore, fait honneur à la rétro-ingénierie.
Le Manuel de l'Overboard, de Hayden, mémoire d'ingénierie rédigé en l'an 242 devenu un manuel d'utilisation destiné aux pilotes néophytes.
Neuvopack, de Xarthius, un mémoire qui met en avant ses méthodes d'expérimentation, notamment l'emploi d'un scanner tridimensionnel.
Les tables de réparation, de Mythrilis, un manuel d'utilisation qui retrace également l'Histoire de la table de réparation.

◊ Commentaires

  • Mara (391☆) Le 20 Juillet 2022
    Cet article est également mon appel à l'aide pour que la balise livre puisse fonctionner sur les articles EDC :(
  • Yrié (31☆) Le 20 Juillet 2022
    La solution : aux sauts de ligne ajouter [*invisible].[/invisible] sans l'astérisque.
  • Yrié (31☆) Le 21 Juillet 2022
    Bon j'ai rien dit, confondu avec la balise quote ^^