본문 바로가기

Security/소프트웨어 보안

[PE]PE Format 공부. 1

반응형

VA(Virtual Address) : 프로세스 가상 메모리의 절대주소

RVA(Relative Virtual Address) : 어느 기준 위치(ImageBase)에서부터의 상대주소를 말함


즉. 두개의 관계를 식으로 표현하면


RVA + ImageBase = VA


IAT(Import Address Table) : Windows 운영체제의 핵심 개념인 process, memory, DLL 구조 등에 대한 내용이 함축되어 있음. 쉽게 말해 프로그램이 어떤 라이브러리에서 어떤 함수를 사용하고 있는지를 기술한 테이블


Import Address Table 예시


IAT는 DLL(Dynamic Linked Library)과 밀접한 관계가 있는데, DLL이 나오기 이전에 어떤 함수를 사용했을 때, 그 함수의 바이너리 코드를 그대로 가져와서 프로그램에 삽입을 시켰음. 하지만 이렇게 되면 매우 비효율적이라(메모리 낭비) 다음과 같이 DLL 개념을 고안해냄


1. 프로그램에 라이브러리를 포함시키지 말고 별도의 파일(DLL)로 구성하여 필요 할 때 마다 불러 쓰자

2. 일단 한 번 로딩된 DLL 의 코드, 리소스는 Memory Mapping 기술로 여러 Process에서 공유해 쓰자

3. 라이브러리가 업데이트 되었을 떄 해당 DLL파일만 교체하면 되니 쉽고 편해서 좋다

[출저] 리버싱 핵심원리 (나뭇잎 책)


DLL로딩 방식은 두가지

- 프로그램에서 사용되는 순간에 로딩하고 사용이 끝나면 메모리에서 해제 (Explicit Linking)

- 프로그램이 종료될 때 메모리에서 해제 (Implicit Linking)


IAT는 두번째 로딩 방식을 사용함


PE파일은 자신이 어떤 라이브러리를 임포트하고 있는지 IMAGE_IMPORT_DESCRIPTOR 구조체에 명시하고 있음

반응형