Проверка хэша в исполняемом файле.

leguo
Дата: 11.08.2017 08:01:52
Добрый день.

Мне нужно MD5-хэш записать в исполняемый файл.
Затем сама программа должна рассчитывать свой хэш и
сверять с эталонным. На форуме полно тем со
сверкой контрольных сумм, но пока полной ясности,
как это сделать у меня нет.
Буду благодарен любой помощи.
Dima T
Дата: 11.08.2017 08:08:36
Допиши в конец EXE, а при старте считай без этой приписки и сравнивай с ней.
Roman Mejtes
Дата: 11.08.2017 13:50:36
не проще использовать электронно-цифровую подпись? подписываем файл, в программе проверяем подпись, если файл изменить, подпись анулируется.
+ подпись дает массу других плюсов
Roman Mejtes
Дата: 11.08.2017 18:30:33
Dimitry Sibiryakov,

так себе пример, в реальном бою не очень применим.
а на деле, если нужно внутренняя проверка, то лучше в Build Events через signtool.exe подписывать файл при каждой сборке и будет счастье
mayton
Дата: 12.08.2017 09:54:16
Roman Mejtes
не проще использовать электронно-цифровую подпись? подписываем файл, в программе проверяем подпись, если файл изменить, подпись анулируется.
+ подпись дает массу других плюсов

ЭЦП делать не проще т.к. усложняется протокол. Требуется генерация сертификатов и введение
в обязательство их куда-то передавать и обновлять.

Автор в настоящий момент делает хеш MD5. Это простейшая проверка целостности.
Roman Mejtes
Дата: 13.08.2017 00:56:27
mayton
Roman Mejtes
не проще использовать электронно-цифровую подпись? подписываем файл, в программе проверяем подпись, если файл изменить, подпись анулируется.
+ подпись дает массу других плюсов

ЭЦП делать не проще т.к. усложняется протокол. Требуется генерация сертификатов и введение
в обязательство их куда-то передавать и обновлять.

Автор в настоящий момент делает хеш MD5. Это простейшая проверка целостности.

шта? куда и что передавать? вам надо проверять целостность exe файла программы, которые вы делайте или я не правильно понял? если да, то куда и зачем, и что вы передаете?
у вас будет на компе открытый и закрытый ключ. когда подписывайте файл, открытая подпись будет уже в файле и при копировании\передаче или что угодно, передаваться вместе с файлом, как в любом другом подписанном исполняемом файле.
mayton
Дата: 13.08.2017 01:28:30
Автор пишет

Мне нужно MD5-хэш записать в исполняемый файл.
Затем сама программа должна рассчитывать свой хэш и
сверять с эталонным.

Это все что у нас есть. Вы предлагаете другую постановку.
Я изначально не имею ничего против ЭЦП но предупреждаю
о ненужном безосновательном (пока) усложнении изначально
простой постановки.
Dimitry Sibiryakov
Дата: 13.08.2017 13:40:04
Вообще-то в исполняемом файле и без того есть crc, но глупая винда его не проверяет.
Dima T
Дата: 14.08.2017 10:14:22
Dimitry Sibiryakov
Вообще-то в исполняемом файле и без того есть crc, но глупая винда его не проверяет.

Смысл его виндовсом проверять? CRC и так постоянно проверяется: при чтении сектора с HDD, при передаче по сети и т.д.

Эта лишняя проверка ничего не изменит с точки зрения отловить изменение файла в результате какого-то технического сбоя.

Если использовать как примитивную защиту от изменения, то виндовс тут тоже не помощник, т.к. если бы он проверял, то все бы об этом знали и после изменения просто пересчитали бы CRC.