PE Header - EAT (Export Address Table)이전 장에서, DLL에 대한 간략한 내용과, IAT(Import Address Table)및 IID(Image Import Directory)를 이용해,프로그램이 어떻게 dll(라이브러리)를 가져와 import 하여 그 기능을 사용하는지 살펴보았다. 그렇다면, 이번에는 이러한 기능을 제공해주는 dll과 같은 라이브러리(sys 파일과 같은 것도 해당된다)가 어떻게 다른 프로그램에함수 형태로 기능을 제공하는지 알아보자. IMAGE_IMPORT_DIRECTORY 가 프로그램이 어떠한 외부 라이브러리를 사용할 것인지에 대한 정보를 제공한다면,IMAGE_EXPORT_DIRECTORY 는 자신에게서 어떠한 함수를 제공받을 수 있는지를 선언해놓은 테..
PE Header - IAT(IMPORT ADDRESS TABLE) DLL?Dynamic Link Library 의 약자로, "동적 링크 라이브러리" 라고도 불리며, 마이크로소프트에 윈도우에서 구현된 여러 프로그램이 공통으로 필요로 하는 기능을 따로 분리하여, 필요할 때에만 불러내어 쓸 수 있게 만들어 놓은 라이브러리이다. 예를 들어, 크롬에서도 메세지박스를 띄울 수 있고, Windows 탐색기에서도 메시지박스를 띄울 수 있다. 이럴 경우, 각각의 프로그램에 모두 메시지박스를 띄우는 기능의 코드를 내장하는 것이 아니라, 윈도우에서 지원하는 기능(DLL)에서 가져다 씀으로써 각각의 파일들에 해당 기능들을 집어넣을 필요 없이, 원하는 DLL을 사용해 이 기능을 끌어다 쓴다고 선언해놓으면 된다. (이러한 기능..
NT_HEADER -> SECTION_HEADERSection 이란?PE파일(프로그램) 에는 다양한 것들이 들어간다. main 및 각종 프로그램의 동작을 정의하는 함수들의 코드들, 전역 변수로 설정된 데이터나 프로그램 안에 들어가 있는 문자열 (예: 포맷 스트링), 그리고 프로그램 안에 이미지를 같이 포함시켜 리소스 형태로 저장할 수 도 있다. PE에서는 이런 코드와 데이터들을 한꺼번에 모아놓지 않고, 각각 그 특성과 필요에 맞추어 각각의 데이터들을 "섹션" 으로 나누어 따로 따로 저장하며,이러한 섹션에는 Read/Write/Execute 이 세가지의 권한 옵션이 주어진다. IMAGE_SECTION_HEADERtypedef struct _IMAGE_SECTION_HEADER { BYTE Name[IMAG..