Linux

如何欺騙每個程序的 uname -rs

  • September 14, 2017

我的 ubuntu 伺服器Linux 3.13.0-63-generic在我執行時返回uname -rs。從我在網際網路上找到的內容來看,uname這也是一個系統呼叫,例如,當第三方程序從 C++ 執行這個系統呼叫時,它不能輕易被覆蓋。

有誰知道是否有辦法欺騙返回值,比如通過操縱/proc/sys/kernel/ostype文件?如果我可以對每個流程實例進行欺騙,那就更好了。

據我所知,只有有限的方法可以使用系統呼叫release為每個程序自定義( uname -r) 和machine( ) ,所有這些都通過命令公開,並且( ) 根本無法自定義。uname -mpersonality()setarchsysname``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它來欺騙它的系統呼叫,但這需要更高級的程式。

引用自:https://unix.stackexchange.com/questions/270019