В пику вот этому обзору. Решил написать собственный обзор обфускаторов, ибо считаю вышеобозначенный не только поверхностным, но и вводящим в заблуждение.
Актуален один вопрос — так ли хорошо защищает тот или иной продукт от снятия защиты? Учитывая, что производители обфускаторов честно предупреждают — сборка остается дизассемблируемой. И это краеугольный камень проблемы защиты .Net приложений. Тотальная защита приводит к неудобствам запуска сборки в разных средах, обфускация — к условной открытости кода. Остается решать задачу по усложнению получения кода, его читабельности и снятию защиты.
-
Протекторы (native processor wrapper)
Подобные машинки поставляются также в сочетании с обфускатором, достаточно слабым (предлагающим допустим обычно переименованием членов сборки, не больше). Обертка бывает различных видов, изящнее всего она представлена в Salamander Protector (здесь и обфускатор достаточно качественный), исключение в смысле слабости обфускатора — Salamander, но и здесь могут быть проблемы, как с отладкой, так и с запуском.
Представители: CodeVeil, Salamander Protector, .Net Reactor.
Протекторы для карт. Обзор от Игроведа.
a. Stand-alone обфускаторы, которые не используют сервисы и интерфейсы MS для доступа к метаданным и для генерации обфусцированной сборки, то есть имеющие свою машинку доступа, парсеры, генераторы и прочие инструменты для работы с .Net сборками.
Представители: Spices.Net Obfuscator, Dotfuscator,
Преимущества: независимость от внешних сервисов в выборе средств защиты, широкий спектр и нестандатные подходы в защите.
Недостатки: как честно и предупреждают ответственные производители — код остается дизассемблируемым (если не ILDASM, то каким-нибудь кустарным дизассемблером, исходники можно взять в SSCLI или Mono).
b. Зависимые от MS сервисов (тут списк большой – от эксплуатации ILASM/ILDASM, доступа через COM, а также использования сервисов от .Net 2.0). Функционал подобных заведомо ограничен, т.к сервисы е предоставляют возможности ввернуть что-нибудь нестандартное.
Представители: Salamander Obfuscator, Skater.Net, Demeanor от WiseOwl (это практически сейчас неизвестный обфускатор, хотя и неплохого качества, один из пионеров).
Рекомендации разработчикам
- Классы, работающие в serialization-reflection помещать в отдельную сборку. Это нетрудно, ибо эти классы и их члены и так должны иметь публичную видимость.члены и так должны иметь публичную видимость.
- Классы, работающие в serialization-reflection декларировать под определенным namespace и в этом случае исключать их из обфускации будет нетрудно, причем все скопом.
- Если уж приходится использовать serialization-reflection в коде – то лучше помечать подобные методы специальным атрибутами. Не ставьте сейфовый замок на фанерную дверь. Умерьте свою паранойю. Лучше изучайте получившиеся после обфускации сборки, проверяйте классы и их члены – все ли вы скрыли от пытливого глаза, оптимизируйте найстройки, чтобы все, что нужно – было обфусцировано, скрыто и спрятано. Пробуйте открыть ILDASM-ом, reflector-ом – что видно из этих продуктов. Пробуйте сделать dump из ILDASM (если получится) – смотрите сгенерированный файл. Это нужно для понимания, насколько сложно будет изготовить из вашей сборки что-то другое, слепить код, или взять кусочек кода декомпилятором.
Теперь насчет баланса. Ну вот возьмите Reflector, возьмите Spices.Net — вот они защищены обычным обфускатором, не протектором, и как предыдущий обозреватель написал — легко все видно в winDbg. А толку? Кто-то узнал какие-то секреты Reflector-а (а Pro версия сейчас небесплатна), кто-нибудь узнал секреты Spices.Net? А ведь эти приложения написаны в pure IL без native processor code (в отличие от Salamander). - Также хочется сказать некоторые вещи насчет тестирования обфускаторов — если вы попробовали некий продукт, после которого получили неработающие сборки, имеет смысл обратиться к производителю продукта, во-первых это хлеб для производителя — разбирать подобные проблемы, во-вторых — реальный шанс получить скидку (если производитель думает о клиентах), если вообще продукт забесплатно — сотрудничество всегда оплачивается. Дайте шанс производителю решить вашу проблему, это взаимовыгодно.
Подборка программ. Полезные, интересные и необычные утилиты
Вот теперь — сравнения
Сразу могу сказать, что многие представители обфускаторов не вошли в таблицу, только для того, чтобы не тратить ваше время. Да и Dotfuscator включен в этот список так как просто является продвигаемым Microsoft продуктом, хотя может далеко не всё из того, что заявляет. Будущее SmartАssembly также нельзя назвать ясным после покупки компанией Red-Gate за $1M — (имхо, сделка того не стоила).
Reflector теперь обновляется редко (что хорошо разве что для общирного набора плагинов), что и будет наблюдаться и со SmartАssembly скорее всего. Зачем компании занимавшейся SQL влезать в рынок обфускаторов-декомпиляторов (хотя пакет «Обфускатор-Декомпилятор» — это продуктивный подход, он есть в Salamander, есть в Spices.Net) – ума не приложу, рынок достаточно специфичный и на нем уже умерло немало многообещающих проектов типа Decompiler.Net (даже позиции Salamander зашатались, например, они так и не выпустили технологию V-Spot Elimination, хотя в этом обзоре автор пишет, что они этим гордятся (вопрос только чем — тем что не выпустили, или типа «выпустили»? Реализовали-то и заявку на патент сделали 9Rays.Net, вообще-то).
Итак:
В пробной версии | Собственно Community Edition c минималистическим набором. | Дает полное представление, не ораничена по функционалу (только помечает обфусцированные сборки специальной watermark – «Obfuscated by Spices.Obfuscator. Not for commercial use») и идет в полном комплекте – GUI, VS Integration, MSBuild integration, консоль и SDK. Можно использовать бесплатно для защиты некоммерческих программ. |
Ограничения – предоставляется консольная версия. | Функциональные ограничения. |
Интерфейс, автоматизация, интеграция | Интерфейс не очень. Кратко – ugly (ну тут на вксю и цвет. ). Консольная версия присутствует. Есть возможность применения правил, но достаточно запутанная. применения правил, но достаточно запутанная. Автоматизации нет. Интеграция в MSBuild, интеграция с VS в виде Add-In, который не интегрируется в build-process текущего проекта. |
Поставляется как в GUI версии в составе Spices.Net, так и в консоли. В GUI версии предоставляется немало дополнительных инструментов для исследования сборок. Автоматизация есть – предоставляется пример на C# как написать собственный обфускатор с использованием машинки Spices.Net Obfuscator. Кроме этого поддерживаются ObfuscationEvents (по аналогии VS Build Events), позволяющие вставлять кастомные акции между шагами процесса обфускации. Интеграция в MSBuild и VS присутствует – настраивать опции обфускации можно прямо в свойства проекта, включать-отключать любой проект солюшена, вообще выключать обфускацию. |
Поставляется в GUI. Консоль есть. Автоматизации нет. Интеграции нет. |
Неплохой wizard-style простенький интерфейс. Консоль присутствует. Автоматизации нет. Интеграции тоже нет. |
Tamper-Resistance | Модуль «стукач» поставляется в Enterprise, предназначен от внутрикорпоративных краж. Для обычного софта – достаточно отключить доступ в инет этой программе, или просто напросто удалить защиту ибо это достаточно легко. | Есть. Взломанная, переименованная или подделанная сборка перестает работать. Защита как от ILASM/ILDASM roundtrip, так и от простого переименования сборки (то есть смены identity – сюда входит как ее название так и полное название в случае strong name сборки, а также номер версии). И вот что интересно: после введения этой технологии хакнутых версий Spices.Net больше не найти, а Salamander и SmartAssembly (о да, предлагающие control flow!) — пожалуйста, лежат на варезниках. |
Нет. | Нет. |
String Encryption | Есть | Есть. Дополнительно – защита ресурсов (без шифрования и компрессии, но работает с защитой от подделки (tamper resistant)) |
Есть. | Есть. Дополнительно – компрессия и шифрование ресурсов. |
AntiILDASM, противодействие декомпиляции | AntiILDASM есть, противодействия декомпиляции нет. | AntiILDASM есть, противодействие декомпиляции есть (Reflector не берет, но Salamander Decompiler частично может. Автоматически защищает от Spices.Net Decompiler). | АntILDASM есть, автоматически защищает от Salamander Decompiler. | АntILDASM есть |
Удаление неиспользуемого кода и деклараций (pruning) | Может | Может, гибко | Может | Может. |
Software watermarking | Может | Может (с защитой от подделки – то есть используется технология TamperProof) | Нет | Нет |
Control flow obfuscation | Есть, частично распознаваемо декомпиляторами. | Вместо нее предлагается технология CodeAnonymizer как более эффективное средство борьбы с декомпиляторами. | Есть, но распознаваемо декомпиляторами. Упоминается V-Spot Elimination — нереализованная технология, подобная реализованной в Spices.Net CodeAnonmizer |
Есть, но распознаваемо декомпиляторами |
Работа с mixed-code сборками | Не очень хорошо, без оптимизации по размеру | Может, с оптимизацией по размеру | Есть, но бывает нестабильна | Может, ограниченно (error reporting не вставляется в подобный код) |
Поддержка 64-бит | Есть | Есть | Нет | Нет |
Деобфускация StackTrace | Нет в community edition, есть в enterprise, но не очень удобная, базирующаяся на карте обфускации | Есть как инструмент Spices.Net и предлагается более детальное бесплатное решение. | Нет | Есть внедряемый Error Reporting модуль. Уникальная фича. |
Преимущества | Идет в каждой поставке с VS. В отличие от других обфускаторов – для каждой новой версии .Net выходит самым первым – инсайдер все-таки. | Большой выбор средств для защиты. Две технологии, которые не предлагают другие обфускаторы. Наличие собственного неплохого декомпилятора, позволяет понимать, что обфускатор знает, что надо защищать.ать, что обфускатор знает, что надо защищать. Из плюсов могу также назвать оперативную поддержку на русском и конструктивность в решении проблем. |
Древнейший представитель, неплохое качество защиты. | Простенький, идет навстречу основным потребностям маленьких разработчиков и заточен под них, но из-за этого малость негибок, хотя обладает неплохим арсеналом средств защиты. |
Недостатки | Неоправданно дорог. Список фичей и качество исполнения не соответствует цене. Поддержка небесплатна. |
Обилие настроек и инструментов иногда останавливает. Заточенность на профессиональное использование, а не для нужд маленьких разработчиков. Хотя для них как раз все есть в консольной версии. |
Негибкость настроек, несовременность. С выходом .Net 2.0 ребята уже бросали этот проект, но потом вышли с комбинацией Obfuscator + Protector. Не может работать с проектами различных .Net версий. На последних версиях .Net – неустойчив. Сложно и долго идут на контакт по поддержке. |
Непонятно будущее этого хорошего продукта. Отсутствие интеграции, tamper-resistance ухудшает характеристики. А ведь первое, что они могли бы предложить – защиту от reflector – Это была бы очень мощная фича. Раньше была очень дружелюбная поддержка, сейчас не знаю. |
Про цены
Специально не сравнивал цен. У Дотфускатора цены высоки и расценки за поддержку таковы, что служат барьером, судя по всему, они ориентируются на крупный корпоративный бизнес. По остальным производителям могу сказать, что тут есть место для принципа «цена – это то, что устроит и продавца и покупателя».
Давно уже практикуется договариваться, чем например индусы овладели в совершенстве и давно не парятся насчет того, как купить 400-долларовый продукт за 150 баксов. Существуют недекларируемые скидки для студентов (academic discounts), для всяческих MVP и MCP, для членов user groups и сообществ, для некоммерческих организаций, региональные и национальные, за упоминание в блоге и размещение лого продукта на некторый срок. Об этом конечно производитель на сайте не пишет. В конце концов вы можете предоставить проблемный файл или наоборот — сообщить о дыре в защите, любое сотрудничество с производителем приведшее к улучшению качества продукта будет оценено.
Попробуйте попросить скидку, да обрящете. Успехов!
P. S. Есть есть желание дать инвайт опытному и хорошему человеку, активно участвовавшего в создании этой статьи — свяжитесь со мной, пожалуйста.
Источник: habr.com
13.5. Несколько интересных протекторов
В настоящий момент разработано достаточно большое число протекторов исполняемых файлов. Многие из них бесплатны и созданы энтузиастами, которым просто интересно попробовать свои силы в защите программ. Разумеется, есть и коммерческие протекторы. А некоторые протекторы являются составляющими частями более сложных комплексов, включающих в себя привязку к аппаратным ключам или компакт-дискам.
Рассмотрим основные характеристики нескольких наиболее интересных протекторов.
13.5.1. ASProtect
Для защиты условно бесплатных программ чаще всего, наверное, применяется ASProtect — протектор, разработанный Алексеем Солодовниковым. ASProtect был чуть ли не первым серьезным протектором, сочетавшим в себе основные функции, применяемые для защиты программ:
- работа с регистрационными кодами на базе RSA-1024;
- поддержка «черного списка» регистрационных кодов; О ограничение периода работы пробной версии;
- ограничение функциональности пробной версии;
- динамическое расшифрование фрагментов кода при наличии правильного регистрационного кода;
- API для интеграции защищаемой программы с протектором;
- оригинальные методы противодействия исследованию под отладчиком;
- оригинальные методы защиты от снятия протектора.
Однако, благодаря огромной популярности ASProtect является и одним из самых хорошо изученных протекторов — почти для всех хитростей, применяемых в ASProtect, разработаны или автоматические, или полуавтоматические средства обхода.
Иногда у программ, защищенных ASProtect, возникают проблемы с работой под новыми версиями операционных систем, но автор не прекращает работы по совершенствованию протектора и стремится оперативно исправлять все обнаруженные ошибки, а также добавлять новые защитные механизмы.
13.5.2. Armadillo
Непривычный метод взаимодействия с защищаемой программой использует протектор, разработанный компанией The Silicon Realms Toolworks и носящий название Armadillo. При запуске защищенная программа выполняется как 2 процесса. Первый процесс, в котором работает основной код протектора, создает в режиме отладки второй процесс, содержащий собственно защищенную программу, и управляет его выполнением.
Протектор Armadillo применяет оригинальные технологии, называемые СоруМетП и Nanomites, для защиты кода выполняемой программы от считывания из памяти. Технология СоруМетП уже хорошо изучена и легко обходится автоматическими депротекторами. Про существование автомата, способного обойти Nanomites, пока не известно, но были многочисленные сообщения о ручной распаковке программ, при защите которых использовалась эта технология.
Протектор Armadillo также включает в себя менеджер лицензий.
13.5.3. PACEInterLok
Протектор InterLok, разработанный компанией РАСЕ Anti-Piracy, имеет версии для Windows и Macintosh. Набор функций, предлагаемых протектором, вполне обычный: менеджер лицензий, демонстрационные версии, API для интеграции и т. д.
Версия для Windows устанавливает драйвер ядра, препятствующий отладке защищенного приложения и выполняющий часть проверок. Но, несмотря на наличие такого сложного элемента, как драйвер, защита исполняемого файла довольно слабая. Например, все секции шифруются потоковым шифром с одним и тем же ключом. Это приводит к тому, что если секция кода больше, чем любая другая секция, то можно прочитать из памяти запущенной программы расшифрованную секцию кода, вычислить гамму, накладываемую при шифровании, и расшифровать все остальные секции файла, даже не прибегая к сложным инструментам. Драйвер практически не имеет защиты от исследования, а таблицы импорта вообще никак не защищены.
13.5.4. HASP Envelope
В комплект разработчика, поставляемый вместе с ключами HASP, входит протектор HASP Envelope. Цель этого протектора — защитить программу от исследования и даже запуска при отсутствии аппаратного ключа HASP.
Так как секретная функция, являвшаяся на протяжении многих лет сердцем ключей HASP, оказалась полностью раскрыта, не составляло большого труда эмулировать ответы на запросы, которые Envelope делал к ключу. Следовательно, любая программа, защищенная HASP Envelope, могла быть запущена без ключа.
С появлением ключей семейства HASP4, в которых используются новые секретные функции HaspEncodeData и HaspDecodeData, обход Envelope. При отсутствии ключа стал невозможен. Но в остальном протектор не способен обеспечить высокую стойкость защиты. И при наличии ключа получение незащищенной копии программы обычно не требует значительных усилий.
13.5.5. StarForce
Одной из составляющих StarForce Professional (системы, разработанной компанией Protection Technology для защиты информации, распространяемой на компакт-дисках) является протектор. В его функции входят проверка подлинности компакт-диска и запуск защищенной программы, но только в том случае, если введенный пользователем лицензионный код соответствует установленному в приводе диску.
В StarForce применяется множество уникальных технологических решений. Так, например, в защищенном исполняемом файле секция кода заполнена одними нулями, а код защиты выполняется из динамической библиотеки protect.dll, которая автоматически загружается и инициализируется при запуске программы.
Большая часть защиты сосредоточена в драйвере, устанавливаемом в ядро операционной системы. Именно там идет проверка подлинности компакт-диска. Сам драйвер также зашифрован с целью затруднения его исследования.
Часть защищаемой программы хранится в псевдокоде и выполняется на встроенной в протектор виртуальной машине.
Несмотря на то, что в Интернете можно найти подробные описания процесса ручного снятия StarForce с некоторых программ, таких случаев крайне мало. Частично это может быть объяснено тем, что для исследования защиты необходимо наличие оригинального компакт-диска, а также тем, что основная категория продуктов, которые защищаются с помощью StarForce, — компьютерные игры. А взлом защиты игр экономически не очень выгоден, т. к. стоимость одной копии игры невелика, а период популярности весьма короток. Но надо отдать должное разработчикам — они неплохо потрудились.
В целом StarForce на сегодняшний день является одним из самых серьезных протекторов, который, к тому же, продолжает развиваться. Так недавно компания Protection Technology объявила о выходе StarForce Soft 3.0 — системы защиты от копирования, основанной на ядре StarForce Professional 3.0, но не использующей компакт-дисков.
Источник: www.rfcmd.ru
Вопрос Какой протектор лучше
Очевидно вмп
Пожалуйста, авторизуйтесь для просмотра ссылки.
— это фейк если что, не ведитесь на такое
Пользователь
$$$ WEEBS.CLUB MUTATOR TECHNOLOGIES $$$
прозрачные предикаты бустят
Очевидно вмп
Пожалуйста, авторизуйтесь для просмотра ссылки.
— это фейк если что, не ведитесь на такое
Аа панимаю этого в списке нету
Участник
cmp eax, ebp и протектор не нужен
я ассемблер не знаю можно поглубже объяснить?
НАЧНИ ПРОГРАММИРОВАТЬ ПРЯМО СЕЙЧАС
Участник
я ассемблер не знаю можно поглубже объяснить?
тебе для каких целей то нужен протект?
если с паблик софтом поиграть, то протект скорее всего не спасет
если защищать свой pay-to-cheat, то лучше не лезь
Источник: yougame.biz