Bloquer l'espion spy++ [ttygrab, consolewindowclass, #32768, #32769]

Soyez le premier à donner votre avis sur cette source.

Snippet vu 11 237 fois - Téléchargée 33 fois

Contenu du snippet

J'ai découvert ce qui suit par hasard, et il faut bien avouer que techniquement, ça apporte quelque chose de très intéressant.

Spy++ est un utilitaire très pratique pour espionner les flux de messages avec Windows et entre applications. Il permet également de détecter les styles, les threads... un logiciel très efficace en somme. Ses concurrents sont WinSight (fourni avec Delphi) et WinSpector (voir site Web du même nom).

Je propose donc ici une manière pour bloquer Spy++, la version 6.00.8168.0 étant utilisée pour les tests. Ainsi, il est fort probable de pouvoir sécuriser des transferts de données, même si dans l'absolu, c'est impossible.

A l'occasion de manipulations sur des fenêtres MS-Dos, j'ai pu constater que toute classe nommée "ttyGrab" ne pouvait pas être espionnée (cf. capture d'écran). J'en déduit donc deux principes:

1) En profitant de la syntaxe de Delphi (càd que les types sont précédés de la lettre "T"), nommez simplement votre fenêtre principale "tyGrab" avec un seul "T": propriété NAME. Ainsi, votre fenêtre est déclarée en tant que classe TNomDeLaFenêtre, soit TtyGrab.

L'expérience montre que la fenêtre n'est pas espionnable (cf. capture d'écran). En revanche, si on place un TEdit dans la fenêtre, lui est espionnable... Alors à quoi sert mon idée ?

2) Déjà, c'est la fenêtre qu'on bloque, pas ce qu'elle contient. Pour résoudre ce détail, développons un composant sur le modèle suivant :

unit MsDos;
interface
uses Classes, Controls;
type
ttyGrab = class(TWinControl) //TCustomControl si vous voulez ensuite dessiner dedans
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Win32', [ttyGrab]);
end;
end.

J'ai deux remarques.

Premièrement: le composant est d'une basicité effrayante. Je voulais simplement montrer le squelette de base, car rien n'empêche ensuite de construire des choses dedans. Ce dedans devant être nécessaire des composants non fenêtrés, càd TGraphicControl par exemple.

Deuxièmement: on est a priori limité en nombre de classes. Mais en fait, la technique marche également sur trois autres classes: "ConsoleWindowClass" (console), "#32768" et "#32769" (tous deux étant relatifs au bureau général de Windows). Je pense qu'il devrait y en avoir d'autres...

Au final, c'est Spy++ qui se bloque lui-même... sûrement pour une bonne raison ! Pour nous en tout cas, c'est déjà pas mal.

Conclusion :


Vous pouvez toujours aller visiter http://altert.family.free.fr/
Ajouter un commentaire Commentaires
Messages postés
2106
Date d'inscription
mardi 10 décembre 2002
Statut
Modérateur
Dernière intervention
15 décembre 2014
5
Merci GrandVizir!
Si j' ai le temps avant les vacances, j' essayerai de faire une source pour les membres.
A+
Messages postés
69
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 novembre 2006

Tu parles des Atoms ?

En tout cas, c'est une belle démo. ;)
Messages postés
1106
Date d'inscription
samedi 8 novembre 2003
Statut
Membre
Dernière intervention
3 septembre 2006
21
Regarde les threads IPC du répertoire "Delphi\Demos\Ipcdemos" pour la communication entre plusieurs applications (et pas seulement 2 !). C'est compliqué... mais il faudra que j'y jette un bon coup d'oeil, parce que c'est vraiment pas mal.
Messages postés
2106
Date d'inscription
mardi 10 décembre 2002
Statut
Modérateur
Dernière intervention
15 décembre 2014
5
Bien vu GrandVizir!
Comme tu le dis si bien, il existe d' autres espions comme Spy++.
Même si on bloque celui-ci, il n' est pas garanti de bloquer les autres espions...
En tout cas cela reste une bonne démonstration. Si tu nous pouvais faire une source d' exemple de communication entre 2 programmes par messages se serait le pied.
A+
PS: je n' ai pas essayé le code, ton explication m' a suffit à comprendre la finalité. De plus, venant de toi, je n' ai pas besoin de tester pour savoir que ça marche.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.