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
Partager