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

Windows Discussion :

"Furtivité" des fonctions de l'API Windows


Sujet :

Windows

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 22
    Points : 14
    Points
    14
    Par défaut "Furtivité" des fonctions de l'API Windows
    Bonjour,

    Je souhaite récupérer des informations affichées par une (autre) application GUI Windows qui tourne sur mon PC.

    Je m'interroge sur la furtivité des fonctions fournies par l'API Windows : je ne veux pas que cette application externe puisse détecter que je collecte des informations sur ses objets fenêtres !

    Or il me semble que l'utilisation de fonctions telles que GetWindowInfo, GetWindowText vont ajouter des messages à destination de cette application externe qu'un utilisateur humain n'aurait pas généré.

    Est-ce que je me trompe ? Avez-vous des idées pour éviter ce problème ? Comment savoir si une fonction de l'API est "furtive" ou non ?

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    GetWindowInfo() envoie un message à la fenêtre? O_o
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Il y a bien certaines API qui envoient des messages à des fenêtres (il me semble) mais à part brutaliser la fenêtre avec SendMessage je ne crois pas qu'il y ai de moyen de faire la différence entre l'utilisateur et une autre application (et Windows, qui utilise les api windows pour gérer les fenêtres ...).

    Mais inversement, pourquoi te préoccuper de ça ?

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 22
    Points : 14
    Points
    14
    Par défaut
    Merci pour votre intérêt.

    Médinoc je crois que tu as raison (GetWindowInfo() n'envoie pas de message).

    Mais en ce qui concerne GetWindowText(), je dois le remplacer par un envoi de message WM_GETTEXT (cf MSDN). Si je ne m'abuse, le fonctionnement global des fonctions de l'API windowing ajoutent un message à la queue de l'application qui sera traité par une fonction callback. Cette fonction peut très bien incrémenter un compteur pour voir si l'application est sollicitée par un utilisateur non humain !

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Les logiciels d'accessibilité (comme la synthèse vocale) font du GetWindowText() également, tu sais...

    Il y a trop de trucs qui font des appels à GetWindowText() pour qu'un logiciel puisse se permettre de compter cela comme un problème.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 22
    Points : 14
    Points
    14
    Par défaut
    Ca me pose quand même un problème de principe. Ce n'est pas anodin, cela veut dire qu'un logiciel de jeu (ou même un navigateur internet !) peut facilement détecter une collecte automatique d'informations basée sur son interface graphique. Il peut donc facilement bloquer cette collecte.

    On devrait pouvoir savoir si les fonctions de l'API windowing sont furtives ou pas !! Mais je ne trouve rien de tel dans la documentation MSDN.

    Ce problème ne préoccupe-t-il personne ? Il existe pourtant bien des trackers. Où trouver des réponses ?

  7. #7
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Mais normalement, aucun programme n'a d'intéret à empêcher une telle collecte!
    (sauf les contrôles Edit contenant un mot de passe, et ils le font déjà automatiquement)
    Et puis, s'ils veulent vraiment empêcher, il y a plus simple que faire un comptage pour tenter de détecter si c'est Windows ou un autre programme qui envoie le message: Il suffit d'afficher leur texte sans passer par des contrôles, en le dessinant directement (comme ça se passe déjà dans les formulaires des pages web, par exemple)...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 22
    Points : 14
    Points
    14
    Par défaut
    Aïe c'est vrai. Et dans ce cas ça devient de l'IA ...

    Quelle est la solution alors ? Il faut se baser sur l'accès mémoire de l'application ?

  9. #9
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Mais qu'est-ce que tu veux faire exactement?

    Les outils d'administration distante se moquent des textes (ils copient directement une image de l'écran), et les outils d'automatisation ne font pratiquement jamais de la lecture.

    Et pratiquement aucun programme ne cherche activement à empêcher sont automatisation, sauf:
    • quand il s'agit d'automatiser un comportement pouvant être mauvais pour l'utilisateur (installation d'un truc sans que l'utilisateur ait à confirmer, etc.)
    • quand le programme lui-même est mauvais pour l'utilisateur (bourré de DRM, etc.)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Indivisibilité des fonctions de l'api
    Par devconf77 dans le forum Windows
    Réponses: 1
    Dernier message: 16/07/2007, 16h32
  2. Où trouver l'aide sur les fonctions de l'API Windows ?
    Par psidonio dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 08/11/2005, 14h28
  3. fonction de l'API windows
    Par T-B dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 09/03/2005, 22h36

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