일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Leviathan
- 커널
- 리눅스
- 시스템프로그래밍
- px4
- write up
- C언어
- 리눅스 커널
- 컴퓨터구조
- 시스템
- pwncollege
- wargame
- 워게임
- 드론
- 시그널
- 취약점
- 리눅스커널
- 프로그래밍
- css
- radare2
- Bandit
- 알고리즘
- Pwnable.kr
- 리버싱
- kernel
- 시스템 프로그래밍
- C++
- 시스템해킹
- 어셈블리어
- pwn.college
- Today
- Total
목록리눅스 시스템 프로그래밍 (40)
Computer Security
Program 실행 가능한 코드, 바이너리, 파일로 저장 Process 실행 중인 프로그램 프로그램 이미지,메모리 인스턴스, 커널 리소스 등의 정보 Thread 프로세스 내의 실행 단위 가상화 된 프로세서, 스택, 레지스터, 명령어 포인터 등 프로세서의 상태 포함한다. 프로세스 내의 모든 쓰레드는 같은 주소 공간을 공유 Process in memory text : compile 된 프로그램 코드 data : 전역 변수 등 heap : 동적 메모리 영역 stack : 함수 지역 변수, 함수 호출/리턴 Single-thread vs Multi-thread Muti-thread 하나의 thread가 registers와 stack을 따로 가지고 있다. code , data, files 같이 공유한다. Proce..

epoll API를 이용해서 inotify fd 와 stdin fd에 대해서 read 이벤트를 감시하고있다가 이벤트가 발생하면 해당 fd에 가서 정보를 읽어오자. 1. 이전에 작성했던 select.c 파일을 epoll.c로 카피한다. 아래는 select.c 코드이다. 2. select 부분을 삭제해주고 int epfd 선언 후 epoll_create를 이용해서 instance를 생성한 뒤, 예외처리 해준다. #include int epoll_create(int size); int epoll_create1(int flags); 3. struct epoll_event ep_event 선언 후, epoll_ctl API를 통해서 감시를 원하는 fd를 설정 해준다. int epoll_ctl(int epfd, i..
epoll 리눅스에서 select의 단점을 보완하여 사용할 수 있도록 만든 I/O통지 모델이다. 파일 디스크립터를 사용자가 아닌 커널이 관리를 하며, 그만큼 CPU는 계속해서 파일 디스크립터의 상태 변화를 감시할 필요가 없다. select처럼 어느 파일 디스크립터에 이벤트가 발생하였는지 찾기 위해 전체 파일디스크립터에 대해서 순차검색을 위한 FD_ISSET 루프를 돌려야 하지만, Epoll의 경우 이벤트가 발생한 파일 디스크립터들만 구조체 배열을 통해 넘겨주므로 메모리 카피에 대한 비용이 줄어든다. epoll 과정 1. epoll instance 를 생성한다 2. epoll_ctl(ADD) API를 통해서 감시할 fd들을 ADD해준다. 3. epoll_wait()라는 API를 통해서 이벤트를 기다린다. ..

select API를 이용해서 inotify fd 와 stdin fd에 대해서 read 이벤트를 감시하고있다가 이벤트가 발생하면 해당 fd에 가서 정보를 읽어오자. 이전에 작성했던 inotify 기능을 작성했던 코드에 stdin fd에대해 읽어오는 부분 + select로 I/O Multiplexing 하는 부분을 붙혀서 코드를 작성 해보자. 1. 이전에 작성했던 inotify.c 파일을 select.c로 카피한다. 아래는 inotify.c 코드이다. 메인함수에서부터 inotify객체를 생성하고 watch를 2개 추가한 뒤, while 루프를 해서 read 를 직접적으로 호출하는 예제였다. 우리는 stdin 에대해서도 I/O multiplexing을 해야하니 코드를 수정해야한다. stdin의 fd는 파일 ..