Какую информацию обо мне и моей системе компиляторы добавляют к исполняемым файлам?
В настоящее время я использую 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
Насколько я знаю, вы получите то же самое двоичное...