무민이의 반반무많이

PE 파일의 구조와 이해 ④ 본문

Reversing/Basic

PE 파일의 구조와 이해 ④

M00min 2016.09.23 23:09

(공감과 댓글 하나는 글쓴이에게 큰 힘이 됩니다.)


PE 파일의 구조와 이해 ① : http://moomini.tistory.com/93

PE 파일의 구조와 이해 ② : http://moomini.tistory.com/94

PE 파일의 구조와 이해 ③ : http://moomini.tistory.com/95

PE 파일의 구조와 이해 ④ : http://moomini.tistory.com/96


■ DLL(Dynamic-Link Library)

- DLL(Dynamic-Link Library)는 마이크로소프트 윈도우에서 구현된 동적 라이브러리이다. 내부에는 다른 프로그램이 불러서 쓸 수 있는 다양한 함수들을 가지고 있는데, 확장 DLL인 경우에는 클래스를 가지고 있기도 한다. DLL은 COM을 담는 그릇의 역할도 한다.

 묵시적 링킹(Implicit Linking) : 실행 파일 자체에 어떤 DLL의 어떤 함수를 사용하겠다는 정보를 포함시키고, 운영체제가 프로그램 실행 시 해당 함수들을 초기화 한 후 그것을 이용하는 방법

 명시적 링킹(Explicit Linking) : 프로그램이 실행 중일 때, API를 이용하여 DLL 파일이 있는지 검사하고, 동적으로 원하는 함수만 불러와서 쓰는 방법

- Windows에서는 동일한 기능을 하는 함수들에 대해 모듈 단위로 제공

- 여러 프로그램에서 사용되는 중복된 모듈에 대해서는 메모리에 한번만 적재하여, 메모리 사용량을 줄일 수 있다.

- 메모리 로딩 주소는 가변적이기 때문에, 자신이 사용할 모듈이 메모리에 로드 된 위치를 알 수 없다.

- 실행 파일이 메모리에 로드 될 때, 자신이 사용할 모듈 및 함수들의 위치에 대해 알아오는 과정이 필요

- DLL의 경우 자신이 제공할 함수들의 위치에 대해 공개하는 과정이 필요


■ IAT(Import Address Table)

- 자신이 사용할 DLL 등의 주소를 정의한다.

- IMAGE_DATA_DIRECTORY[IMAGE_DIRECTORY_ENTRY_IMPORT]에 IAT의 시작 주소가 정의되어 있다.

typedef struct _IMAGE_IMPORT_DESCRIPTOR {

    union {

        DWORD Characteristics;

        DWORD OriginalFirstThunk; // INT(Import Name Table) address(RVA)

    };

    DWORD TimeDateStamp;

    DWORD ForwarderChain;

    DWORD Name; // Library name string address(RVA)

    DWORD FirstThunk; // IAT(Import Address Table) address(RVA)

} IMAGE_IMPORT_DESCRIPTOR;


typedef struct _IMAGE_IMPORT_BY_NAME {

    WORD Hint; // Ordinal

    WORD Name[1]; // Function name string

} IMAGE_IMPORT_BY_NAME, *PIMAGE_IMPORT_BY_NAME

- OrginalFirstThunk : Import Name Table의 주소(RVA)

(RVA : 7990h / File Offset : 6D90h)

- Name : DLL 이름 문자열 주소(RVA)

(RVA : 7AACh / File Offset : 6EACh)

- FirstThunk : IAT(Import Address Table)의 주소

(RVA : 12C4h / File Offset : 6C4h)

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

PE 파일 줄이기(Tiny PE) ②  (0) 2016.10.04
PE 파일 줄이기(Tiny PE) ①  (0) 2016.10.03
PE 파일의 구조와 이해 ④  (0) 2016.09.23
PE 파일의 구조와 이해 ③  (0) 2016.09.22
PE 파일의 구조와 이해 ②  (0) 2016.09.21
PE 파일의 구조와 이해 ①  (0) 2016.09.20
0 Comments
댓글쓰기 폼