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