OVH Cloud OVH Cloud

Accés zone mémoire

11 réponses
Avatar
Sylvain/11XX
Bonjour à tous,

Je cherche un moyen pour qu'une application puisse acceder à la memoire
d'un autre programme en cours d'execution. Par exemple pour pouvoir depuis
une application A voir la valeur de n octets dans l'espace d'adressage d'une
application B. Je sais que le probleme est complexe mais si je l'expose
volontairement de façon simple c'est parceque le but de ce post est
d'obtenir principalement une piste de recherche. Evidemment je n'ignore pas
les complications qu'il y a autour.


Quand je developpe l'application A et B en mode DEBUG (je travaille avec
Visual Studio) je peut utiliser les API Sym..... et Map....... qui sont
decritent dans MSDN mais quand l'application B n'est pas en DEBUG je sais
plus faire. Avez-vous une idée ? une piste ? un axe de recherche ?

Merci

10 réponses

1 2
Avatar
Jean-Michel Bechet
> Je cherche un moyen pour qu'une application puisse acceder à la


memoire
d'un autre programme en cours d'execution.




Tu peux installer le driver WinIO disponible à cette adresse :
http://www.internals.com/

Ce driver permet d'accéder à tous les ports d'E/S et à toute la mémoire de
la machine comme au temps du bon vieux DOS.
Fonctionne très bien sous Win2k, je n'ai pas testé sous XP (mais à mon avis,
ça devrait marcher aussi ...)
Très simple à utiliser; une fois le driver chargé, tu peux faire des IN, OUT
et MOV aux adresses que tu veux ...
Je l'utilise pour accéder directement à des périphériques (cartes ISA, PCI,
port //) faits maison ...
Avatar
Sylvain/11XX wrote:
Bonjour à tous,

Je cherche un moyen pour qu'une application puisse acceder à la
memoire d'un autre programme en cours d'execution. Par exemple pour
pouvoir depuis une application A voir la valeur de n octets dans
l'espace d'adressage d'une application B. Je sais que le probleme est
complexe mais si je l'expose volontairement de façon simple c'est
parceque le but de ce post est d'obtenir principalement une piste de
recherche. Evidemment je n'ignore pas les complications qu'il y a
autour.



J'aimerais comprendre, si le but est de permettre à deux applications de
communiquer, ne serait-il pas plus simple d'utiliser un des 8000 moyens
de communications entre process (shared memory, pipe, DDE, DCOM,
socket, remoting .NET, ...)?

Si ce n'est pas ton cas, je serais curieux de connaitre ton besoin,
parce qu'en dehors du debugging, j'ai du mal à imaginer le but. Ce
serait donc gentil de bien vouloir m'expliquer!

--
Quentin Pouplard (Tene/MyOE)
http://www.myoe.org | http://graff.alrj.org
Avatar
Nicolas Repiquet
a écrit dans le message news:


Si ce n'est pas ton cas, je serais curieux de connaitre ton besoin,
parce qu'en dehors du debugging, j'ai du mal à imaginer le but. Ce
serait donc gentil de bien vouloir m'expliquer!



C'est pour se rajouter de la vie à DiabloII =)

-- Nicolas Repiquet
Avatar
Arnaud Debaene
Sylvain/11XX wrote:
Bonjour à tous,

Je cherche un moyen pour qu'une application puisse acceder à la
memoire d'un autre programme en cours d'execution. Par exemple pour
pouvoir depuis une application A voir la valeur de n octets dans
l'espace d'adressage d'une application B. Je sais que le probleme est
complexe mais si je l'expose volontairement de façon simple c'est
parceque le but de ce post est d'obtenir principalement une piste de
recherche. Evidemment je n'ignore pas les complications qu'il y a
autour.



WriteProcessMemory ou bien plus simplement les memory mapped files. Mais
comme l'as dit Quentin, quel est l'objectif?

Arnaud
Avatar
Philippe Mignard
NT&Co: OpenProcess + VirtualAllocEx
9x/Me: CreateFileMapping + MapViewOfFile

A+

Sylvain/11XX wrote:
Bonjour à tous,

Je cherche un moyen pour qu'une application puisse acceder à la memoire
d'un autre programme en cours d'execution. Par exemple pour pouvoir depuis
une application A voir la valeur de n octets dans l'espace d'adressage d'une
application B. Je sais que le probleme est complexe mais si je l'expose
volontairement de façon simple c'est parceque le but de ce post est
d'obtenir principalement une piste de recherche. Evidemment je n'ignore pas
les complications qu'il y a autour.


Quand je developpe l'application A et B en mode DEBUG (je travaille avec
Visual Studio) je peut utiliser les API Sym..... et Map....... qui sont
decritent dans MSDN mais quand l'application B n'est pas en DEBUG je sais
plus faire. Avez-vous une idée ? une piste ? un axe de recherche ?

Merci





Avatar
lyp_st
Salut

Tout simplement en créant un fichier en mémoire avec l'api

DECLARE FUNCTION CreateFileMapping LIB "kernel32" ALIAS
"CreateFileMappingA" (ByVal hFile AS Long, sercurit AS Long, ByVal
flProtect AS Long, ByVal dwMaximumSizeHigh AS Long, ByVal
dwMaximumSizeLow AS Long, ByVal lpName AS STRING) AS LONG
DECLARE FUNCTION MapViewOfFile LIB "kernel32"ALIAS "MapViewOfFile"
(ByVal hFileMappingObject AS Long, ByVal dwDesiredAccess AS Long,
ByVal dwFileOffsetHigh AS Long, ByVal dwFileOffsetLow AS Long, ByVal
dwNumberOfBytesToMap AS LONG) AS LONG

