만들면서 배우는 OS 커널의 구조와 원리 ch1. 부트스트랩

부팅 과정 전원이 들어온 후 CPU는 BIOS 롬에 새겨진 프로그램 실행 현재 사용하는 마더보드의 상태 체크, 주변 장치 접속 체크 디스크의 첫 512바이트(MBR)에 있는 프로그램 RAM으로 읽어들여 실행(0x07C00) Real Mode 컴퓨터에 전원이 들어온 후 CPU가 처음 움직이기 시작하면서 활동하는 모드 MS-DOS는 계속 리얼 모드로 동작 프로그램이 한 번에 한 개씩... [Read More]
Tags: kernel os

c++ cin 입력 오류 처리 방법

친구 학교 c++ 과제 중 vector와 try catch를 통해 4 글자 숫자 야구 프로그램을 만드는 과제를 도와주게 되었습니다. exception은 숫자들이 동일할 때, 숫자가 범위를 벗어날 때, 그리고 input이 숫자가 아닌 문자일 때 세 가지 였는데 input이 문자일 때로 exception이 넘어가면 계속 무한 루프에 빠져서 도대체 뭐가 문제인지 하던 중.. 잘... [Read More]

Understanding glibc malloc 번역

원문 링크 복무 시작하고 공부를 잘 안하게 되다보니 무언가라도 해야 될 것 같아서 포너블 문제를 다시 풀어보려했습니다. 그 전에도 heap에 대한 이해가 부족함을 느꼈는데 안하다가 다시 하려니 너무 헷갈려서 malloc부터 다시 heap을 공부하기로 다짐했습니다. 그래도 예전에 한 번 훑어봤던 부분이기에 처음 공부했을 때 보다는 이해가 빠르네요 본문 나는 항상 heap... [Read More]

pwnable.tw - start Write Up

Analysis 32bit 리눅스 파일이고 stripped은 걸려있지 않습니다. start 문제임에 걸맞게(?) 보호 기법도 아무것도 걸려있지 않네요. 스트립 되어있지 않으니 objdump를 통해 어셈을 한 번 봐봅시다. _start와 _exit로 구성되어 있고 int 0x80 들을 보니 sys_call을 통해서 프로그램이 동작하고 있는 것 같습니다. _start 함수에 0x804808f 부분의 호출은 0x4번 이므로 sys_write, 0x8048097 부분의 호출은... [Read More]

SSG CTF 2017 Timer Write Up

이번에 5월 27일날 열린 SSG CTF에서 문제를 출제하게 되었습니다. 처음 내보는 문제이기도 하고 컨셉을 무엇을 낼까 고민도 많이 했습니다. 아침에 학교갈 준비하면서 머리 말리던 중 눈에 들어온 타이머가 있었는데 그걸 보고 고장난 타이머를 고치는 문제를 내야겠다!!라는 의식의 흐름대로 나온 문제입니다. 고장난 타이머를 고친다.. 무엇인가를 고친다.. = 코드 패치! 해서 아주... [Read More]