2017-08-26 1 views
-2

Je réalise un outil d'administration à distance pour mon ordinateur portable, de sorte que je peux y accéder via une interface Web chaque fois que je vais quelque part.Exécution de code lorsque l'application est supprimée par TaskManager ou CMD

Je me demandais si je pouvais exécuter le code suivant à chaque fois que l'application est tué par le Gestionnaire des tâches ou CMD/Powershell:

 HttpWebRequest request = (HttpWebRequest)WebRequest.Create($"http://10.0.0.1/?p=Logout&HOSTNAME={HOSTNAME}&IP={IP}&USERNAME={USERNAME}&HASH={HASH}"); 
     request.AutomaticDecompression = DecompressionMethods.GZip; 
     using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()); 

(HOSTNAME, IP, le nom et hash sont variables)

Cette serait exécuté de sorte que mon ordinateur portable soit retiré de ma base de données. P. Je sais qu'il est vulnérable à l'injection SQL, mais je vais le réparer plus tard.

Répondre

0

Dépend de la façon dont votre application est tuée, mais vous pouvez en faire beaucoup. Je suis sûr que cela fonctionne pour taskmanager mais un TerminateProcess et certainement en mode Kernel peut être une douleur, pas cela, ce serait le cas je suppose. voici un exemple:

private delegate bool ConsoleEventDelegate(int eventType); 

public static Main(string[] args) 
{ 
      SetConsoleCtrlHandler(ConsoleEventCallback, true); 
      AppDomain.CurrentDomain.UnhandledException += Reset; 
      AppDomain.CurrentDomain.ProcessExit += Exit; 
      AppDomain.CurrentDomain.DomainUnload += Exit; 
} 

     private static void Exit(object sender, EventArgs e) 
     { 
      HttpWebRequest request = (HttpWebRequest)WebRequest.Create($"http://10.0.0.1/?p=Logout&HOSTNAME={HOSTNAME}&IP={IP}&USERNAME={USERNAME}&HASH={HASH}"); 
     request.AutomaticDecompression = DecompressionMethods.GZip; 
     using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()); 
     } 

     private static void Reset(object sender, UnhandledExceptionEventArgs e) 
     { 
      Exit(null, null); 
     } 

     private static bool ConsoleEventCallback(int eventType = 0) 
     { 
      Exit(null, null); 
      return false; 
     }