현재 ELF 로더가 존재하는 경우 수정된 ELF 로더를 어떻게 삽입합니까?

현재 ELF 로더가 존재하는 경우 수정된 ELF 로더를 어떻게 삽입합니까?

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 로더를 어떻게 커널에 삽입할 수 있습니까?

관련 정보