(2012-12-08 15:18:45 отредактировано Gambit)

Вопросы по защите приложения (CodeProtect,CodeObfuscator и т.д)

Есть защищенное приложение (.NET 2.0) с помощью GrdApi + CodeProtect (DevKit 6.0) .
С недавнего времени начали замечать, что приложение виснет в случайном порядке (где после 30+ мин работы). Зависания были замечены на ОС Windows 7 Ultimate (x32 и x64). Окно программы перестает отвечать, после закрытия, выводится диалоговое окно. в котором указано название ошибки AppHangB1.

При долгом тестировании программы без защиты с помощью CodeProtect (GrdApi остается) зависаний выявлено не было. Хочется заметить, что в самой программе нет критических секций, которые могли бы привести к Deadlock'у. В связи с этим я делаю предположение, что зависания связаны с защитой моего приложения с помощью CodeProtect.

Вопрос 1. Как еще мне можно подтвердить свои предположения кроме приведенного выше опыта.

Я использую ключ Sign III. Опции защиты таковы:
/INIT /PER=20 /RC=1 /ATR=2 /GS3S /GN3S /UN=1 /SIGN

Как видите, здесь используется процент защищаемых методов. Тут еще одно предположение, что какая-то часть кода при защите может служить причиной зависания. По опции /PER я не нашел в документации нужной мне информации.

Вопрос 2. По каким критериям выбираются методы для защиты, c случайно или же какой-то анализ присутствует?
Если взять 10 копий одного и того же незащищенного приложения, и каждое защитить с опцией /PER, то во всех десяти будут защищены одни и те же методы, или в каждой по разному?

Re: Вопросы по защите приложения (CodeProtect,CodeObfuscator и т.д)

Здравствуйте, Gambit.

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

В данном случае следует попробовать использовать опцию /PER совместно с /XML для повышения гибкости при выборе шифруемых методов (подробнее про опцию /XML можно прочитать в первой части нашего руководства пользователя, стр.198).

(2012-12-11 22:10:46 отредактировано Gambit)

Re: Вопросы по защите приложения (CodeProtect,CodeObfuscator и т.д)

Решил пройтись профилировщиком DotNetObfuscator чтобы определить функции, которые не стоят защищать дабы не упала производительность.
Поработал в программе и процент использования довел до 70%. После окончания работы, профилировщик пометил все использованные методы зеленым цветом, а все неиспользованные оранжевым. Красным цветом не был помечен не один из вызванных методов. Но я точно знаю, что некоторые из "зеленых" функций достаточно долго выполняются.

Вопрос 3. По каким критериям вызванные методы помечаются красным цветом ?

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

Вопрос 4. Не планируете ли вы добавить в DotNetProfiler информации по выполняемым методам, которая могла сделать более аргументированный выбор функций для защиты?

(2012-12-11 22:11:00 отредактировано Gambit)

Re: Вопросы по защите приложения (CodeProtect,CodeObfuscator и т.д)

Сразу же спрошу про CodeObfuscator.

Имеется исполняемое приложение MyApp.exe и библиотека MyLib.dll.
В библиотеке MyLib.dll содержатся методы для работы с базой данных и множество SQL-запросов. MyApp.exe в свою очередь просто использует функции MyLib.exe.

Я использую такие опции для обфускации этих сборок: /INIT /SO /SE /OP /GS3S /GN3S /MAP=./grd_obfuscate.map
Проблема в том, что при опции /SE программа начинает медленнее работать в разы. Но я не могу оставить некоторые SQL-запросы в MyLib.dll не обфусцированными, т.к. они должны оставаться в тайне. В документации я наткнулся на опцию /SO_CFG=FileName.cfo, которая может создать список исключений для символьной обфускации.

Вопрос 5. Есть ли аналогичная опция исключения для строковой обфускации /SE ?  Как можно выборочно обфусцировать строковые константы ?

Вопрос 6. Как можно защитить обфускатором сборку, чтобы соотнощение  скорость работы/защищенность была оптимальной ?

(2012-12-17 17:02:34 отредактировано Антон Тихиенко)

Re: Вопросы по защите приложения (CodeProtect,CodeObfuscator и т.д)

Здравствуйте.

Gambit пишет:

Вопрос 3. По каким критериям вызванные методы помечаются красным цветом ?

Такой индикации в .Net - профайлере нет, все возможные условные обозначения описаны в документации по профайлеру, стр. 15.

Gambit пишет:

Вопрос 4. Не планируете ли вы добавить в DotNetProfiler информации по выполняемым методам, которая могла сделать более аргументированный выбор функций для защиты?

Тут не совсем понятно, еще какую именно информацию по выполняемым методам хочется видеть?

Gambit пишет:

Вопрос 5. Есть ли аналогичная опция исключения для строковой обфускации /SE ?  Как можно выборочно обфусцировать строковые константы ?

Начиная с комплекта разработчика версии 6.0, для задания исключений из обфускации используется опция  /XML. C помощью утилиты ExclusionUtility.exe можно исключить из обфускации различные типы и методы. Для исключения шифрования строк, достаточно исключить из символьной обфускации метод в котором инициализируется строка.

Gambit пишет:

Вопрос 6. Как можно защитить обфускатором сборку, чтобы соотнощение  скорость работы/защищенность была оптимальной ?

Выделить оптимальные параметры для защиты Вашего приложения можете только Вы сами.