Sprawdzanie poprawności zespołów .NET Framework

Właśnie przeszedłem naszeniemieckie fora VB.NET i było coś interesującego, co przyprawia mnie o ból głowy.

W rzeczywistości jest to możliweedytować zespoły .NET Framework za pomocą ReflexIL lub innego edytora IL. Jedyną rzeczą, którą musisz ominąć, jest podpis Silna nazwa zespołu. Po zmianie zestawu IL musisz uruchomićsn.exe -Vr [assemblyname] aby pominąć sprawdzanie poprawności nazwy. Następnie musisz wyczyścić buforowane obrazy macierzyste. Po prostu przejdź przezC:\Windows\assembly katalog i usuń każdy obraz związany z Twoim zespołem. Następnie uruchom ponownie. Gdy jesteś zalogowany, uruchomngen install [assemblyname]. TerazNowy generowane są obrazy rodzime.

To działa. Sprawdziłem tę procedurę w moim środowisku wirtualnym (Windows XP x86). Teraz najbardziej martwi mnie to, że możesz łatwo ominąć .NETVerifyHash lubVerifyData metodyRSACryptoServiceProvider. To też działa. Mój przyjaciel i ja testowaliśmy ten problem (zobacz zdjęcia). To było dość łatwe.

Na przykład, gdybym utworzył system licencjonowania zbudowany na klasach kryptograficznych .NET Framework, mógłby zostać pominiętyw całym systemie dlakażdy Aplikacja .NET w systemie za pomocą frameworka. Wszyscy też mogąlog izmiana dane wejściowe funkcji, które nazywam po prostu podłączeniem do metod.

Teraz moje pytanie brzmi: skoro może to być ogromny problem, jak mogę coś z tym zrobić? Oczywiście złośliwy użytkownik może po prostu edytowaćmój aplikacji, ale nie byłoby tak źle, jak w przypadku całego systemu. Myślałem o sprawdzeniu poprawności sumy kontrolnej, ale ponieważ istnieje wiele różnych aktualizacji dla .NET Framework, wydaje się to niemożliwe.

Jakieś rozwiązania lub sugestie? Czy Microsoft zajmuje się tym problemem w jakiś sposób?

questionAnswers(1)

yourAnswerToTheQuestion