Подписываете файл DLL после того, как он уже подписан?

Могу ли я безопасно подписать файл DLL новым сертификатом (с помощью Microsoft SignTool), если DLL уже подписана без ее перекомпиляции?

После этого все выглядит кошерным, но я хочу быть уверен на 100%.


person zig    schedule 17.11.2015    source источник


Ответы (2)


Цифровая подпись может быть добавлена ​​к DLL, если SignTool, который следует ниже, используется для подписи:

/ as
Добавляет эту подпись. Если первичная подпись отсутствует, эта подпись становится первичной подписью.

Множественные операции подписи не перезаписывают / не заменяют подпись.

Возможно, вы захотите обратиться к Могу ли я удалить цифровую подпись из DLL? для получения дополнительной информации.


Unsigntool позволяет удалить подпись из раздела PE - я никогда не использовал она и не рекомендует использовать эту программу, поэтому используйте ее на свой страх и риск.

Разницу между файлами, дважды подписанными с использованием параметра /as или без него, можно увидеть с помощью некоторых инструментов, таких как PE Explorer / PE Viewer, который позволяет видеть раздел PE исполняемого файла или DLL.

person fantaghirocco came to Rome    schedule 17.11.2015
comment
Я также прочитал документацию SignTool. Непонятно, что будет, если я не использую "/ как"? Заменяется ли новый сертификат? Хочу заменить старую, а не дописать. - person zig; 17.11.2015

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

Проверить новую подпись можно в свойствах файла на вкладке Digital Signatures.

person staafl    schedule 19.04.2018
comment
Между прочим, если вы не хотите ни добавлять, ни заменять, а только подписывать двоичный файл, который не был подписан ранее, вы можете использовать signtool verify или signtool verify /pa. - person staafl; 19.04.2018