Декомпиляция в язык C#
От: SanyaVB  
Дата: 21.03.16 10:51
Оценка:
Допустим у нас сборка Child находится как ресурс в сборке Main и грузится в домен напрямую, т.е. минуя жесткий диск.
В таком случае даже последняя версия профайлера от ANTS, с поддержкой декомпиляции(как я понял основанной на их продукта Reflector), не может восстановить исходный код. Но вот ниже описанный код говорит только о том что профайлер просто не доработан:
         Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();
            Assembly asm = assemblies.FirstOrDefault(x => x.ManifestModule.ScopeName == "<Name>");
            Type[] types = asm.GetTypes();
            Type type = types.FirstOrDefault(x => x.Name == "TypeName");
            MethodInfo[] methods = type.GetMethods();
            MethodBody body = methods[0].GetMethodBody();
            byte[] il = body.GetILAsByteArray();

Т.е. таким способом можно получить IL код любой загруженной управляемой сборки, а следовательно декомпилировать в любой удобный язык, например в C#.
В итоге получаем брешь защиты авторских прав. Например разработчик зашифровал сборку и при верном введение ключа лицензии она расшифровывается и грузится в память. Если фирма купить только одну лицензию, то по ней можно декомпилировать защищенную сборку и распространять по всему миру интернета

Верны ли мои рассуждения?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.