Peut-on faire de l’ingénierie inverse sur un logiciel/programme ?


La réponse générale est oui. La difficulté va de facile à très difficile. Vous pouvez désassembler de nombreux programmes compilés. Si le projet a été construit sans dépouiller les tables de symboles, la sortie du désassembleur peut être très informative.

Je dépouille les symboles de mes charges Elixir de production pour cette raison. Avec la table des symboles incluse, la sortie désassemblée reproduit le code proche de la source originale. Sans les symboles, on ne voit pas grand-chose.


Dans le passé, j'ai utilisé des outils pour extraire les fichiers de ressources (images, icônes, audio) des applications Windows. C'était il y a un certain temps. Pas sûr de l'état des choses ces derniers temps puisque je suis passé à un mac.

Il y a longtemps, j'ai écrit un émulateur pour un processeur qui était encore en cours de développement. J'avais un assembleur le pour le processeur qui imprimait le code d'assemblage avec les op codes générés. Je prenais les opcodes, les convertissais en binaire et cherchais les modèles de position des bits pour comprendre quels bits contrôlaient r/w, branchement, registres, etc. Grâce à cela, j'ai pu écrire un simulateur pour tester mon assemblage avant que les prototypes de processeurs n'arrivent. Le point étant, que j'ai dû descendre en binaire pour accomplir cette tâche.

Je soupçonnerais qu'il existe des outils pour ce type de choses. Je n'ai jamais fait de recherches à ce sujet.

C'est une question de temps.