首页 > 解决方案 > 重新定义共享库中的符号

问题描述

我需要从共享库(.so)文件中更改某些符号,如下例所示:我需要将abc.so 文件中的符号重命名为符号xyz。我有一个工具可以在头文件中替换它,这只是我在 .so 共享库中更改所面临的挑战。对于共享库,是否有任何工具或命令可以帮助我反汇编 .so 文件、更新符号并重新组装为 .so 文件?对于共享库,我们需要一种重建符号表的机制。如果有任何工具可以完成我的任务,需要帮助吗?

仅供参考:更改源是最好的方法,但对于短期的解决方案,它可以帮助在符号级别替换代码字。

标签: shared-librariesbinutilsobjcopyreadelf

解决方案


您可以使用 GNU binutils 中的 objcopy 来执行此操作。

objcopy --redefine-sym abc=xyz <input_so_file> [output_so]
objcopy --redefine-syms <Filename> [output_so]

https://linux.die.net/man/1/objcopy


推荐阅读