본문 바로가기
Study/Reversing

[리버싱] IAT&EAT

by graygreat 2017. 9. 17.
728x90
반응형


IAT


IAT(Import Address Table)란?


프로그램이 어떤 라이브러리에서 어떤 함수를 사용하고 있는지를 기술한 테이블입니다.



IMAGE_IMPORT_DESCRIPTOR 구조체


PE파일은 자신이 어떤 라이브러리를 Import하고 있는지 IMAGE_IMPORT_DESCRIPTOR 구조체에 명시하고 있다.


구조체 중요 멤버


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


Name : Library 이름 문자열의 주소(RVA)


FirstThunk : IAT(Import Name Table)의 주소(RVA)




EAT


EAT(Export Address Table)란?


라이브러리 파일에서 제공하는 함수를 다른 프로그램에서 가져다 사용할 수 있도록 해주는 핵심 메커니즘이다.


즉 EAT를 통해서만 해당 라이브러리에서 export하는 함수의 시작 주소를 정확히 구할 수 있다.



IMAGE_EXPORT_DIRECTORY 구조체



구조체 중요 멤버


NumberOfFunctions : 실제 Export 함수 개수


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


AddressOfFunctions : Export 함수 주소 배열 (배열의 원소 개수 = NumberOfFunctions)


AddressOfNames : 함수 이름 주소 배열 (배열의 원소 개수 = NumberOfNames)


AddressOfNameOrdinals : Ordinal 주소 배열 (배열의 원소 개수 = NumberOfNames)


반응형

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

[리버싱] 언패킹  (0) 2017.09.19
[리버싱] 패킹  (0) 2017.09.18
[리버싱] 정적&동적 라이브러리  (0) 2017.09.16
[리버싱] PE파일  (0) 2017.09.14
[리버싱] CALL, JMP, RET(RETN) 명령어에 대해 알아보자  (0) 2017.09.03

댓글