Je développe une application de fuzzing C++ multi-plateforme. L'application génère un processus enfant et vérifie si elle s'est arrêtée de manière inattendue. J'ai déjà réussi à le faire sur Linux, cependant, le mécanisme de gestion des exceptions de Windows rend les choses difficiles pour moi.Attraper des exceptions de processus enfants sur Windows
Mon code maintenant fait ce qui suit: - Appelez CreateProcess pour engendrer le processus. - WaitForSingleObject en attente de l'achèvement. - Appelez ensuite GetExitCodeProcess et vérifiez si le code de sortie correspond à une exception.
Tout fonctionne comme prévu, je l'ai testé avec une application de test de déréférencement null, et je peux attraper l'exception gracieusement. Cependant, chaque fois que je teste cela, une boîte de message d'erreur Windows apparaît en me disant d'envoyer ou de ne pas envoyer le rapport d'erreur. Étant donné que le fuzzer est supposé être une application de test automatique, je devrais d'une manière ou d'une autre désactiver cette notification, de sorte que même si une exception est interceptée, le fuzzer peut continuer à tester.
J'ai déjà essayé d'installer un gestionnaire SEH, mais je n'ai pas eu de chance (apparemment, ces gestionnaires ne sont pas hérités par les processus enfants). J'ai lu quelque chose sur l'utilisation de la gestion des exceptions vectorielles, mais supposons que ce soit la même chose, je crois que les gestionnaires de vecteurs ne sont pas hérités.
Quelqu'un pourrait-il m'aider avec ce problème? Je ne sais pas quoi chercher, j'ai déjà beaucoup googlé et n'ai rien trouvé.
Merci!
Merci pour la réponse! J'avais pensé à utiliser une API de débogage, mais je pensais que certaines applications qui utilisent des mécanismes anti-débogage pour éviter le cracking et/ou la révérence pourraient modifier leur comportement si elles détectent qu'elles sont déboguées par le fuzzer. Je suppose que si je ne peux pas trouver une autre option, alors je vais devoir utiliser ce mécanisme de débogage. – mfontanini
raison de plus pour tirer sur les gens qui essaient de faire de la rétro-ingénierie prouver leur code. –
Ça a marché! Merci beaucoup: D – mfontanini