Linux
如何欺騙每個程序的 uname -rs
我的 ubuntu 伺服器
Linux 3.13.0-63-generic
在我執行時返回uname -rs
。從我在網際網路上找到的內容來看,uname
這也是一個系統呼叫,例如,當第三方程序從 C++ 執行這個系統呼叫時,它不能輕易被覆蓋。有誰知道是否有辦法欺騙返回值,比如通過操縱
/proc/sys/kernel/ostype
文件?如果我可以對每個流程實例進行欺騙,那就更好了。
據我所知,只有有限的方法可以使用系統呼叫
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
它來欺騙它的系統呼叫,但這需要更高級的程式。