반응형

PE(Portable Executable) File 이란?

PE파일은 Windows 운영체제에서 사용되는 실행파일들을 말한다. 리버싱은 어떤 프로그램의 구조와 실행원리 등을 분석하는 것이므로 PE파일 구조를 상세히 알아보는 것이 중요하다.




PE File 종류




PE File의 대략적 구조



PE 파일의 구조에서 Dos header에서 Section header까지를 PE헤더라 하고, 나머지 부분을 PE바디라고 한다. 파일의 내용은 코드(.text), 데이터(.data), 리소스(.rsrc)로 나뉘어져 섹션에 저장된다.  섹션 헤더에는 각 섹션에 대한 크기, 위치, 속성 등이 정의되어 있고, PE헤더의 끝과 섹션의 끝부분에는 NULL padding 영역이 존재한다. 컴퓨터에서 패킷을 처리할 때 효율을 높이기 위해 최소 기본 단위 개념이 사용된 것이다. 파일/메모리에서 섹션의 시작은 최소 기본 단위의 배수에 해당되는 위치고 나머지는 NULL로 채워진다.




VA?? RVA??

PE파일과 메모리는 구조는 같으나, 파일은 offset, 메모리는 VA로 위치를 표시한다. (위의 그림에서는 offset이다.) 

VA프로세스의 가상 메모리의 절대주를 뜻하고, RVA어느 기준위치에서부터 상대위치를 뜻한다. 관계식은 아래와 같다.



PE 헤더 내의 정보는 RVA 형태로 되어있는게 많은데, 그 이유는 PE파일이 프로세스 가상 메모리의 특정 위치에 로딩될 때, 다른 PE파일이 이미 로딩되어 있을 수 있기 때문이다. 그럴 경우 다른 위치로 로딩을 다시 해주어야 하는데(재배치) VA로 되어있으면, 정상적인 엑세스가 이루어지지 않을 수도 있기 때문이다. RVA는 재배치가 발생해도 기준위치에 대한 상대위치가 바뀌지 않기 때문에 원할한 로딩이 이루어진다.



반응형

'Study > Reversing' 카테고리의 다른 글

"pwnable.kr" fd 문제풀이  (0) 2014.11.04
PE헤더-NT Header  (0) 2014.08.03
PE헤더-Dos header/Dos stub  (0) 2014.08.03
리버싱 분석방법-정적분석, 동적분석  (0) 2014.07.07

+ Recent posts