일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 시스템프로그래밍
- C++
- css
- 리눅스
- Pwnable.kr
- 알고리즘
- 시스템
- 시스템 프로그래밍
- pwn.college
- 커널
- radare2
- kernel
- Leviathan
- Bandit
- pwncollege
- px4
- 리눅스 커널
- 어셈블리어
- 리눅스커널
- wargame
- 시그널
- 리버싱
- 컴퓨터구조
- C언어
- 시스템해킹
- 워게임
- 취약점
- 드론
- 프로그래밍
- write up
- Today
- Total
목록리눅스 시스템 프로그래밍 (40)
Computer Security
한 application에서 여러 fd에 대해 read를 하려면? 1. polling with non-blocking mode 2. multi-thread 3. I/O Multiplexing 2. multi-thread 하나의 프로세스를 다수의 실행 단위로 구분하여 자원을 공유하고 자원의 생성과 관리의 중복성을 최소화하여 수행 능력을 향상시키는 것 하나의 프로그램에 동시에 여러개의 일을 수행할수 있도록 해주는 것이다. 3. I/O Multiplexing I/O Multiplexing API :select()/poll()/epoll() 여러개의 fd들이 있었을 때, API에 등록하고(이거에 대해 반응할 것이다!) 하나의 프로세스&쓰레드가 API를 call해서 전체 fd를 한꺼번에 감시한다. 만약 어떤 특정..

디렉토리 두개를 지정해서 각 디렉토리 안에 파일이 생성되거나 삭제될때 이벤트를 호출해서 화면에 출력하는 예제를 작성 해보자. 1. 기본적인 뼈대를 구성 해준다. 2. inotify객체를 생성한다. #include int inotify_init(void); i) inotify 객체를 생성하기 위해 fd를 하나 만든다. ii) inotify_init이라는 API로 객체를 생성한다. iii) 예외처리 해준다. 3. inotify 객체에 watch를 걸어준다. #include int inotify_add_watch(int fd, const char *pathname, uint32_t mask); i) inotify_add_watch라는 API를 통해 watch를 추가한다. ii) mask에 파일이 CREATE ..
inotify 특정 파일/디렉토리에서 발생하는 이벤트를 감시하는 기능 inotify기능을 사용하기 위한 조건 1. inotify object를 하나 생성 해야한다. 2. watch 를 생성한다.(어떤 한 디렉토리를 감시 할 것인지 나타내는 서브객체) inotify int inotify_init (void) int inotify_init1 (int flags) 파라미터 - flags - IN_NON_BLOCK : set non-blocking mode - IN_CLOEXEC : set close-on-exec 반환 값 - 성공 시 inotify 객체 ( file descriptor) - 실패 시 -1 inotify_add_watch 생성해 놓은 inotify 객체 에다가 watch를 추가하기 위한 API ..

목표 file 을 read API 를 통해서 데이터를 읽는데, read 데이터가 없을 경우에, Blocking mode 와 Non-blocking mode가 각각 어떻게 동작하는지와 fcntl API를 이용해서 file의 Blocking mode 와 Non-blocking mode를 변환하는 예제를 작성 해보자. Blocking mode 1. 기본 뼈대를 만들어 준다. 프로세스가 하나 생성되면 기본적으로 3개의 fd 가 열린다. 0번 fd : standard in (STDIN_FILENO) 1번 fd : standard out (STDOUT_FILENO) 2번 fd : standard error (STDERR_FILENO) 2. 이미 열린상태이기에 open API를 호출할 필요는 없고, STDIN fd의..