forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   С# (http://forum.boolean.name/forumdisplay.php?f=128)
-   -   Как защититься от декомпиляторов (http://forum.boolean.name/showthread.php?t=14827)

moka 02.06.2011 18:09

Ответ: Новости
 
Вопрос, а как защищаться от декомпиляции?

pax 02.06.2011 18:11

Ответ: Новости
 
Обфускаторами. Некоторые умеют генерировать код, на котором декомпиляторы падают. А в основном переименовывают имена классов, шифруют строки, архивируют ресурсы и т.д.

Часто пользуюсь вот таким бесплатным обфускатором http://www.foss.kharkov.ua/g1/projec...t/Default.aspx

Dream 02.06.2011 18:34

Ответ: Новости
 
Цитата:

Сообщение от pax (Сообщение 190190)
Часто пользуюсь вот таким бесплатным обфускатором http://www.foss.kharkov.ua/g1/projec...t/Default.aspx

Мы такой используем для наших проектов

Sef 03.06.2011 12:41

Ответ: Как защититься от декомпиляторов
 
А есть вероятность что после использования конкретно этого обфускатора в какой-то момент будет падать проект?

Dream 03.06.2011 13:41

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

pax 04.06.2011 13:34

Ответ: Как защититься от декомпиляторов
 
Тут еще несколько моментов есть кроме сериализации:
1. Если используется рефлексия по именам типов и мемберов, то лучше всего их исключать из обфускации.
2. Для Unity проектов (dll плугинов) не работают нормально сопрограммы (coroutine), т.к. обфускатор не исключает из переименования генерируемые классы. А как задать исключение регулярным выражением я не нашел. Для таких dll используем дотфускатор бесплатную версию.

Sef 04.06.2011 14:12

Ответ: Как защититься от декомпиляторов
 
А имена классов он переименует? Это же для юнити вроде как критично...

pax 04.06.2011 14:46

Ответ: Как защититься от декомпиляторов
 
public имена типов и public имена мемберов в публичных типах он не переименовывает. Переименовывает internal, private (который по умолчанию) и т.д.

johnk 04.06.2011 19:37

Ответ: Новости
 
Цитата:

Сообщение от pax (Сообщение 190190)
Обфускаторами. Некоторые умеют генерировать код, на котором декомпиляторы падают. А в основном переименовывают имена классов, шифруют строки, архивируют ресурсы и т.д.

Часто пользуюсь вот таким бесплатным обфускатором http://www.foss.kharkov.ua/g1/projec...t/Default.aspx

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

pax 04.06.2011 21:03

Ответ: Новости
 
Цитата:

Сообщение от johnk (Сообщение 190302)
Можно написать свой, уникальный обфускатор.

Если можно рефы на такие примеры...

Dream 05.06.2011 08:49

Ответ: Как защититься от декомпиляторов
 
Хочу сказать что писать каждый раз новый обфускатор просто глупо.
Любую защиту ламают, обфускатор как таковой - вещь полезная - защита от дураков так сказать, те кто поумнее сламаю и самописный обфускатор без особых проблем

johnk 05.06.2011 13:03

Ответ: Новости
 
Цитата:

Сообщение от pax (Сообщение 190307)
Если можно рефы на такие примеры...

На данную тему, кстати, есть даже книга. Здесь есть много полезных ссылок по теме: http://jasonhaley.com/Obfuscation/

Кстати, можно поступить иначе: взять один из обфускаторов с открытым кодом и просто поменять механизм запутывания.

Цитата:

Хочу сказать что писать каждый раз новый обфускатор просто глупо.
Глупо, да и не нужно. Достаточно одного самопального. Необходимо лишь не допускать распространения своих алгоритмов шифрования имен, строк и т.п в публичный доступ.

pax 06.06.2011 13:46

Ответ: Как защититься от декомпиляторов
 
А вопрос такой: зачем шифровать имена, если их обычно просто переименовывают? После переименования обычно в коде не разобраться и так если проект средний или большой. Так что на самом деле не вижу необходимости писать свои обфускаторы, а за ссылку спасибо, будет время - почитаю.

johnk 06.06.2011 17:23

Ответ: Как защититься от декомпиляторов
 
Цитата:

Сообщение от pax (Сообщение 190426)
А вопрос такой: зачем шифровать имена, если их обычно просто переименовывают?

Опечатался, спасибо за исправление:-)
Мне тоже кажется, что лучшее решение в плане защиты .NET кода - это банальное переименование. Для таких целей, кстати, вышеупомянутого eazfuscator'а хватает выше крыши.


Часовой пояс GMT +4, время: 00:19.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot