[C]Intercepter les donnees ecrites par un processus

Intercepter les donnees ecrites par un processus [C] - C - Programmation

Marsh Posté le 11-11-2004 à 22:37:42    

Bonjour,
 
je travaille en ce moment sur de la supervision reseau par SNMP avec le logiciels CiscoView(appli en JAVA). Celui-ci recueille et affiche en temps reel des statistiques recueillies et les affichent sous forme de tableau.
 
Ne pouvant pas les recuperer dans un fichier (Merci Cisco  :kaola: ), j'ai pour idee d'intercepter les donnees avant qu'elles soient affichees à l'ecran, donc d'aller les lire directement en memoire.
 
Plusieurs problemes se posent a moi:
-Connaissant le PID du processus, il faudrait determiner ou il ecrit les donnees en memoire. Est-ce possible?
-Un programme peut-il lire la zone memoire d'un autre prog?
 
Ceci est pour voir la faisabilite de la chose. Si vous avez 2-3 astuces, je suis preneur.
 
D'avance merci. :jap:

Reply

Marsh Posté le 11-11-2004 à 22:37:42   

Reply

Marsh Posté le 11-11-2004 à 23:22:38    

Je suis le binôme du monsieur [:petrus75]


---------------
« Franchement si j'étais toi, je... – T'es moi ? – Nan. – Bon bah tu fermes ta gueule alors. »
Reply

Marsh Posté le 11-11-2004 à 23:46:09    

FLo14 a écrit :

Je suis le binôme du monsieur [:petrus75]


 
cool [:petrus75]

Reply

Marsh Posté le 11-11-2004 à 23:47:12    

Citation :

-Un programme peut-il lire la zone memoire d'un autre prog?


 
me demande si y'a pas un ReadMemoryProcess(Ex) ou un truc du genre, mais je dis ca, je dis rien. Mais une fonction comme ca en Java, non, tu la trouveras pas [:petrus75]

Reply

Marsh Posté le 12-11-2004 à 00:12:52    

d'ho a écrit :

-Un programme peut-il lire la zone memoire d'un autre prog?

Je crois que c'est faisable avec gdb. Je l'ai déjà fait mais c'était avec un programme C dont j'avais le source et qui était compilé en mode Debug donc c'était plustôt simple de pouvoir "intercepter" le processus puis de voir où il en était et de consulter les différentes variables.
 
Dans ton cas, c'est du Java, tu n'as pas le source du bordel et les données ne sont peut être pas regroupées au même endroit en mémoire. Pour pouvoir les retrouver il faudrait connaître par exemple une des valeurs affichées puis savoir de quelle façon elle est enregistrée (int, float, double, ...). Et à chaque exécution du processus il est possible que la position des données changent.
 
ça me paraît très difficile, le plus simple serait de demander à Cisco de modifier son logiciel. :D


Message édité par darkoli le 12-11-2004 à 00:13:38

---------------
Le site de l'année :D (XHTML 1.0 strict) : http://darkoli.free.fr/index.html
Reply

Marsh Posté le 12-11-2004 à 00:27:04    

Le pb c'est que ca va dépendre du systeme d'exploitation ce genre de manip.... donc ca va etre une fonction bas niveau dans un .so pour linux et une dll pour windows, bien différente selon le cas. Tu va perdre le bénéfice de la portabilité.
 
Pour windows, on peut faire ca avec les fonctions de l'api win32. Voici un lien qui montre comment faire (c'est du c#, mais les fonctions win32 sont bien présentées et c'est facile a comprendre).
 
http://www.thecodeproject.com/csha [...] reader.asp
 
C'est une piste...

Reply

Marsh Posté le 12-11-2004 à 00:33:10    


 
[:atari]
 
Histoire que je suive le topic un minimum quoi [:la monne]


---------------
« Franchement si j'étais toi, je... – T'es moi ? – Nan. – Bon bah tu fermes ta gueule alors. »
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed