Проверка правильности сборок .NET Framework

Я только что прошел через нашнемецкие форумы VB.NET и было что-то интересное, что вызывает у меня головную боль.

На самом деле возможноредактировать сборки .NET Framework с использованием ReflexIL или другого редактора IL. Единственное, что вам нужно обойти, - это подпись строгого имени сборки. После смены сборки IL нужно запуститьsn.exe -Vr [assemblyname] чтобы пропустить проверку строгого имени. После этого вы должны очистить кэшированные нативные изображения. Просто пройдитеC:\Windows\assembly каталог и удалите все изображения, связанные с вашей сборкой. Затем перезагрузите компьютер. Когда вы вошли в систему, запуститеngen install [assemblyname], Теперьновый родные изображения генерируются.

Это работает. Я проверил эту процедуру в моей виртуальной среде (Windows XP x86). Теперь меня больше всего беспокоит то, что вы можете легко обойти .NETVerifyHash или жеVerifyData методыRSACryptoServiceProvider, Это на самом деле тоже работает. Мой друг и я проверил, может проверить эту проблему (смотреть скриншоты). Это было довольно легко.

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

Теперь мой вопрос: поскольку это может быть огромной проблемой, как я могу что-то с этим сделать? Конечно, злоумышленник может просто отредактироватьмой приложения, но это не было бы так плохо, как делать это в масштабе всей системы. Я думал о некоторой проверке контрольной суммы фреймворка, но, поскольку существует множество различных обновлений для .NET Framework, это кажется невозможным.

Любые решения или предложения? Microsoft как-то решает эту проблему?

Ответы на вопрос(1)

Ваш ответ на вопрос