본문 바로가기

reversing/rootkit

Why use system call?

SMALL

시스템 콜을 사용하는 이유

구글 번역 : https://www.quora.com/What-are-the-main-purposes-of-system-calls

시스템 호출은 사용자 프로그램 (사용자 모드에서 실행)이 운영 체제에서 일부 서비스를 요청하는 방법입니다. 

즉, 시스템 호출을 통해 사용자 프로그램이 사용자 프로그램을 대신하여 OS에 작업을 요청할 수 있습니다. 

예를 들어, 저장 장치와의 I / O를 필요로하는 파일 읽기 및 쓰기. 이러한 시스템 호출 작업은 간단한 라이브러리 호출 / API (libc의 read (), write (), open () 등)의 

형태로 일반 사용자에게 공개됩니다. 

이러한 작업의 핵심은 전환 후 OS 커널 코드에 의해 실행됩니다 유저로부터 커널에의 모드 (TRAP 명령). 이들 및 다른 시스템 호출 작업은 일반적으로 버퍼 캐시, 

inode, 프로세스 제어 블록, 글로벌 열린 파일 테이블 및 기타 여러 가지와 같은 OS 커널 데이터 구조에 액세스 / 조작합니다.

이러한 커널 레벨 데이터 구조는 시스템의 전반적인 올바른 작동을 위해 매우 중요합니다. 따라서 커널 모드에서 실행되는 코드로 안전하게 액세스 할 수 있습니다. 

우리 프로그램이 커널의 중요한 데이터 구조를 손상시킬 가능성이 있기 때문에 사용자 프로그램은 직접적으로 작업 할 수 없습니다.

 이들은 잠금, 복구 / 정리 및 데이터 구조가 올바른 방식으로 액세스되도록 보장하는 기타 사항을 처리하는 OS 자체에서 최상으로 관리됩니다.

또한 운영 체제는 사용자 프로그램과 하드웨어 간의 인터페이스로 사용됩니다. 사용자 프로그램에서 요청한 작업을 대신하여 하드웨어와 상호 작용합니다

 read () API 호출은 OS에서 해당 시스템 호출을 실행하게하여 디스크에서 I / O를 수행하기 위해 여러 파일 시스템 알고리즘을 추가로 호출합니다. 

이 모든 것들은 사용자 프로그램이나 사용자 프로그램에 링크 된 라이브러리에 노출 된 시스템 호출 인터페이스를 통해 

명확한 책임의 분리로 운영 체제에 의해 잘 관리됩니다.


요약 

유저가 기능을 위해서 운영체제에 요청으로 서비스를 사용하는데, 보안 매커니즘 없이 커널 코드에

접근이 가능하면 위험함. 그래서 커널 데이터인 테이블을 두고 관리함

LIST

'reversing > rootkit' 카테고리의 다른 글

rootkit - packet sniff[2]  (0) 2017.07.15
rootkit - packet sniff[1]  (0) 2017.06.21
rootkit - packet sniff[0]  (0) 2017.06.21
rootkit - root [2]  (0) 2017.06.13
rootkit - root [1]  (0) 2017.06.02