Peverify.exe(PEVerify 도구)
업데이트: 2011년 4월
PEVerify 도구를 사용하면 MSIL(Microsoft Intermediate Language)을 생성하는 개발자(컴파일러 작성자, 스크립트 엔진 개발자 등)는 MSIL 코드 및 관련 메타데이터가 형식 안전성 요구 사항을 충족시키는지 여부를 쉽게 확인할 수 있습니다. 일부 컴파일러에서는 특정 언어 구문을 사용하지 않는 경우에만 확인 가능한 형식 안전 코드가 생성됩니다. 이러한 컴파일러를 사용하는 개발자라면 해당 코드의 형식이 안전한지를 확인하려고 할 것입니다. 이런 경우, 해당 파일에 대해 PEVerify 도구를 실행하면 MSIL 및 메타데이터를 검사할 수 있습니다.
이 도구는 Visual Studio 및 Windows SDK와 함께 자동으로 설치됩니다. 도구를 실행하려면 Visual Studio 명령 프롬프트 또는 Windows SDK 명령 프롬프트(CMD 셸)를 사용하는 것이 좋습니다. 이러한 유틸리티를 사용하면 설치 폴더를 탐색하지 않고도 도구를 쉽게 실행할 수 있습니다. 자세한 내용은 Visual Studio 및 Windows SDK 명령 프롬프트을 참조하십시오.
컴퓨터에 Visual Studio를 설치한 경우 작업 표시줄에서 Start, All Programs, Visual Studio, Visual Studio Tools 및 Visual Studio Command Prompt를 차례로 클릭합니다.
또는
컴퓨터에 Windows SDK를 설치한 경우 작업 표시줄에서 Start, All Programs 및 Windows SDK의 폴더를 차례로 클릭한 다음 Command Prompt(또는 CMD Shell)를 클릭합니다.
명령 프롬프트에 다음과 같이 입력합니다.
peverify filename [options]
매개 변수
인수 |
설명 |
---|---|
filename |
MSIL 및 메타데이터를 검사할 대상 PE(이식 가능한 실행) 파일을 나타냅니다. |
Option |
설명 |
---|---|
/break=maxErrorCount |
maxErrorCount 오류가 발생하면 확인을 중단합니다. 이 매개 변수는 .NET Framework 버전 2.0 이상에서 지원되지 않습니다. |
/clock |
다음 확인 시간을 밀리초 단위로 측정하여 보고합니다.
MD Val. cycle 및 IL Ver. cycle 시간에는 필수 시작 및 종료 프로시저를 수행하는 데 필요한 시간이 포함됩니다. MD Val. pure 및 IL Ver pure 시간에는 유효성 검사 또는 확인만 수행하는 데 필요한 시간이 반영됩니다. |
/help |
이 도구의 명령 구문 및 옵션을 표시합니다. |
/hresult |
16진수 형식의 오류 코드를 표시합니다. |
/ignore=hex.code [, hex.code] |
지정된 오류 코드를 무시합니다. |
/ignore=@responseFile |
지정된 지시 파일에 나열된 오류 코드를 무시합니다. |
/il |
filename으로 지정된 어셈블리에 구현된 메서드에 대해 MSIL 형식 안전성 확인 검사를 수행합니다. /quiet 옵션을 지정하지 않으면 발견된 각 문제점에 대해 자세한 설명이 반환됩니다. |
/md |
filename으로 지정된 어셈블리에 대해 메타데이터 유효성 검사를 수행합니다. 이 작업은 파일 내의 전체 메타데이터 구조에 대해 수행되며, 발생한 모든 유효성 검사 문제를 보고합니다. |
/nologo |
제품 버전과 저작권 정보를 표시하지 않습니다. |
/nosymbols |
.NET Framework 버전 2.0에서 이전 버전과의 호환성에 대한 줄 번호를 표시하지 않습니다. |
/quiet |
자동 모드를 지정합니다. 즉, 확인 문제 보고서를 출력하지 않습니다. Peverify.exe를 통해 파일의 형식 안전성 여부는 보고되지만, 형식 안전성 확인을 방해하는 문제점에 대한 정보는 보고되지 않습니다. |
/transparent |
투명 메서드만 확인합니다. |
/unique |
반복되는 오류 코드를 무시합니다. |
/verbose |
.NET Framework 버전 2.0에서 MSIL 확인 메시지에 추가 정보를 표시합니다. |
/? |
이 도구의 명령 구문 및 옵션을 표시합니다. |
설명
공용 언어 런타임에서는 응용 프로그램 코드의 형식 안전 실행을 통해 보안 및 격리 메커니즘을 적용합니다. 트러스트된 비안정형 코드를 실행하도록 보안 정책을 설정할 수는 있지만 일반적으로 비안정형 코드는 실행할 수 없습니다.
/md 및 /il 옵션이 모두 지정되지 않은 경우 Peverify.exe를 사용하면 두 종류의 검사를 모두 수행할 수 있습니다. 먼저 /md 검사가 수행되고, 오류가 없으면 /il 검사가 수행됩니다. /md 및 /il을 모두 지정하면 메타데이터에 오류가 있는 경우에도 /il 검사가 수행됩니다. 따라서 메타데이터 오류가 없는 경우 peverify filename은 peverify filename /md /il과 같습니다.
Peverify.exe를 사용하여 데이터 흐름 분석과 올바른 메타데이터에 대한 수백 개의 규칙 목록에 따라 포괄적인 MSIL 확인 검사를 수행할 수 있습니다. Peverify.exe를 사용하여 수행하는 검사에 대한 자세한 내용은 Windows SDK(소프트웨어 개발 키트)의 Tools Developers Guide 폴더에 있는 "메타데이터 유효성 검사 사양" 및 "MSIL 명령 집합 사양"을 참조하십시오.
.NET Framework 버전 2.0 이상은 dup, ldsflda, ldflda, ldelema, call, unbox 등의 MSIL 지침을 사용하여 지정된 확인할 수 있는 byref 반환을 지원합니다.
예제
다음 명령을 사용하여 어셈블리 myAssembly.exe에 구현된 메서드에 대해 메타데이터 유효성 검사 및 MSIL 형식 안전성 확인 검사를 수행합니다.
peverify myAssembly.exe /md /il
위의 요청이 성공적으로 완료되면 Peverify.exe를 사용하여 다음과 같은 메시지를 표시할 수 있습니다.
All classes and methods in myAssembly.exe Verified
다음 명령을 사용하여 어셈블리 myAssembly.exe에 구현된 메서드에 대해 메타데이터 유효성 검사 및 MSIL 형식 안전성 확인 검사를 수행합니다. 도구에서는 이러한 확인을 수행하는 데 필요한 시간을 표시합니다.
peverify myAssembly.exe /md /il /clock
위의 요청이 성공적으로 완료되면 Peverify.exe를 사용하여 다음과 같은 메시지를 표시할 수 있습니다.
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
다음 명령을 사용하여 어셈블리 myAssembly.exe에 구현된 메서드에 대해 메타데이터 유효성 검사 및 MSIL 형식 안전성 확인 검사를 수행합니다. 그러나 최대 100의 오류 수에 도달하면 Peverify.exe를 중지합니다. 도구는 지정된 오류 코드를 무시합니다.
peverify myAssembly.exe /break=100 /ignore=0x12345678,0xABCD1234
다음 명령을 사용하여 앞의 예제와 동일한 결과를 생성하지만, 지시 파일 ignoreErrors.rsp에서 무시할 오류 코드를 지정합니다.
peverify myAssembly.exe /break=100 /ignore@ignoreErrors.rsp
지시 파일에 다음과 같이 쉼표로 구분된 오류 코드 목록이 있을 수 있습니다.
0x12345678, 0xABCD1234
또한, 다음과 같이 한 줄에 하나의 오류 코드가 오도록 지시 파일의 서식을 설정할 수도 있습니다.
0x12345678
0xABCD1234
참고 항목
참조
Visual Studio 및 Windows SDK 명령 프롬프트
개념
기타 리소스
변경 기록
날짜 |
변경 내용 |
이유 |
---|---|---|
2011년 4월 |
Visual Studio 및 Windows SDK 명령 프롬프트 사용에 대한 정보를 추가했습니다. |
향상된 기능 관련 정보 |