une situation très simple. Je travaille sur une application à Delphi 2007, qui est souvent compilée comme «libération» mais elle est toujours sous un débogueur. Et parfois, il fonctionnera également sous Silktest pour les tests de régression. Bien que cela soit assez amusant, je veux faire quelque chose de spécial ... P>
Je veux détecter si mon application est exécutée dans un débogueur / testeur de régression et si c'est le cas, je souhaite que la demande sache quel outil est utilisé! (Ainsi, lorsque l'application se bloque, je pourrais signaler ces informations dans son rapport d'erreur.) P>
Toute suggestion, solutions? p>
4 Réponses :
Vous recherchez probablement le Isdebuggerpresent code>
fonction. P>
Mais il détectera-t-il également Silktest et d'autres logiciels de test? Ou des debuggers à distance?
Il existe également la fonction checkremotedebuggerpresent code>, ce qui semble semblable à identifier les débuggeurs à distance. Je ne suis pas familier avec Silktest, donc je ne sais pas si cela agit comme un débogueur ou non. Si cela le fait, alors ce qui précède fonctionnera. Sinon, vous devrez trouver une autre technique.
Vous pouvez également faire
if DebugHook <> 0 then ...
Cela ne fonctionne que de l'intérieur de l'IDE Delphi, pas d'autres debuggers. N'oubliez pas non plus que l'application est débiguée dans le mode "Libération", pas le mode "Débogage".
Vous pouvez vérifier le processus parent qui a démarré votre application.
Avec check Cet article pour l'utilisation du code. P>
en plus de CreatoToolHelP32Snapshot
/
/
/
/
Process32Next Code> Obtenez le PID parent (
Processentry32.th32ParentProcesside code> ou
TPROCESSELRY32.TH32PARENTPROCESSID < / code>) Pour votre application PID. Ensuite, obtenez le nom de fichier du parent PID de comparer avec les applications que vous souhaitez rechercher, comme Silktest. P>
isdebuggerpresent code> et
checkremodedebuggerpresent code>, vous pouvez également interroger
peb.beingdebugged code> (PEB est le bloc d'environnement de processus, pour obtenir PEB que vous devez Query Teb, qui est le bloc Enviroment du fil). P>
Pour détecter Silktest, vous pouvez essayer de joindre à une DLL utilisée uniquement par Silktest afin de détecter sa présence. Par exemple, si l'agent ouvert est connecté à un processus, win32hookdll_x86.dll code> ou
win32hookdll_amd64.dll code> sera présent (les noms peuvent facilement être découverts avec un outil comme < Un href = "http://technet.microsoft.com/en-us/sysinternals/bb8966653" rel = "nofollow" title = "Explorateur de processus"> Explorateur de processus . P>
Vous n'écrivez pas les logiciels malveillants, à droite ...?
docs.microsoft.com/en-us/ Windows / Desktop / Déboguer / ...