프로세스(4)
-
리눅스 fork 함수 호출
1. 사용자 프로그램에서 fork()를 호출 2. C언어 라이브러리(libc)에서 fork()를 실행 3. fork() 의 시스템 호출 번호인 2번을 eax 레지스터에 저장하고 int $0x80을 실행하여 인터럽터 80번을 발생 4. IDT 테이블에서 0x80번째 항목을 찾음 5. 0x80 번째에 system_call() 함수의 위치가 저장되어 있기 때문에 함수를 실행 6. syetem_call() 함수는 어셈블리에서 ENTRY(system_call)로 정의 7. fork() 함수를 실행했을 때 C 라이브러리에서 eax 레지스터에 값을 저장 8. [call *sys_call_table(,%eax, 4)]에서 eax 레지스터에 저장된 값 -fork의 시스템 호출 번호는 2번을 이용해서 sys_call_ta..
2018.12.15 -
뮤텍스 세마포어 크리티컬 섹션
세마포어(semaphore)공유자원에 여러 프로세스가 접근하는 것을 막는 것세마포어는 int, char 처럼 추상적인 한 자료형이다.커널에 저장되어있는 변수이며 시스템 콜을 통해서만 값을 수정할 수 있다.리소스의 상태를 나타내는 간단한 카운터이진 세마포어 뮤텍스(mutual exclusion = mutex)공유자원에 여러 쓰레드가 접근하는 것을 막는 것 크리티컬 섹션(critical section) = 임계영역임계영역이란 둘 이상의 쓰레드가 동시에 접근해서는 안되는 겅유자원을 접근하는 코드의 일종 뮤텍스는 세마포어가 될 수 없지만 세마포어는 뮤텍스가 될 수 있다 그 이유는 뮤텍스는 항상 하나의 열쇠를 가지고 있고 세마포어는 여러개의 열쇠를 들고있다만약 세마포어가 하나의 열쇠를 가지고 있다면 뮤텍스와 같다..
2018.10.02 -
리눅스 시스템이 해킹을 당했을 경우
현장 보존이 가장중요 /tmp /var/tmp 등의 임시 디렉토리에 처음보는, 의심되는 파일이 있는지 확인이 부분을 확인해야 하는 이유는 /tmp 디렉토리에서 루트권한외에 일반계정으로 파일 실행이 가능함.따라서 루트 권한 탈취 프로그램이 /tmp 디렉토리에서 시도가 많다고 함. /dev 디렉토리하위에 일반파일이 있는지 확인. /dev디렉토리에는 일반파일이 있으면 안됨 ex) ssh 파일 같은거find /dev -type f --> /dev 디렉토리 하위에 일반파일이 있는지 찾음 ps -auxf 명령어로 의심되는 프로세스트리를 확인. 이과정에서 침투경로나 파일이 있는 위치등을 확인 할 수도 있다. netstat -an | grep LISTEN 으로 현재 listen 상태인 모든 포트를 확인 stat 명령어..
2017.03.15 -
원하는 것만 출력하는 옵션 feat. ps -ef
ps -ef | grep *** | grep -v grep | wc -l 실행중인 프로세스 목록중에서 ***인 것만 출력 하면서 grep실행 프로세스는 생략을 하고 출력한 프로세스의 라인수만 출력 grep *** = 프로세스이름이 ***인것만 출력 grep -v grep = -v옵션은 해당 단어가 들어가는 것은 제외한다는 의미. 그러므로 grep이 들어가는 프로세스는 제외 wc -l = 문서가 몇줄, 몇 단어로 구성되어 있는지 출력해줌 -l옵션은 라인 수만 출력
2016.11.10