Comment intercepter chaque personne essayant d’utiliser la fonction API en C #?

J’ai besoin d’empêcher tout logiciel de capture d’écran sur l’ordinateur de prendre des captures d’écran. Puisque tous travaillent sur des fonctions API standard, je pense pouvoir les surveiller et les bloquer. J’ai besoin d’utiliser C #. Tout ce que j’ai trouvé, c’est comment les surveiller et les bloquer dans un certain programme (programme de capture d’écran). Ils recherchent une fonction dans le programme, puis ils changent l’adresse sur l’adresse de la fonction mienne. Mais comment puis-je le faire, si je n’ai pas certains programmes? Je dois bloquer toute personne qui essaie de prendre une capture d’écran.

Il n’est pas possible d’empêcher les captures d’écran. La bataille est déjà perdue à cause du DWM (Desktop Window Manager). Son niveau est inférieur à celui de Win32 et des contextes de périphérique.

Si vous souhaitez protéger le texte dans votre programme, il existe des moyens beaucoup plus simples de l’extraire que de faire des captures d’écran et de faire de la ROC. API de raccordement et d’accessibilité TextOut et / ou Direct2D.

S’il y a beaucoup d’IP dans votre programme. Alors ne le rendez pas disponible à l’écran. Assurez-vous qu’il est fastidieux d’explorer l’interface graphique pour le texte et difficile à automatiser. Et ne chargez pas de textes entiers en mémoire du programme.

Solutions possibles : 1. Pour empêcher la copie de texte. Dessine le texte sous forme d’image. 2. Pour empêcher les technologies d’accessibilité, comme les lecteurs d’écran, remplacez WndProc dans votre contrôle, gérez et ignorez le message de fenêtre WM_GETOBJECT. 3. Pour rendre les choses plus difficiles s’ils essaient d’utiliser OCR. Dessine des graphiques derrière le texte. Lisible par l’homme, mais beaucoup plus difficile à interpréter par une machine.

Aucune de ces méthodes n’est invasive pour l’utilisateur.

** Une suggestion très invasive **: Si vous voulez vraiment empêcher quiconque de “voler” votre contenu.

  1. Implémenter des crochets souris et clavier. Filtrer les raccourcis de copie typiques. Empêchez la souris de quitter les limites de votre application.
  2. Autorisez votre application à s’exécuter uniquement lorsque le système d’exploitation exécute des processus et des services connus. Si un processus non reconnu commence, éteignez l’application et informez-en l’utilisateur, puis demandez-lui de la fermer. Et bien sûr, assurez-vous que quelqu’un ne se contente pas d’usurper un processus bien connu.
  3. Surveillez le presse-papiers comme vous l’avez suggéré.

Vous pouvez souvent adoucir certaines de ces suggestions en fonction du contexte de votre application.

Si votre objective final est possible ou non, je ne le sais pas, mais je peux vous aider pour le raccordement de la partie API.

J’ai utilisé la bibliothèque EasyHook plusieurs fois dans le passé, cela vous permettra de raccorder et d’intercepter les appels de fonction système à partir de code C # assez facilement. Il suffit de lire le didacticiel PDF pour obtenir des instructions de configuration.

Pour trouver réellement les API, je recommande le moniteur API de Rohitab , il est toujours en phase Alpha mais il fonctionne vraiment bien et est gratuit. Vous venez de le relier à un processus et il vous indique chaque appel de DLL externe qu’il effectue (avec les parameters qu’il a transmis si vous avez le fichier de définition XML pour la DLL, le programme est livré avec presque toutes les DLL de l’API Windows prédéfinies) .

entrez la description de l'image ici

La combinaison d’EasyHook et d’API Monitor est un excellent outil pour les appels d’appels d’autres programmes.

Comme Scott vient de le signaler, il est probable que les points d’ancrage API ne permettent pas de voir que les événements de peinture vont uniquement aux poignées liées du bureau et non à d’autres, et refusent de peindre autrement. Toutefois, vous devez envisager les scénarios suivants et voir s’ils constituent une menace pertinente pour votre approche ou non:

Votre logiciel est peut-être en cours d’exécution sur une machine virtuelle telle que VMWare. Ce logiciel a des capacités de capture d’écran qui le font au niveau du “matériel virtuel”, et vos hooks d’API ne pourront pas le discerner – et ce serait la méthode la plus simple si je voulais contourner vos protections.

Comme le suggère un message , rien n’empêche également quelqu’un de prendre un câble de moniteur et de le twigr sur la carte de capture d’un autre ordinateur, et de prendre une capture d’écran de cette façon. Encore une fois, vos crochets seront impuissants ici.

En bout de ligne, vous pouvez le rendre un peu plus difficile à faire, mais contourner cette protection peut être une chose assez sortingviale à faire.

  • Mon 2c.