Как создать защищенную от взлома установку - PullRequest
3 голосов
/ 21 июля 2010

Я точно не знаю, как это обычно работает, поэтому, пожалуйста, скажите мне, где копать ..

Мне нужно создать установочный файл приложения, защищенного от взлома. В принципе, если по какой-то причине установочный файл (-ы) был изменен, он должен сообщить об этом и предотвратить дальнейшую установку.

Как это работает? Я полагаю, это как-то связано с хэшем md5.

Можно ли внедрить эти вещи в модуль установщика CustomActions?

Ответы [ 7 ]

4 голосов
/ 21 июля 2010

Это невозможно.Конечно, вы можете хэшировать одну часть установочного пакета.Но тогда вам нужна другая часть, которая проверяет хеш, и которую можно изменить.Это повторялось неоднократно, и каждый раз оно ломалось из-за этого недостатка.

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

2 голосов
/ 21 июля 2010

По сути, вы запрашиваете Authenticode . Это интегрированная часть Windows, и цифровая подпись EXE вашего установщика позволит вам убедиться, что он не был подделан между вами и вашим пользователем.

Следует также отметить, что при цифровой подписи в запросах UAC будет отображаться название вашей компании и синий баннер (вместо «Неизвестно» и пугающий желтый баннер).

Однако EXE-файл с цифровой подписью не будет запускаться, если подпись недействительна. Для этого ваш установщик должен проверить свою подпись Authenticode .

2 голосов
/ 21 июля 2010

Если я правильно помню, установочный пакет VS 2010 создает установочный пакет InstallShield. То, что вы хотите сделать, это подписать этот пакет цифровой подписью.

Итак, что вам нужно сделать для достижения ваших целей: 1) Выясните, что такое приложение-установщик. Вероятно, InstallShield, если вы используете VS, есть альтернативы InstallShield. 2) Пройдите процесс создания пакета установки с помощью этого инструмента. 3) Прочтите инструкции из приложения Install Builder, чтобы узнать, как подписывать свои пакеты

Скорее всего, вам потребуется приобрести подтверждение у поставщика системы безопасности, такого как Verisign. Неподтвержденные подписанные файлы не намного лучше, чем подписанные файлы.

Это самый надежный способ самостоятельной проверки пакетов установки.

Следующая лучшая альтернатива - проверить контрольную сумму файла (обычно MD5) и рекомендовать, чтобы люди, устанавливающие ваше программное обеспечение, проверяли его на наличие файла перед запуском.

0 голосов
/ 22 июля 2010

Да .. Я решил поместить некоторый исполняемый файл в событие PreBuild проекта установки, и этот .exe будет анализировать файл .vdproj, получать каждое имя файла, участвующее в установке, вычислять его хэш и сохранять эту информацию в закодированный файл..

Затем в методе OnInstall моей библиотеки CustomActions этот файл будет декодирован и все хэши будут сравниваться (в это время все файлы будут уже распакованы во временную папку).И если возникнет проблема, то настройка будет остановлена ​​и все временные файлы будут удалены.Вуаля, и у нас есть простой рецепт.Конечно, всегда есть возможность, что библиотека CustomActions может быть реверс-инжиниринг, но я не собираюсь доводить это до моего босса, и я думаю, даже если это имеет значение, я могу использовать обфускатор, чтобы успокоить его.

0 голосов
/ 21 июля 2010

Если вам нужно только убедиться, что файл .exe правильно распределяется, вычислите хэш md5 этого файла после того, как вы его сами скомпилировали, а затем попросите пользователей сравнить свою копию хэша файла, когда они его получат.Если хэши совпадают, то файлы должны быть не повреждены.

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

0 голосов
/ 21 июля 2010

Сложность решения будет зависеть от того, хотите ли вы определить, хотите ли вы определить, отличается ли файл от того, который вы создали, или же приложение создает файл при первом запуске (поэтому приложение выигралозаранее не знаю, какой будет хеш).Если первым из них является то, что вам нужно, то одним из вариантов будет подписать установщик, исполняемый файл и файл (я думаю, можно подписать файл, отличный от .exe или.dll).Или вы можете встроить файл в .exe как ресурс вместе с его хешем.

0 голосов
/ 21 июля 2010

Большинство инсталляционных систем справятся с этим за вас. Они проверят хэш установщика, чтобы убедиться, что он не был изменен. Обычно это не то, что вам нужно делать, если вы используете приличную систему установки.

...