2009-06-05 2 views
6

다양한 정보에 대해 PE 개체를 구문 분석 할 프로그램을 만들고 있습니다.PE 파일의 MZ 서명은 무엇입니까?

사양을 읽는 중,이 2 바이트가 나타내는 것으로 예상되는 컴퓨터 유형 목록에서 찾을 수 없기 때문에 MZ 바이트가있는 이유를 찾을 수 없습니다.

누구에게 문의 할 수 있습니까?

답변

12

MZ 서명은 MS-DOS 변동 가능 16 비트 EXE 형식에서 사용되는 서명입니다.

PE 바이너리가 MZ 헤더를 포함하는 이유는 이전 버전과의 호환성을위한 것입니다. 실행 파일이 DOS 기반 시스템에서 실행되면 MZ 버전 (Win32 시스템에서 프로그램을 실행해야한다는 거의 항상 스텁이됩니다)이 실행됩니다.

물론 이것은 오늘날 세계가 도스에서 그 뒤를 쫓아 갈 때 돌아 왔을 때와 마찬가지로 유용하지 않습니다.

그때 실제로 DOS 버전과 Win32 버전을 하나의 바이너리로 묶는 몇 가지 프로그램이있었습니다.

그리고 대부분의 일들에서 Windows의 역사를 다루는 것과 같이, 레이몬드 첸이 주제에 대한 몇 가지 흥미로운 기사가 ​​있습니다

+4

MZ 헤더 (Mark Zbikowski, MS-DOS 개발자의 머리 글자)의 기원에 대한 역사적인 정보는 위키 백과 : http://en.wikipedia.org/wiki를 참조하십시오./DOS_executable – none

0

실행 파일의 "마법 번호"입니다. 당신이 무시할 수있는 유산.

Dos executable

2

내가 wikipedia articleIczelion's PE Tutorial을 읽고, 그것을 볼 때, 그것은 호환성을 유지하고 MZ 헤더 옆에 특정 코드를 실행하는 DOS 또는 HX DOS Extender를 사용하려면 단지가있다.

devsource에서 MZ는 MS-DOS 개발자 중 한 명인 Mark Zbikowski를 의미합니다. 그리고 운영 체제가 MZ 헤더의 데이터를 어떻게 처리하고 처리하는지.

1

Mark Zbikowski 원래 MS-에 자신의 이니셜을 넣어 DOS exe 형식. 이 서명은 DOS에서 훨씬 간단한 .COM 형식의 .EXE 파일을 구분하는 데 필요합니다.

모든 PE 파일에는 16 비트 DOS 프로그램도 들어 있으므로이 .EXE 헤더로 시작됩니다. 이 DOS 프로그램은 일반적으로 "이 프로그램에는 Microsoft Windows가 필요합니다"또는 비슷한 것을 인쇄합니다. 현대 컴파일러가 여전히 DOS 스텁을 생성하는지는 모르지만 PE 표준에서는 여전히 PE가 16 비트 EXE 헤더로 시작한다고합니다.

+0

도스 스텁이 없다면 유효한 PE/COFF가 아닙니다. 도스 헤더에 PE 헤더가 시작되는 위치를 알려주는 필드가 있기 때문입니다. –

2

초기 Windows® 1.x, 2.x 및 3.xx OS는 Microsoft® DOS와 동일한 볼륨에 존재했을뿐만 아니라 MS-DOS의 최상위에서 실행되었습니다 OS. 가능할뿐만 아니라 사용자가 DOS에서 일부 Windows® 프로그램을 실행하려고 할 가능성이 높습니다. 따라서 Microsoft® 프로그래머는 모든 Windows® 프로그램이 DOS에서 Windows® 프로그램을 실행하려고 할 때 사용자에게 알릴 수있는 각 Windows 실행 파일 앞에 간단한 16 비트 DOS 프로그램을 설치하도록했습니다.이것은 모든 도스 "스텁"프로그램입니다. 리소스 : http://thestarman.pcministry.com/asm/debug/DOSstub.htm