Es gibt tatsächlich eine Möglichkeit festzustellen, ob Ihre Anwendung vom Snoop-Programm "geschnüffelt" wird. Die Lösung, die ich geben werde, ist keine Wunderwaffe, und wenn jemand wirklich Ihre Anwendung ausspionieren möchte, müsste er den Snoop-Quellcode ändern (es ist ein Open-Source-Projekt).
Was Snoop tatsächlich tut, ist injiziert eine Assembly in Ihre Anwendung, und die injizierte Assembly untersucht rekursiv den visuellen Baum Ihrer Anwendungen ab dem Stamm. Mit anderen Worten, Snoop läuft innerhalb Ihrer Anwendung. Die Lösung besteht darin, ein Ereignis auszulösen, wenn die Snoop-Baugruppe in Ihre Anwendung injiziert wird.
Zuerst müssen Sie auf die Montage-geladen Ereignis irgendwo in Ihrer Anwendung (vorzugsweise die begginging) zeichnen:
AppDomain.CurrentDomain.AssemblyLoad += new AssemblyLoadEventHandler(CurrentDomain_AssemblyLoad);
Dann der Handler etwas wie dies umzusetzen wäre:
void CurrentDomain_AssemblyLoad(object sender, AssemblyLoadEventArgs args)
{
if (args.LoadedAssembly.FullName.StartsWith("ManagedInjector"))
MessageBox.Show("hey you, stop snooping");//and shut down your application.
}
Sie müssten diese Lösung wahrscheinlich für eine echte Silver-Bullet-Lösung erweitern, aber zumindest wird diese Lösung definitiv dazu führen, dass die aktuellste Version von snoop unverändert ausgeführt wird (ohne den Code geändert zu haben). Die bessere Lösung wäre, zu überprüfen, dass keine externen Baugruppen in Ihre Anwendung injiziert werden.
Allerdings ist Kent immer noch richtig in der Tatsache, dass ein Dienstprogramm wie Snoop keine Sicherheitslücken verursachen sollte, da die Sicherheit nicht auf UI-Ebene implementiert werden sollte. Aber das zeigt Ihnen zumindest, wie Sie verhindern können, dass Ihre Anwendung "geschnüffelt" wird.
Gute Frage, wurde frage mich das gleiche selbst –
Können Sie mehr Informationen zu diesem "Snoop" -Programm geben, oder einen Link zu Informationen darüber veröffentlichen? –