Как защитить?

Статус
В этой теме нельзя размещать новые ответы.

artcosmic

Постоялец
Регистрация
16 Сен 2008
Сообщения
198
Реакции
162
Кто какие решения юзает для качественной защиты .NET сборок от реверса?
В последнее время вообще ничего адекватного не нахожу - все вскрывается на ура бездарями-школьниками при помощи готового софта.
Готов даже потратить много денег на надежное, проверенное решение.
 

noonesshadow

Писатель
Регистрация
31 Авг 2012
Сообщения
4
Реакции
0
SmartAssembly последних версий неплоха
 

artcosmic

Постоялец
Регистрация
16 Сен 2008
Сообщения
198
Реакции
162
Это просто обфускатор?
Я вот хочу уточнить - правильно ли я понимаю, что все эти обфускаторы до одного места, если человек может править MSIL?
 

noonesshadow

Писатель
Регистрация
31 Авг 2012
Сообщения
4
Реакции
0
Обфускатор и лоадер. Распаковка не тривиальна со всеми уровнями защиты. Максимальная требует интеграцию с приложением.
 

focusnick

Постоялец
Регистрация
29 Июн 2012
Сообщения
141
Реакции
118
Самое надежное - написать свой обфускатор, да так, чтобы всякие de4dot'ы обламывались - я видел весьма впечатляющие поделки в этой области (не публичные), так что вполне реально.
Если для написания своего решения нет времени\средств, то используйте бесплатный и опенсорсный Confuser последней версии - обычно под него нет автоматических деобфускаторов (т.к. автор самого популярного и самого способного деобфускатора дружит с автором Confuser'а), а те кто смогут разобраться в его коде и написать собственный распаковщик\деобфускатор - справятся и с любой другой защитой)

Ещё может подойти онлайн-обфускатор от наших соотечественников - Для просмотра ссылки Войди или Зарегистрируйся, сам им пользовался как-то, когда он ещё в бэте был - уже тогда был весьма хороший результат.

А так, в силу природы .NET (bytecode-based) абсолютно надежно защититься не удастся.
 

artcosmic

Постоялец
Регистрация
16 Сен 2008
Сообщения
198
Реакции
162
Вот недавно столкнулся с тем, что программа, защищенная Confuser, была достаточно легко вскрыта.
Я понимаю, что написать свой обфускатор - надежнее всего, но для этого нужно знать хотя бы, с чего начать... Посоветуете инфу для самых маленьких из серии "как написать свой обфускатор"? :)
 

focusnick

Постоялец
Регистрация
29 Июн 2012
Сообщения
141
Реакции
118
Начните с изучения Mono.Cecil, Reflection, MSIL.
По сути при обфускации происходит манипуляция на уровне байткода. Кто-то вообще вручную все делает (маньяки!), а кто-то Mono.Cecil использует..
Вот пара проектов, которые его используют: Для просмотра ссылки Войди или Зарегистрируйся, Для просмотра ссылки Войди или Зарегистрируйся, да и Confuser в том числе (Для просмотра ссылки Войди или Зарегистрируйся) - можно ознакомиться с использованием этой библиоетки на реальных примерах.
 

artcosmic

Постоялец
Регистрация
16 Сен 2008
Сообщения
198
Реакции
162
Ок, вот написал я свой обфускатор, хорошо. А человек открыл мою обфусцированную сборку через редактор MSIL и внес правки прямо в MSIL (он же не обфусцируется, я правильно понимаю?). Или я туплю и нет никакого редактора MSIL? Вроде тот же рефлектор позволяет редактировать MSIL напрямую...
 

focusnick

Постоялец
Регистрация
29 Июн 2012
Сообщения
141
Реакции
118
1. Основной смысл обфускации - потереть имена методов, переменных, классов, неймспейсов и т.д., заменив их на какую-нибудь ерунду, что уже значительно затрудняет реверс кода. И это единственное возможное необратимое действие - восстановить оригинальне имена в автоматическом режиме уже не получится, только если вручную, по смыслу, во время подробного анализа и реверса исходника.

2. При обфускации можно соершать куда более веселые действия, чем просто переименование - можно запутывать сам байткод (MSIL), красть байты и т.д. Чтобы это обратить, реверсеру придется в подробностях изучить как именно вы запутываете и крадете байткод, то есть просто редактированием MSIL тут не обойтись - придется писать утилиту, которая будет восстанавливать байткод в автоматическом режиме.
Аналогично со строковыми константами - их можно шифровать и оборачивать в вызов своего метода-расшифровщика, тут тоже придется писать утилиту для автоматического патчинга байткода - чтобы она ползала по сборке, искала вызов этого метода-расшифровщика и заменяла его на уже расшифрованную строку (причем для расшифровки можно этот метод и вызывать). То есть опять же, просто правкой MSIL не обойтись - надо тратить время на написание автоматической утилиты.

3. Так же можно упаковывать байткод, распаковывая его в реальном времени, тогда придется его дампить чтобы изучить, и его правка в оригинальной сборке (там, где он ещё упакован) может оказаться весьма нетривиальной.

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

artcosmic

Постоялец
Регистрация
16 Сен 2008
Сообщения
198
Реакции
162
Ок, допустим "хакер" деобфусцировал приложение и получил доступ к моему исходному коду. Понятно, что функции и переменные будут называться не так, как я их называл, а будут, например, называться var1, var2, var3, function1, function2, function3. А вот к строкам, которые были мной прописаны в программе, "хакер" получит доступ? Например, я прописал в коде какие-то пароли доступа куда-то, какие-то строковые константы и т.д. Увидит ли он их так, как я их прописал в исходном коде?
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху