일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 커널
- 취약점
- 시스템프로그래밍
- Bandit
- radare2
- kernel
- write up
- C언어
- 어셈블리어
- wargame
- 리눅스커널
- px4
- 시그널
- pwncollege
- 리눅스
- 시스템 프로그래밍
- pwn.college
- 시스템해킹
- 알고리즘
- 리눅스 커널
- Pwnable.kr
- css
- 시스템
- Leviathan
- 프로그래밍
- 워게임
- C++
- 리버싱
- 컴퓨터구조
- 드론
- Today
- Total
목록리눅스 (48)
Computer Security

디렉토리 두개를 지정해서 각 디렉토리 안에 파일이 생성되거나 삭제될때 이벤트를 호출해서 화면에 출력하는 예제를 작성 해보자. 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 ..

목표 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의..
read API가 호출을 했을때, 읽을 데이터가 없는 경우에 Blocking operation 과 Non-Blocking operation의 차이가 발생한다. Blocking operation 요청한 작업을 마칠 때까지 계속 대기(Blocking)한다. 즉시 return한다. return 값을 받아야 끝난다. Thread 관점 : 요청한 작업을 마칠 때까지 계속 대기하며 return 값을 받을 때까지 한 Thread를 계속 사용/대기 한다. 호출된 함수가 자신의 작업을 모두 마칠 때까지 호출한 함수에게 제어권을 넘겨주지 않고 대기하게 만든다면 blocking이다. Non-Blocking operation 요청한 작업을 즉시 마칠 수 없다면 즉시 return한다. 즉시 리턴하지 않는다. (일을 못하게 막는..

flock을 이용하여, 여러개의 프로세스를 만드는데 각 프로세스가 동일한 파일을 통해서 동기화를 하는 상황을 만들어보자. 1. 기본 뼈대를 잡아준다. 2. lock의 주체가 되는 열린 파일을 하나 만들어 주자. 3. lock을 잡고 lock을 푸는 코드를 짜준다. (SH 예시) 4. lock을 잡고 푸는 사이에 시간을 기다리는 부분을 getc API를 이용해 작성 해준다. 사용자의 입력을 기다린다. 5. 프로그램을 실행하면서 첫번째 파라미터가 exclusive 면 exclusive lock을 잡고 shared면 shared lock을 잡는 코드를 작성하자. i) argc를 테스트한다. (파라미터를 한개를 받길 원하니 2보다 작으면 에러처리) ii) 첫번째 argv 파라미터가 ex인지 sh인지 테스트해주는..