각 프로세스에 대해 uname -rs를 스푸핑하는 방법

각 프로세스에 대해 uname -rs를 스푸핑하는 방법

Linux 3.13.0-63-generic실행하면 우분투 서버가 uname -rs. 내가 인터넷에서 찾은 바에 따르면 uname이는 시스템 호출이기도 하며, 예를 들어 제3자 프로그램이 C++에서 이 시스템 호출을 실행할 때 쉽게 재정의할 수 없습니다.

/proc/sys/kernel/ostype예를 들어 파일을 조작하여 반환 값을 스푸핑하는 방법이 있는지 아는 사람이 있습니까 ? 각 프로세스 인스턴스를 속일 수 있다면 더 좋을 것입니다.

답변1

내가 아는 한, release( uname -r) 및 machine()를 사용하여 프로세스별로 사용자 정의할 수 있는 방법은 제한되어 있습니다.uname -mpersonality()시스템 호출, 모두 노출됨setarch주문하다, sysname( uname -r)는 전혀 사용자 정의할 수 없습니다.

$ uname -rsm; setarch i386 --uname-2.6 --32bit uname -rsm
Linux 3.16.0-4-amd64 x86_64
Linux 2.6.56-4-amd64 i686

uname을 다른 방식으로 속이고 프로그램을 동적으로 연결하려면 다음을 사용하여 LD_PRELOADuname함수를 재정의할 수 있습니다.실행 전 파일 설명자 리디렉션함수 오버로딩을 수행하는 방법의 예입니다 LD_PRELOAD. 프로그램이 정적으로 링크되어 있으면 ptrace시스템 호출을 스푸핑할 수 있지만 이를 위해서는 더 고급 프로그래밍이 필요합니다.

관련 정보