Какую информацию обо мне и моей системе компиляторы добавляют к исполняемым файлам?

В настоящее время я использую Microsoft Visual Studio 2010.

Если мы скажем, что мы даем 10 разных людей копию MSVC 10 и короткий список С++ Hello, World. Все они создают новый проект, используя точно такие же настройки, добавляя новый файл cpp с программой Hello, World и компилируя его.

  • Получают ли они все одинаковые двоичные файлы?
  • Если нет, каковы точные различия?
  • Какая информация о моей системе добавляет MSVC в мой исполняемый файл?

Паранойя!

Ответ 1

Если вы каждый создаете проект с нуля, вы, по крайней мере, получите разные GUID, считая его типом проекта, который нуждается в GUID. GUID устанавливается во время создания проекта, поэтому, если один из вас создает проект, а затем вы делитесь проектом, в бинарниках не будет разницы. В идентификаторах AFAIK нет идентификационной информации.

Ответ 2

Просто не могу ответить, даже если вопрос больше года.

Помимо того, что уже было упомянуто (пути источника и guid), существует также структура, присутствующая в большинстве файлов Portable Executable, известных как Rich Header.

Более подробную информацию можно найти по следующим ссылкам:

http://ntcore.com/files/richsign.htm

http://web17.webbpro.de/index.php?page=microsofts-rich-header

Ответ 3

Насколько я знаю, вы получите то же самое двоичное...