PE Header _ IMAGE_NT_HEADERSPE 포맷의 실행 파일의 핵심 정보를 담고 있는 구조체이며, PE파일 signiture와 다시 두 개의 구조체로 나뉘어진다.1개의 4바이트 데이터와 2개의 구조체를 담고 있으며, 총 248 바이트로 구성되어 있다. typedef struct _IMAGE_NT_HEADERS { DWORD Signature; // 0x50450000 ("PE"0x00 0x00) IMAGE_FILE_HEADER FileHeader; IMAGE_OPTIONAL_HEADER OptionalHeader; } IMAGE_NT_HEADERS32,*PIMAGE_NT_HEADERS32;1. signature_IMAGE_NT_HEADERS 의 시작(DOS 헤더의 e_lfanew offset..
PE(Portable Executeable)이란?Windows 운영 체제에서 사용되는 실행 파일, DLL(Dynamic Link Library), Object 코드, SYS 드라이버와 같은 파일을 위한 포맷이다. 우리가 흔히 접하는 exe 파일은 다음과 같이 PE File Format의 형태로 구성되어 있고, 크게 보면구조체 형태로 크기가 정해져 있는 실행 파일의 정보를 담고 있는 "PE Header"와,프로그램이 실행되었을 때 메모리로 옮겨져야할 코드들과 데이터들을 담고 있는 섹션인 "PE Body"로 이루어져 있다. PE Header먼저, PE 파일의 다양한 속성과 필수 정보를 담고 있는 PE Header부터 살펴본다. 앞에서 언급 했듯이, PE Header는 구조체 형태로 이루어져 있어 그 크기가 ..
BOF 원정대 - Level2 gremlin 1. 소스 int main(int argc, char *argv[]) { char buffer[16]; if(argc < 2) { printf("argv error\n"); exit(0); } strcpy(buffer, argv[1]); printf("%s\n", buffer); } 2. 어셈블리 코드 main+0xA 에서 argc인자값이 2이상인지를 체크해, 아닐 경우 "argv error\n" 를 출력하고 프로그램을 종료한다.main+0x23 부터는 ebp-0x10 (16 bytes) 떨어진 곳에 argv[1]의 값을 복사한 다음, 출력하고 프로그램을 종료한다. main 함수 스택에 256바이트의 저장 공간이 주어졌던 1번 문제와는 다르게, 이번 문제에서는..