Протекторы для программ что это такое

Статья NETрогай! Как защитить программу от лишних глаз.

Введение
Со времен появления первых программ и компьютеров, людям не раз приходилось сталкиваться со множеством проблем. Одна из них появилась еще в период создания коммерческого ПО. Мало кто горит желанием платить за использование софта. В связи с этим сейчас нам очень знакомо слово — пиратство.

Хакеры каждый день вскрывают множество утилит и выпускают их крякнутые версии в открытый доступ. Поэтому сегодня я расскажу тебе, как с этим бороться.

  1. Spices.Net
  2. Smart Assembly
  3. NET Reactor

Программа для тестов
Чтобы что-то защищать нужно что-то создать. Я не стал далеко ходить и написал самую простую утилиту с большой, красной кнопкой. При нажатии на нее операционная система выходит из строя. Поэтому если какой-то любопытный пользователь захочет ее вскрыть мы этого не позволим. Открываем Visual Studio и выбираем проект Windows Forms.

Возможность создать интерфейс я предоставляю тебе. Дай волю фантазии и создай свой графический интерфейс с одной единственной красной кнопкой. Далее тебе потребуется открыть скрипт основного окна и записать туда такой короткий код:

✅ КАКОЙ ВЫБРАТЬ ЛУЧШИЙ РИСУНОК ПРОТЕКТОРА? НАПРАВЛЕННЫЙ СИММЕТРИЯ АСИММЕТРИЧНЫЙ


[DllImport(«ntdll.dll», SetLastError = true)] private static extern int NtSetInformationProcess(IntPtr hProcess, int processInformationClass, ref int processInformation, int processInformationLength); private void Click_Button(object sender, EventArgs e) < int isCritical = 1; // 1 int BreakOnTermination = 0x1D; // 2 Process.EnterDebugMode(); // 3 // 4 NtSetInformationProcess(Process.GetCurrentProcess().Handle, BreakOnTermination, ref isCritical, sizeof(int)); >

В первом мы создаем критический процесс и присвоим ее значение 1. Ниже задаем значение для флага BreakOnTermination в шестнадцатиричной системе счисления. После делаем запрос отладочных привилегий в строчке 3 и после присваиваем нашему флагу значение один. Все это дело происходит под четвертым комментарием.

Сохраняем результат и собираем проект. Только не думай нажимать на эту кнопку! Иначе придется перезагружать систему, а это сейчас будет лишним действием. Давай загрузим PE-файл в DiE и убедимся, что все работает корректно.

Библиотека никуда не пропала как и линковщик. Все строки хорошо просматриваются, а энтропия остается на статусе в 68%. Значит ничего не зашифровано и мы можем спокойно работать с софтом. Если ты до сих пор не понял, где хранится твой PE-файл из проекта, то загляни в папку bin и там же перейди на Debug. Ну а теперь стоит приступить к защите.

Как работает защита
Для начала предлагаю ознакомиться с теоретической частью нашей статьи. Прежде всего существует два типа защиты NET приложений. Это использование обфускаторов и протекторов. Разберем их плюсы и минусы работы.

  • Плюсы: ограничение прав сборки в оперативной памяти с последующим сохранением на диске. Достаточно разнообразный набор функций для защиты.
  • Минусы: конфликты с разрядностью системы. Проще говоря ты не можешь создать 64 битную и 32 битную программу одновременно. Яркая и очень хорошо выраженная реакция антивирусов на протекторы. Из-за нее многие пользователи просто боятся использовать такой продукт. К этому добавляется заявление производителей, которые рекомендуют обфуцировать код перед тем, как покрывать его протектором. То есть они сами признают минус своих детищ.
  • Плюсы: независимость от каких-либо программ. Простота и надежность в работе, что дает гарантию запуска кода. Также это считается нестандартным подходом к защите софта.
  • Минусы: здесь есть один жирный минус. Заключается он в том, что на родном языке чтение кода почти невозможно, но дизассемблировать программу и узнать ее алгоритм работы по прежнему остается реальным.

Spices.Net ​

Протекторы для карт. Обзор от Игроведа.

