Validación de ensamblajes de .NET Framework

Acabo de pasar por nuestroforos alemanes de VB.NET Y había algo interesante que me da algún tipo de dolor de cabeza.

En realidad es posibleeditar los ensamblados de .NET Framework usando ReflexIL o algún otro editor de IL. Lo único que debe omitir es la firma de nombre seguro del ensamblaje. Después de cambiar la asamblea IL, tienes que ejecutarsn.exe -Vr [assemblyname] para saltar un poco la validación de nombre fuerte. Después de eso tienes que borrar las imágenes nativas en caché. Sólo tienes que ir a través de laC:\Windows\assembly Directorio y borrar todas las imágenes relacionadas con su montaje. Luego reinicie. Cuando hayas iniciado sesión, ejecutangen install [assemblyname]. Ahora elnuevo Se generan imágenes nativas.

Esto funciona. Verifiqué este procedimiento en mi entorno virtual (Windows XP x86). Ahora, lo que más me preocupa es que puede omitir fácilmente el .NET.VerifyHash oVerifyData métodos de laRSACryptoServiceProvider. Esto realmente funciona, también. Un amigo mío y yo analizamos este problema (ver capturas de pantalla). Eso fue bastante fácil.

Por ejemplo, si quisiera crear un sistema de licencias basado en las clases de criptografía de .NET Framework, se podría omitir.en todo el sistema paracada Aplicación .NET en el sistema utilizando el framework. Además, todos puedenIniciar sesión ycambio la entrada de funciones a las que llamo simplemente conectando los métodos.

Ahora mi pregunta es: ya que esto puede ser un gran problema, ¿cómo puedo hacer algo al respecto? Por supuesto, un usuario malicioso podría simplemente editarmi aplicación, pero eso no sería tan malo como hacer esto en todo el sistema. Estaba pensando en alguna validación de suma de comprobación del marco, pero como hay muchas actualizaciones diferentes para el .NET Framework, esto parece imposible.

¿Alguna solución o sugerencia? ¿Microsoft se encarga de este problema de alguna manera?

Respuestas a la pregunta(1)

Su respuesta a la pregunta