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. |
/niepowtarzalny | 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 nazwy 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
, ldflda
call
ldsflda
ldelema
, 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.rsp
odpowiedzi .
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