bit란? 2진수 하나의 값을 저장할 수 있는 최소의 메모리 공간이다. bit의 갯수는 2의 n제곱개만큼 있다. 예를들면 3bit는 000,001,010,100,011,101,110,111 이렇게 2의 3제곱, 8개가 있다. byte란? ASCII문자 하나를 저장 할 수 있는 최소의 메모리 공간이다. 1byte = 8bit로 bit가 8개가 모여 1byte가 된다. bit 와 byte가 무엇인지 알아보았으니 비트 연산자에 대해 알아보겠다. 비트연산자의 종류에는 이 정도가 있다. 1. 비트단위 and 연산 이것은 a,b를 입력받아 and 연산을 해주는 프로그램이다. 입력을 6 , 4로 한다면 6 : 0000 0110 3 : 0000 0011 6&3 0000 0010 이므로 값은 2가 된다. 2. 비트단위 ..
Lob 1번문제 gate입니다. gremlin.c 파일을 열어보았습니다. char 형 배열 buffer의 크기는 256byte 이고, argc 의 갯수. 즉, 명령어 인자의 갯수가 2개이상이 되면 argv error를 띄우고 프로그램을 종료시킵니다. strcpy로 argv[1]의 값을 buffer로 복사합니다. 임시 파일인 tmp로 이동하여 gdb로 gremlin을 디버깅 해보겠습니다. main 함수를 disassemble 해보니 16진수로 0x100 만큼 esp를 이동시켰습니다. 즉, 0x100만큼 char형 변수 buffer에 크기를 할당해 주었다는 것 입니다. 16진수로 100은 10진수로 256이므로 buffer의 크기는 쓰레기 값 없이 256byte입니다. 메모리 구조를 한번 그려보면 대략 이런..