Visual Studio 在编译文件中存储隐藏数据?

Posted

技术标签:

【中文标题】Visual Studio 在编译文件中存储隐藏数据?【英文标题】:Visual Studio store hidden data in the compiled files? 【发布时间】:2011-01-11 22:49:54 【问题描述】:

我想知道 Visual Studio 是否将隐藏数据存储在编译文件(或其他文件)中。 我说的是关于程序是用 Visual Studio 编写的事实的信息数据。

【问题讨论】:

只有您的信用卡和社会安全号码。 你到底想达到什么目的? 【参考方案1】:

Visual Studio 本身不会以这种方式为您的程序添加水印,但通常可以检测到您使用 Microsoft 的工具链只是因为附带条件,即文件中编译了哪些顺序方法,使用了哪些异常实现(MSVC++ 使用NT 的 SEH 之上的特定异常代码以实现 C++ 异常;例如,MinGW 使用完全不同的系统),以及对函数名称应用了哪些修饰。这些信息就是PEID 等工具的运作方式。

【讨论】:

所以如果我用 Visual Studio 2010 编写代码,然后用 MinGW 编译它,在这种情况下,有没有人可以知道我是否使用过 Visual Studio? @xRobot:假设他们无权访问您的源代码,那么不,他们将无法分辨。另一方面,让 MSVC++ 使用 MinGW 作为编译器很难甚至是不可能的。如果有人能说出您使用的是什么工具链,这有什么关系呢? MinGW 也使得调用很多 Windows API 变得很困难,即 WMI,因为它没有一套完整的 Windows 标头。 (例如,它没有wbemidl.h,并且缺少大多数与 COM 相关的东西)【参考方案2】:

MS c++ 编译器/链接器将在 DOS 存根和 PE 标头之间添加一些编码数据,它以字母 Rich 开头,主要包含版本信息,请参阅 this page 了解更多信息

【讨论】:

【参考方案3】:

如果我正确理解您的问题:

如果您不使用 Express Edition 中没有的特定选项,则无法区分您是使用 Visual C++ Express Edition(免费)还是其他非免费版本构建程序。一些VS2008版本的对比可以看here

【讨论】:

以上是关于Visual Studio 在编译文件中存储隐藏数据?的主要内容,如果未能解决你的问题,请参考以下文章

我的 C 代码没有在 Visual Studio 2017 上编译,并且一直给我一个错误,说它找不到特定的文件?

如何在 Visual Studio 中隐藏自定义工具生成的文件

使用 Boost 在 Visual Studio10 上编译和使用 JSONCPP

在 Visual Studio 2017 中隐藏生成的 js 文件

译如何在 Visual Studio 中调试异步代码

[译]如何在visual studio中调试Javascript