Peverify.exe (Narzędzie PEVerify)

Narzędzie PEVerify pomaga deweloperom, którzy generują język Microsoft Intermediate Language (MSIL) (np. autorzy kompilatora i deweloperzy aparatów skryptów), aby ustalić, 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 nie naruszono bezpieczeństwa typu kodu. Narzędzie PEVerify można uruchomić na plikach, aby sprawdzić MSIL i metadane.

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

Składnia

peverify filename [options]

Parametry

Argument opis
filename 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.
/Zegar Mierzy i raportuje następujące czasy weryfikacji w milisekundach:

MD Val. cycle
Cykl sprawdzania poprawności metadanych

MD Val. Czysty
Czysty czas sprawdzania poprawności metadanych

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

IL Ver czysty
Czysty czas weryfikacji języka MSIL

Cykl MD Val. i IL Ver. obejmują czas wymagany do wykonania niezbędnych procedur uruchamiania i zamykania. Wartość MD Val. pure i IL Ver czysty czas odzwierciedlają czas wymagany tylko do przeprowadzenia weryfikacji lub weryfikacji.
/Pomoc 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 Przeprowadza kontrole weryfikacji bezpieczeństwa typu MSIL dla metod zaimplementowanych w zestawie określonym przez nazwę pliku. Narzędzie zwraca szczegółowe opisy dla każdego znalezionego problemu, chyba że określisz /quiet opcji.
/Md Przeprowadza sprawdzanie poprawności metadanych dla zestawu określonego przez nazwę pliku. Ta opcja przeprowadzi 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 programie .NET Framework w wersji 2.0 pomija numery wierszy pod kątem 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.
/Unikatowy Ignoruje powtarzające się kody błędów.
/verbose W programie .NET Framework w wersji 2.0 są wyświetlane 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 weryfikowalny , nie można uruchomić, chociaż można ustawić zasady zabezpieczeń, aby umożliwić wykonywanie zaufanego, ale niezweryfikowalnego kodu.

Jeśli nie określono /md ani /il opcji, Peverify.exe wykonuje oba typy kontroli. Peverify.exe najpierw wykonuje /md sprawdza. Jeśli nie ma żadnych błędów, /il kontrole są wykonywane. Jeśli określisz zarówno /md, jak i /il, /il sprawdza się, nawet jeśli w metadanych występują błędy. W związku z tym, jeśli nie ma błędów metadanych, peverify nazwa pliku jest odpowiednikiem peverifynazwa_pliku/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 wykonania, zobacz "Specyfikacja weryfikacji metadanych" i "Specyfikacja zestawu instrukcji MSIL" w folderze Podręcznik deweloperów narzędzi w zestawie SDK systemu Windows.

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

Przykłady

Następujące polecenie wykonuje kontrole poprawności metadanych i sprawdzanie weryfikacji 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 kontrole poprawności metadanych i sprawdzanie weryfikacji 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 kontrole poprawności metadanych i sprawdzanie weryfikacji 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 taki sam wynik jak w powyższym przykładzie, ale określa kody błędów, które mają być ignorowane w pliku ignoreErrors.rspodpowiedzi .

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ż