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

Visual c++ 为什么我可以在使用Visual C+编译的.exe文件中看到类/结构名称+;?,visual-c++,mfc,obfuscation,exe,reverse-engineering,Visual C++,Mfc,Obfuscation,Exe,Reverse Engineering,查看编译的relese.exe二进制文件时,我可以在其中找到类/结构名称!这很奇怪——显然这些符号没有必要。让我担心的是,这些符号可以用于反向生成我的软件,给软件许可证保护带来很大风险 例如,我可以找到文本。?AVCMySecureKeyManager(原始类名是CMySecureKeyManager,看起来所有名称都添加了前缀“?AV”),很容易猜出我的代码在做什么,对吗?。。看起来像是一扇为黑客敞开的大门 特别是,我可以告诉我,我已经启用了“强>启用所有可能的优化” VisualC++编译器

查看编译的relese.exe二进制文件时,我可以在其中找到类/结构名称!这很奇怪——显然这些符号没有必要。让我担心的是,这些符号可以用于反向生成我的软件,给软件许可证保护带来很大风险

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

特别是,我可以告诉我,我已经启用了“强>启用所有可能的优化”<强> VisualC++编译器/链接器选项,<强>关闭所有浏览/调试信息生成<强>,也许我遗漏了什么东西?

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

如果确实需要
dynamic\u cast
,则可以在编译后从EXE中删除名称。代码不依赖于实际的名称字符串,而只依赖于它们的地址


也就是说,类名虽然有用,但在逆向工程中并不重要。不要指望他们缺席就可以保证。

这只是类名,对吗?仅仅暴露类名是一个很大的风险吗?担心吗?看看软冰!黑客会完美的攻击!禁用/GR-compiler选项成功了!!!非常感谢。而my.exe的大小减小了55Kb:)