0x.리버스 엔지니어링/PE File Format
-
0x02.PE header(2)0x.리버스 엔지니어링/PE File Format 2017. 8. 7. 12:17
0x02.PE header(2) 저번 포스팅에 이어서 설명하겠다. 4. Section header 각 섹션이 갖는 속성을 정의하는 것이 섹션 헤더인데, 메모장 같은 경우, text, data, rsrc라는 섹션이 있기에 그에 해당되는 3개의 섹션 헤더가 존재한다. 섹션이 3가지로 나뉘어지는 까닭은 안정성을 위해서인데 그 예로 버퍼 오버플로우를 들 수 있다. 섹션 헤더는 구조체의 배열 형태로 되어 있는데 아래와 같다. #define IMAGE_SIZEOF_SHORT_NAME typedef struct _IMAGE_SECTION_HEADER {BYTE Name[IMAGE_SIZEOF_SHORT_NAME];union {DWORD PhysicalAddress;DWORD VirtualSize;} Misc;DWOR..
-
0x01.PE header0x.리버스 엔지니어링/PE File Format 2017. 8. 4. 12:04
0x01.PE header 앞 포스팅에서 설명했지만 DOS header ~ Section header(".rsrc") 까지를 헤더라고 부른다. 1. DOS header 마이크로소프트는 언제나 하위호환성을 신경쓰기 때문에 DOS를 고려해서 앞 부분에는 DOS header를 붙이는데 구조체의 크기는 40이다. typedef struct _IMAGE_DOS_HEADER{WORD e_magic;WORD e_cblp;WORD e_cp;WORD e_crlc;WORD e_cparhdr;WORD e_minalloc;WORD e_maxalloc;WORD e_ss;WORD e_sp;WORD e_csum;WORD e_ip;WORD e_cs;WORD e_lfarlc;WORD e_ovno;WORD e_res[4];WORD e_..
-
0x00.PE File Format0x.리버스 엔지니어링/PE File Format 2017. 8. 3. 15:11
0x00.PE File Format PE파일은 원도우에서 사용되는 실행파일 형식인데, UNIX의 COFF(Common Object File FOrmat)을 기반으로 만들어졌다. 보통 PE파일은 32비트를 뜻하며, 요즘 사용되는 64비트는 PE+, PE32+로 다르게 불리운다. PE파일에는 EXE와 같은 실행계열, SYS와 같은 드라이버 계열, DLL과 같은 라이브러리 계열 그리고 오브젝트 계열인 OBJ등이 있다. 결국 실행 가능한 모든 파일이 PE파일에 속한다고 보면 된다. 윈도우의 메모장의 PE구조는 위와 같다. DOS header ~ Section header까지를 PE헤더, 그 밑의 섹션들을 PE바디라고 한다. 파일은 보통 코드, 데이터, 리소스로 섹션이 나뉘어지는데 그 순서는 위와 같이 text,..