gpt4 book ai didi

visual-c++ - 为什么我可以在使用 Visual C++ 编译的 .exe 文件中看到类/结构名称?

转载 作者:行者123 更新时间:2023-12-02 00:20:21 25 4
gpt4 key购买 nike

当查看已编译的 relese .exe 二进制文件 时,我可以在其中找到类/结构名称!这很奇怪——显然不需要这些符号。我担心的是,此类符号可用于对我的软件进行反向工程,从而对软件许可保护造成很大风险。

例如,我可以找到文本.?AVCMySecureKeyManager(原始类名是CMySecureKeyManager,看起来所有名称都添加了前缀“.?AV”),很容易猜到我的代码在做什么,对吧?..看起来就像为黑客敞开大门。

特别是,我可以说我已经启用所有可能的优化 Visual C++ 编译器/链接器选项,关闭所有浏览/调试信息生成,也许我'我错过了什么?

最佳答案

您看到的是 RTTI (运行时类型信息)。如果您不在代码中使用 dynamic_casttypeid,通常可以安全地将其关闭。请注意,异常总是使用 RTTI(用于 catch 语句匹配)并且不可能为它们禁用它。

如果您确实需要 dynamic_cast,那么您可以在编译后从 EXE 中清除名称。该代码不依赖于实际的名称字符串,而仅依赖于它们的地址。

也就是说,类名虽然有用,但在逆向工程中并不重要。不要依赖他们的缺席作为保证。

关于visual-c++ - 为什么我可以在使用 Visual C++ 编译的 .exe 文件中看到类/结构名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11291895/

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