IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Acceder à la mémoire appartenant à un processus


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de dafpp
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 345
    Par défaut Acceder à la mémoire appartenant à un processus
    Bonsoir,
    j'aimerai savoir s'il est possible d'accéder à la mémoire qui a été créer par un autre programme en toute sécurité.
    Par exemple: je donne l'adresse où se trouve le bloc mémoire de donnée au programme qui le souhaite.
    Si oui, cela marchera que pour un programme de type C ou C++.
    Mais si je souhaite passé par un autre langage, et donc lire le bloc mémoire d'un programme en cours, je ne pourrai pas.
    y a t'il de réele solution, ou dois-je passer par un fichier temporaire ?

    merci d'avance

  2. #2
    Membre émérite
    Avatar de Kirilenko
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 234
    Par défaut
    Chaque processus a son espace d'adressage. Si tu essayes d'y accéder avec un autre programme ça segfault...
    Récursivité en C : épidémie ou hérésie ?

    "Pour être un saint dans l'Église de l'Emacs, il faut vivre une vie pure. Il faut se passer de tout logiciel propriétaire. Heureusement, être célibataire n'est pas obligé. C'est donc bien mieux que les autres églises" - Richard Stallman

  3. #3
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Tu dois projeter un fichier en mémoire (mmap?) pour obtenir de la mémoire partagée.

    Tu dois aussi mettre en place un MUTEX pour éviter qu'on écrive/lise en même temps un même espace.

  4. #4
    Membre émérite Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Par défaut
    Si tu maîtrise le code source des deux programmes, tu peux utiliser la mémoire partagée (shmat, shmget, shm...).

    Sinon, tu peux t'attacher à un process et mapper sa mémoire. J'avais fait un truc comme ça pour prendre une photo de la mémoire d'un process. Mais c'était statique, je ne pouvais pas voir la mémoire en temps réel. Le process était arrêté.

    Je te poste le code des trucs que j'avais fait :
    Fichiers attachés Fichiers attachés

  5. #5
    Membre éclairé Avatar de dafpp
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 345
    Par défaut
    Citation Envoyé par Neckara Voir le message
    Tu dois projeter un fichier en mémoire (mmap?) pour obtenir de la mémoire partagée.

    Tu dois aussi mettre en place un MUTEX pour éviter qu'on écrive/lise en même temps un même espace.
    De mettre en place des mutex je vois très bien ce que c'est, mais ce qui est de projeter un fichier en mémoire ... sans doute ça: http://pubs.opengroup.org/onlinepubs...ions/mmap.html ?

    Si tu maîtrise le code source des deux programmes, tu peux utiliser la mémoire partagée (shmat, shmget, shm...).
    Je vais voir ça, merci pour tes codes sources

  6. #6
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    En fait je n'ai encore jamais projeté un fichier en mémoire car comme tous mes processus sont des threads, je peux accéder à la mémoire assez facilement.

    Donc je ne saurais pas te dire.

  7. #7
    Membre éclairé Avatar de dafpp
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 345
    Par défaut
    Okay, en plus, ça me parrait un peu plus compliqué que de gérer des threads... (je me trompe peut-être)
    ...
    Faut que j'y réfléchisse bien - si ça vaut la peine de faire comme ça.

  8. #8
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 532
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 532
    Par défaut
    Citation Envoyé par dafpp Voir le message
    j'aimerai savoir s'il est possible d'accéder à la mémoire qui a été créer par un autre programme en toute sécurité.
    la mémoire ça dépend de l'OS.
    Sous Windows par exemple il faut utiliser des API win32.
    Chercher API Hooking, par exemple pour voir si l'autre programme appelle des API comme MemAlloc.
    Citation Envoyé par dafpp Voir le message
    Par exemple: je donne l'adresse où se trouve le bloc mémoire de donnée au programme qui le souhaite.
    Mauvaise méthode : le noyau d'un OS peut très bien déplacer un programme placé en mémoire

  9. #9
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Si je ne dis pas de bêtise, dans certains OS, les adresses mémoires qu'on manipulent ne sont pas les vraies adresses.

    On manipulerait en fait une adresse relative pour chaque programme :
    exemple :
    Début du bloc mémoire : adresse 0x14AFh
    Nous on voit : 0x0000h.
    Et toutes les adresses de ton programmes sont en fait des adresses relatives au début de ton bloc de mémoire.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Un logiciel qui suit l'occupation de la mémoire d'un processus donné
    Par Interruption13h dans le forum Windows XP
    Réponses: 5
    Dernier message: 02/04/2007, 03h33
  2. problème de mémoire pour le processus w3wp.exe
    Par nasser.h dans le forum IIS
    Réponses: 4
    Dernier message: 07/02/2007, 14h51
  3. Réponses: 2
    Dernier message: 24/01/2007, 00h10
  4. Partage de blocs mémoire entre 2 processus
    Par rolkA dans le forum Windows
    Réponses: 6
    Dernier message: 18/11/2003, 19h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo