我正在编写一个 Linux/Unix 程序,该程序在插件中进行了大量实现,这些插件由程序按需部署。
我想阻止这些插件库使用一些扰乱主机进程全局状态的 libc 函数(例如操作信号处理程序等)。
最好的方法是什么?
据我所知,我不能在这里使用经典的LD_PRELOAD
技巧,因为库已经被打开了。
最佳答案
实际上,你不能。从库运行的代码以主机应用程序的完全权限运行。不要加载您不信任的库,以免做出愚蠢的事情。
您可以在加载库之前对其进行检查,并(例如)拒绝具有意外依赖项的库,或者对不应使用的函数进行重定位的库。 (例如,这可以使用 ldd 或 readelf 来完成。)但是,这永远不会完全可靠。恶意库可以通过多种方式隐藏其对各种函数的使用。
关于c - 如何防止 dlopened 库使用某些 libc 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40089315/