简体   繁体   English

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

[英]Why mangled names found within an exe?

I have an MS C/C++ statically linked release exe (no debug info on it), that does not export any symbol , but when browsing it with a hex viewer I see things like 我有一个MS C / C ++静态链接发布exe(没有调试信息),它不导出任何符号 ,但是当用十六进制查看器浏览它时,我看到像

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

of course they are the mangled names of certain classes/members provided by the internal C++ modules. 当然,它们是内部C ++模块提供的某些类/成员的错位名称。

why are they there? 他们为什么在那里? how can avoid exposing them? 怎么能避免暴露他们?

Personally, I don't see any reason to over-hide this data, as it supplies no clue to people who view it on how to utilize these symbols to do something "bad". 就个人而言,我认为没有任何理由过度隐藏这些数据,因为它没有提供任何线索给那些查看它如何利用这些符号做“坏”事情的人。 However, if that's really a huge problem for you, ie you are afraid of being sort of reverse-engineered somehow, then you may opt to code obfuscation. 但是,如果这对你来说真的是一个很大的问题,即你害怕某种程度的逆向工程,那么你可能会选择代码混淆。 For example, Semantic Designs offer a product for these purposes and claim that it's of high quality. 例如, Semantic Designs为这些目的提供了一种产品,并声称它具有高质量。 I've never had a chance to try that stuff myself. 我自己从来没有机会尝试过这些东西。 Keep in mind that it's commercial. 请记住它是商业的。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM