본문 바로가기

NT Header

NT Header - IMAGE_OPTIONAL_HEADER - IMAGE_DATA_DIRECTORY Import 함수들을 조사할 때 DataDirctory의 두 번째 배열을 참조하게 되빈다. 각각 해당 영역으로 갈 수 있는 RVA주소와 그 영역의 크기에 대한 정보를 담고 있습니다.Import Table로 이동하면 IMAGE_IMPORT_DESCRIPTOR 구조체를 알 수 있는데 해당 파일이 import하고 있는 DLL과 함수 정보들을 가지고 있습니다.API 후킹 시에 사용되는 중요한 테이블입니다. 더보기
NT Header - IMAGE_OPTIONAL_HEADER -Magic IMAGE_OPTIONAL_HEADER32인지 64인지를 구별하기 위한 값으로 32bit는 0x10B, 64bit는 0x20B를 가집니다. - MajorLinkerVersion, MinorLinkerVersion 어떤 버전의 컴파일러로 빌드했는지 알 수 있다. - SizeOfCode 코드 양의 전체크기를 나타내며, 보통 .text Section의 파일 크기를 나타냅니다 .text Section의 SizeOfRawData와 같은 값을 갖는다. 바이러스나 악성코드는 이 영역을 읽어 코드를 복제할 위치를 잡기도하고 보안 솔루션에서는 무결성 검사를 수행할 때 이 섹션 값을 얻어와 검사크기를 잡는다. - AddressOfEntryPoint 실제 파일이 메모리에 실행되는 시작지점이며 EP(Entry P.. 더보기
NT Header - IMAGE_NT_HEADER - IMAGE_FILE_HEADER IMAGE_FILE_HEADER는 실행파일들의 구성 정보가 들어있습니다. 현재 파일이 EXE파일인지, DLL파일인지, Section의 개수는 몇 개인지, 어느 플랫폼에서 실행되는지에 대한 정보가 들어있습니다. - Machine 현재 파일이 어느 플랫폼(CPU)에서 실행되는지에 대한 정보를 가지고 있습니다. 이 값은 CPU별로 고유한 값을 가집니다. Intel x86은 0x14C, Intel x64는 0x200의 값을 가지고 있습니다. - NumberOfSections Section의 개수를 나타내며, 정의된 Section의 개수와 실제 Section의 개수가 다르면 에러가 발생합니다. - TimeDateStamp 파일이 빌드된 시간을 나타냅니다. 정확하게는 OBJ 파일이 EXE로 만들어지는 시간입니다. .. 더보기
NT Header - IMAGE_NT_HEADER e_lfanew의 값인 E0 00 00 00 (00 00 00 E0)이 NT Header의 Offset입니다. 해당 값을 주소로 이동하면 IMAGE_NT_HEADER의 시작 주소 입니다.리틀 엔디안이라는 것에 주의합니다. - SignaturePE\0\0의 값을 갖습니다. PE 파일이라고 표시하는 용도로만 사용됩니다.과거 바이러스 제작자들이 자신의 값을 표시하기 위해 사용했었지만 마이크로소프트에서 이러한 변조가 나타나면 실행시키지 않도록 보안하고 있습니다. 더보기