如何欺骗每个进程的 uname -rs

如何欺骗每个进程的 uname -rs

Linux 3.13.0-63-generic当我运行时,我的 ubuntu 服务器返回uname -rs。从我在互联网上发现的情况来看,uname这也是一个系统调用,例如,当第三方程序从 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_PRELOAD重写该uname函数;看执行前重定向文件描述符有关通过 进行函数重载的示例LD_PRELOAD。如果程序是静态链接的,您可以用来ptrace欺骗它的系统调用,但这需要更高级的编程。

相关内容