gpt4 book ai didi

c++ - 使用 strip 会删除二进制文件上的 RTTI 信息吗?

转载 作者:行者123 更新时间:2023-11-30 04:16:04 25 4
gpt4 key购买 nike

当我使用带有保留符号信息选项的 gcc 编译 C++ 二进制文件时,当我运行以下命令时,它会列出类的类型信息

objdump -Ct ExecName | grep typeinfo

当我使用剥离选项 -s 编译并运行以下命令时,它说没有符号。

但我担心 RTTI 信息被保存在其他地方。

我希望所有类名都不要显示在二进制文件中。我想确认剥离符号是否最终会删除 RTTI 信息。

在 Blackhat 的这个演示中,他们展示了如何使用 RTTI 来了解二进制文件。 http://www.blackhat.com/presentations/bh-dc-07/Sabanal_Yason/Paper/bh-dc-07-Sabanal_Yason-WP.pdf

我知道您可以在编译时使用 -fno-rtti 关闭 RTTI,但我希望这是最后的手段。

最佳答案

But I am worried the RTTI information is being held in some other place.

是的。

当我要求编译器执行dynamic_cast 时,它必须遵守dynamic_cast 的约定,而这需要RTTI。避免这种情况的唯一方法是拥有一个编译器设置,当您尝试以这种方式使用 dynamic_cast 时,它会给出错误或 UB。编译器有义务按语言提供 RTTI,除非您明确告诉它其他方式。

关于c++ - 使用 strip 会删除二进制文件上的 RTTI 信息吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17923042/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com