3

我有一个删除符号的共享库。使用已知的方法/工具来获取符号名称(如nm -Dobjdumpreadelf等),我看到所有符号实际上都被隐藏了。

但是,如果我strings在我的共享库上运行 linux 工具,我可以看到其中一些符号被暴露。我确保我不在消息中打印任何这些符号,但它仍然以某种方式打印我希望被剥离的符号。

strings所以,我的问题是,如何在 linux的命令行工具中隐藏我的符号?任何帮助,将不胜感激。


编辑:我strip -strip--all用来隐藏静态符号,我还启用-fvisibility=hidden编译标志来隐藏不需要的动态符号。

4

1 回答 1

1

取自man strings

描述

对于给定的每个文件,GNUstrings打印至少 4 个字符长的可打印字符序列。

strings与您提到的工具(readelf、等)之间的区别在于objdump,它们主要依赖于 ELF 对象中嵌入的 DWARF 信息,而该strings实用程序从二进制数据中输出任何可打印的序列(与 DWARF 无关)。

我如何才能隐藏我的符号甚至对strings实用程序: 可能会有所帮助。

于 2015-06-19T16:20:59.060 回答