Падение производительности при пустом списке защищаемых функций

Пробую использовать автоматическую защиту для .Net приложения.

В Мастере устанавливаю "Выбирать защищаемые функции" - "Вручную".  Выбираю "Формировать файл включений".
В дереве отмечаю единственную функцию. Получаю 10и кратное увеличение времени выполнения одной из задач (2сек -> 20сек) по сравнению с "Не защищать функции".
Отмеченная функция при выполнении этой задачи не вызывается.

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

Десятикратное падение производительности в первом случае это нормально, или у меня что-то не так?

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

Re: Падение производительности при пустом списке защищаемых функций

mamitko пишет:

Пробую использовать автоматическую защиту для .Net приложения.
В Мастере устанавливаю "Выбирать защищаемые функции" - "Вручную".  Выбираю "Формировать файл включений".
В дереве отмечаю единственную функцию. Получаю 10и кратное увеличение времени выполнения одной из задач (2сек -> 20сек) по сравнению с "Не защищать функции".
Отмеченная функция при выполнении этой задачи не вызывается.
Пробую отмечать для защиты другие функции, падение производительности отмечается, но не такое драматические и соответствующее частоте вызовов функций.
Десятикратное падение производительности в первом случае это нормально, или у меня что-то не так?
Это происходит от того, что все-таки что-то защищается и выполняется на виртуальной машине, даже если я не ставлю галки на функциях?

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

Однако если  количество методов указанных в файле включений в процентном соотношении составляет меньшее количество чем задано в опции /PER, то недостающий процент методов будет добавлен автоматически (т.е если /PER=30 и при этом методы, выбранные в файле включений будут составлять только 20% от общего их количества, то еще 10% методов (в добавок к 20% указанным в файле включений) защитятся автоматически).

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

Re: Падение производительности при пустом списке защищаемых функций

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

Цитата из документации

CodeProtect.exe /GS3S /PER=50 /IL=MyProg.ifp MyProg.dll
.NET библиотека MyProg.dll будет привязана к ключу Guardant Sign, и 50 процентов ее методов, указанных в файле MyProg.ifp, будут зашифрованы и размещены в защищенном контейнере.

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

Кому верить, Вам или документации?

Re: Падение производительности при пустом списке защищаемых функций

Предположил, что Вы все-таки правы.

Поместил в файл включения ipf все методы из сборки. Установил процент защищенности кода 5%.
На некоторой тестовой задаче получил 40сек. выполнения.

Оставил в файле включения ipf все методы из сборки. Установил процент защищенности кода 100%.
Эта же задача крутится уже 20минут и заканчиваться не собирается.


Выходит, Ваша "версия" о том что

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

не верна.

(2011-11-05 14:21:57 отредактировано Антон Тихиенко)

Re: Падение производительности при пустом списке защищаемых функций

mamitko пишет:

Поместил в файл включения ipf все методы из сборки. Установил процент защищенности кода 5%.
На некоторой тестовой задаче получил 40сек. выполнения.
Оставил в файле включения ipf все методы из сборки. Установил процент защищенности кода 100%.
Эта же задача крутится уже 20минут и заканчиваться не собирается.

Помещать в защищённое хранилище 100% всех методов все же не стоит!
Выбирать необходимо критически важные методы (причем согласно документации не более половины от общего их количества) напрямую влияющие на работу и защиту приложения, при этом указывать строго нулевой процент защищённости кода (если конечно необходимо быть уверенным что защитились только выбранные методы).

Также, для чистоты эксперимента, Вы можете прислать нам на почту тестовый пример своего приложения где наблюдаются вышеописанные задержки.

(2011-11-05 16:06:55 отредактировано mamitko)

Re: Падение производительности при пустом списке защищаемых функций

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

Это противоречит вашей же документации (цитата выше) и результатам экспериментов.

Письмо с приложением отправил на <hotline@guardant.ru>

На всякий случай: проценты устанавливал из "Мастера лицензирования и автоматической защиты".

Re: Падение производительности при пустом списке защищаемых функций

Выбрал в  Мастере лицензирования и автоматической защиты выбирать методы "На основе профилирования".
Процент стал недоступен. Судя по поведению теперь в хранилище попадают только отмеченные галками методы.
Буду надеяться, что они туда точно попадают.