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
, , ldflda
ldelema
, call
i 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