본문 바로가기
해킹/리버싱엔지니어링

EAT정리

by 맑은청이 2020. 4. 25.
728x90
반응형

https://com24everyday.tistory.com/17

 

IAT 정리

IAT(Import Address Table) : 프로그램이 어떤 라이브러리에서 어떤 함수를 사용하는지 기술한 테이블 핵심 개념 : process,memory,DLL 구조 IAT 를 이해하기 전, DLL의 대한 이해가 필요하다. Import : library에..

com24everyday.tistory.com

IAT 를 알고나면 좀더 쉽게 EAT를 이해할 수 있다. 

 

 

 

EAT(Export Address Table) : 라이브러리 파일에서 제공하는 함수 -> 다른 프로그램이 사용 하게 하기 위한 매커니즘

EAT를 통해서만 해당 라이브러리에서 익스포트하는 함수의 시작 주소 정확하게 구할 수 있음.

 

IMAGE_EXPORT_DIRECTORY : PE파일에 하나만 존재, PE헤더에 위치함(IAT는 여러 라이브러리를 import 할 수 있기 때문에)

  - NumberOfFunction : 실제 Export 함수 개수

  - NumberOfNames : Export 함수 중에서 이름을 가지는 함수(<=NumberOfFunction)

  - AddressOfFunctions : Export 함수 주소 배열 (=NumberOfFunction)

  - AddressOfNames : 함수 이름 주소 배열 (=NumberOfNames)

  - AddressOfNameOrdinals : Ordinal 주소배열(=NumberOfNames)

 

GetProcAddress( ): 라이브러리에서 EAT를 참조해서 함수 주소를 얻는 API

 

GetProcAddress() 동작 원리

1. AddressOfNames 멤버를 이용해 '함수이름배열'

2. '함수 이름 배열'이 문자열 주소에 저장되어있음 -> strcmp 로 찾음 (이 때의 인덱스를 name_index라 칭함)

3. AddressOfnameOrdinals 멤버통해' Ordinal 배열' 찾음

4. name_index로 ordinal 찾음

5. AddressOfFunctions 멤버 통해 함수주소배열(EAT)

6. EAT에서 ordianl로 함수 시작 주소 찾음 

 

* 모든 DLL파일이 index == ordinal 하지느 않음.

728x90
반응형

'해킹 > 리버싱엔지니어링' 카테고리의 다른 글

함수 호출 규약  (0) 2020.11.18
Base Relocation Table  (0) 2020.05.01
실행 압축  (0) 2020.04.28
IAT 정리  (0) 2020.04.25
OllyDBG 단축키  (0) 2020.04.18