Spices.Net — инструментальное средство следующего поколения для .Net разработчиков, которое содержит функции защиты .NET кода и множество других возможностей. Программа состоит из ядра системы и 2-х внешних модулей Spices.Obfuscator и Spices.Decompiler. Spices.Decompiler содержит функции декомпилирования для 6 языков IL, C#, C++, VB.Net, J#.

В ближайшем будущем в программе появятся новые дополнения, Spices.Investigator (.Net PE metadata browser) и Spices.Informer. Как ты понимаешь по мимо защиты он умеет и декомпилировать некоторые программы. Но наша задача защитить исходный код, чтобы до него не мог добраться пользователь. Поэтому чтобы это сделать открываем нашу программу во вкладке File и далее переходим на Tools, кликаем по кнопке Obfuscate! и ждем результата. В итоге у тебя должен появиться файл и папка Output, где лежит готовая работа.

Теперь давай посмотрим, что у нас получилось. Первым делом заливаем все это в наш любимый DiE.

Как ты видишь понятие протектора или обфускатора в логах у нас не висит, а это уже хороший плюс в копилку. Глянем вкладку строк и посмотрим, что там изменилось. Изменения появились, хоть и не сильно заметные, но расположение строк явно говорят о наличие какой-то внешней защиты. В энтропии у нас все по стандарту, цифры не поменялись и стабильно держат планку на 63%. Давай копнем чуть глубже и посмотрим результат в dotPeek, он точно должен определить подвох.

А его тут нету. Весь код спокойно читается и никакой обфускации не произошло. В строках DiE мы видели все те же строки, но в другом формате. И выходит, что Spices.Net только на словах защищает код. А вот кстати та самая функция, которая вызывает синий экран смерти путем создания критического процесса. При декомпиляции она выглядит таким образом:

[DllImport(«ntdll.dll», EntryPoint = «NtSetInformationProcess», SetLastError = true)] private static extern int u0030(IntPtr _param0, int _param1, ref int _param2, int _param3); private void u0030(object _param1, EventArgs _param2)

Поэтому здесь мы разобрались с тем, что не весь софт умеет адекватно выполнять свою работу. Сразу занесем название утилиты в черный список, чтобы в дальнейшем не натыкаться на нее. Это кстати объясняет почему при статическом анализе из скриншота не было видно строчки протектора.

Читайте также:
Fileviewpro что это за программа и нужна ли она

Smart Assembly ​

SmartAssembly – это программное обеспечения представляет собой NET-обфускатор и систему составления автоматических отчетов об обнаруженных ошибках и использовании возможностей приложений. С помощью этого решения NET-разработчики могут создавать высококачественные и свободные от багов продукты. Из особенностей могу отметить наличие множества функций для настройки обфускации, ну а из минусов то, что программа является платной и имеет только пробную версию. Поэтому некоторые функции будут для нас закрыты.

Первым делом нас встречает окно с просьбой загрузить исполняемый файл. Берем в руки нашу программу и выгружаем ее в приложение. Далее настраиваем обфускацию из предложенных функций. Нам доступно создание отчетов, создание сложного ключа, автоматическая отправка ошибок, удаление ненужных строк, настройка уровня обфускации и настройка динамического прокси.

Ставим все по хардкору и компилируем наш софт, попутно молясь, что все сработает. Ну а если ты хочешь знать, что конкретно я использовал, то выставляй в настройках следующие функции: Obfuscation (3 level), Compression and Encryption, Strings Encoding, MSIL Disassembelr Protection. Ждем несколько минут и радуемся успешной сборке. Переходим в DiE и смотрим изменения.

Строки зашифрованы, а энтропия подскочила до 77%. Поэтому сказать, что нет изменений очевидно нельзя. Вместо обфускатора у нас в колонке отображается протектор, хотя на самом деле это не так. В скором времени ты поймешь почему. Теперь давай откроем dotPeek и взглянем на то, как выглядит наш код.

А он очень сильно изменился.

Переходим в тот же файл MainWindow.cs и смотрим нашу часть кода, которая отвечает за главное действие программы. Теперь все это дело выглядит так:

[DllImport(«ntdll.dll», SetLastError = true)] private static extern int NtSetInformationProcess( IntPtr hProcess, int processInformationClass, ref int processInformation, int processInformationLength); private void Click_Button(object sender, EventArgs e)

