![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| ДобренькийПапаша |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: 3 Всего: 7 |
Точнее меня интересует ответ на вопрос. Почему защита кода, компилирующегося в машинный код проще и надёжней, чем кода компилируемого в байт-код? Хочу знать, почему, конкретно? Ещё хочу краткий ответ об отличии механизмов защиты.
-------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
|||
|
||||
| Heinzz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 12.12.2008 Где: .net Репутация: 3 Всего: 9 |
байт код это IL - вообще говоря читаемый код, при хорошей усидчивости в нем можно разобраться и повторить. машинный код - специфичен для процессора и нечитаем. чтобы защитить байткод используют deobfuscator который вносит путаницу меняя имена пространств, классов, полей.. на белеберду. |
|||
|
||||
| ДобренькийПапаша |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: 3 Всего: 7 |
Да-да, то, что вы сказали ясно. А есть ли другие проблемы?
Есть (насколько мне известно) 4 подхода к защите. 1)Запутывание кода. 2)Упаковка кода. 3)Управление JIT-компиляцией. 4)Виртуализация байт-кода. Просьба вкратце рассмотреть эти подходы и расставить их по приоритету. Кто что думает по этому поводу? Мне интересно Ваше мнение. Это сообщение отредактировал(а) ДобренькийПапаша - 9.1.2010, 17:21 -------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 6 Всего: 118 |
машинный код защищают десятилетиями и уже кое-чего добились 8)
В процессе выполнения на уровне процессора можно замутить намного более сложные вещи, чем на уровне IL. Например, можно использовать фишки операционки делая отладку запущенного процесса. В кратце данная техника подразумевает, что процесс запускается под отладчиком (собой же), а сам код и данные процесса зашифрованы. При этом распаковка и дешифрование производится страницами в память. Суть отладчика - перехыватывать PAGE_FAULT ошибку, зашифровывать ранее расшифрованную страницу и дешифровать ту, куда процесс попытался стукнутся.. в общем техника реализована в защитах вроде Armadillo.... А еще на уровне процессора можно более эффективно противостоять отладчикам, вытворять всякие непоребности вроде адресация по нечетным адресам, вызов ошибок в совокупности с SEH и VEH .... или даже установке драйверов (как, например, StarForce)... Я так понимаю в .net можно сделать нечто, что будет создавать код и выполнять его (через тот же CodeDOM например), но, учитывая что .net и так-то не быстр, это съест всю скорость... -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| ДобренькийПапаша |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: 3 Всего: 7 |
Ну вот я сделал небольшой обзор этих четырёх пунктов:
1)Обфускация. Назначение обфускатора – запутать сам код, переименовывая имена членов (методов, переменных). Перед обфускацией:
После обфускации:
2)Упаковка кода. Сжатие исполняемого файла и прикрепление к нему кода, необходимого для распаковки и исполнения содержимого файла. Упаковка производится по ряду причин: • Упакованный файл занимает меньше места на жёстком диске, что помогает ускорить его загрузку в память • Некоторые виды упаковки совмещены с шифрованием содержимого файла для того, чтобы предотвратить обратную разработку программы. 3)Управление JIT-компиляцией. Современные средства защиты позволяют изменить код программы для задания интеллектуального поведения самой программы во время выполнения по отношению к процессу выполняющему программу. Это позволяет обеспечить защиту от «отладки программы без исходного кода». 4)Виртуализация байт-кода. Виртуализация кода – это следующий шаг в области защиты программного обеспечения от анализа. Большинство систем защит шифруют исполняемый код и расшифровывают его при запуске программы. Существуют защитные средства, которые никогда не расшифровывает код. В процессе защиты они способны переводить код программы в код, работающий на виртуальном процессоре. Набор команд этого процессора не похож на команды процессоров x86 или x64 и меняется при каждой защите программы. Преимущества подхода к защите с использованием виртуализации кода:
Методы построения виртуальной среды выполнения:
Вывод: Осложнить взлом программного кода можно используя комплексный подход к защите: обфускацию, упаковку, настройку на интеллектуальное поведение JIT-компиляции и виртуализацию Стоимость пакетов для защиты программного кода колеблется от 800$ до 2.000$. Они предоставляют возможность мутации кода, виртуализации, защиты памяти, защиты импорта, упаковки, определения отладчика, определение средств виртуализации. Помимо этого включают в себя полезные средства лицензирования: ограничение срока действия ключа, ограничение времени бесплатных обновлений, привязка ключа к оборудованию, привязка кода к ключу, ведение чёрных списков, веб-генераторы серийных номеров. -------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
||||
|
|||||
| Voyager |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 532 Регистрация: 8.2.2005 Репутация: 3 Всего: 18 |
А в каких продуктах реализована виртуализация байт-кода?
|
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | .NET для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |