Ubuntu 14.04 배포용 ELF 로더의 커널 구현을 수정해야 합니다. 다음을 사용하여 소스를 다운로드하십시오.
sudo apt-get source linux-image-$(uname -r)
구성 스크립트를 실행했습니다.
make config
루트 트리에서. 끝없는 일련의 입력 요청 후에 스크립트는 .config
커널(또는 모듈 세트)을 빌드하는 데 필요한 파일을 생성합니다. 내가 사용하고 있는 커널 버전은 linux-3.13.0
다음과 같은 소스 트리 레이아웃을 가지고 있습니다.
$ ls
arch Documentation fs kernel README sound
block drivers include lib REPORTING-BUGS tools
COPYING dropped.txt init MAINTAINERS samples ubuntu
CREDITS elf.dat ipc Makefile scripts usr
crypto FileSystemMake Kbuild mm security virt
debian.master firmware Kconfig net shortcuts
ELF 로더는 /path/to/source/fs/binfmt_elf.c
다음 위치 에 있습니다.이 문제, 단일 모듈을 컴파일하려면 다음을 실행하는 것으로 충분합니다.
make /path/to/module/directory
이 경우에는 다음과 같습니다.
make /path/to/source/fs
컴파일은 상당히 장황합니다. (가상 머신에서) 약 20분 정도 걸리며, 출력은 (기본적으로) 모듈과 동일한 디렉터리에 기록됩니다. 다음을 실행하여 대상 파일을 찾았습니다.
find . -name "*.o"
존재하다 /path/to/source/fs
. 이름으로 필터링하면 다음을 실행하여 ELF 로더를 찾을 수 있습니다.
find . -name "*elf*.o"
현재 소스 코드에서는 다음과 같이 작성됩니다(기본값):
/path/to/source/fs/binfmt_elf.o
경험이 풍부한이 튜토리얼module_name.ko
, 커널 모듈에는 사용자 공간 개체 파일과 구별하기 위한 명명 규칙이 있다는 것을 알았습니다 .
현재 ELF 로더가 존재한다는 점을 고려하면(그리고 이를 언로드하면 바이너리 실행이 방지될 수 있음) 새로운(수정된) ELF 로더를 어떻게 커널에 삽입할 수 있습니까?