Linux 3.13.0-63-generic
실행하면 우분투 서버가 uname -rs
. 내가 인터넷에서 찾은 바에 따르면 uname
이는 시스템 호출이기도 하며, 예를 들어 제3자 프로그램이 C++에서 이 시스템 호출을 실행할 때 쉽게 재정의할 수 없습니다.
/proc/sys/kernel/ostype
예를 들어 파일을 조작하여 반환 값을 스푸핑하는 방법이 있는지 아는 사람이 있습니까 ? 각 프로세스 인스턴스를 속일 수 있다면 더 좋을 것입니다.
답변1
내가 아는 한, release
( uname -r
) 및 machine
()를 사용하여 프로세스별로 사용자 정의할 수 있는 방법은 제한되어 있습니다.uname -m
personality()
시스템 호출, 모두 노출됨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_PRELOAD
이 uname
함수를 재정의할 수 있습니다.실행 전 파일 설명자 리디렉션함수 오버로딩을 수행하는 방법의 예입니다 LD_PRELOAD
. 프로그램이 정적으로 링크되어 있으면 ptrace
시스템 호출을 스푸핑할 수 있지만 이를 위해서는 더 고급 프로그래밍이 필요합니다.