Теперь как ты понимаешь разобрать название переменных и большую часть кода стало невозможно. К этому добавляется несколько пустых функций в начале нашего файла.

Есть также дополнительные модули, которые помогают запутать код и сбить с пути реверсера. Как я говорил ранее, если в dotPeek это прочитать невозможно, то в дизассемблерах все легко читается и понять как работает программа вполне возможно. Возьми тот же x64dbg и попробуй залить бинарник с обфускацией. Разница конечно будет, но не такая яркая как в нашем случаи. Поэтому давай теперь попробуем запутать в принципе все, что только можно и покроем нашу программу протектором.

NET Reactor ​

NET Reactor — это мощная система защиты и лицензирования NET-кода, которая помогает разработчикам в защите своего NET программного обеспечения простым и безопасным способом. Работать мы будем на крякнутой версии этого протектора. У тебя скорее всего возник вопрос, а почему бы не использовать официальную версию? Здесь все очень просто.

В отличие от предыдущих программ, которые яростно требуют чтобы их купили реактор просто при каждой компиляции добавляет диалоговое окно в код с названием протектора. То есть перед запуском самой программы у тебя вылезет маленькое рекламное окошко с названием NET Reactor. Гениальный как по мне ход.

Запускаем наш протектор и выбираем создание нового проекта. Далее заливаем туда файл и выбираем нужные функции, их ты можешь увидеть на скриншоте. Чтобы не устраивать танцы с бубном я отметил тот тип защиты, который применяется наиболее чаще в защите. Так мы создаем гарантию того, что итоговый проект запустится.

После всех манипуляций кликаешь на кнопочку Protect и терпеливо ждешь результата. Дождался? Заливаем все это дело в DiE и смотрим, что получилось в итоге.

В столбце наш протектор никак не отображается. Неужели ничего не поменялось? Заглянем в энтропию и посмотрим на статус. 71%, а это значит, что файл чем-то покрыт. Открывай строки, здесь посмотри внимательно на некоторые команды, увидел?

Некоторые из них просто зашифрованы. А это значит, что пора смотреть, что под капотом. На удивление та же ситуация. Все функции имеют непонятный вид, а наша команда вызова синего экрана смерти вообще как-то странно выглядит:

[DllImport(«ntdll.dll», EntryPoint = «NtSetInformationProcess», SetLastError = true)] private static extern int v5LKivyS4(IntPtr _param0, int _param1, ref int _param2, int _param3); private void txK5sHCkH(object _param1, EventArgs _param2)

Можно только сказать, что протектор справился на ура! Теперь наш код полностью защищен от пиратов, жаждущих вечно что-то сломать и вскрыть. По мимо этого все функции не отображаются в правильном названии и имеют совершенно другой вид.

Поэтому кому-то другому будет очень тяжело ориентироваться в этой паутине. Задача выполнена, поэтому можем спокойно переходить к итогам статьи.

Подводим итоги
Итак, сегодня я рассказал тебе о трех утилитах, которые помогут тебе скрыть свой код от пользователей. К сожалению одна из них отказалась работать и от обфускации осталось лишь одно слово. Но это только подтверждает факт того, что не любая программа способна защитить софт. Что лучше использовать в работе решать тебе.

Лично я отдаю свой голос в пользу NET Reactor, так как в работе это незаменимый софт. Но не стоит забывать про его конкурента Smart Assembly, ведь он тоже имеет место быть. Хоть и есть в нем минус, который выражается в отсутствии адекватной бесплатной версии.

Источник: codeby.net

Глава 13. Использование навесных защит

Одним из популярных способов защиты программ является использование так называемых протекторов — программных инструментов, предназначенных для зашиты других программ.

Обычно сценарий установки защиты следующий. Разработчик создает программный. продукт с использованием некоторых программных средств: виртуальных сред, компиляторов и т.д. После того как получен работающий файл, этот файл обрабатывается с помощью программы-протектора и создается новый исполняемый файл, в котором реализованы средства защиты.

13.1. Какую защиту обеспечивают протекторы

Протекторы, прежде всего, защищают программу от исследования. Исследовать можно различные области программы, но наиболее часто проводится исследование кода, причем с совершенно разными целями. Исследование вируса может проводиться с целью определения методов заражения и разработки вакцины.

