dumpbin은 새로운 유틸리티가 아니다. 그러나 .NET Framework에서는 확장된 PE 형식을 이용해 IL을 저장하기 때문에, 전체 binary를 export하거나 import할 때뿐만 아니라 실행파일이나 DLL의 구조를 검사할 때 매우 유용하다. 일반적인 형식은 다음과 같다.
사용법 : DUMPBIN [options] [files] /all PE파일의 모든 정보를 표시한다. /exports PE파일의 모든 export를 표시한다. /header PE파일의 모든 header 정보를 표시한다. /imports PE파일을 위한 모든 import 정보를 표시한다.
Track this back : http://maverick.xtorm.net/trackback/84
.NET Framework에서의 PE란?
윈도우 실행파일인 EXE나 DLL은 마이크로소프트의 공통 객체 파일 포맷(COFF, Common Object File Format)에서 파생된 ‘PE 파일 포맷’을 따라야 한다. 이 두 포맷은 공개적으로 사용될 수 있으며, 윈도우 OS는 PE파일의 포맷을 이해하기 때문에 DLL과 EXE를 로드하고 실행할 수 있다. 즉, 윈도우 OS에서 실행가능한 파일을 생성하기 위한 컴파일러는 PE/COFF 규격을 따라야 한다.
PE 파일은 크게 아래와 같이 구성됩니다. PE/COFF Header CLR Header CLR Data(Meta Data + IL) Native Data(.data, .rdata, .rsrc, .text)
닷넷 PE 파일은 이처럼 일반 PE파일에 CLR Header와 CLR Data 부분이 추가된 것이다. CLR헤더는 PE파일이 닷넷 실행 파일임을 나타내는 정보를 저장하며, CLR 데이터 부분은 프로그램이 어떻게 실행될지 결정하는 Meta Data와 IL 코드를 포함한다. 닷넷 실행파일이 이러한 부분을 갖고 있는지 확인하고 싶다면, 윈도우 실행파일의 내용을 읽을 수 있는 텍스트로 변환해주는 dumpbin.exe을 사용하면 된다.