Donc, j'appelle une fonction d'un fichier .dll non géré de mon code C#. Selon les arguments passés à cette fonction, il peut provoquer une erreur "Run-Time Check Failure # 0 - La valeur de l'ESP n'était pas correcte" .Ce comportement est tout à fait normal pour la fonction (oui, je sais que cela sonne TRÈS étrange, mais ours avec moi). Cependant, si cela se produit je veux être capable de le gérer, comme si je gérerais une exception: juste échouer gracieusement, envoyer un message à l'utilisateur et éviter de planter tout mon programme. Est-ce possible?Attraper "Échec de vérification au moment de l'exécution # 0 - La valeur de ESP n'était pas correcte"
2
A
Répondre
1
Si vous utilisez l'indicateur GS, vous pouvez remplacer le comportement en appelant la fonction __set_security_error_handler
. Cela vous permet de spécifier la fonction appelée lorsque l'indicateur GS et d'autres erreurs de sécurité sont déclenchés.
Je vous déconseille vivement cependant. Toute fonction qui corrompt régulièrement ESP semble être un vrai problème. Vous risquez également de cacher d'autres problèmes de sécurité réels en remplaçant cette fonction.
Une solution beaucoup mieux serait de marquer la méthode individuelle comme nue et empêcher le contrôle GS de se produire.
Et si je colle l'appel de fonction dans un thread séparé? Est-il possible de détecter si le thread s'est écrasé? –