Читайте также:
Программа аэлита что это

Исследование кода операционной системы помогает находить уязвимости, а также писать приложения, взаимодействующие операционной системой на более низком уровне. Программы исследуются с целью обнаружения недокументированных возможностей, а иногда для становления алгоритма, по которому программа функционирует. Существуют и другие причины для исследований.

Части ресурсов и данных также могут содержать некоторую интересную информацию, поэтому часто защите подвергают не только код программы, но и данные с ресурсами.

Однако защищать абсолютно все ресурсы не совсем правильно. Дело в том, основная часть ресурсов должна быть доступна только в момент выполнения программы, и такие ресурсы можно безбоязненно защищать. Но есть некоторое количество ресурсов, например информация о версии программы и ее иконка, которые могут использоваться операционной системой тогда, когда программа не запущена. И эти ресурсы в защищенной программе должны оставаться в открытом виде.

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

Многие протекторы содержат средства, позволяющие создавать версии с ограничениями. Например, защищенная программа может прекратить работать через заданный промежуток времени, если не будет введен правильный регистрационный код или до ввода кода будет регулярно появляться окно с напоминанием о том, что программа не зарегистрирована, и с предложением приобрести лицензию.

Наиболее продвинутые протекторы имеют программные интерфейсы (API), доступные из защищаемой программы и позволяющие более четко контролировать процесс ее выполнения. Очень часто API используется для динамической разблокировки фрагментов кода, которые должны быть доступны только в зарегистрированной версии.

Источник: www.rfcmd.ru

Что такое дизассемблирование и обфускация?

Защита программ от копирования путём переноса их в онлайн (предоставление функционала этих программ, как сервиса. При этом код программы расположен и исполняется на сервере, доступном в глобальной сети)

Физические ошибки на диске

Такая защита предусматривает нанесение физических повреждений на диск. Это не является нарушением стандарта, так как повреждение может возникнуть и по естественным причинам.

Отклонение от стандарта записи на диск

Такая защита предусматривает сознательное нарушение стандарта записи на компакт-диски. Драйверы файловой системы используют далеко не всю информацию, и для них диск будет нормальным.

Использование уникальных характеристик диска

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

Измерение угла между секторами

Некоторые защитные механизмы используют измерение угла между первым и последним сектором на компакт-диске. Этот механизм использует тот факт, что плотность спиральной дорожки на компакт-дисках разная, и является для диска уникальной характеристикой.

Какие функции выполняют программы-протекторы?

Защита от несанкционированного использования, от снятия защиты, от исследования.

ASProtect

Протекторы служат не столько для уменьшения размера исполняемого файла (хотя некоторые протекторы еще и упаковывают программу), сколько для защиты программы от взлома. Протекторы в простейшем случае работают как упаковщики, только добавляют различные действия, которые мешают распаковке и взлому. Например: защита от отладчика, криптование некоторых частей кода программы, создают проблемы с таблицей импорта программы, производят действия для затруднения получения работоспособной распакованной программы и т.д.

Для защиты условно бесплатных программ чаще всего, наверное, применяется ASProtect — протектор, разработанный Алексеем Солодовниковым. ASProtect был чуть ли не первым серьезным протектором, сочетавшим в себе основные функции, применяемые для защиты программ:

· работа с регистрационными кодами на базе RSA-1024;

· поддержка «черного списка» регистрационных кодов; О ограничение периода работы пробной версии;

· ограничение функциональности пробной версии;

· динамическое расшифрование фрагментов кода при наличии правильного регистрационного кода;

· API для интеграции защищаемой программы с протектором;

· оригинальные методы защиты от снятия протектора.

Однако, благодаря огромной популярности ASProtect является и одним из самых хорошо изученных протекторов — почти для всех хитростей, применяемых в ASProtect, разработаны или автоматические, или полуавтоматические средства обхода. Иногда у программ, защищенных ASProtect, возникают проблемы с работой под новыми версиями операционных систем, но автор не прекращает работы по совершенствованию протектора и стремится оперативно исправлять все обнаруженные ошибки, а также добавлять новые защитные механизмы.

Armadillo

