Быстрое развитие мультимедиа и Интернет технологий в последние годы вызывает потребность в защите такой интеллектуальной собственности, как программные продукты (ПП).
Разработка наиболее эффективного метода защиты для того или иного программного продукта, становиться одной из важных задач большинства программистов, которые занимаются разработкой специализированного, платного программного обеспечения (ПО), так как это позволяет им продавать свой интеллектуальный труд, и исключить возможности его нелегального использования среди потребителей, говоря иными словами, пользователь не сможет использовать оригинальную, лицензионную копию определенной программы предварительно не купив, не заплатив денег её разработчику. Затраты производителей на создание эффективного метода защиты их программных продуктов окупаются и компенсируют потенциальный ущерб, наносимый нелегальным копированием и использованием программ. Обфускация — это один из методов защиты программного кода, который позволяет усложнить процесс реверсивной инженерии кода защищаемого программного продукта.
С чего начать процесс обфускации. С проектирования системы (программы или библиотеки классов), которую собираетесь написать. Если необходимо написать максимально защищенный код, придется учитывать ряд факторов при проектировании продукта.
Не стоит путать проектирование с программированием. Какие факторы необходимо учитывать? Типичной обфускацией является символьная – когда обфускатор только и всего изменяет названия типов, полей, методов, свойств и событий на бессмысленные. Тип Obfuscator переименовывается в 0, а его метод Run() – тоже в 0, а параметры методов просто перенумеруются – 0,1,2,3,4. После подобной обфускации теряется логическая связь между классами, дизассемблированной код – трудночитаем.
Если необходимо обфусцировать замкнутую систему – тогда подойдет полная обфускация, когда изменяются все названия членов сборки, и в этом случае концы найти на порядок гораздо труднее чем в случае, когда кое-какие методы, типы остаются не обфусцированными (такое возможно при обфускации exe-файлов не использующих Reflection).
Кроме символьной обфускации есть еще обфускация алгоритмов методов – когда простейшее умножение I*3 может быть представлено более сложным алгоритмом, например – I*((1+1/2)*2) или запутаны while и for. Редко можно встретить полностью замкнутые, автономные системы, поэтому типичным случаем будет являться частичная обфускация. Хотя идеальной задачей для более качественной обфускаци будет являться как раз написание максимальной замкнутой системы сборок.
Рекомендации по подготовке проекта (продукта) к обфускации:
После обфускации:
С чего начать при оформлении загранпаспорта | Вопрос и Ответ
Обязательно ли нужно оформлять загранпаспорт нового образца с биометрическими данными, если у старого загранпаспорта не закончился срок действия? Оформление заграничного паспорта с
С чего начался раскол между католиками и протестантами | Вопрос и Ответ
95 тезисов — неформальное название «Диспута о прояснении действенности индульгенций», состоящего из 95 пронумерованных тезисов, с которых началась протестантская реформа, с
С чего началась творческая биография итальянского дизайнера одежды Роберто Кавалли | Вопрос и Ответ
Роберто Кавалли (итал. Roberto Cavalli) — итальянский дизайнер одежды. Роберто Кавалли родился 15 ноября 1940 года во Флоренции (Италия) в артистической семье. Его дедушка,
С чего начать обучение английскому языку дошкольников | Вопрос и Ответ
Многих родителей волнует именно этот вопрос: когда лучше начинать обучение английскому языку? В семь лет? В пять? В три года? А может, пораньше? Есть и откровенные противники раннего
С чего начать обфускацию | Вопрос и Ответ
Быстрое развитие мультимедиа и Интернет технологий в последние годы вызывает потребность в защите такой интеллектуальной собственности, как программные продукты (ПП). Разработка наиболее
С чего начать разговор с девушкой скромному парню | Вопрос и Ответ
Говорят, скромность украшает мужчину. Однако зачастую она еще не позволяет нормально общаться и наслаждаться жизнью. Ниже несколько простых рекомендаций, как найти общий язык, не обращая на
С чего начинался Интернет | Вопрос и Ответ
Прародителем Интернет можно назвать организацию ARPA (Advanced Research Projects Agency) - Агентство передовых исследовательских проектов в области обороны при Министерстве обороны США (DOD), это