Peverify.exe (outil PEVerify)
L’outil PEVerify permet aux développeurs générant du langage MSIL (Microsoft Intermediate Language), tels que des développeurs de moteurs de script et rédacteurs de compilateur, de déterminer si leur code MSIL et les métadonnées qui y sont associées répondent aux exigences de sécurité de type. Certains compilateurs génèrent du code de type sécurisé vérifié uniquement si vous évitez d'utiliser certaines constructions de langage. Si vous utilisez un tel compilateur, vous pouvez vérifier que vous n’avez pas compromis la sécurité de type de votre code. Vous pouvez exécuter l’outil PEVerify sur vos fichiers pour vérifier le langage MSIL et les métadonnées.
Cet outil est installé automatiquement avec Visual Studio. Pour exécuter l’outil, utilisez l’invite de commandes Visual Studio Developer ou PowerShell pour Visual Studio Developer.
Syntaxe
peverify filename [options]
Paramètres
Argument | Description |
---|---|
filename | Fichier exécutable portable dont le langage MSIL et les métadonnées sont à vérifier. |
Option | Description |
---|---|
/break= maxErrorCount | Abandonne la vérification si le nombre d’erreurs atteint maxErrorCount erreurs. Ce paramètre n'est pas pris en charge dans les versions 2.0 et ultérieures du .NET Framework. |
/clock | Calcule et indique la durée des vérifications suivantes, en millisecondes : MD Val. cycle Cycle de validation des métadonnées MD Val. pure Validation simple des métadonnées IL Ver. cycle Cycle de vérification MSIL IL Ver pure Vérification MSIL simple Les temps MD Val. cycle et IL Ver. cycle incluent le temps qu’il faut pour effectuer les procédures de démarrage et d’arrêt nécessaires. Les temps MD Val. pure et IL Ver pure reflètent le temps qu’il faut pour effectuer la validation ou la vérification uniquement. |
/help | Affiche la syntaxe et les options de commande de l'outil. |
/hresult | Affiche les codes d'erreur au format hexadécimal. |
/ignore= hex.code [, hex.code] | Ignore les codes d'erreur spécifiés. |
/ignore=@ responseFile | Ignore les codes d'erreur répertoriés dans le fichier réponse spécifié. |
/il | Procède aux contrôles de vérification de la sécurité de type MSIL pour les méthodes implémentées dans l’assembly spécifié par filename. L’outil retourne les descriptions détaillées de chaque problème rencontré, sauf si vous spécifiez l’option /quiet. |
/md | Procède aux contrôles de validation des métadonnées sur l’assembly spécifié par filename. Cette option décrit la structure complète des métadonnées dans le fichier et signale tous les problèmes de validation rencontrés. |
/nologo | Supprime l'affichage de version de produit et d'informations de copyright. |
/nosymbols | Dans .NET Framework version 2.0, supprime les numéros de ligne pour la compatibilité descendante. |
/quiet | Spécifie le mode silencieux ; supprime la sortie des états sur les problèmes de vérification. Peverify.exe continue à indiquer si le fichier est de type sécurisé, mais ne fait pas état d'informations sur les problèmes empêchant la vérification de la sécurité de type. |
/transparent |
Vérifiez uniquement les méthodes transparentes. |
/unique | Ignore les codes d'erreur récurrents. |
/verbose | Dans .NET Framework version 2.0, affiche des informations supplémentaires dans les messages de vérification MSIL. |
/? | Affiche la syntaxe et les options de commande de l'outil. |
Notes
Le Common Language Runtime repose sur l'exécution de type sécurisé du code de l'application pour permettre de mettre en œuvre des mécanismes de sécurité et d'isolation. Le code qui n’est pas de type sécurisé vérifié ne peut normalement pas être exécuté, même si vous pouvez définir une stratégie de sécurité permettant l’exécution d’un code de confiance, mais non vérifiable.
Si ni l’option /md ni l’option /il ne sont spécifiées, Peverify.exe effectue ces deux types de contrôles. Peverify.exe procède en premier lieu aux contrôles /md. En l’absence d’erreurs, il effectue ensuite les contrôles /il. Si vous spécifiez à la fois les contrôles /md et /il, les contrôles /il sont effectués, y compris en cas d’erreurs dans les métadonnées. Par conséquent, s’il n’existe aucune erreur de métadonnées, le nom de fichier peverify équivaut à peverify filename /md /il.
Peverify.exe effectue des contrôles de vérification MSIL complets en fonction de l'analyse des flux de données et d'une liste de plusieurs centaines de règles sur la validité des métadonnées. Pour plus d’informations sur les contrôles effectués par Peverify.exe, consultez « Metadata Validation Specification » et « MSIL Instruction Set Specification » dans le dossier « Tool Developer’s Guide » du SDK Windows.
.NET Framework version 2.0 ou ultérieure prend en charge les valeurs de retour byref
vérifiables spécifiées à l’aide des instructions MSIL suivantes : dup
, ldsflda
, ldflda
, ldelema
, call
et unbox
.
Exemples
La commande suivante procède aux contrôles de validation des métadonnées et aux contrôles de vérification de la sécurité de type MSIL pour les méthodes implémentées dans l'assembly myAssembly.exe
.
peverify myAssembly.exe /md /il
Une fois les contrôles ci‑dessus terminés, Peverify.exe affiche le message suivant.
All classes and methods in myAssembly.exe Verified
La commande suivante procède aux contrôles de validation des métadonnées et aux contrôles de vérification de la sécurité de type MSIL pour les méthodes implémentées dans l'assembly myAssembly.exe
. L'outil affiche le temps requis pour effectuer ces vérifications.
peverify myAssembly.exe /md /il /clock
Une fois les contrôles ci‑dessus terminés, Peverify.exe affiche le message suivant.
All classes and methods in myAssembly.exe Verified
Timing: Total run 320 msec
MD Val.cycle 40 msec
MD Val.pure 10 msec
IL Ver.cycle 270 msec
IL Ver.pure 230 msec
La commande suivante procède aux contrôles de validation des métadonnées et aux contrôles de vérification de la sécurité de type MSIL pour les méthodes implémentées dans l'assembly myAssembly.exe
. Toutefois, Peverify.exe s'arrête lorsqu'il atteint le nombre d'erreurs maximal de 100. L'outil ignore également les codes d'erreur spécifiés.
peverify myAssembly.exe /break=100 /ignore=0x12345678,0xABCD1234
La commande suivante aboutit au même résultat que dans l'exemple précédent, mais elle spécifie les codes d'erreur à ignorer dans le fichier réponse ignoreErrors.rsp
.
peverify myAssembly.exe /break=100 /ignore@ignoreErrors.rsp
Le fichier réponse peut comporter une liste de codes d'erreur avec la virgule comme séparateur.
0x12345678, 0xABCD1234
Le fichier réponse peut également être mis en forme avec un code d'erreur par ligne.
0x12345678
0xABCD1234