Até onde eu sei, existem apenas maneiras limitadas em que release
( uname -r
) e machine
( uname -m
) podem ser personalizados por processo usando o personality()
chamada do sistema , todas expostas através do setarch
e sysname
( uname -r
) não podem ser personalizados.
$ 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
Se você quiser falsificar o uname de uma maneira diferente e o programa estiver dinamicamente vinculado, você pode usar LD_PRELOAD
para sobrescrever a função uname
; consulte Redirecionar um descritor de arquivo antes da execução para um exemplo de sobrecarga de função através de LD_PRELOAD
. Se o programa estiver vinculado estaticamente, você pode usar ptrace
para falsificar suas chamadas de sistema, mas isso requer uma programação mais sofisticada.