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

Assembleur Discussion :

Adresse mémoire partagée


Sujet :

Assembleur

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Adresse mémoire partagée
    Bonjour,

    je sèche sur un problème de mémoire partagée depuis quelques jours:

    Je suis en train de patcher une dll afin de déterminer les data envoyée sur le port parallèle par ce processus. Pour cela, j'ai quelques bytes de disponibles afin de mettre un peu de code. (le tout sans la recompiler)

    Ma stratégie est la suivante: Lorsque le processus veut écrire une data, il check une addresse mémoire pour savoir si la lecture précédante a été faite (si = 1). Si oui, il écrit et repasse la valeur à 0, sinon il attend que la valeur passe à 1 pour écrire.

    D'un autre côté j'ai mon espion (C, ASM ou autres) qui check cette même addresse mémoire pour savoir si un écriture a été faite (si = 0). Si oui, je recopie la data et passe la valeur à 1.

    Il s'agit en fait d'un simple flag en mémoire. Mais mon problème réside dans le fait que je ne sais pas quelle addresse mémoire je peux partager entre les 2 process, sachant que je tourne sur Windows 2000.

    Si j'essaye d'accéder depuis ma dll une addresse mémoire détenue par une variable allouée par l'espion, une erreur de protection générale est lancée.

    Quelqu'un aurait la solution? ou une autre stratégie?

    Merci d'avance!
    Dave

  2. #2
    mat.M
    Invité(e)
    Par défaut
    ??? Pourquoi veux-tu accéder à de la mémoire partagée ? Et en ASM en plus ?
    Tu ne peux pas accéder à la mémoire ( plantage ) pour la bonne et unique raison que l'OS déplace les zones mémoires selon les besoins du système.
    A un instant t0 la donnée à une adresse XXXXX sera déplacée éventuellement à une autre adresse à un instant t1

    Je suis en train de patcher une dll afin de déterminer les data envoyée sur le port parallèle par ce processus. Pour cela, j'ai quelques bytes de disponibles afin de mettre un peu de code. (le tout sans la recompiler)
    En assembleur ?

  3. #3
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 937
    Points : 59 415
    Points
    59 415
    Billets dans le blog
    2
    Par défaut
    Bonjour !

    Je dis peut-être une bêtise mais as-tu suffisamment de place dans la DLL pour coder une fonction qui renverrait la valeur du flag et une autre qui pourrait la modifier ? Ces fonctions pourraient être appelées par l'espion.
    Mais j'ai peut-être tout compris de travers...

    Il me semble que le sujet dépasse largement le cadre de l'Assembleur, non ?
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  4. #4
    mat.M
    Invité(e)
    Par défaut
    Citation Envoyé par dave.vuistiner
    Je ne veux pas forcément passer par la mémoire partagée, mais par tout moyen possible de transférer l'info!
    La dll -> ASM
    l'espion -> peu importe le language

    Merci d'avance pour vos idées.
    Il est vraiment préférable de passer par des API Windows voire de développer un Device Driver....
    En Asm on peut invoquer des API Windows c'est ce qu'il faudrait faire parce que accéder de manière "live" une adresse mémoire c'est vraiment pas du tout fiable

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 38
    Points : 43
    Points
    43
    Par défaut
    Tu peux tres bien agrandir la section code ou meme en creer une autre.

Discussions similaires

  1. Sémaphores et Mémoires partagées
    Par Sensib dans le forum C++
    Réponses: 3
    Dernier message: 19/03/2006, 18h14
  2. Réponses: 17
    Dernier message: 02/02/2006, 12h03
  3. création d'objet en mémoire partagé
    Par BigNic dans le forum C++
    Réponses: 6
    Dernier message: 28/11/2005, 18h41
  4. Réponses: 6
    Dernier message: 19/09/2005, 19h48
  5. [CR][paradox] mémoire partagée disponible insuffisante !
    Par AGT dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 24/03/2004, 14h27

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