| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > .NET для новичков > Сложность защиты кода |
| Автор: ДобренькийПапаша 9.1.2010, 10:37 |
| Точнее меня интересует ответ на вопрос. Почему защита кода, компилирующегося в машинный код проще и надёжней, чем кода компилируемого в байт-код? Хочу знать, почему, конкретно? Ещё хочу краткий ответ об отличии механизмов защиты. |
| Автор: ДобренькийПапаша 9.1.2010, 17:20 |
| Да-да, то, что вы сказали ясно. А есть ли другие проблемы? Есть (насколько мне известно) 4 подхода к защите. 1)Запутывание кода. 2)Упаковка кода. 3)Управление JIT-компиляцией. 4)Виртуализация байт-кода. Просьба вкратце рассмотреть эти подходы и расставить их по приоритету. Кто что думает по этому поводу? Мне интересно Ваше мнение. |
| Автор: jonie 9.1.2010, 18:10 |
| машинный код защищают десятилетиями и уже кое-чего добились 8) В процессе выполнения на уровне процессора можно замутить намного более сложные вещи, чем на уровне IL. Например, можно использовать фишки операционки делая отладку запущенного процесса. В кратце данная техника подразумевает, что процесс запускается под отладчиком (собой же), а сам код и данные процесса зашифрованы. При этом распаковка и дешифрование производится страницами в память. Суть отладчика - перехыватывать PAGE_FAULT ошибку, зашифровывать ранее расшифрованную страницу и дешифровать ту, куда процесс попытался стукнутся.. в общем техника реализована в защитах вроде Armadillo.... А еще на уровне процессора можно более эффективно противостоять отладчикам, вытворять всякие непоребности вроде адресация по нечетным адресам, вызов ошибок в совокупности с SEH и VEH .... или даже установке драйверов (как, например, StarForce)... Я так понимаю в .net можно сделать нечто, что будет создавать код и выполнять его (через тот же CodeDOM например), но, учитывая что .net и так-то не быстр, это съест всю скорость... |
| Автор: ДобренькийПапаша 13.1.2010, 09:17 | ||||
| Ну вот я сделал небольшой обзор этих четырёх пунктов: 1)Обфускация. Назначение обфускатора – запутать сам код, переименовывая имена членов (методов, переменных). Перед обфускацией:
После обфускации:
2)Упаковка кода. Сжатие исполняемого файла и прикрепление к нему кода, необходимого для распаковки и исполнения содержимого файла. Упаковка производится по ряду причин: • Упакованный файл занимает меньше места на жёстком диске, что помогает ускорить его загрузку в память • Некоторые виды упаковки совмещены с шифрованием содержимого файла для того, чтобы предотвратить обратную разработку программы. 3)Управление JIT-компиляцией. Современные средства защиты позволяют изменить код программы для задания интеллектуального поведения самой программы во время выполнения по отношению к процессу выполняющему программу. Это позволяет обеспечить защиту от «отладки программы без исходного кода». 4)Виртуализация байт-кода. Виртуализация кода – это следующий шаг в области защиты программного обеспечения от анализа. Большинство систем защит шифруют исполняемый код и расшифровывают его при запуске программы. Существуют защитные средства, которые никогда не расшифровывает код. В процессе защиты они способны переводить код программы в код, работающий на виртуальном процессоре. Набор команд этого процессора не похож на команды процессоров x86 или x64 и меняется при каждой защите программы. Преимущества подхода к защите с использованием виртуализации кода:
Методы построения виртуальной среды выполнения:
Вывод: Осложнить взлом программного кода можно используя комплексный подход к защите: обфускацию, упаковку, настройку на интеллектуальное поведение JIT-компиляции и виртуализацию Стоимость пакетов для защиты программного кода колеблется от 800$ до 2.000$. Они предоставляют возможность мутации кода, виртуализации, защиты памяти, защиты импорта, упаковки, определения отладчика, определение средств виртуализации. Помимо этого включают в себя полезные средства лицензирования: ограничение срока действия ключа, ограничение времени бесплатных обновлений, привязка ключа к оборудованию, привязка кода к ключу, ведение чёрных списков, веб-генераторы серийных номеров. |
| Автор: Voyager 9.2.2012, 14:35 |
| А в каких продуктах реализована виртуализация байт-кода? |