c - 剥离的符号不会从字符串 linux 工具中隐藏



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

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

所以,我的

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


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

man strings

描述

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

strings和你提到的工具(readelfobjdump等)之间的区别在于,这些工具主要依赖于嵌入在ELF对象中的DWARF信息,而strings实用程序从二进制数据输出任何可打印的序列(DWARF无关)。

即使从strings实用程序中隐藏我的符号,我也可以隐藏我的符号:这可能会有所帮助。

最新更新