L'excellent post de psoul répond à votre question, donc je ne reproduirai pas son bon travail, mais je pense que cela aiderait à expliquer pourquoi c'est à la fois une question parfaitement valide mais aussi terriblement stupide. Après tout, c'est un endroit pour apprendre, non?
Les programmes informatiques modernes sont produits par une série de conversions, commençant par l'entrée d'un corps d'instructions textuelles lisibles par l'homme (appelé "code source") et se terminant par un corps d'instructions lisibles par ordinateur (appelé alternativement "binaire" ou "machine" code").
La façon dont un ordinateur exécute un ensemble d'instructions de code machine est finalement très simple. Chaque action qu'un processeur peut entreprendre (par exemple, lire dans la mémoire, ajouter deux valeurs) est représentée par un code numérique. Si je vous disais que le numéro 1 signifiait crier et le numéro 2 signifiait rire, puis que je tenais des cartes avec 1 ou 2 sur eux s'attendant à ce que vous criiez ou riez en conséquence, j'utiliserais ce qui est essentiellement le même système qu'un ordinateur utilise opérer.
Un fichier binaire n'est qu'un ensemble de ces codes (généralement appelés "codes op") et les informations ("arguments") sur lesquels les codes op agissent.
Désormais, le langage d'assemblage est un langage informatique dans lequel chaque mot de commande du langage représente exactement un code opérationnel sur le processeur. Il existe une traduction directe 1: 1 entre une commande en langage assembleur et un code op du processeur. C'est pourquoi l'assemblage de codage pour un processeur x386 est différent de l'assemblage de codage pour un processeur ARM.
Le désassemblage est simplement ceci: un programme lit le binaire (le code machine), remplaçant les op-codes par leurs commandes de langage d'assemblage équivalentes, et sort le résultat sous forme de fichier texte. Il est important de comprendre cela; si votre ordinateur peut lire le binaire, vous pouvez également lire le binaire, soit manuellement avec une table d'op-code dans votre main (ick) ou via un désassembleur.
Les désassembleurs ont de nouvelles astuces et tout, mais il est important de comprendre qu'un désassembleur est finalement un mécanisme de recherche et de remplacement. C'est pourquoi tout CLUF qui l'interdit souffle finalement de l'air chaud. Vous ne pouvez pas autoriser immédiatement l'ordinateur à lire les données du programme et également interdire à l'ordinateur de lire les données du programme.
(Ne vous méprenez pas, il y a eu des tentatives pour le faire. Ils fonctionnent aussi bien que DRM sur les fichiers de chansons.)
Cependant, il y a des réserves à l'approche de démontage. Les noms de variables sont inexistants; une telle chose n'existe pas sur votre CPU. Les appels à la bibliothèque prêtent à confusion et nécessitent souvent le démontage d'autres fichiers binaires. Et l'assemblage est difficile à lire dans les meilleures conditions.
La plupart des programmeurs professionnels ne peuvent pas s'asseoir et lire le langage d'assemblage sans avoir mal à la tête. Pour un amateur, cela n'arrivera tout simplement pas.
Quoi qu'il en soit, c'est une explication quelque peu superflue, mais j'espère que cela aide. Chacun peut se sentir libre de corriger toute anomalie de ma part; cela fait longtemps. ;)