Подтвердить что ты не робот

Как я могу проверить цифровые подписи для формата Microsoft Portable Executable в переносном коде?

Я ищу пример кода (или библиотеки), который может помочь мне проверить цифровые подписи для файлов Windows PE (.exe,.dll,.cab,.etc) на платформах, отличных от Windows, с использованием С++. Я ищу платформенно-независимый подход.

Спасибо!

4b9b3361

Ответ 1

Вы можете полностью проверить программный способ WINE WinVerifyTrust .

И, собственно, вот хорошая ссылка Как проверить исполняемые цифровые подписи под Linux?, которые жалуются на реализацию WINE (это было в 2008 году), и, таким образом, объясняет процесс довольно "портативным" способом, если у вас есть что-то похожее на OpenSSL, доступное на вашей платформе.

Ответ 2

Нет общего ответа на этот вопрос, особенно если вы не указали, насколько вы хотите его портировать. Linux на x86 с библиотеками с открытым исходным кодом будет проще, uCos, работающий на MIPS32 или Arduino, будет практически невозможным..

Во-первых, вы, очевидно, должны иметь возможность читать и анализировать сам формат PE, в частности, вы должны иметь возможность получать содержимое отдельных разделов и хешировать их, например .text,.data и т.д. Для углубленного изучения как его собрать, посмотрите здесь:

http://msdn.microsoft.com/en-us/magazine/cc301805.aspx http://msdn.microsoft.com/en-us/magazine/ms809762.aspx

Теперь вы хотите, чтобы это было переносимым, так что вы можете либо свернуть собственный PE-ридер/ограниченный писатель, либо посмотреть вокруг в некоторых проектах с открытым исходным кодом, которые уже делают это. Попробуйте ReactOS или Mono. Или, если вы довольны запуском python, попробуйте http://code.google.com/p/pefile/

Во-вторых, поскольку вы имеете дело с криптографией, цифровыми сигнатурами и сертификатами X.509, вам в значительной степени нужна полномасштабная портативная крипто-библиотека для выполнения подписи, проверки цепочки сертификатов и т.д. Если вы довольны GPL, попробуйте OpenSSL или CyaSSL или Botan, если вы хотите лицензию BSD.

Точный формат подписей Authenticode, процесс подписи и процесс проверки описаны здесь: http://www.microsoft.com/whdc/winlogo/drvsign/Authenticode_PE.mspx (Authenticode_PE.docx)

Для выполнения всего этого потребуется довольно много кода.

Ответ 3

Microsoft Authenticode, конечно же, не является большой секретной тайной, и вы можете загрузить технические характеристики и т.д. о том, как работает Authenticode. Вы также можете скачать техническую информацию о формате файла Windows PE. Поскольку вы четко не заявили о погоде, что вы хотели что-то для Linux, Mac или смартфона, я не могу предоставить вам адекватное решение. Однако с информацией, которую я вам предоставил выше, наряду с OpenSSL, вы должны иметь возможность создать свою собственную программу, чтобы сделать это на языке и ОС по вашему выбору.

Ответ 4

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

Вы можете использовать инструмент osslsigncode для проверки подписи MS Authenticode в Linux или других системах * nix. Однако инструмент просто проверяет подпись и не проверяет отзыв, временную метку и т.д., Хотя вы можете извлечь данные из подписи и сделать это вручную.