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 :

Communiquer avec une application ouverte


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 39
    Par défaut Communiquer avec une application ouverte
    Bonjour,

    Je souhaite communiquer avec une application qui est déjà lancée.
    Je suis sous Ubuntu, donc je pense que je dois récupérer le Pid de l'appli.
    Ça c'est pas un problème par contre comment communiquer en C avec cette appli, quelle bibliothèque dois-je utiliser?

    Merci pour toute informations.

  2. #2
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 226
    Par défaut
    Communiquer avec une appli ?
    Sachant que les programme ne partage pas leur mémoire je vois mal comment tu peux communiquer avec les autres programmes.
    Sauf si c'est ton programme , tu peux partager les donné via un fichier sur le DD (mais ça peut etre lourd) , soit avec les arguments qu'on passe en lançant un programme genre ./monprogramme argument1 agument2 ect.

  3. #3
    Membre Expert
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    872
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 872
    Par défaut
    Tu ne peux communiquer avec un autre programme (autrement qu'en lui envoyant des signaux) que si ce dernier peut lire ce que tu lui envoies (par reseau, semaphore, fichier...). Si le programme en question n'a aucune de ces fonctions, il n'y a pas de moyens de communiquer avec lui (tout du moins pas a ma connaissance).

  4. #4
    Membre chevronné
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Février 2007
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 574
    Par défaut
    Citation Envoyé par imperio Voir le message
    Tu ne peux communiquer avec un autre programme (autrement qu'en lui envoyant des signaux) que si ce dernier peut lire ce que tu lui envoies (par reseau, semaphore, fichier...). Si le programme en question n'a aucune de ces fonctions, il n'y a pas de moyens de communiquer avec lui (tout du moins pas a ma connaissance).
    Tu peux injecter une dll dans l'espace memoire d'un autre processus via ptrace et __dl_open de la libc. Le probleme, c'est que cette fonction n'est pas exportee, et que cela demance de trouver son addresse au runtime (via /proc/pid/maps) et de l'appeller en assembleur. En gerant eip/rip, tu peux donner le control a un point d'entre dans ta dll au chargement. C'est sale, mais ca marche. Hotpatch et injectso (32 bits seulement) utilisent ce mechanisme. Pour plus d'info sur la methode, voir phrack 59
    Ca permet d'injecter du code dans un processus qui tourne et ensuite eventuellement de partager des donnees via shm.

    Apres, est-ce que c'est une bonne idee...

  5. #5
    Membre actif
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 41
    Par défaut
    Salut

    Citation Envoyé par dahtah
    Tu peux injecter une dll dans l'espace memoire d'un autre processus via ptrace et __dl_open de la libc
    Le problème avec cette technique c'est que les systèmes de sécurité vont criés je pense (anti-virus) car c'est rarement honnête l'injection de code dans un programme en cours

    Remarque sous Ubuntu, les anti-virus c'est pas très courant mais je te déconseille cette option surtout si tu comptes exporter vers d'autres plateformes ton projets

    Sinon pour communiquer entre deux processus tu peux utiliser les pipes

    Voir un tuto ici

    Salut,

    Neyort

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 39
    Par défaut
    Un grand merci à tout le monde.

    Vous m'avez donné des pistes plus qu’intéressantes, maintenant je vois dans quelle direction je dois chercher. :ccool

Discussions similaires

  1. Communiquer avec une application cliente
    Par Invité dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 01/06/2011, 16h27
  2. communiquer avec une application c++
    Par maa dans le forum C#
    Réponses: 10
    Dernier message: 25/10/2010, 09h13
  3. Communiquer avec une application en arrière plan
    Par ZMJUVENTINO dans le forum Général Java
    Réponses: 4
    Dernier message: 11/02/2009, 14h39
  4. Communiquer avec une application
    Par ZMJUVENTINO dans le forum Général Java
    Réponses: 3
    Dernier message: 28/01/2009, 00h40
  5. Créer un service Web et communiquer avec une application lourde
    Par fabseven dans le forum Ruby on Rails
    Réponses: 5
    Dernier message: 10/03/2008, 20h22

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