0

Я попытался загрузить подписанный исполняемый файл (http://live.sysinternals.com/procexp.exe) и изменить его. Я думал, что это невозможно, и Windows каким-то образом помешает мне запустить его (или предупредить меня хотя бы). Но когда я изменяю один символ (например, в заглушке DOS или любых других текстовых данных), он все еще работает.Я могу изменить подписанный исполняемый файл

Перед изменением, когда я запустил это приложение, он всплеск предупреждения UAC показывает, что он подписал Microsoft и спрашивает, хочу ли я его запустить. После модификации такой вещи нет. Даже когда я вернусь к изменениям, он все равно не появится. Я сравнил модифицированный и восстановленный исполняемый файл с оригиналом (в общем командире), и он не показывает разницы. Но оригинал все еще брызгает UAC.

Почему?

Я использую Windows 7 и Firefox.

ответ

1

Я никогда не пытался это сделать. Но когда вы редактировали файл, вы аннулировали цифровую подпись, вы должны увидеть ее в свойствах файла.

Windows обычно не проверяет цифровые подписи. Цифровые подписи вступают в игру, когда файл помечен как загруженный из Интернета (если подпись действительна, Windows покажет ее издателю в диалоговом окне подтверждения, в противном случае издатель будет неизвестен) и UAC (в этом случае цифровой подпись также подтверждает, что файл поступает от издателя, хранящегося как часть цифровой подписи).

Не показывать или не показывать подтверждение UAC с цифровой подписью, оно контролируется манифестом приложения.

Итак, в моем понимании, должен отображаться диалог UAC. Но так как модифицированный файл не выполняет проверку цифровой подписи, Windows может решить, что файл небезопасен для повышения. Вы можете искать сообщения в журнале событий Windows, могут быть события, объясняющие поведение, которое вы видите.

+0

Что вы подразумевали под тем, что файл помечен как загруженный из Интернета? Наверное, это так. Я попытался изменить случайное значение, сохранить файл и изменить его на оригинал. До сих пор я не запускал программу. После того, как все изменения возвращены, я запустил его, и он не обнаружил всплывающее окно, даже если подпись действительна. Так что, я думаю, это как-то изменило «загруженный» статус файла на «созданный пользователем» или иначе. Где хранится такая информация? А что такое манифест программы? Но спасибо в любом случае – Samuel

+0

Когда вы загружаете файл из Интернета, некоторые браузеры (IE - это, конечно же, первый) хранят на нем флаг. Вы можете увидеть его в диалоговом окне свойств файла, * Общие * вкладка.Будет строка * Security * под * Attributes *, которая гласит: «Этот файл пришел с другого компьютера и может быть заблокирован, чтобы защитить этот компьютер». Вы также увидите кнопку «Разблокировать» справа. Найдите «манифест приложения», и вы узнаете, что это такое. Вы уверены, что цифровая подпись все еще действует после изменения файла дважды? Я действительно сомневаюсь в этом. –

+0

Вы правы, это действительно кнопка разблокировки. Он находится в загруженном файле. После копирования этого файла он остается в копии. Если я изменю файл, он исчезнет. Если я верну его в нормальное положение, он не будет отображаться снова. Я буду искать манифест и дам вам знать. О цифровых подписях - это особый хеш. Поэтому, если вы что-то измените, а затем вернете изменения, он имеет тот же хеш, что и оригинал (оба файла одинаковы :)), и цифровая подпись будет действительна. Его цель - не предотвращать изменения. Это найти различия. – Samuel

0

Я скопировал chrome.exe в другой каталог и начал писать случайные байты в приложении.

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

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

0

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