Realmente hay una forma de detectar si su aplicación está siendo "fisurada" por el programa snoop. La solución que daré no es una bala de cristal, y si alguien realmente quiere fisgonear su aplicación, tendrían que modificar el código fuente de snoop (es un proyecto de código abierto).
Lo que realmente snoop hace es inyectar un ensamblado en su aplicación, y el ensamblado inyectado examina recursivamente el árbol visual de las aplicaciones comenzando desde la raíz. En otras palabras, snoop realmente ejecuta dentro de su aplicación. Una vez dicho esto, la solución es plantear un evento cuando el conjunto de snoop se inyecta en su aplicación.
En primer lugar, es necesario suscribirse al evento de montaje cargado en algún lugar de su aplicación (preferiblemente el begginging):
AppDomain.CurrentDomain.AssemblyLoad += new AssemblyLoadEventHandler(CurrentDomain_AssemblyLoad);
Entonces, usted implementar el controlador de algo como esto:
void CurrentDomain_AssemblyLoad(object sender, AssemblyLoadEventArgs args)
{
if (args.LoadedAssembly.FullName.StartsWith("ManagedInjector"))
MessageBox.Show("hey you, stop snooping");//and shut down your application.
}
Probablemente necesites mejorar esta solución para una solución de bala de plata real, pero al menos esta solución definitivamente evitará que la última versión actual de snoop se ejecute como está (sin el código modificado). La mejor solución sería verificar que no se estén inyectando ensambles externos en su aplicación.
Sin embargo, Kent todavía tiene razón en el hecho de que una utilidad como Snoop no debería causar ninguna vulnerabilidad de seguridad ya que la seguridad no debería implementarse en el nivel de UI. Pero al menos esto le muestra cómo evitar que las personas "husmeen" su aplicación.
Buena pregunta, sido preguntándome a mí mismo –
¿Puede dar más información sobre este programa "Snoop" o publicar un enlace a información sobre él? –