오브의 빛나는 별

2부 13장 PE File Format(2) 본문

리버싱

2부 13장 PE File Format(2)

오브의 별 2022. 4. 23. 19:48
반응형

안녕하세요, 오브입니다.

오늘은 PE 헤더의 많은 구조체 중 DOS Header와 DOS Stub에 대해 알아보겠습니다.

https://staraube.tistory.com/51?category=548043 

 

2부 13장 PE File Format(1)

안녕하세요, 오브입니다. 오늘은 PE 파일의 기본구조와 VA, RVA에 대해 알아보겠습니다. PE File Format 13.1. 소개 PE 파일: Windows 운영체제에서 사용되는 실행 파일 형식. 기존 UNIX에서 사용되는 COFF 기

staraube.tistory.com

 

PE File Format

13.3. PE 헤더

13.3.1. DOS Header

  • DOS 파일에 대한 하위 호환성 고려하여 PE 헤더 앞부분에 기존 DOS EXE Header를 확장시킨 IMAGE_DOS_HEADER 구조체 존재
  • IMAGE_DOS_HEADER 구조체 크기 40
    • e_magic : DOS signature (4D5A =) ASCII 값 “MZ")
    • e_Ifanew : NT header의 옵셋을 표시(파일에 따라 가변적인 값을 가짐)
  • 모든 PE 파일은 시작 부분(e_magic)에 DOS signature(”MZ”) 존재
  • e_Ifanew 값이 가리키는 위치에 NT Header 구조체 존재
  • notepad.exe를 hex editor로 열어서 IMAGE_DOS_HEADER 구조체를 확인해보면 파일 시작 2바이트는 4D5A이며, e_Ifanew 값은 000000E0임
  • Intel 계열 CPU는 자료를 역순으로 저장하는 리틀 엔디언임

 

13.3.2. DOS Stub

  • DOS Header 밑에는 DOS Stub 존재.
    • DOS Stub 존재 여부는 옵션이면 크기 일정x
    • DOS Stub이 없어도 파일 실행에는 문제x
  • DOS Stub는 코드와 데이터 혼합
  • 파일 옵셋 40~4D 영역은 16비트 어셈블리 명령어임
  • PE 파일로 인식하기 때문에 32비트 Windows OS에서는 이쪽 명령어 실행x
  • Notepad.exe 파일을 DOS 환경에서 실행하거나, DOS용 디버거를 이용하면 코드 실행 가능
  • cmd.exe 창에서 “debug C:\Windows\notepad.exe” 입력
  • “u” 입력하면 16비트 어셈블리 명령어 나타남
  • notepad.exe파일은 32비트용 PE 파일이지만 MS-DOS 호환 모드 가지고 있어서 DOS 환경에서 실행하면 DOS EXE 실행코드가 동작하면서 문자열 출력 후 종료
  • 하나의 실행 파일에 DOS와 Windows에서 모두 실행 가능한 파일을 만들 수도 있음
반응형

'리버싱' 카테고리의 다른 글

2부 13장 PE File Format(4)  (0) 2022.04.24
2부 13장 PE File Format(3)  (0) 2022.04.24
2부 13장 PE File Format(1)  (0) 2022.04.23
1부 3장 리틀 엔디언 표기법  (0) 2022.04.23
1부 2장 Hello World! 리버싱(3)  (0) 2022.04.23