Partage
  • Partager sur Facebook
  • Partager sur Twitter

Organisation d'adresse et vairable pas au programme

Sujet résolu
    25 janvier 2006 à 12:49:38

    S'lut-tous!

    Bon, je pensais au
    «vous enverriez l'adresse où se trouve le pointeur, et ça, excusez mon langage, mais on s'en fout complètement» de M@téo, et... c'est là que je me demande quelques trucs :p
    Si j'étais du style «Moi chu full ben organisé, j'aime quand tout est en ordre, je veut savoir où son mes variables. Je veut que la variable "Cocio" soit à l'adresse "16"».
    Je pourrais l'exiger?
    Si oui, il y a des gens qui font ça? (je parle en C, je crois que c'est une opération très commune dans des languages comme l'assembleur)

    Ou, si je suis chez moi, je suis du style cheater, je joux seul contre des bots sur mon ordi à Counter-Strike. Et... comble de pas d'but, je veut modifier la valeur de la variable "MonScoreACounterStrike". (C'est un exemple :-° )
    Si on concidère que je connais l'adresse de cette variable. Je pourrais me faire un autre programme à part qui vas à l'adresse et modifie sa valleur?

    Heu... voilà :p
    En passant, je fais juste me le demander :-°
    • Partager sur Facebook
    • Partager sur Twitter
      25 janvier 2006 à 13:17:19

      Salut,

      Ce que tu demandes est totalement impossible et interdit.

      En C, comme en assembleur, on ne PEUT PAS exiger une adresse précise. C'est l'OS qui te donne une adresse, qui te dit où tu peux stocker tes variables. Tu ne peux rien exiger de l'OS, sinon l'OS risque tout simplement de te couper ton programme car il n'aura pas agi de manière "conforme".

      En outre, il est interdit d'accéder aux variables situées ailleurs dans la mémoire. Tu ne peux modifier que les variables de ton programme.
      Si tu essaies de lire / modifier des valeurs en mémoire de CS par exemple, l'OS te jettera et coupera ton programme.

      Il n'y a strictement rien à faire pour ça.
      • Partager sur Facebook
      • Partager sur Twitter

      If you'd like to join us, read "How do we work at OpenClassrooms"! :)

        25 janvier 2006 à 13:32:40

        Les processeurs modernes (datant d'environ moins de 10-15 ans) disposent d'un mode protégé qu'utilisent tous les OS modernes, et qui empêche donc les programmes d'accéder à la mémoire les uns des autres.
        • Partager sur Facebook
        • Partager sur Twitter
          25 janvier 2006 à 13:33:01

          Wow... j'étais sur que l'on viendrait me dire à quel point c'était possible et très courrant...

          Tout-cas, merci!
          • Partager sur Facebook
          • Partager sur Twitter
            25 janvier 2006 à 13:33:36

            Citation : Cocio_16

            Si j'étais du style «Moi chu full ben organisé, j'aime quand tout est en ordre, je veut savoir où son mes variables. Je veut que la variable "Cocio" soit à l'adresse "16"».


            Personne ne fait ça, du moins, pas pour cette raison.

            Citation

            Je pourrais l'exiger?


            Pas de manière portable et pas comme tu le crois.

            Citation

            Si oui, il y a des gens qui font ça? (je parle en C


            Ceux qui programment en bas niveau : kernels, drivers, etc.

            Citation

            , je crois que c'est une opération très commune dans des languages comme l'assembleur)


            Pas vraiment commune non, même à bas niveau.

            Le fait est que m@t ne l'explique pas mais il y a plusieurs mémoires : La mémoire physique (au sens large) et la mémoire virtuelle. En haut niveau et même en moyen-bas niveau, on fait avec la mémoire virtuelle, rien n'est absolu, tu peux bien tweaker le linker pour qu'il te place ta var où tu veux par exemple ou le système pour mapper en runtime à une adresse donnée (c'est faisable), mais au final ça ne changera pas grand chose qu'elle soit ici ou là ; le système est plus à même que toi de décider où va chaque chose.

            Sous Unix, ya par ex shmat() et sous Windows VirtualAlloc().

            Citation

            Si on concidère que je connais l'adresse de cette variable. Je pourrais me faire un autre programme à part qui vas à l'adresse et modifie sa valleur?


            Oui et ça s'appelle un debugger. Faut un moyen de demander au système l'accès à l'espace d'adresses du processus en question et après bah faut trouver la variable, la patcher et tout blahblah.

            Ton processus fonctionne avec des adresses qui lui appartiennent, un autre processus peut avoir des variables avec une même adresse mais néanmoins qui n'ont rien à voir. C'est pour ça qu'il faut demander à utiliser les adresses d'un autre programme. Sous Unix je connais mal, on m'a parlé de ptrace(), sous Windows ya WriteProcessMemory().

            Voilà tout.

            • Partager sur Facebook
            • Partager sur Twitter

            Organisation d'adresse et vairable pas au programme

            × 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