Если я вставлю комментарий в исходный код, будут ли изменены бинарники MD5? - PullRequest
2 голосов
/ 09 ноября 2011

Мне просто интересно ... Если бы это был тот случай, когда я думал о создании разных вариантов повторной продажи для каждого клиента, который продал свое программное обеспечение, могу ли я проверить каждую из них с MD5, просто изменив комментарий в исходном коде и перекомпилировав? Я имею в виду, изменится ли комментарий ## внутри кода C ++, C # или Java на двоичный MD5?

Ответы [ 5 ]

4 голосов
/ 09 ноября 2011

Комментарии удаляются в начале (или до) процесса компиляции, поэтому вставка комментария не изменит хэш скомпилированного двоичного файла.

Единственное исключение (о котором я могу думать), если ваши двоичные файлы содержат номера строк, которые могут меняться в зависимости от комментариев. Обычно это происходит, когда вы компилируете в режиме отладки, но вы также можете принудительно выполнить его, используя что-то вроде макроса __LINE__ в C ++. Но даже в этом случае содержание комментария не имеет значения, только сколько строк оно занимает (так что вы могли бы просто использовать пустые строки для этой цели). Кроме того, выпущенное программное обеспечение, вероятно, не должно включать эту информацию.

2 голосов
/ 09 ноября 2011

Короткий ответ - нет.Комментарии отбрасываются очень рано в процессе компиляции.

Более длинный ответ иногда - но ненадежно.Существует ряд предвидимых причин появления следов (больше похожих на побочные эффекты) комментария.Однако в лучшем случае они хрупкие.

Я предполагаю, что это для какого-то автоматизированного процесса, например, для продажи программного обеспечения на веб-сайте.Как насчет вывода файла заголовка, такого как "user.h", в котором просто указывается имя / email / username / etc в виде строки # define'd, а затем распечатывается это где-то на экране About вашей программы (как для удобства пользователя, так и длякомпилятор не оптимизирует его)?Это требует, чтобы вы перекомпилировали вашу программу для каждого пользователя, но это не может быть проблемой, если сборка займет всего несколько секунд.

2 голосов
/ 09 ноября 2011

В некоторых случаях двоичный файл изменяется для каждой сборки, если есть, например, временная метка сборки. Это может обеспечить отслеживаемость, которую вы хотите. Однако комментарии не должны влиять на MD5 двоичного файла режима выпуска, если только ваш компилятор не содержит ошибок.

1 голос
/ 09 ноября 2011

Комментарий не может быть скомпилирован в код операции процессора, поэтому он не изменит хэш большого двоичного объекта.

0 голосов
/ 09 ноября 2011

Да это может изменить двоичные файлы.

Например, в C / C ++ есть, например, макрос LINE .Если это используется в коде, он изменит двоичный файл, если вы добавите или удалите строку с комментарием.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...