为什么在exe中找到错位的名字?

时间:2013-03-12 11:17:58

标签: c++ linker name-mangling

我有一个MS C / C ++静态链接版本exe(没有调试信息),不会导出任何符号,但是当用十六进制查看器浏览它时,我会看到像

.?AVElxInterface@@
.?AV?$CBufferRefT@H@@
.?AV?$CBufferT@H@@
.?AV?$CBufferRefT@PAVElxInterface@@@@

当然它们是内部C ++模块提供的某些类/成员的错位名称。

为什么他们在那里?如何避免暴露他们?

1 个答案:

答案 0 :(得分:1)

就个人而言,我认为没有任何理由过度隐藏这些数据,因为它没有提供任何线索给那些查看它如何利用这些符号做“坏”的事情。但是,如果这对你来说真的是一个很大的问题,即你害怕某种方式进行逆向工程,那么你可以选择代码混淆。例如,Semantic Designs为这些目的提供产品并声称它具有高品质。我自己从来没有机会尝试过这些东西。请记住它是商业化的。