IT하는 참새
PE 02 본문
PE의 기본구조에 대해 알아보겠습니다
두가지 경우가 있습니다.
1. 하드디스크에 '파일'로 존재해 있을 때
2. 실행되어 메모리에 올라가 있을 때
두 가지 경우에 대해 잘 이해해야 합니다.
------------------------------------------------------------------------------------------------------
두가지 경우가 나뉘었더라도 PE구조라는것은 변하지 않았습니다! 얄루
PE구조를 말로설명한 후에 그림으로 나타내보겠습니다.
DOS header
DOS Stub
NT header
section header1
section header2
.
.
.
------------------
section1 (body)
section2 (body)
.
.
.
------------------
파란색: PE Header
초록색: PE Body
------------------
PE구조는 구글에 검색 조금만해도 사진이 나오는데
솔직히 처음공부하는 입장에서는 어려울것 같...아서! 제가 만들어왔습니다.
PE기본적인 구조는 저렇게 생겨먹었습니다.
(그림에서도 파란색, 초록색 구분해놨습니다.)
이제 분석을 해보겠습니다!
그림이 두개인데요.
File이라고 써있는그림이 첫번째 말씀드린 "하드디스크에 그냥 파일로 존재해 있을 때"
Memory라고 써있는그림이 두번째 말씀드린 "실행되어 메모리에 올라가 있을 때" 입니다
그냥 훑어보면 오~ PE구조는 이런 구조를 가지고 File일때와 Memory일때 크기가 다른가보구나!
이런생각이 들었으면 여기까지 잘 오신겁니다ㅋㅋㅋ
또 보면 NULL Padding이라는게 보입니다
어디있나요? 이제 배웠으니 전문용어로 말해봅시다
PE헤더의 끝부분과, PE바디안에서 각 섹션들이 끝나는지점에 존재합니다... (짝짝)
컴퓨터는 음.. 크게보면 프로그램 실행할때 (파일, 메모리, 네트워크, 패킷 처리할 때)
효율을 높히기위해서 "최소 기본 단위" 라는 개념을 사용합니다.
여기서 그럼! 컴퓨터가 프로그램 실행할때 이런 개념을 사용한다고 했죠?
그럼 PE구조도 실행하겠네요?? 왜요?
프로그램 실행하는게 PE파일 실행하는거나 마찬가지니까!
그럼이제 PE파일이라고 바꿔말하겠습니다.
PE구조에서는 "최소 기본 단위" 라는 개념을 사용합니다.
PE에서 각 섹션의 시작위치는 최소 기본단위의 배수인 주소값에서 시작해야합니다.
(이유는 다시 읽어보면 알 수 있습니다)
그래도 예시를 들어보는게 이해하기 더 쉽겠죠.
최소기본단위는 1000이라고 하고
section1 의 크기=400, 시작주소=00001000 이라고 하겠습니다.
그렇다면 section1은
1000번지에서 400만큼 데이터를 저장하겠죠?
(1000~1399까지 section1의 데이터가 저장될거에요)
그런데 최소기본단위가 1000이라네요?
그럼 어떻게해 있지도않은 데이터를 집어넣어?? .....가 아니라
공간 맞춰주기위해서 NULL Padding을 집어넣습니다.
(NULL Padding의 값은 00이에요 00 00 00 00 뭐 이렇게.. 나중에 볼거임)
그럼 section1은 크기는 400이지만 최소기본단위 개념으로 인해서
1000~1999주소까지 사용하게됩니다
(파헤쳐보면, 1000~1399까지는 데이터, 1400~1999까지는 NULL Padding으로 가득차 있죠)
(이거 최소단위 배수대로 안맞춰주면 프로그램 실행안되요~)
이게 NULL Padding의 개념입니다.
마지막으로 VA와 RVA
VA = Virtual Address (가상메모리의 절대주소)
RVA = Relative Virtual Address (가상메모리의 상대주소)
ImageBase = (기준주소)
딱 보면 VA는 막 와 나는 무조건 이거야 절대로 이 주소야! 이런거 같고
RVA는 아 나는 상대적으로 저만큼 있는 주소야! 이런거 같고
ImageBase 는 세계수같이 음음 기준은 여기야 이런거 같네요
( VA = ImageBase + RVA ) 공식임. 외우셈
PE에서의 정보는 RVA형태로 되어있는것이 많다.
이거만 일단 알아두면 PE공부하면서 자연스레 알게됩니다.
PE 02 끝
---------------------------------------------------------------------------------------------------------
다음이야기:
PE구조를 이루고 있는 애들하나씩 다 살펴볼겁니다
양이 많기는 한데 겁만 안먹으면 쉽게 이해할 수 있습니다.