Как всегда производить побайтовый идентичный .exe при перестройке приложения C #?

сначала расскажу немного о том, почему яЯ задаю этот вопрос:

В настоящее время я работаю в строго регламентированной отрасли, и поэтому наш кодекс тщательно проверяется официальными тестовыми компаниями. Эти тестовые дома рассчитывают на то, что смогут собрать код и сгенерировать .exe или .dll, которые ТОЧНО одинаковы каждый раз (без явного изменения кода!). Они проверяют MD5 и SHA1 исполняемых файлов, которые они создают, чтобы гарантировать это.

До этого момента я преимущественно занимался кодированием на C ++, где (после нескольких настроек параметров проекта) мне удавалось заставить проекты последовательно перестраиваться на один и тот же MD5 / SHA1. Я сейчас использую C # в проекте, и мне очень трудно получить MD5 's, чтобы соответствовать после восстановления. Я в курсе что естьВремя-Марка» в PE-заголовке файла, и они были очищены до 0. Я также знаю, что существует GUID для .exe, который снова был очищен до 00 00 00 ... и т. д. Однако файлы по-прежнему нет матч. я

m используя CFF Explorer для просмотра и редактирования заголовка PE, чтобы удалить метки времени и даты. После использования инструмента двоичного сравнения в .exe 'есть только 2 блока байтовкоторые разные (оба очень маленькие).

Появляется один из противоречивых блоковпросто перед некоторым двоичным кодом, который в ASCII подробно описывает путь*Project*\obj\Release\xxx.pdb файл.

РЕДАКТИРОВАТЬ: Теперь известно, что это GUID файла * .pdb, однако я до сих порне знаю, смогу ли я изменить его без каких-либо ошибок !?

Другой блок появляется в середине того, что выглядит как имя функции, т.е. (типичный раздел)AssemblyName.GetName.Version.get_Version.System.IO.Ports.SerialPort.Parity.Byte.{

тогда другой кодовый блок:

4A134ACE-D6A0-461B-A47C-3A4232D90816

с последующим:"

} .ValueType .__ StaticArrayInitTypeSize = 7. $ method0x60000ab-1.RuntimeFieldHandle.InitializeArray` ... и т. Д.

Любые идеи или предложения будут приветствоваться!

Ответы на вопрос(6)

Ваш ответ на вопрос