Validando Assemblies do .NET Framework

Eu acabei de passar pelo nossofóruns alemães VB.NET e havia algo interessante que me dava algum tipo de dor de cabeça.

É realmente possíveleditar os assemblies do .NET Framework usando o ReflexIL ou algum outro editor IL. A única coisa que você deve ignorar é a assinatura Strong Name da montagem. Depois de alterar o assembly IL, você tem que executarsn.exe -Vr [assemblyname] meio que pular a validação do nome forte. Depois disso, você precisa limpar as imagens nativas armazenadas em cache. Basta passar peloC:\Windows\assembly diretório e excluir todas as imagens relacionadas à sua montagem. Então reinicie. Quando você está logado, executengen install [assemblyname]. Agora oNovo imagens nativas são geradas.

Isso funciona. Eu verifiquei este procedimento no meu ambiente virtual (Windows XP x86). Agora, o que mais me preocupa é que você pode facilmente ignorar o .NETVerifyHash ouVerifyData métodos doRSACryptoServiceProvider. Isso realmente funciona também. Um amigo meu e eu testamos poderia verificar esse problema (ver capturas de tela). Isso foi bastante fácil.

Por exemplo, se eu criasse um sistema de licenciamento baseado nas classes de criptografia do .NET Framework, ele poderia ser ignoradosistema amplo paracada Aplicação .NET no sistema usando o framework. Além disso, todo mundo poderegistro emudança a entrada de funções que eu chamo apenas conectando os métodos.

Agora minha pergunta é: Como isso pode ser um grande problema, como posso fazer algo sobre isso? É claro que um usuário mal-intencionado poderia apenas editarminha aplicação, mas isso não seria tão ruim quanto fazer isso em todo o sistema. Eu estava pensando em alguma validação de checksum do framework, mas como há muitas atualizações diferentes para o .NET Framework, isso parece ser impossível.

Alguma solução ou sugestão? A Microsoft cuida desse problema de alguma forma?

questionAnswers(1)

yourAnswerToTheQuestion