Partage
  • Partager sur Facebook
  • Partager sur Twitter

Code auto modifiant

    12 août 2014 à 0:40:35

    Bonjour,

    Je voudrais faire en python un script qui puissent se modifier lui même , il faudrait je puisse analyser/parser du code python et j'aimerais la faire de la meilleur manière possible , comment l'interpréteur python analyse les scripts python ? Où puis-je avoir les sources de l'interpréteur ? Je ne pense pas y aller directement a coup de regex 

    Merci d'avance.

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      12 août 2014 à 0:49:38

      Je voudrais faire en python un script qui puissent se modifier lui même

      Quel genre de problème justifierait de faire cela ? Au cas où tu veux continuer sur cette voie, un fichier python est un fichier texte, donc il n'y a pas de soucis à faire cela.

      Dis nous ce que tu veux parser dans ton fichier, je pense que ça ira plus vite, pour t'aiguiller.

      Les regex peuvent être une bonne solution mais pas toujours

      -
      Edité par Anonyme 12 août 2014 à 0:50:01

      • Partager sur Facebook
      • Partager sur Twitter
        12 août 2014 à 9:04:25

        Regarde du côté du module ast.
        • Partager sur Facebook
        • Partager sur Twitter
        yjltg.
          12 août 2014 à 11:15:15

          Ce que je veux parser c'est tout le script justement repérer les variable , les conditions etc et les modifier (pas seulement leurs nom), la logique de l'algorithme reste la même mais plus aucune ressemblance avec le script d'avant ça a l'air d'être un sacré boulot

          Merci je vais voir le module

          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            12 août 2014 à 13:53:11

            Ce que tu veux c'est un code (pour exemple) placé dans un fichier nommé (exemple) "fichier.py" et que ce script puisse se modifier lui même ? Je ne pense pas que se soit facilement réalisable puisque le fichier est en cours d'exécution.

            Essaye d'ouvrir un fichier système (en grand masoshiste, celui du BIOS), Win te dira que le fichier est en cours d'utilisation, c'est impossible.

            Mais si tu veux pouvoir, à partir d'un script "x.py", modifier le nom de variables / conditions / etc, c'est possible je pense.

            Pour les sources de l'interpréteur, tu dois pouvoir les trouver puisque Python est un logiciel d'utilisation libre sous license GPL ou LGPL je sais plus. J'ai trouvé le code source de PyPy pour Unix (mais pas pour win) si cela t'interresses, juste ici >>> là ! Ou celui-ci >>> Là !

            -
            Edité par Anonyme 12 août 2014 à 14:02:37

            • Partager sur Facebook
            • Partager sur Twitter
              12 août 2014 à 14:18:24

              Le seul exemple que je connais de code auto-modifiant c'est les virus et y en a à la pelle, alors je ne pense pas que ce sois impossible^^
              • Partager sur Facebook
              • Partager sur Twitter
                12 août 2014 à 14:34:18

                Tu peux aussi faire des recherches du côté de l'apprentissage par renforcement ou du TD-Learning. Ce sont des algos qui permettent à ton programme "d'apprendre" tout seul, donc de se modifier. Si c'est bien ce que tu recherches.
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  12 août 2014 à 15:09:55

                  Pour les fanatiques de MASM et assembleur, un code auto modifiant (qui fait des trucs pas très utiles, mais c'est de l'Assembleur !!) -->

                  ici ! (lol)

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    12 août 2014 à 22:18:37

                    Python34 a écrit:

                    Ce que tu veux c'est un code (pour exemple) placé dans un fichier nommé (exemple) "fichier.py" et que ce script puisse se modifier lui même ? Je ne pense pas que se soit facilement réalisable puisque le fichier est en cours d'exécution.

                    Python possède bien évidemment des outils d'introspection. Le code existant n'est pas mutable, mais il est parfaitement possible de simuler un comportement de self-modifying code en produisant et exécutant du code à la volée (voir eval et exec).

                    Essaye d'ouvrir un fichier système (en grand masoshiste, celui du BIOS), Win te dira que le fichier est en cours d'utilisation, c'est impossible.

                    D'une part, le BIOS n'est pas un fichier système de Windows, mais un programme situé sur la carte mère. D'autre part, son exécution est torchée depuis longtemps lorsque Windows est en train de tourner... :-°

                    • Partager sur Facebook
                    • Partager sur Twitter
                      13 août 2014 à 10:56:18

                      @dri1 a écrit:

                      D'autre part, son exécution est torchée depuis longtemps lorsque Windows est en train de tourner... :-°

                      Pas tout à fait, le BIOS est le firmware de carte mère donc est toujours en exécution, une fois l’OS démarrer il propose toujours une abstraction par rapport au hardware sous-jacent. Même s’il est vrai que ça fait plus de 20 ans que les OS se passent de cette abstraction.

                      • Partager sur Facebook
                      • Partager sur Twitter
                      per aspera ad astra – comp.lang.c FAQexplication pointeur
                      Anonyme
                        13 août 2014 à 11:03:59

                        Si je ne m'abuse, les routines et autres bidules étaient chargées en RAM pour plus de rapidité, donc à priori, rien n'empêche de toucher à l'EEPROM où est stocké le BIOS, non ?

                        • Partager sur Facebook
                        • Partager sur Twitter
                          13 août 2014 à 13:36:43

                          Bien sur, c’est d’ailleurs ce que font les logiciels pour « flasher » le BIOS. Je revenais juste sur l’affirmation comme quoi le BIOS ne s’exécutait plus une fois l’OS lancé.

                          • Partager sur Facebook
                          • Partager sur Twitter
                          per aspera ad astra – comp.lang.c FAQexplication pointeur
                          Anonyme
                            13 août 2014 à 13:39:12

                            @dri1 a écrit:

                            Python34 a écrit:

                            Ce que tu veux c'est un code (pour exemple) placé dans un fichier nommé (exemple) "fichier.py" et que ce script puisse se modifier lui même ? Je ne pense pas que se soit facilement réalisable puisque le fichier est en cours d'exécution.

                            Python possède bien évidemment des outils d'introspection. Le code existant n'est pas mutable, mais il est parfaitement possible de simuler un comportement de self-modifying code en produisant et exécutant du code à la volée (voir eval et exec).

                            Essaye d'ouvrir un fichier système (en grand masoshiste, celui du BIOS), Win te dira que le fichier est en cours d'utilisation, c'est impossible.

                            D'une part, le BIOS n'est pas un fichier système de Windows, mais un programme situé sur la carte mère. D'autre part, son exécution est torchée depuis longtemps lorsque Windows est en train de tourner... :-°

                            Et le fichier MSDOS."je_sais_plus_quoi", alors ? C'est donc pas le BIOS (merde alors mon dico est pas à jour !) ?

                            • Partager sur Facebook
                            • Partager sur Twitter
                            Anonyme
                              13 août 2014 à 17:00:20

                              talpa a écrit:

                              Je revenais juste sur l’affirmation comme quoi le BIOS ne s’exécutait plus une fois l’OS lancé.

                              Ah oui, d'accord. Merci pour la correction, je me coucherais moins bête. :p

                              Et le fichier MSDOS."je_sais_plus_quoi", alors ? C'est donc pas le BIOS (merde alors mon dico est pas à jour !) ?

                              Certainement pas. Probablement une image chargée en RAM par le BIOS jouant un rôle quelconque lors du démarrage (m'enfin, MSDOS n'est plus utilisé par Windows depuis un moment).

                              • Partager sur Facebook
                              • Partager sur Twitter
                              Anonyme
                                13 août 2014 à 18:09:12

                                Je suis aussi sous win XP
                                • Partager sur Facebook
                                • Partager sur Twitter
                                Anonyme
                                  13 août 2014 à 18:26:05

                                  Python34 a écrit:

                                  Je suis aussi sous win XP

                                  Pourquoi "aussi" ? Personne n'a parlé d'XP ici, et ça n'a d'ailleurs strictement aucun rapport avec les codes auto-modifiants en Python.

                                  Par ailleurs, Windows XP est la première version de Windows (13 ans, déjà !) a ne plus être basé sur MSDOS... Le fichier dont tu parles doit être un espèce de truc bizarroïde servant à simuler MSDOS.

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Anonyme
                                    13 août 2014 à 21:46:49

                                    Ce que je veux parser c'est tout le script justement repérer les variable , les conditions etc et les modifier (pas seulement leurs nom), la logique de l'algorithme reste la même mais plus aucune ressemblance avec le script d'avant ça a l'air d'être un sacré boulot

                                    Je ne suis pas convaincu par l'utilité de la chose, quand on a plusieurs algorithme à implémenter on crée des fonctions différentes, voir des modules différents, mais on modifie pas un code. Il y a sans doute une mauvaise compréhension, ou tu t'exprimes mal sur ton problème.

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                    Anonyme
                                      13 août 2014 à 23:09:52

                                      @dri1 a écrit:

                                      Python34 a écrit:

                                      Je suis aussi sous win XP

                                      Pourquoi "aussi" ? Personne n'a parlé d'XP ici, et ça n'a d'ailleurs strictement aucun rapport avec les codes auto-modifiants en Python.

                                      Par ailleurs, Windows XP est la première version de Windows (13 ans, déjà !) a ne plus être basé sur MSDOS... Le fichier dont tu parles doit être un espèce de truc bizarroïde servant à simuler MSDOS.

                                      Je suis sous win 8 & win xp

                                      Pour son pb,oldprogrammeur, je pense que c'est dans la veine de virus ou autre, sinon ca n'a pas d'utilité je trouve

                                      • Partager sur Facebook
                                      • Partager sur Twitter

                                      Code auto modifiant

                                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                      • Editeur
                                      • Markdown