Защита .NET кода


4 0

Сегодня получил письмо, в котором меня спрашивают о защите .NET кода от хакеров:

Хотел бы поднять тему защиты приложений .NET. Если у Вас есть возможность и желание, хотелось бы узнать Ваше профессиональное мнение в виде статейки - как лучше защищать коммерческое c# приложение от взлома и пиратства. Прочел много статей об обфускации, но это не панацея. Чем пользуетесь Вы?

Защитить код пока можно только обфускацией или шифрованием, но это действительно не панацея. Шифрование требует дешифровки для выполнения, а значит, можно снять дамп памяти. Обфускация все равно остается вполне читабельной, так что действительно не панацея.

Но давайте посмотрим на классические Win32 приложения. Их код тоже не защищен и тоже читабелен. Код достаточно проблематично защитить, потому что он должен быть читабельным для процессора, иначе его просто будет невозможно выполнить. Наиболее близким к языку процессора является ассемблер, поэтому Win32 программы достаточно легко перевести в ассемблер. Остальные языки более высокоуровневые, поэтому в них переводить машинный код сложнее, но существуют проекты, которые с разной долей успеха дезасемблируют классические Windows приложения до языка С.

В случае с .NET народ больше обеспокоен защитой. Дело в том, что генерируемый им код очень легко переводится обратно в высокоуровневые языки типа C# или VB вообще без потерь информации. Достаточно только выделить в рефлекторе код и скопировать к себе в проект и интеллектуальная собственность оказывается спионизденной. Конечно же никому не хочется потеть месяцами, а потом узнать, что Вася Пупкин взял рефлектором весь ваш код и скомпилировал копию вашей программы и раздает ее бесплатно, или того хуже, зарабатывает деньги. Обидно же.

В принципе, обфускация способно упростить нам жизнь, и немного испортить ее хакеру. Он все так же может спиониздить код, но он будет достаточно неудобен для чтения и поддержки, а значит сложнее будет внести изменения. 100% копию он продавать все равно не сможет. Код программы – самое главное и нужно помнить, что в в некоторых проектах программист читает код на много чаще, чем процессор, поэтому читабельность очень важна.

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

Нужно просто помнить, что если хакер захочет, он исследует ваш код. Да, ассемблерный код умеют читать далеко не все, а C# понимает на много большее количество программистов. Но код после обфускации так же достаточно сложен для чтения. Полно программистов не умеют читать плохо написанный код, а хорошо обфусцированный (вот это словечко, интересно вообще как правильно писать его) код они тем более не прочитают.


Понравилось? Кликни Лайк, чтобы я знал, какой контент более интересен читателям. Заметку пока еще никто не лайкал и ты можешь быть первым


Комментарии

Юрась

17 Января 2012

Больше жизни в постах. Блог интереснее, когда он о Вас, о жизни, а не в виде сухого мнения на избитые темы.


Rejackt

17 Января 2012

Ну - избитая или нет... но лично меня вот тема очень даже интересует... "как защитить свою интелектульную собственность?"..


bush

19 Января 2012


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

Есть примеры такой реализации?


NetDeveloper

23 Февраля 2012

Как защитить - попробуйте ILProtector, он делает вирутализацию кода, который раскручивается и выполняется по мере обращения к нему.


Добавить Комментарий

Еще что-нибудь

Хотите найти еще что-то интересное почитать? Можно попробовать отфильтровать заметки на блоге по категориям.

О блоге

Программист, автор нескольких книг серии глазами хакера и просто блогер. Интересуюсь безопасностью, хотя хакером себя не считаю

Обратная связь

Без проблем вступаю в неразборчивые разговоры по e-mail. Стараюсь отвечать на письма всех читателей вне зависимости от страны проживания, вероисповедания, на русском или английском языке.

Пишите мне