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

标签 c unix linker

我正在编写一个 Linux/Unix 程序,该程序在插件中进行了大量实现,这些插件由程序按需部署。

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

最好的方法是什么?

据我所知,我不能在这里使用经典的LD_PRELOAD技巧,因为库已经被打开了。

最佳答案

实际上,你不能。从库运行的代码以主机应用程序的完全权限运行。不要加载您不信任的库,以免做出愚蠢的事情。

您可以在加载库之前对其进行检查,并(例如)拒绝具有意外依赖项的库,或者对不应使用的函数进行重定位的库。 (例如,这可以使用 ldd 或 readelf 来完成。)但是,这永远不会完全可靠。恶意库可以通过多种方式隐藏其对各种函数的使用。

关于c - 如何防止 dlopened 库使用某些 libc 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40089315/

相关文章:

c - 如何将迭代代码更改为递归代码?

Java -Xmx1028m 在 Mac OS X 中不起作用

c++ - ROS Linking errors using boost::filesystem library 在linux下使用C++

c - 如何确保 malloc 和 free 中没有遗漏某些内容?

c - 我编写了矩阵乘法 CUDA 程序,但与我的 CPU 结果相比,它总是得到错误的答案?

检查正在运行的程序中的内存泄漏

linux - 关于 UNIX 移动命令覆盖保护

c - 在哪里可以找到 sys_errlist 的内容?

c++ - GDAL 未链接

c++ - 检查静态库是否定义了所有符号