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

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는 파일 ..
OS 상에 동작하고있는 프로세스들이 동시에 실행 되고 있는데, 각각의 프로세스가 자기만의 독립적인공간(address space) 를 가지고 있다 착각하게 만들어주는게 OS의 역할중 하나이다. Process address space 프로그램(Program)이 실행되면 프로세스 주소 공간(Process Address Space)이 Memory에 할당(생성) 되는것을 볼 수 있다. 할당 된 process를 실행시키는것은 CPU가 되게 된다. Process Address Space Code Segment (코드 부분) 프로그램의 코드가 저장되어있다. 읽기만 가능하다. Data Segment (데이터 부분) 전역 변수(global variables) 같은 데이터가 저장되어 있다. 읽고 쓰기가 가능하다. Stack..

qemu 리눅스에서 사용하는 에뮬레이터이며, KVM(1)을 추가하여 가상 머신으로 사용할 수 있다. qemu-kvm 에서 Hypervisor를 지원한다. qemu의 다양한 옵션들을 이용해 script를 작성해서 커널을 부팅할 수 있다. (1) :KVM(Kernel-based Virtual Machine: 커널 기반 가상 머신)은 Linux®에 구축되는 오픈소스 가상화 기술이다. 구체적으로 말해서, KVM을 사용하면 Linux를 하이퍼바이저로 전환하여 호스트 머신에서 게스트 또는 VM(가상 머신) 등 격리된 가상 환경 여러 개가 실행되도록 할 수 있습니다. 1. 리눅스의경우 기본적으로 qemu가 설치되어있으며, qemu-kvm 을 apt-get install qemu-kvm 명령어를 통해 설치 해주자. 2..
어셈블리어에서 { } -> push 와 pop 으로 처리된다. return 0 같은경우는 ex) xor eax, eax 처리된다. 파이프라인 : CPU와 같은 디지털 집적회로의 속도를 향상시키기 위한 회로 내지는 회로설계 기법을 지칭한다. CPU의 명령어 파이프라인에 대한 전통적인 설명은 4단 파이프라인 구조를 통한 것이며 대체로 다음과 같은 명칭을 가지고 있다. 1단계: fetch(명령어를 메모리에서 인출) 2단계: decode(명령어 해석) 3단계: execute(명령어 실행) 4단계: writeback(라이트백) 4단 파이프라인에서 작업 A와 B를 처리할 때(트랜지스터 40개, 동작속도 40Hz): 1사이클: fetch(A) → 2사이클 fetch(B),decode(A) → 3사이클 decode(B..