PE(Portable Executable)란?
윈도우즈 환경의 실행 파일 포맷을 말한다.
다음은 HxD로 메모장을 실행한 모습이다.
위의 사진에 보여지는 부분이 PE헤더라고 하는 영역이다.
알아보기 힘드니 PEview 프로그램을 이용해서 PE에 대해 살펴보자
영역별로 나누어져 볼 수 있음을 알 수 있다.
영역?
PE구조에 대해 알아보자
DOS header 부터 Section header까지 PE헤더,
그 밑에 있는 Section들이 PE바디라고 한다.
파일 내용은 .text와 .data, .rsrc 섹션에 나뉘어 저장된다
양쪽에 있는 주소는 위치를 나타내며 각각
파일의 경우 Offset으로 ,
메모리의 경우 VA로 절대주소를 나타낸다
VA란 프로세스 가상메모리의 절대주소를 말하며 물리적 주소이다.
RVA란 반대로 가상메모리의 상대주소를 말한다.
[ RVA + ImageBase = VA ]
이번엔 RVA to RAW를 통해 File Offset을 구해보자
RAW(File Offset) = RVA - VirtualAddress(VA가 아니라 RVA) + PointerToRawData
위의 식을 이용하면 구해낼 수 있다.
PE구조를 분석하는 프로그램을 이용하면 직접 계산
하지 않아도 알 수 있으니
그냥 이렇다 정도로만 알면 될것같다
'Study > reversing' 카테고리의 다른 글
IAT & EAT (0) | 2017.10.12 |
---|---|
PE 헤더 구조체 (0) | 2017.10.12 |
prob3.c 핸드레이 (0) | 2017.09.21 |
prob2.c 핸드레이 (0) | 2017.09.20 |
prob1.c 핸드레이 (0) | 2017.09.19 |