Peverify.exe (Narzędzie PEVerify)

Narzędzie PEVerify pomaga deweloperom, którzy generują język Microsoft Intermediate Language (MSIL) (na przykład twórcom kompilatorów i deweloperom aparatów skryptów), w określaniu, czy ich kod MSIL i skojarzone metadane spełniają wymagania bezpieczeństwa typów. Niektóre kompilatory generują weryfikowalny kod bezpieczny ze względu na typy tylko wtedy, gdy unika się używania pewnych konstrukcji języka. Jeśli używasz takiego kompilatora, możesz sprawdzić, czy bezpieczeństwo typu kodu nie zostało naruszone. Możesz uruchomić narzędzie PEVerify na plikach, aby sprawdzić plik MSIL i metadane.

To narzędzie jest instalowane automatycznie z programem Visual Studio. Aby uruchomić narzędzie, użyj programu Visual Studio wiersz polecenia dla deweloperów lub Visual Studio Developer PowerShell.

Składnia

peverify filename [options]  

Parametry

Argument Opis
Pod nazwą Przenośny plik wykonywalny (PE), który ma zostać sprawdzony pod kątem języka MSIL i metadanych.
Opcja Opis
/break =maxErrorCount Przerywa weryfikację po błędach maxErrorCount .

Ten parametr nie jest obsługiwany w .NET Framework w wersji 2.0 lub wyższej.
/clock Mierzy i raportuje następujące czasy weryfikacji w milisekundach:

MD Val. Cyklu
Cykl sprawdzania poprawności metadanych

MD Val. Czysty
Czysty czas sprawdzania poprawności metadanych

IL Ver. Cyklu
Cykli weryfikacji języka pośredniego firmy Microsoft (MSIL)

IL Ver pure
Czysty czas weryfikacji języka MSIL

Cykl MD Val. iczasy cyklu IL Ver. obejmują czas wymagany do wykonania niezbędnych procedur uruchamiania i zamykania. Wartości MD Val. pure iIL Ver pure times odzwierciedlają czas wymagany tylko do przeprowadzenia weryfikacji lub weryfikacji.
/help Wyświetla składnię polecenia i opcje narzędzia.
/hresult Wyświetla kody błędów w formacie szesnastkowym.
/ignore=hex.code [, hex.code] Ignoruje wymienione kody błędów.
/ignore = @responseFile Ignoruje kody błędów wymienione w określonym pliku odpowiedzi.
/il Wykonuje testy weryfikacji bezpieczeństwa typu MSIL dla metod zaimplementowanych w zestawie określonym przez nazwę pliku. Narzędzie zwraca szczegółowe opisy każdego znalezionego problemu, chyba że określisz opcję /quiet .
/md Przeprowadza sprawdzanie poprawności metadanych w zestawie określonym przez nazwę pliku. Ta opcja przekieruje pełną strukturę metadanych w pliku i zgłasza wszystkie napotkane problemy z walidacją.
/nologo Pomija wyświetlanie informacji o wersji i prawach autorskich produktu.
/nosymbols W wersji 2.0 .NET Framework wyłącza numery wierszy w celu zapewnienia zgodności z poprzednimi wersjami.
/quiet Określa tryb cichy. Wyłącza raportowanie problemów weryfikacji. Peverify.exe w dalszym ciągu raportuje, czy plik jest bezpiecznych pod względem typów, ale nie raportuje problemów uniemożliwiających weryfikację bezpieczeństwa typów.
/transparent Weryfikuje tylko metody przezroczyste.
/unique Ignoruje powtarzające się kody błędów.
/verbose W .NET Framework w wersji 2.0 wyświetla dodatkowe informacje w komunikatach weryfikacji MSIL.
/? Wyświetla składnię polecenia i opcje narzędzia.

Uwagi

Środowisko uruchomieniowe języka wspólnego opiera się na wykonywaniu kodu aplikacji bezpiecznego pod kątem typów, aby ułatwić wymuszanie stosowania mechanizmów zabezpieczeń i izolacji. Zwykle nie można uruchomić kodu, który nie jest bezpieczny pod weryfikowalnym typem, chociaż można ustawić zasady zabezpieczeń, aby umożliwić wykonywanie zaufanego, ale nieweryfikowalnego kodu.

Jeśli nie / md ani /il opcje są określone, Peverify.exe wykonuje oba typy kontroli. Peverify.exe najpierw sprawdza /md . Jeśli nie ma żadnych błędów, /il sprawdza. Jeśli określisz zarówno /mdi /il, /il sprawdza, nawet jeśli występują błędy w metadanych. W związku z tym, jeśli nie ma żadnych błędów metadanych, peverifyfilename jest odpowiednikiem peverifyfilename/md/il.

Peverify.exe wykonuje kompleksową weryfikację MSIL na podstawie analizy przepływu danych oraz listy kilkuset reguł poprawności metadanych. Aby uzyskać szczegółowe informacje na temat testów Peverify.exe, zobacz "Metadata Validation Specification" (Specyfikacja walidacji metadanych) i "MSIL Instruction Set Specification" (Specyfikacja zestawu instrukcji MSIL) w folderze Tools Developers Guide (Przewodnik deweloperów narzędzi) w Windows SDK.

.NET Framework wersji 2.0 byref lub nowszej obsługuje weryfikowalne zwroty określone przy użyciu następujących instrukcji MSIL: dup, ldsflda, , ldfldaldelema, calli unbox.

Przykłady

Następujące polecenie wykonuje sprawdzanie poprawności metadanych i sprawdzanie bezpieczeństwa typu MSIL dla metod zaimplementowanych w zestawie myAssembly.exe.

peverify myAssembly.exe /md /il  

Po pomyślnym zrealizowaniu powyższego żądania Peverify.exe wyświetla następujący komunikat.

All classes and methods in myAssembly.exe Verified  

Następujące polecenie wykonuje sprawdzanie poprawności metadanych i sprawdzanie bezpieczeństwa typu MSIL dla metod zaimplementowanych w zestawie myAssembly.exe. Narzędzie wyświetla czas potrzebny do wykonywania tych sprawdzeń.

peverify myAssembly.exe /md /il /clock  

Po pomyślnym zrealizowaniu powyższego żądania Peverify.exe wyświetla następujący komunikat.

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  

Następujące polecenie wykonuje sprawdzanie poprawności metadanych i sprawdzanie bezpieczeństwa typu MSIL dla metod zaimplementowanych w zestawie myAssembly.exe. Peverify.exe zatrzymuje się jednak, gdy liczba błędów przekroczy 100. Narzędzie ignoruje także wymienione kody błędów.

peverify myAssembly.exe /break=100 /ignore=0x12345678,0xABCD1234  

Następujące polecenie daje ten sam wynik co w poprzednim przykładzie, ale określa kody błędów do zignorowania w pliku odpowiedzi ignoreErrors.rsp.

peverify myAssembly.exe /break=100 /ignore@ignoreErrors.rsp  

Plik odpowiedzi może zawierać rozdzielaną przecinkami listę kodów błędów.

0x12345678, 0xABCD1234  

Można też sformatować plik odpowiedzi, podając każdy kod błędu w osobnym wierszu.

0x12345678  
0xABCD1234  

Zobacz też