shared-libraries - 修改已编译共享库中符号的可见性
问题描述
我的项目依赖于一个第三方库,它可以导出更多的符号。其中一些符号被其他库和主程序无意覆盖。
如何更改已编译共享对象的函数和变量的可见性?
解决方案
如何更改已编译共享对象的函数和变量的可见性?
您可以通过修改动态符号部分 ( .dynsym
) 来更改符号的可见性——它包含一个Elf32_Sym
s 或Elf64_Sym
s 的平面数组,您可以覆盖其中的.st_info
and.st_other
字段(请参阅此答案)。
我不知道有任何工具可以使这变得简单,您可能必须编写一个自定义程序才能做到这一点。
推荐阅读
- php - preg_split :根据非常具体的模式拆分字符串
- tensorflow - TensorFlow 中的 Adam:矩估计发生在哪里?
- dart - 使用 Inherited Widget 时如何处理 bloc?
- image - 更改产品图像颜色
- android - 如何在 Android 6+ 上获取 USB 存储权限?
- java - 为什么 UTF-8 BOM 字节 efbbbf 可以替换为 \ufeff?
- hyperledger-fabric - 需要一些想法来通过超级账本实现数据市场
- django - Django - 从管理员定义?下一页
- c# - WCF 配置问题:元数据包含无法解析的引用
- yii2 - \yii\db\Query() 中的 Yii2 数学