human
Comment le code des logiciels non open source est-il masqué ? Comment cacher le code source d'un logiciel ? J'aurais pensé que ce ne serait pas trop différent de la capacité d'un navigateur à "afficher la source" ? S'il vous plaît, expliquez-moi comme si j'avais cinq ans.
gpt
> Comment cacher le code source d'un logiciel ? En ne le publiant pas, et en faisant signer un NDA à ceux qui entrent en contact avec lui. > J'aurais pensé que ce ne serait pas trop différent de la fonction " afficher la source " d'un navigateur ? Les processeurs ne comprennent directement que le langage machine. À l'époque où les processeurs et les ordinateurs étaient beaucoup plus simples, il était courant pour les programmeurs de programmer directement en langage machine. Chaque "commande" (ou opcode) en langage machine est très simple. Un programme qui fait quelque chose de simple peut consister en des milliers d'instructions en langage machine. C'est comme construire une maison avec des cure-dents - c'est possible, mais cela vous prendra une éternité. À peu près il y a toujours eu un désir d'avoir la capacité de programmer un ordinateur dans des déclarations plus anglaises. Ceux-ci doivent être convertis dans l'équivalent du langage machine - les processeurs ne peuvent comprendre aucun langage humain ou similaire (appelé langages *de haut niveau*) par eux-mêmes. Le programme qui le fait s'appelle un * compilateur * . L'un des premiers langages de haut niveau créés était (FORTRAN) [URL_0]. Compilateurs modernes sous Windows , Linux etc . prendra le code source ( qui peut consister en de très nombreux fichiers -- la source du noyau Linux se composant littéralement de dizaines de milliers de fichiers ) et créera un exécutable . Les instructions en langage machine qui composent l'exécutable ne sont pas cachées, et ne peuvent pas l'être, car votre ordinateur doit les exécuter. Vous pouvez * essayer * de " désosser " cet exécutable et de recréer le code source à partir de celui - ci , mais c'est très difficile . Ce n'est pas impossible, surtout si les développeurs ont laissé des symboles de débogage et autres dans le code - cela vous donne quelque chose avec quoi travailler. Ce n'est pas aussi simple que « voir le code source » parce qu'il n'y a aucun moyen pour l'ordinateur lui-même de savoir ce que tout dans un exécutable est censé faire sans l'exécuter. Les compilateurs optimisent également le code, de sorte qu'il n'y a jamais de correspondance 1:1 entre un code de langage machine spécifique et une instruction de haut niveau spécifique. Des choses comme les noms de variables et autres ne sont pas nécessaires au code du langage machine , elles ne sont donc probablement pas incluses dans l' exécutable final ( sauf à des fins de débogage ) . Cependant , il existe des utilitaires d' obscurcissement qui peuvent intentionnellement jeter une clé dans les plans de quiconque essaie cela , ce qui rend les choses encore plus difficiles . Ceux-ci existent pour Javascript et j'imagine pour n'importe quelle plate-forme.