Я внедряю систему блокировки и защиты от копирования для своего программного обеспечения. Я закрыл все дыры, которые позволили бы кому-то взломать мой замок (ну, это слишком оптимистично, я знаю!), но последнее:
Я слышал, что взломщики могут изменять библиотеки DLL Windows, такие как Kernel32.dll, таким образом, что используемый мной API возвращает значение, указанное взломщиком. Мне нужно предотвратить это.
Сначала я думал, что могу создать хеш-значение для каждой используемой библиотеки DLL и сравнить этот хэш с вычисленным хэшем клиентской DLL, чтобы увидеть, изменился ли файл. Это не сработает, поскольку существует много разных версий DLL для разных версий Windows, и каждое исправление и пакет обновления, предоставляемые Microsoft, могут изменить файл.
Затем я понял, что могу проверить подпись файла, чтобы убедиться, что он имеет действительную подпись Microsoft. Теперь есть 2 вопроса:
- Подписывает ли Microsoft Windows DLL? Как я могу найти информацию об этой подписи?
- Предоставляется ли открытый ключ для проверки подписи? Как использовать этот ключ для проверки файла?
Любые пошаговые руководства приветствуются. Мое приложение написано с использованием Visual Basic.NET.
Спасибо, парни.