Linux 3.13.0-63-generic
実行すると、Ubuntuサーバーがuname -rs
。私がインターネットで見つけたところ、uname
これはシステムコールでもあり、たとえば、サードパーティプログラムが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
システムコールをなりすましますが、これにはより高度なプログラミングが必要です。