본문 바로가기

2. Reversing (리버싱)/2) 개념 정리

[26.04.10] 개구리버싱 3주차 활동

9-11강 요약 정리

1. PE File Format (Portable Executable)

Windows OS에서 실행 가능한 파일 형식 의미함

  • 32bit: PE
  • 64bit: PE+ / PE32+

PE 파일 종류

  • 실행 계열: exe, scr
  • 드라이버 계열: sys, vxd
  • 라이브러리 계열: dll, ocx, cpl, drv
  • 오브젝트 계열: obj

※ obj는 링크 전 단계 파일이라 단독 실행 불가

PE 파일 특징

실행에 필요한 다양한 정보들이 헤더(Header)에 저장됨

PE 파일 분석 =
PE Header 내부 구조체(Structure) 분석 과정이라고 볼 수 있음

2. 주소 개념 (VA / RVA)

VA (Virtual Address)

프로세스 가상 메모리에서 사용하는 절대 주소

RVA (Relative Virtual Address)

기준점 ImageBase 기준 상대 주소

ImageBase

프로그램이 메모리에 로드되는 시작 주소

관계식

RVA + ImageBase = VA

왜 RVA 사용함?

PE 파일을 특정 메모리에 로드하려는데
이미 다른 프로그램이 있으면 재배치(Relocation) 발생함

→ 다른 빈 주소로 이동해야 함

만약 절대주소(VA)만 사용하면 충돌 발생

그래서 상대주소(RVA) 사용함

PE 파일 내부 주소 대부분 RVA 방식 사용

3. DOS Header

PE 파일 맨 앞에 존재하는 필수 헤더

목적
MS-DOS와의 호환성 유지

구조체 이름
IMAGE_DOS_HEADER

크기
64 bytes

주요 필드

1) e_magic

DOS Signature


4D 5A (ASCII : MZ)

→ 모든 PE 파일 시작 부분에 존재

 

2) e_lfanew

NT Header 시작 위치 가리키는 값


NT Header까지 떨어진 거리(Offset) 의미

위치
Offset 3Ch

크기
4 bytes

4. DOS Stub

위치
DOS Header 와 NT Header 사이

필수 아님 → Optional 영역

동작

DOS 환경

  • 내부 16bit 코드 실행됨
  • 메시지 출력


This program cannot be run in DOS mode

Windows 환경

  • 이 영역 실행 안함
  • 바로 NT Header로 이동

보안 관점

일반 실행에는 영향 없음

하지만

  • 데이터 숨김
  • 악성코드 삽입

같은 은닉 공간으로 악용될 가능성 존재