windows system

IAT(Import Address Table) , EAT(Export Address Table)

jianna6 2013. 12. 28. 22:29
IAT(Import Address Table)

 

exe는 process생성 주체가 되므로 자신의 ImageBase에 정확히 loading되지만,

dll은 자신의 ImageBase에 정확히 loading되지 못하며, 빈 공간으로 relocation된다.

 

IMAGE_IMPORT_DESCRIPTOR구조체로 이루어져 있다.

 

 

여러 개의 라이브러리를 import하기 때문에 라이브러리의 개수만큼 위 구조체의 배열 형식이 존재하며, 마지막엔 null구조체를 넣어주어야한다.


 

 

 

IMPORT Name Table(INT)

 

구조체에선 OriginalFirstThunk, PEView에선 IMPORT Name Table(INT)이란 이름으로 되어있다.

 

 

 

IAT는 IMAGE_IMPORT_BY_NAME 구조체의 배열로 이루어져 있다.

첫 2바이트는 라이브러리에서 해당 함수의 고유번호를 나타내며, 그 뒤론 함수의 이름이 배열로 들어있다.

 

 IMPORT Address Table

 

구조체에선 FirstThunk, PEView에선 IMPORT Address Table(IAT)이란 이름으로 되어있다.

 

 

 

 

첫번째 창은 IMAGE_IMPORT_DESCRIOTOR을 보여주며,  firstThunk는 IAT의 RVA 주소값을 가지고 있다.

두번째 창은 IAT로 넘어왔으며, 라이브러리의 API의 RA address를 가지고 있다.
세버째 창은 ADVAPI32.dll에서 RegSetVauleExW API의 코드 찾을 수 있다.

 

 

 

EAT(Export Address Table)

 

 

IMAGE_EXPORT_DESCRIPTOR구조체로 이루어져 있다.