C #: Как обнаружить подделку файла подписи authenticode - PullRequest
3 голосов
/ 02 октября 2011

Я пытаюсь написать программу на C #, которая проверяет цифровую подпись exe.Исполняемые файлы подписаны сертификатом authenticode, и я хочу обнаружить подделку.

Мне удалось создать экземпляр SignedCms, как описано здесь: Получить метку времени из Authenticode Подписанные файлы в .NET

Я предполагал, что SignedCms.CheckSignature справится с задачей, но этот метод никогда не вызывает исключение ... Даже если я изменяю некоторые биты исполняемого файла ...

Ответы [ 2 ]

5 голосов
/ 02 октября 2011

Я предполагаю, что вы изучили документы .NET Framework и не нашли то, что вам нужно. Ответ на этот вопрос StackOverflow содержит ссылку, в которой описано, как использовать встроенную функцию Windows CryptQueryObject для проверки подписи. Так что все, что осталось, это проверить PInvoke.NET, чтобы увидеть, как перенести эту функцию в .NET .

0 голосов
/ 02 октября 2011

Не могли бы вы просто набрать signtool.exe /verify и проверить результат?

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

Signtool на MSDN

...