본문 바로가기

reversing55

Base Relocation Table PE 재배치 PE파일(EXE/DLL/SYS)이 프로세스 가상 메모리에 로딩(Loading)될 때 PE헤더의 ImageBase주소에 로딩 됩니다. DLL(SYS) 파일의 경우 ImageBase 위치에 이미 다른 DLL(SYS) 파일이 로딩 되어 있다면 다른 비어 있는 주소 공간에 로딩됩니다. 이것을 PE파일 재배치 라고 합니다. 즉 PE재배치란 PE파일이 ImageBase에 로딩되지 못하고 다른 주소에 로딩될 때 수행되는 일련의 작업들을 의미합니다. EXE 프로세스가 생성될 때 EXE 파일이 가장 먼저 메모리에 로딩되기 때문에 EXE에서는 재배치를 고려할 필요가 없었습니다. 그러나 Windows Vista이후부터는 보안 강화를 위해 ASLR(Address Space Layout Randomization) .. 2022. 12. 14.
IAT & EAT IAT 프로그램이 어떤라이브러리에서 어떤 함수를 사용하고 있는지를 기술한 테이블입니다. IMAGE_IMPORT_DESCRIPTOR PE 파일은 자신이 어떤 라이브러리를 임포트(Import) 하고 있는지 IMAGE_IMPORT_DESCRIPTOR 구조체에 명시하고 있습니다. typedef struct _IMAGE_IMPORT_DESCRIPTOR{ union { DWORDCharacteristics; DWORDOriginalFirstThunk; }; DWORDTimeDateStamp; DWORDForwarderChain; DWORDName; DWORDFirstThunk; } IMAGE_IMPORT_DESRIPTOR; typedef struct _IMAGE_IMPORT_BY_NAME { WORDHint; BY.. 2022. 12. 12.
PE File Format 중요 멤버 간단정리 NT Header - File Header Machine CPU 별로 고유한 값 NumberOfSections 섹션의 개수를 나타냄 SizeOfOptionalHeader IMAGE_OPTIONAL_HEADER32 구조체의 크기를 나타냄 Characteristics 파일의 속성을 나타내는 값 NT Header - Optional Header Magic 32비트는 10B, 64비트는 20B의 크기를 가짐 AddressOfEntryPoint 프로그램에서 최초로 실행되는 코드의 시작주소 ImageBase 메모리에서 PE파일이 로딩되는 시작주소 SectionAlignment FileAlignment 메모리에서 섹션의 최소 단위 파일에서 섹션의 최소 단위 SizeOfImage PE파일이 메모리에 로딩되었을 때 가상.. 2022. 12. 5.
IMAGE_FILE_HEADER - OPTINAL_HEADER NT Header - Optional Header PE 헤더 구조체 중에서 가장 크기가 큰 IMAGE_OPTIONAL_HEADER32 입니다. typedef struct _IMAGE_DATA_DIRECTORY { DWORDVirtualAddress; DWORDSize; } IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY; #define IMAGE_NUBEROF_DIRECTORY_ENTRIES16 typedef struct _IMAGE_OPTIONAL_HEADER { WORDMagic; BYTEMajorLinkerVersion; BTYEMinorLinkerVersion; DWORDSizeOfCode; DWORDSizeOfInitializedData; DWORDSizeOfUn.. 2022. 11. 29.
PE File Format 구조 DOS header 부터 Section header 까지를 PE 헤더 , 그 밑의 Section들을 합쳐서 PE 바디(Body) 라고 합니다. 파일에서는 offset으로, 메모리에서는 VA(Virtual Address, 절대주소)로 위치를 표현합니다. 파일이 메모리에 로딩되면 모양이달라집니다. (Section의 크기, 위치 등) 파일의 내용은 보통 코드(.text), 데이터(.data), 리소스(.rsrc) 섹션에 나뉘어서 저장됩니다 섹션 헤더에 각 Section에 대한 파일/메모리에서의 크기, 위치, 속성등이 정의되어 있습니ㅏㄷ. PE 헤더의 끝부분과 각 섹션의 끝에는 NULL Padding이라고 불리우는 영역이 존재합니다. 컴퓨터에서 파일. 메모리, 네트워크 패킷 등을 처리할 때 효율을 높이기위해 최.. 2022. 11. 25.
바이트 오더링 바이트 오더링은 데이털르 저장하는 방식을 말하는 것이라고 생각하면 되는데, 이는 애플리케이션의 디버깅을 할 때 알아두어야 하는 기본 개념 중 하나입니다. 바이트 오더링 방식에는 크게 두가지가 있습니다. 바로 빅 엔디언(Big Endian)과 리틀 엔디언(Little Endian) 방식입니다. BYTE b = 0x12; WORD w = 0x1234; DWORD dw = 0x12345678; char str[] = "abcde"; 총 4개의 (크기가 다른) 자료형이 있습니다. 각 엔디언 방식에 따라서 같은 데이터를 각각 어떤식으로 저장하는지 비교해보겠습니다. TYPE Name SIZE 빅 엔디언 리틀엔디언 BYTE b 1 [12] [12] WORD w 2 [12][34] [34][12] DWORD dw 4 .. 2022. 11. 3.
반응형