Information Security
EAT(Export Address Table) 라이브러리 파일에서 제공하는 함수를 다른 프로그램에서 가져다 사용할 수 있게 해주는 핵심 메커니즘이다. IMAGE_EXPORT_DIRECTORY 구조체에 Export 정보가 저장되어 있다. NumberOfFunctions 실제 Export 함수 개수 NumberOfNames Export 함수 중에서 이름을 가지는 함수 개수 AddressOfFunctions Export 함수 주소 배열 AddressOfNames 함수 이름 주소 배열 AddressOfNameOrdinals Ordinal 배열 EAT를 통해서만 해당 라이브러리에서 Export하는 함수의 시작 주소를 정확히 구할 수 있다. 라이브러리에서 함수 주소를 얻는 API는 GetProcAddress()이다..
IAT(Import Address Table) 프로그램이 어떤 라이브러리에서 어떤 함수를 사용하는지를 기술한 테이블이다. DLL(Dynamic Linked Library, 동적 연결 라이브러리)이란 여러 프로그램에서 동시에 사용할 수 있는 코드와 데이터를 포함한 라이브러리이다. DLL의 로딩 방식은 두 가지인데, 그 중 하나가 프로그램 시작할 때 같이 로딩되어 종료 시 메모리에서 해제되는 Implicit Linking 방식이다. IAT는 Implicit Linking에 대한 메커니즘을 제공한다. CALL [1001104] notepad.exe에서 kernel32.dll의 CreateFileW를 호출하는 명령어이다. 이 CALL 명령에서 호출하는 주소는 CreateFileW의 주소가 아니라 IAT 메모리 ..
PE File Format PE(Portable Executable) 파일이란 Windows OS에서 사용하는 실행 파일 형식이다. 우리는 메모장(notepad.exe)으로 PE 파일의 기본 구조를 알아볼 것이다. PE 파일은 PE 헤더(DOS 헤더 ~ 섹션 헤더)와 PE 바디(섹션)로 이루어진다. PE 헤더에는 파일이 실행되기 위해 필요한 정보들이 구조체 형식으로 저장되어 있다. IMAGE_DOS_HEADER HxD로 확인한 DOS Header이다. e_magic DOS signature MZ(4D5A) e_lfanew NT_header의 offset(000000E0) e_lfanew 멤버의 값을 따라서 000000E0에는 IMAGE_NT_HEADERS 구조체가 위치한다. 이 구조체는 signature..