Непривычный метод взаимодействия с защищаемой программой использует протектор, разработанный компанией The Silicon Realms Toolworks и носящий название Armadillo. При запуске защищенная программа выполняется как 2 процесса. Первый процесс, в котором работает основной код протектора, создает в режиме отладки второй процесс, содержащий собственно защищенную программу, и управляет его выполнением. Протектор Armadillo применяет оригинальные технологии, называемые СоруМетП и Nanomites, для защиты кода выполняемой программы от считывания из памяти.

Что такое дизассемблирование и обфускация?

Дизассемблирование — процесс и/или способ получения исходного текста программы на ассемблере из программы в машинных кодах.

Для противодействия статическому исследованию алгоритма путем дизассемблирования обычно применяется самомодифицирующийся код. Если это невозможно, используют шифрование критических участков кода и различные приемы программирования, направленные на затруднение понимания работы алгоритма.

Для невозможности модификации нарушителем кода системы зашиты (с целью ее обхода) применяется подсчет и проверка хэш-значений критически важных фрагментов кода.

Кроме дизассемблеров, для исследования программ могут применяться так называемые дамперы (от слова «дамп», dump. Дампер — это практически тот же дизассемблер, только транслирует в ассемблерный код не файл, находящийся на диске, а содержимое оперативной памяти на тот момент, когда приложение начало нормально исполняться (то есть, пройдены все защиты). Это один из коварных средств взлома, при котором хакеру не надо бороться с механизмами, противодействующими отладке, он лишь ждет, когда приложение закончит все проверки на легальность запуска, проверяя метки на диске, и начинает нормальную работу. В этот момент дампер и снимает «чистый» код.

Для противодействия дамперам применяют:

· динамическое изменение кода;

· использование виртуальных машин.

Читайте также:
Программа lingvo что это

Обеспечение защиты корпоративной информационной

Обфускация — приведение исходного текста или исполняемого кода программы к виду, сохраняющему её функциональность, но затрудняющему анализ, понимание алгоритмов работы и модификацию при декомпиляции.

Источник: studopedia.ru

Отличие работы упаковщиков (протекторов, крипторов) от архиваторов

На сегодняшний день в сети Интернет достаточно много различных утилит, которые позволяют сжимать, шифровать и защищать различные файлы. Конечно, данные программы разрабатывались из благих намерений, но, к сожалению, их успешно применяют и разработчики вирусов, для того, что бы скрыть вредоносный код от анализа и детектирования.

Итак, существуют следующие типы программ:

  1. Архиваторы (Archivers);
  2. Упаковщики (Packers);
  3. Протекторы (Protectors, Crypters).

Архиваторы

Самые распространенные утилиты среди пользователей. Представители – ZIP, RAR, CAB и другие. Для архивирования и разархивирования на компьютере должна стоять специальная программа — архиватор. Причем, при доступе к любому файлу в архиве (чтение, запуск и т.п.) сначала этот файл распаковывается архиватором на жесткий диск (во временный каталог), а потом происходит доступ к нему.

В данном случае антивирусный сканер реального времени, даже если он не умеет проверять (лечить) архивы, нас защитит от заражения, т.к. на этапе записи файла архиватором во временный каталог антивирус его проверит.

Кстати, даже самораспаковывающиеся (Self Extractors) архивы (когда нет необходимости в установленном архиваторе для распаковки) вначале так же распаковывают файлы на жесткий диск во временный каталог.

Пакеры

Менее распространенные программы среди обычных пользователей. Представители – UPX, ASPack и другие. Данные программы работают только с определенными типами файлов, чаще всего это только исполняемые файлы и DLL файлы. Для упаковки, как и в первом случае, необходима установленная программа, а вот для запуска упакованного исполняемого файла такая программа не нужна.

Рисунок 1: Общая схема упаковки

Более того, распаковка и исполнение файла происходит, минуя операции с жестким диском, как это было в случае с архиваторами.

В итоге получается, что если антивирус не знает формата упаковщика, тогда нам совершенно не поможет наша защита (сканер реального времени) – вредоносный код в запакованном виде загрузится в память компьютера, а там он уже будет распакован и выполнен. Причем антивирус нам об этом ничего не скажет.

Протекторы

Сильно распространены в среде разработчиков программного обеспечения и применяются для защиты программного обеспечения. Схема их работы схожа со схемой работы упаковщиков, за исключением того, что программа не просто ужимается, но дополнительно шифруется. Дополнительно к этому, загрузчик протектора (см. рисунок 1) оснащен достаточно большим количеством защит против взлома, и анализа кода исходной программы.

Подписывайтесь на канал «Anti-Malware» в Яндекс Дзен, чтобы первыми узнавать о новостях и наших эксклюзивных материалах по информационной безопасности.

  • Аналитика
  • Практика
  • Интервью
  • Сравнения
  • Обзоры
  • Сертифицированные продукты
  • Корпоративные продукты
  • Персональные продукты
  • Сводный реестр ФСТЭК и AM Test Lab

Источник: www.anti-malware.ru

Matrix Failure

Блог о создании программных продуктов, MicroISV, Shareware и Bootstrapping-e

Мучительный выбор протектора для защиты программы и генерации лицензий

Posted on 13.09.2012 by matrixfailure

Практика показала, что для защиты программ от копирования и для организации системы лицензирования можно использовать несколько методов.

Как правило и опытные шароварщики и компании которые продают тиражируемое программное обеспечение выбирают самый простой и беспроблемный вариант — купить протектор у тех, кто на этом собаку съел.

Некторые же начинающие шароварщики при выборе способа защиты руководствуются парадигмой:

«Только самостоятельно, только хардкор!»

При этом первый способ совсем не исключает того, что покупную защиту можно улучшить. Можно добавить хитрых ловушек, реализовать проверку целостности цифровой подписи, и.т.п.

Протекторы

Короткие ключи

Одним из главных критериев для окончательного выбора оказалась поддержка коротких ключей, т.е. таких ключей вида:

которые можно при желании записать на бумажку, и набрать руками, в отличие от длинных ключей которые невозможно ввести руками.

Преимуществ у коротких ключей полно:

  • Их можно напечатать на бумажке на память (я так делаю)
  • Их можно напечатать на диске в случае распространения дисков
  • Можно отправить пользователю с помощью SMS если вдруг до пользователя не доходят email-ы
  • Можно отправить регистратору список ключей и не парится с онлайновыми и другими генераторами (и это поддерживают ВСЕ регистраторы)
  • Отсутствие аттачей в письмах — короткие ключи легко помещаются в email-ы.
  • Не нужно дополнительных усилий по переносу ключа в программу, достаточно обычного диалога
  • Они привычней длинных ключей или файлов для пользователей (Все продукты MS, VMWare, Acronis, практически все игрушки ), а переучивать пользователей — это дело не благодарное.

Альтернативным вариантом для использования длинных ключей является схема когда короткий КлючАктивации вводится пользователем, отправляется на сервер, берет там длинный ключ и активирует программу.

Но поразмыслив, я пришел к выводу, что не хочу связываться с обязательной интернет активацией, т.к. у неё целый ряд минусов. Начиная от того, что не везде в компаниях есть интернет, и заканчивая тем, что на попытку полезть в интернет может заорать антивирус и предложить пользователю удалить программу.

В общем я выбрал Armadillo / Software Passport.

Прямо сразу после оплаты по карте, выдается код для активации и 14 дневная ссылка на скачивание файла. Как в последствие оказалось это был временный код на 30 дней. А постоянный пришел по почте чуть позднее.

К слову, чтобы получить Custom Build — специальную индивидуальную версию защиты отличающеюся от защиты которая генерится общей версией Software Passport, надо щелкнуть меню: Help/Get Custom Builds.

Кстати эти трюки (скачивание полной версии только после покупки и отсылка автоматом временного ключа) параноики могут использовать при продаже своих программ. Хотя я признаться не очень паранойю по поводу защиты от взлома. Гораздо важнее ИМХО удобство лицензирования и хорошая совместимость с тысячами компьютеров и отсутствие ложных тревог от антивирусов.

Дополнение от 08.07.2013: Хакеры вроде как из Туниса выпустили взломанную версию программы. Но большой беды не случилось, так как взлом был не полный. Мне помогли дополнительные механизмы защиты.

Источник: matrixfailure.wordpress.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru