为什么在exe文件中发现了混乱的名字

Why mangled names found within an exe?

本文关键字:混乱 发现 exe 文件 为什么      更新时间:2023-10-16

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

这样的东西
.?AVElxInterface@@
.?AV?$CBufferRefT@H@@
.?AV?$CBufferT@H@@
.?AV?$CBufferRefT@PAVElxInterface@@@@

当然,它们是c++内部模块提供的某些类/成员的混乱名称。

他们为什么在那里?怎样才能避免暴露它们呢?

就我个人而言,我不认为有任何理由掩盖这些数据,因为它没有向那些查看它的人提供关于如何利用这些符号做一些"坏事"的线索。然而,如果这对你来说真的是一个大问题,也就是说,你害怕某种程度上被逆向工程,那么你可能会选择代码混淆。例如,Semantic Designs为这些目的提供了一个产品,并声称它具有高质量。我自己从来没有机会尝试过那些东西。请记住这是商业广告