Следует ли шифровать/запутывать код поставщика HASP?

StackOverflow https://stackoverflow.com//questions/20053539

  •  27-12-2019
  •  | 
  •  

Вопрос

Это касается ключей HASP SafeNet/Aladdin Sentinel.Я разместил сообщение на их сайте, но на случай, если кто-то еще знает ответ или найдет ответ полезным, я тоже публикую здесь.

Согласно документам, предоставленным SafeNet в «Руководстве по защите и лицензированию программного обеспечения.pdf», мы должны хранить наш код поставщика в секрете, верно?

Что ж, если я создам образец, представленный в «\Samples untime\csharp», затем защитим приложение с помощью Envelope, а затем декомпилируем приложение Enveloped в JetBrains dotPeek, я очень легко увижу там строку кода поставщика.Похоже, что Envelope не запутывает константные строки.Или, может быть, это строки уровня класса, я не знаю.

Рекомендуемый ли это способ использования кода поставщика?Вроде не очень секретно.Если я помещу строку кода поставщика во временную переменную в функции, она запутается.Так ли это должно быть?Если да, то разве пример кода не должен это отражать?

Спасибо.

Это было полезно?

Решение

Мы заметили то же самое.Причина const строки не запутаны, вероятно, из-за того, что константная переменная является константа времени компиляции, что позволяет компилятору заменять ссылки на const переменная с постоянным значением во время компиляции.Так что в принципе нет const строковое поле, которое нужно запутать к моменту запуска процесса конвертирования.(Это не совсем так – определение const сохраняется в IL, но только для целей документации;на него не ссылается какой-либо код.)

Мы справились с этим, используя static readonly строки, инициализированные в static конструктор.При этом строковые значения сохраняются как константы времени выполнения, что позволяет обволакивающему процессу правильно обращаться к ним для обфускации.(Это проверяется декомпиляцией сборки, как вы упомянули.)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top