일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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++
- 드론
- kernel
- Leviathan
- Bandit
- 시스템프로그래밍
- 리눅스
- pwn.college
- write up
- 컴퓨터구조
- 시그널
- pwncollege
- 리눅스 커널
- 어셈블리어
- 리눅스커널
- 워게임
- px4
- 시스템
- Pwnable.kr
- 시스템해킹
- 프로그래밍
- 커널
- 알고리즘
- 시스템 프로그래밍
- wargame
- radare2
- C언어
- 취약점
- css
- Today
- Total
목록리눅스 시스템 프로그래밍 (40)
Computer Security
OS 상에 동작하고있는 프로세스들이 동시에 실행 되고 있는데, 각각의 프로세스가 자기만의 독립적인공간(address space) 를 가지고 있다 착각하게 만들어주는게 OS의 역할중 하나이다. Process address space 프로그램(Program)이 실행되면 프로세스 주소 공간(Process Address Space)이 Memory에 할당(생성) 되는것을 볼 수 있다. 할당 된 process를 실행시키는것은 CPU가 되게 된다. Process Address Space Code Segment (코드 부분) 프로그램의 코드가 저장되어있다. 읽기만 가능하다. Data Segment (데이터 부분) 전역 변수(global variables) 같은 데이터가 저장되어 있다. 읽고 쓰기가 가능하다. Stack..

opendir API를 이용해서 디렉토리 내에 파일의 목록을 출력하고, 각 파일의 타입들에 대해 출력하는 프로그램을 만들어 보자. 1. 기본적인 뼈대를 만들어 주자. 2. opendir API를 이용해 디렉토리 스트림포인터를 얻자. #include #include DIR *opendir(const char *name); 3. opendir 반환값을 받아올 DIR 포인터를 선언한다. 4. dp = opendir(".") -> 현재 디렉토리(.) 를 오픈한다. 5. 예외 처리 해준다. 6. 디렉토리내에 파일 목록을 읽는 API인 readdir 을 이용한다. struct dirent *readdir(DIR *dirp); 7. readdir 반환 값을 받아 올 struct dirent *entry 를 이용해 s..
디렉토리 탐색 API DIR *opendir(const char *name); 파라미터 - name : 파일 경로 반환 값 - 성공 시 열린 디렉토리 스트림 포인터 - 실패 시 NULL 포인터 디렉토리를 오픈 후, 디렉토리 내에 있는 파일들을 차례로 탐색하는 API (readdir) struct dirent *readdir(DIR *dirp); 파라미터 - dirp : 디렉토리 스트림 포인터 반환 값 - 성공 시 디렉토리 엔트리 포인터 - 실패 시 NULL 포인터 struct dirent struct dirent { ino_t d_ino; off_t d_off; /* XXX */ unsigned short d_reclen; unsigned char d_type; char d_name[256]; }; d_..

파일의 이름을 argument로 받아다가 해당파일의 속성을 읽어보고 출력하는 예제를 해보자. 1. stat.c 파일을 생성한다. 2. file 이름과 file size를 출력 해보자. 3. 이 파일이 레귤러인지 디렉토리인지 출력 해보자.(st 모드) 4. 전체 코드이다. 코드 분석 1. 파라미터로 파일이름을 받아온다. 2. 입력을 받은 해당 파일에 대해서 stat명령어로 파일의 속성을 조회한다. 3. 파일의 사이즈와 st_mode의 파일 타입을 if문을 이용해서 디렉토리인 경우와 레귤러 파일인 경우 따로 출력 되게 작성한다. 5. gcc명령어를 이용해 컴파일 하고 실행 해보자. stat 하고 싶은 파일도 뒤에 적어줘야 한다. 6. 아주간단한 hello world 출력 파일을 만들자. 7. ./stat h..