Peverify.exe (ferramenta PEVerify)
A ferramenta PEVerify ajuda desenvolvedores que geram MSIL (como gravadores de compiladores e desenvolvedores de mecanismos de script) a determinar se o código MSIL e os metadados associados atendem aos requisitos de segurança de tipo. Alguns compiladores só gerarão código fortemente tipado verificável se você evitar usar determinados constructos de linguagem. Se estiver usando um compilador assim, você talvez queira verificar se não comprometeu a segurança de tipo do código. É possível executar a ferramenta PEVerify nos arquivos para verificar MSIL e metadados.
Essa ferramenta é instalada automaticamente com o Visual Studio. Para executar a ferramenta, use o Prompt de Comando do Desenvolvedor do Visual Studio ou o PowerShell do Desenvolvedor do Visual Studio.
Sintaxe
peverify filename [options]
Parâmetros
Argumento | Descrição |
---|---|
filename | O arquivo PE (Portable Executable) para o qual MSIL e metadados devem ser verificados. |
Opção | Descrição |
---|---|
/break= maxErrorCount | Anula a verificação depois de erros maxErrorCount. Esse parâmetro não é compatível no .NET Framework versão 2.0 ou posterior. |
/clock | Mede e relata os seguintes tempos de verificação em milissegundos: MD Val. cycle Ciclo de validação dos metadados MD Val. pure Validação dos metadados pura IL Ver. cycle Ciclo de verificação MSIL IL Ver pure Verificação MSIL pura Os tempos de MD Val. cycle e IL Ver. cycle incluem o tempo necessário para a realização de procedimentos de inicialização e desligamento necessários. Os tempos de MD Val. pure e IL Ver pure refletem o tempo necessário para a realização da validação ou apenas da verificação. |
/help | Exibe sintaxe de comando e opções para a ferramenta. |
/hresult | Exibe códigos de erro em formato hexadecimal. |
/ignore= hex.code [, hex.code] | Ignora os códigos de erro especificados. |
/ignore=@ responseFile | Ignora os códigos de erro listados no arquivo de resposta especificado. |
/il | Realiza verificação de segurança do tipo MSIL dos métodos implementados no assembly especificado por filename. A ferramenta retorna descrições detalhadas para cada problema encontrado, a menos que você especifique a opção /quiet. |
/md | Realiza verificações de validação de metadados no assembly especificado por filename. Essa opção analisa a estrutura de metadados completa dentro do arquivo e relata todos os problemas de validação encontrados. |
/nologo | Suprime a exibição da versão do produto e as informações de direitos autorais. |
/nosymbols | No .NET Framework versão 2.0, suprime números de linha para compatibilidade com versões anteriores. |
/quiet | Especifica o modo silencioso; suprime saída dos relatórios de problema de verificação. Peverify.exe ainda relata se o arquivo é fortemente tipado, mas não relata informações sobre problemas que impeçam a verificação de segurança do tipo. |
/transparent |
Verifique apenas os métodos transparentes. |
/unique | Ignora códigos de erro repetidos. |
/verbose | No .NET Framework versão 2.0, exibe informações adicionais em mensagens de verificação MSIL. |
/? | Exibe sintaxe de comando e opções para a ferramenta. |
Comentários
O Common Language Runtime depende na execução fortemente tipada do código de aplicativo para ajudar a impor mecanismos de segurança e isolamento. Normalmente, o código que não é fortemente tipado verificável não pode ser executado, embora seja possível definir a política de segurança para permitir a execução de código confiável, mas não verificável.
Se as opções /md ou /il não forem especificadas, Peverify.exe realizará ambos os tipos de verificações. Peverify.exe realiza as verificações de /md primeiro. Se não houver erros, as verificações de /il serão feitas. Se você especificar /md e /il, as verificações de /il serão feitas mesmo se houver erros nos metadados. Portanto, se não houver erros de metadados, peverify filename é equivalente a peverify filename /md /il.
Peverify.exe realiza verificações MSIL abrangentes com base na análise do fluxo de dados mais uma lista de várias centenas de regras em metadados válidos. Saiba mais sobre as verificações realizadas por Peverify.exe em "Especificação de Validação dos Metadados" e em "Especificação do Conjunto de Instruções MSIL" na pasta Guia de Desenvolvedores de Ferramentas no SDK do Windows.
O .NET Framework versão 2.0 ou posterior dá suporte a retornos de byref
verificáveis usando as seguintes instruções MSIL: dup
, ldsflda
, ldflda
, ldelema
, call
e unbox
.
Exemplos
O comando a seguir realiza verificações de validação dos metadados e verificações de segurança fortemente tipada MSIL para métodos implementados no assembly myAssembly.exe
.
peverify myAssembly.exe /md /il
Mediante a conclusão bem-sucedida da solicitação acima, Peverify.exe exibe a mensagem a seguir.
All classes and methods in myAssembly.exe Verified
O comando a seguir realiza verificações de validação dos metadados e verificações de segurança fortemente tipada MSIL para métodos implementados no assembly myAssembly.exe
. A ferramenta exibe o tempo necessário à realização dessas verificações.
peverify myAssembly.exe /md /il /clock
Mediante a conclusão bem-sucedida da solicitação acima, Peverify.exe exibe a mensagem a seguir.
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
O comando a seguir realiza verificações de validação dos metadados e verificações de segurança fortemente tipada MSIL para métodos implementados no assembly myAssembly.exe
. Peverify.exe para, no entanto, quando alcança a contagem de erros máxima de 100. A ferramenta também ignora os códigos de erro especificados.
peverify myAssembly.exe /break=100 /ignore=0x12345678,0xABCD1234
O comando a seguir produz o mesmo resultado que o exemplo anterior acima, mas especifica os códigos de erro que serão ignorados no arquivo de resposta ignoreErrors.rsp
.
peverify myAssembly.exe /break=100 /ignore@ignoreErrors.rsp
O arquivo de resposta pode conter uma lista separada por vírgulas de códigos de erro.
0x12345678, 0xABCD1234
O arquivo de resposta também pode ser formatado com um código de erro por linha.
0x12345678
0xABCD1234