Linux Kernel(4.19) Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

10200
629
98817


태그 : 시스템콜 요약보기전체보기목록닫기

1 2 3

[리눅스커널] 시스템 콜: GNU C 라이브러리 실행 흐름

유저 공간에서 시스템 콜을 실행하려면 리눅스 저수준 표준 함수를 호출해야 합니다.저수준 표준 함수는 glibc 라이브러리에 구현돼 있습니다. 그래서 실제 시스템 콜을 발생하는 코드를 확인하기 어렵습니다. glibc 라이브러리 파일은 어디있을까요? 리눅스 배포판마다 다르지만 라즈베리파이에서는 glibc는 라즈베리파이에서 다음 경로에 있는 libc...

[리눅스커널] 시스템 콜: 시스템 콜의 특징 알아보기

이번 소절에서는 시스템 콜의 특징을 알아보겠습니다.앞서 알아봤듯이 시스템 콜은 유저 모드에서 커널 모드로 진입하는 관문입니다. 소프트웨어 구조 관점으로 보면 시스템 콜은 유저 공간과 커널 공간 사이 가상 계층으로 볼 수도 있습니다. 이 계층은 다음과 같은 특징이 있습니다.1. 시스템 콜 계층으로 시스템 안정성과 보안을 지킬 수 있습니다. 유저모드에서 어...

[리눅스커널] 시스템 콜: strace와 ftrace로 시스템 콜 디버깅하기

이전 소절에서 strace를 활용해 유저 공간에서 시스템 콜 동작을 확인했습니다. 이번에는 strace와 ftrace를 함께 보면서 시스템 콜 세부 동작을 분석해보겠습니다. 먼저 설정 방법을 단계별로 알아봅시다. ftrace 설정  strace 실행 ftrace 이벤트를 설정하고 strace를 실행하기시스템 콜 ftrace...

[리눅스커널] 시스템 콜: 유저 공간에서 전달한 문자열 처리 방법

유저 공간에서 시스템 콜 아규먼트로 지정한 파일 이름은 커널 공간에 그대로 전달됩니다.한 가지 예를 들어볼까요?[https://elixir.bootlin.com/linux/v4.19.30/source/fs/open.c]SYSCALL_DEFINE3(open, const char __user *, filename, int, flags, umode_t, mo...

[리눅스커널][시스템콜] strace로 시스템콜 디버깅하기

리눅스에서는 시스템콜 디버깅을 위한 strace라는 훌륭한 툴을 제공합니다.유저 프로그램이 실행할 때 어떤 시스템콜을 실행했는지 확인할 수 있습니다. strace 이란 툴은 리눅스에서 제공하는 강력한 시스템 트레이싱 기능입니다. 물론 라즈베리파이에서도 기본으로 설치되어 있어 바로 사용할 수 있습니다.strace는 다음 기능을 제공합니다.1. glibc(...

[리눅스커널][시스템콜] ftrace로 시스템 콜 인자 디버깅하기

ftrace는 시스템 콜 디버깅을 위한 이벤트를 제공합니다.sys_enter, sys_exit 이라는 ftrace 이벤트를 쓰면 시스템 콜 동작을 확인할 수 있습니다.위 이벤트를 키면 다음과 같은 시스템 콜 디버깅 정보를 출력합니다.1> 시스템 콜 번호2> 시스템 콜이 실행와 종료 시각3> 시스템 콜 핸들러 함수로 전달된 인자sys_en...

[리눅스커널] 시스템 콜/디버깅: ftrace 시스템 콜 이벤트 소개하기

시스템 콜 관련 코드를 분석하다 보면 다음과 같은 의문이 생길 수 있습니다.  평소 시스템 콜은 얼마나 자주 발생할까? 시스템 콜 번호는 어떻게 확인할 수 있을까?ftrace 메시지를 보면 이런 궁금증을 해소할 수 있습니다. ftrace에서는 시스템 콜 동작을 트레이싱하는 다음과 같은 이벤트를 제공합니다. sys_enter sys_exi...

[리눅스커널][시스템콜] 전처리 코드에서 시스템콜 핸들러 확인하기

이렇게 시스템 콜 핸들러 함수는 커널에서 제공하는 매크로 함수로 구현이 됐습니다. 이번에는 전처리 코드에서 시스템 콜 핸들러 구현부를 찾는 방법을 소개합니다. 먼저 커널 소스에서 sys_read() 시스템 콜 핸들러 함수를 찾는 방법을 알아볼까요?  다음 명령어를 입력해봅시다. root@raspberrypi:/home/pi/r...

[리눅스커널][시스템콜] SYSCALL_DEFINEx 매크로로 시스템콜 핸들러 선언

시스템 콜 관련 리눅스 커널 코드를 분석하려고 할 때 가장 먼저 만나는 걸림돌은 무엇일까요?     시스템 콜 핸들러 함수 위치가 어딘지 모르겠다.한 가지 예를 들어 봅시다.POSIX write와 read 시스템 콜의 시스템 콜 핸들러 함수는 sys_read()와 sys_read() 라고 합니다. 그런데 아무리 소스 코드에서...

[리눅스커널] 시스템 콜: ret_fast_syscall 레이블 복귀 과정 알아보기

시스템 콜 실행 완료 후 무슨 일을 할까?시스템 콜을 수행하면 시스템 콜 핸들러를 통해 가상 파일시스템이나 커널 프로세스 함수를 실행합니다. 이후 시스템 콜 종류에 따라 시스템 콜 핸들러 하부 루틴을 수행하고 유저 공간 복귀합니다. 이번 절에서는 이 과정에서 실행하는 ret_fast_syscall 레이블 처리 과정에 대해 살펴보겠습니다. ret...
1 2 3