Tu peux l'ouvrir autant de fois ,il ne sera qu'une seule fois en
mémoire
toutes les applications peuvent y acceder


'création du fichier mappé si déjà créé l'ouvre
hmap = CreateFileMapping(-1, ByVal 0&, 4, 0, 4, "toto")
'récupère l'@ du fichier
essai = MapViewOfFile(hmap, SECTION_MAP_WRITE, 0, 0, 0)
Ton souci sera de les synchroniser

@+ JM
http://j.lypstenger.free.fr
http://rapidqsources.jexiste.fr/
Avatar
Sylvain/11XX
Là ou je travaille on developpe des soft embarqués pour des produits X ou Y.
Afin de facilité le travail on a developpé un simulateur
du produit et on fait tourner le meme soft "embarqué" sur la simu que sur la
cible. Dans le temps la simu semble prendre de l'importance
et ses qualités sont maintenant appreciés de tous. Cependant cette derniere
manque encore de quelques outils de mise au point, c'est pour cela
que je cherche à dumper sa memoire. Une simu donne un exe qui comprend le
code propre à la simu et le code dit embarqué. Parfois cet exe n'est pas
généré en mode debug (pour une demo par exemple) voire meme pas par nous.
Alors là quand y'a plantage nous n'avons plus d'outils pour investiguer.

Le code "embarqué" qu'il soit sur simu ou sur cible n'utilise pas un
sous-systeme windows donc je ne peut pas utiliser un des 8000 moyens
de communications entre process (shared memory, pipe, DDE, DCOM, socket,
remoting .NET, ...)

voila j'espere avoir été clair dans mon explication.


a écrit dans le message de
news:


Sylvain/11XX wrote:
> Bonjour à tous,
>
> Je cherche un moyen pour qu'une application puisse acceder à la
> memoire d'un autre programme en cours d'execution. Par exemple pour
> pouvoir depuis une application A voir la valeur de n octets dans
> l'espace d'adressage d'une application B. Je sais que le probleme est
> complexe mais si je l'expose volontairement de façon simple c'est
> parceque le but de ce post est d'obtenir principalement une piste de
> recherche. Evidemment je n'ignore pas les complications qu'il y a
> autour.

J'aimerais comprendre, si le but est de permettre à deux applications de
communiquer, ne serait-il pas plus simple d'utiliser un des 8000 moyens
de communications entre process (shared memory, pipe, DDE, DCOM,
socket, remoting .NET, ...)?

Si ce n'est pas ton cas, je serais curieux de connaitre ton besoin,
parce qu'en dehors du debugging, j'ai du mal à imaginer le but. Ce
serait donc gentil de bien vouloir m'expliquer!

--
Quentin Pouplard (Tene/MyOE)
http://www.myoe.org | http://graff.alrj.org



Avatar
Sylvain/11XX
Diablo II non mais si vous savez des choses pour Cossakcs
......................




"Nicolas Repiquet" a écrit dans le message de
news:3f731702$0$2804$
a écrit dans le message news:


> Si ce n'est pas ton cas, je serais curieux de connaitre ton besoin,
> parce qu'en dehors du debugging, j'ai du mal à imaginer le but. Ce
> serait donc gentil de bien vouloir m'expliquer!

C'est pour se rajouter de la vie à DiabloII =)

-- Nicolas Repiquet




Avatar
Sylvain/11XX
Ce n'est pas au produit de s'adapter aux outils mais l'inverse. Je ne peut
pas utiliser les fonctions Windows dans la simu ou le soft embarqué. Que
dans l'outil.



"Philippe Mignard" a écrit dans le message de
news:3f732426$0$20617$
NT&Co: OpenProcess + VirtualAllocEx
9x/Me: CreateFileMapping + MapViewOfFile

A+

Sylvain/11XX wrote:
> Bonjour à tous,
>
> Je cherche un moyen pour qu'une application puisse acceder à la


memoire
> d'un autre programme en cours d'execution. Par exemple pour pouvoir


depuis
> une application A voir la valeur de n octets dans l'espace d'adressage


d'une
> application B. Je sais que le probleme est complexe mais si je l'expose
> volontairement de façon simple c'est parceque le but de ce post est
> d'obtenir principalement une piste de recherche. Evidemment je n'ignore


pas
> les complications qu'il y a autour.
>
>
> Quand je developpe l'application A et B en mode DEBUG (je travaille


avec
> Visual Studio) je peut utiliser les API Sym..... et Map....... qui sont
> decritent dans MSDN mais quand l'application B n'est pas en DEBUG je


sais
> plus faire. Avez-vous une idée ? une piste ? un axe de recherche ?
>
> Merci
>
>
>



Avatar
Nicolas Repiquet wrote:
a écrit dans le message news:


> Si ce n'est pas ton cas, je serais curieux de connaitre ton besoin,
> parce qu'en dehors du debugging, j'ai du mal à imaginer le but. Ce
> serait donc gentil de bien vouloir m'expliquer!

C'est pour se rajouter de la vie à DiabloII =)



Merde moi qui espérait que ça permettait de trouver une hache puissante
et socktable ;)


--
Quentin Pouplard (Tene/MyOE)
http://www.myoe.org | http://graff.alrj.org
1 2