Il existe en fait un moyen de détecter si votre application est "snoopée" par le programme snoop. La solution que je vais donner n'est pas une solution miracle, et si quelqu'un veut vraiment espionner votre application, il devra modifier le code source de snoop (c'est un projet open source). Ce que snoop fait, c'est injecter un assemblage dans votre application, et l'assemblage injecté examine récursivement l'arborescence visuelle de votre application en commençant à la racine. En d'autres termes, snoop exécute réellement à l'intérieur de votre application. Cela dit, la solution consiste à déclencher un événement lorsque l'ensemble Snoop est injecté dans votre application.
D'abord, vous devez vous abonner à l'événement chargé assemblage quelque part dans votre application (de préférence le begginging):
AppDomain.CurrentDomain.AssemblyLoad += new AssemblyLoadEventHandler(CurrentDomain_AssemblyLoad);
Ensuite, vous mettre en œuvre le gestionnaire un peu comme ceci:
void CurrentDomain_AssemblyLoad(object sender, AssemblyLoadEventArgs args)
{
if (args.LoadedAssembly.FullName.StartsWith("ManagedInjector"))
MessageBox.Show("hey you, stop snooping");//and shut down your application.
}
Vous auriez probablement besoin d'améliorer cette solution pour une vraie solution balle d'argent, mais au moins cette solution arrêtera définitivement la dernière version de Snoop en cours d'exécution telle quelle (sans le code modifié). La meilleure solution serait de vérifier qu'aucun assemblage externe n'est injecté dans votre application. Cependant, Kent a toujours raison dans le fait qu'un utilitaire comme Snoop ne devrait pas causer de failles de sécurité puisque la sécurité ne devrait pas être implémentée au niveau de l'interface utilisateur. Mais au moins cela vous montre comment empêcher les gens de "fouiner" votre application.
Bonne question, été Je me demande moi-même –
Pouvez-vous donner plus d'informations sur ce programme "Snoop", ou afficher un lien vers des informations à ce sujet? –