如何在可执行文件中隐藏符号名称(来自asm代码)

时间:2013-10-27 08:55:46

标签: assembly nasm ld

我在asm有一个小的“hello world”程序。编译和链接后,我可以在最终的elf文件中看到我用于变量和标签的所有名称(用文本编辑器打开)。为什么?不应该用静态或相对地址替换变量等吗? 如何隐藏此信息?

我在ubuntu x86 64上使用nasm:nasm -f elf64 hello.asm && ld -o a hello.o

2 个答案:

答案 0 :(得分:1)

是调试信息。您可以使用命令strip将其从目标文件中删除。

答案 1 :(得分:1)

在您的情况下,通过调用--strip-all标志也可以在链接时完成剥离: nasm -f elf64 hello.asm && ld -o a hello.o --strip-all

这将删除输出文件中的所有符号,如果您只想删除可以使用--strip-debug的调试符号。

您可以在此处阅读更多选项:http://ftp.gnu.org/old-gnu/Manuals/ld-2.9.1/html_node/ld_3.html