Question

Lors de l'exécution de l'un de nos logiciels, un testeur a été confronté à la boîte de dialogue de prévention de l'exécution des données de Windows.

Nous essayons de reproduire cette situation sur un ordinateur de développeur à des fins de débogage: sans succès.

Quelqu'un sait-il comment rechercher ce qui peut entraîner la mort de l'application par la protection DEP? Existe-t-il des outils disponibles pour cela?

Était-ce utile?

La solution

La boîte de dialogue DEP ne s'affiche généralement que lorsque vous essayez d'exécuter du code provenant d'une région que vous ne marquez pas comme exécutable. Cela peut être dû à des "thunks" dans une bibliothèque que vous utilisez, par exemple. ATL fenêtrage. Ce problème est résolu dans ATL 8.0.

Un bogue de suppression de pile, par exemple un dépassement de tampon, peut également être à l'origine de ce problème en définissant l'adresse de retour sur un emplacement non exécutable. Cela pourrait ne pas causer une violation d'accès, mais plutôt un comportement étrange, si la prévention de l'exécution des données est désactivée pour le processus ou non disponible sur le matériel.

Cela pourrait également se produire si vous leviez une exception C ++ ou si vous leviez une exception SEH et si vos gestionnaires d'exceptions structurés ont été supprimés par un dépassement de tampon.

Autres conseils

Je pense que chaque fois que vous essayez d’écrire dans une mémoire qui n’est pas allouée, cela pourrait être un résultat. Cela pourrait ressembler à la suppression d’un objet puis à son utilisation, ou l’écriture d’une chaîne dans un tampon trop petit pour le contenir.

Le DEP est influencé par la présence de capacités matérielles. Nous avons récemment eu une situation où notre application fonctionnait bien sur de vieilles machines, mais échouait sur de nouvelles. Il s'est avéré que, bien que la prise en charge de la prévention de l'exécution des données soit activée sur les anciens et les nouveaux serveurs, nous nous sommes effondrés sur les nouveaux, car la détection du matériel était meilleure, plus agressive, ou quelque chose du genre. Donc, si votre QA peut se reproduire mais que le DEV ne le peut pas, essayez-le avec un matériel identique ... Bien qu'il semble déraisonnable que le QA ait un PC plus récent / meilleur que le dev ... je le crois totalement!
Voici mes notes sur notre expérience récente avec ceci: Incompatibilités entre Indy 9 et Windows Server 2003?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top