是否可以使用LD_PRELOAD
覆盖其中一个Linux内核函数?
例如,我想更改cookie_hash
中的Linux/net/ipv4/syncookie.c
函数作为我的程序fooserver
的侦听套接字。我可以使用LD_PRELOAD来做,或者我需要为此重新编译内核吗?
还有其他选择吗?
谢谢,
答案 0 :(得分:2)
不,不可能使用LD_PRELOAD替换内核中的函数。
您需要重新编译内核。
如果函数在内核模块中,那么您可以卸载,重新编译和重新加载模块,而无需重新启动内核。
如果您经常这样做,那么您将需要使用第二台计算机或虚拟机,这样您就不必继续重新启动正在编程的计算机。
答案 1 :(得分:0)
您必须使用kprobes或systemtap来覆盖内核函数。没有必要重新编译。
答案 2 :(得分:0)
你可以在Linux Kernel中做类似的事情。 这不是一个微不足道的操作,但你应该做的是下一步:
但是有许多隐藏的陷阱和潜在的崩溃。 但一般来说,这种方法有效。