如何防止某个dlopened库使用某些libc函数?

时间:2016-10-17 14:40:39

标签: c unix linker

我正在编写一个Linux / Unix程序,该程序在插件中有很多实现,这些插件由程序按需处理。

我想阻止这些插件库使用一些混乱主机进程的全局状态的libc函数(例如操纵信号处理程序等)。

最好的方法是什么?

据我所知,我不能在这里使用经典的LD_PRELOAD技巧,因为libs已经过时了。

1 个答案:

答案 0 :(得分:0)

实际上,你不能。从库运行的代码使用宿主应用程序的完全权限运行。不要加载你不信任的图书馆,不要做愚蠢的事情。

您可以想象在加载库之前检查库,并且(例如)拒绝具有意外依赖性的库,或者具有它们不应该使用的函数的重定位。 (例如,这可以使用lddreadelf来完成。)但是,这永远不会完全可靠;恶意库可以通过多种方式隐藏其对各种功能的使用。