Сравните два .exe на различия (оба созданы на одной машине) - PullRequest
5 голосов
/ 21 апреля 2011

Я пытаюсь проверить, что Visual Studio генерирует предсказуемый / повторяемый исполняемый файл из того же кода.

Для этого я создаю небольшую программу (один файл .cpp) и собираю .exe (A), вносю некоторые изменения и делаю еще один .exe (B), затем отменяю измененияи создание еще одного .exe (C).

Моя теория состоит в том, что информация для A и C будет одинаковой и подтверждает, что MSVS генерирует предсказуемые / повторяемые .exe-файлы из одного и того же кода.

Несколько проблем:

(я сохранил результаты команд в .txt's)

Я использовал dumpbin / rawdata, чтобы избавиться от данных штампа времени / даты и сохранить необработанное содержимоекаждого раздела файла (не совсем уверен, что означает «raw»), но при сравнении с windiff остается 2 строки различия.

Запуск dumpbin / headers показывает различия в разделе .rdata (Raw Data #2) в каталогах отладки;различия во времени (что ожидается) и в формате: X, {Y}, «разница здесь», столбец Z.

Я искал форумы и msdn в течение нескольких часов и не могу найти решениеиспользуя свалку.Подобные сообщения на форуме закончились пожав плечами.

Кто-нибудь может мне помочь?Я сделаю все возможное, чтобы добавить больше специфичности в соответствии с просьбой.

Спасибо, ZayJay

Просмотренные ссылки:
http://support.microsoft.com/kb/177429
http://support.microsoft.com/kb/164151
http://msdn.microsoft.com/en-us/windows/hardware/gg463119.aspx
http://www.ms -news.net / f3614 / how-can-i-сравнить-2-исполняемые-1980031.html
+ другие ...

Также работаетсравнение между моим .cpp и новым .cpp с main, который возвращает только 0, дает различия в тех же областях.Я ожидал, что будут различия в разделе .text (Raw Data # 1) результатов dumpbin / headers ... Все, что нужно прочитать или получить прямые ответы, было бы здорово!спасибо!

1 Ответ

1 голос
/ 23 апреля 2011

В переносимом исполняемом формате есть несколько полей, которые изменят каждую компиляцию (формат PE используется для .exe и .dll).Написание приложения для синтаксического анализа, в котором память отображает такой exe-файл и просматривает его внутренние структуры данных, не так уж сложно (фактически, это то, что делает dumpbin).В основном вам необходимо убедиться, что вы исключаете любые идентификаторы GUID, отметки даты и все, что может разумно измениться.

В разделе ссылок http://en.wikipedia.org/wiki/Portable_Executable (документы формата PE от Microsoft) объясняетсяформат.Я написал похожее приложение (мое было для извлечения информации о версии из раздела ресурсов) и нашел документацию довольно хорошей.

Тем не менее, это кажется пустой тратой времени.Современные компиляторы фантастичны в том, что они делают.И в них, как правило, нет случайности, поэтому вы должны ожидать, что разделы .rdata, .data и .text будут в целом одинаковыми.В общем, когда вы начинаете задавать вопросы своему компилятору (особенно большому, например, Visual Studio или gcc), есть вероятность, что вы должны глубоко вздохнуть и вернуться назад и посмотреть на свой собственный код.Ошибок мало и далеко друг от друга.И те немногие, что там обычно, уже пишут статьи о MSDN / StackOverflow.

(Другими словами: что именно вы пытаетесь достичь?)

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