Обфускация 1с кода: Обфускация кода 1С. Для чего используется Обфускация (защита программных продуктов) | Полезные «фишки» в программировании 1С | Статьи экспертов
Обфускация кода 1С. Для чего используется Обфускация (защита программных продуктов) | Полезные «фишки» в программировании 1С | Статьи экспертов
Обфускация помогает в ситуации, когда сложному клиенту необходимо передать «Полнофункциональную разработку» с некоторыми ограничениями (до момента оплаты, например):
— у клиента не должно быть возможности править модуль;
— затруднено сопровождение/изменение/тиражирование;
— легко спрятать в модуле любые функции ограничения по сроку, среде исполнения, осуществить простую привязку к «железу»;
— должен оставаться стимул оплатить работу.
Конечно, 100% защиту может дать только механизм внешних компонент 1С и трудоемкость обфускации минимальна по отношению к созданию внешней компоненты (достаточно обфусцировать несколько ключевых функций). После оплаты восстанавливаем исходный модуль, сопровождение идет в штатном режиме. Трудоемкость восстановления исходных модулей в ручном режиме на основании обфусцированных сопоставима по трудоемкости с разработкой аналогичных.
Форма обработки:
ПРИМЕР
Исходный код:
Результат:
Обфускация — имя переменной УИД
Обфускация — имя переменной случайное число + шифрование строк
или
Обфускация — имя переменной УИД + шифрование строк
Возможности обработки:
1.Обфускация модуля/модуля формы/функции – приложения по заданным параметрам. Обфусцируются переменные:
— описанные в конструкции переменные
— описанные как параметры функции/процедуры
— анализ контекста выполнения НЕ выполняется
2. Реализовано разбивка/шифрование строк по заданным параметрам.
3. При шифровании строк «По умолчанию» функция возврата пароля шифрования «прячется» в обрабатываемом модуле. Ее можно заменить своей функцией, возвращающей аппаратно-зависимый пароль (метка диска, имя машины, наличие сетевого адреса и все, что подскажет Ваша фантазия), тем самым исключить хранение пароля в модуле, реализовать простейшую защиту от несанкционированного использования защищенного модуля.
Соответственно без пароля/неправильном пароле функционал модуля будет недоступен/потерян (в случае шифрования строк).
Порядок работы:
1. В поле «Текст модуля исходный» копируем преобразуемый модуль
2. На вкладке «Параметры шифрования» определяем параметры шифрования строк, при необходимости свою функцию получения пароля
3. Нажимаем кнопку «Обработать»
4. Забираем обфусцированный модуль
Особенности/ограничения:
1. Обфусцированный модуль в режиме шифрования строк/разбивки может выполняться МЕДЛЕННЕЙ исходного в НЕСКОЛЬКО РАЗ, если зашифрованные строки находятся внутри циклов.
По быстродействию хочу поставить акцент:
Вызов функции получения пароля происходит при развертывании каждой части шифрованной строки.
Если это модуль формы, мы можем значительно ускорить выполнение кода, определив пароль один раз при инициализации модуля. Хранить в переменной модуля/реквизите формы, возвращая эту переменную при вызове функции. Это будет ЗНАЧИТЕЛЬНО быстрее, чем вычисление пароля каждый раз (или используя другие варианты оптимизации кэширования повторного использования значений и т.д).
По умолчанию это формирование строки из кодов символов, пароля, указанного при обфускации: Символ(КодN1)+Символ(КодN2).
Эта функция заменяемая. Как вариант, указываем функцию получения значения пароля из модуля «Повтор используемых значений».
По умолчанию новый модуль генерируется универсально. Вычисление пароля происходит при КАЖДОМ вызове расшифровки строки.
Поскольку при обфускации нет возможности автоматически определить, что обрабатываем — модуль формы/модуль приложения, то пока этот нюанс обрабатываем самостоятельно. Правка минимальна.
2. При установке режима шифрования строк разбиваются/шифруются ВСЕ строковые переменные модуля.
3. Имена функций НЕ обрабатываются.
4. Перенос директив препроцессора, обработка областей модуля НЕ ТЕСТИРОВАЛАСЬ,
5. НЕ анализируются и обрабатываются «как есть» переменные, которым задано наименование глобального контекста 1С или зарезервированного слова 1С.
Пример:
Если в коде объявлена переменная «Символ», «КодСимвола», то используются ОДНОИМЕННЫЕ функции. Исходный код 1С обрабатывает корректно (хотя есть одноименные функции глобального контекста). При обсфукации вызов функции «Символ» будет заменен новым именем переменной «Символ», и в модуле возникнет синтаксическая ошибка.
5. Используются функции шифровки/дешифровки, доработанные с Infostart … Публикацию, к сожалению, уже не смог найти.
Обработку обфускации модуля формы/программного модуля 1С «Шифрование24» можно скачать ЗДЕСЬ
«+» простота реализации, отсутствие внешних компонент
«-» низкое быстродействие
Всеволод Корсаков,
разработчик 1С компании ООО “Кодерлайн”
Описание системы защиты конфигураций 1С
Защита конфигурации 1С основана на обфускации исходных текстов модулей, а также байт-кода 1С.
Обфускация — запутывание кода. Переименование переменных, процедур и функций в бессмысленные имена. Удаление форматирования, регистра символов и комментариев. Разрушение типовых конструкций, запутывание контроля потока и использование дополнительных методов защиты для защиты логики модуля. Обфускация байт-кода 1C для защиты от декомпиляции известными и новыми декомпиляторами.
В своем арсенале обфускатор «Нетленка 1С: Защита конфигураций и обработок» использует следующие методы защиты:
Защитить свою конфигурацию или обработку можно двумя способами
Вы просто копируете текст модуля в окно браузера и нажимаете Защитить. Затем вставляете защищенный модуль обратно в конфигуратор.
Комплект разработчика «Нетленка 1С: Защита конфигураций» поможет защитить файлы конфигурации или внешней обработки целиком.
Мы постарались обеспечить поддержку всех основных объектов конфигурации и учесть все особенности языка 1С.
Вопросы и ответы
Почему обфускация особенно эффективна для защиты разработок на платформе 1С?
В отличие от других языков, 1С это прикладная платформа. Основную ценность в вашей разработке представляет именно логика программы. Любой программист может при желании использовать или изменять ваш код, даже если вы установили пароль на модуль. Поэтому вашу интеллектуальную собственность необходимо защищать.
Использование обфускации может гарантировать следующее:
1. Полностью восстановить код к исходному виду невозможно в принципе, т.к. часть информации теряется безвозвратно.
2. На анализ защищённого кода, требуется в разы больше времени, чем на анализ незащищенного.
Поэтому цель обфускации — сделать так, чтобы проще было заплатить вам, чем тратить время на разбор защищенного кода.
Какие вы даете гарантии, что обфусцированные модули будут работать правильно?
Мы гарантируем, что с помощью нашего сервиса, можно обфусцировать абсолютно любые модули и они будут работать правильно. Для особо сложных модулей, может потребоваться некоторая настройка. На любом тарифе, в техподдержку входит помощь и консультации по настройке.
Если, даже с помощью нашей техподдержки, не удастся заставить правильно работать вашу конфигурацию, мы вернем вам деньги.
Можете ли вы восстановить обратно обфусцированный код или декомпилировать защищенную разработку?
Мы занимаемся только защитой программ. Мы не можем восстановить исходный код, даже если разработка принадлежит вам. Обязательно делайте резервные копии перед защитой. Часть информации теряется при защите безвозвратно. Если вы потеряете исходники, вы никогда не сможете полностью восстановить код, без переписывания его заново.
Для использования программы необходимо активное Интернет-соединение?
Да. Наш инструмент предоставляется как сервис (SaaS).
Необходимо ли Интернет-соединение для работы уже защищенной разработки?
Нет. Программы, защищенные нашим инструментом, могут работать офлайн.
Насколько безопасно защищать модули через Интернет?
Наш сервис работает с 2012 года, и мы серьезно относимся к безопасности данных пользователей. Более 400 разработчиков и организаций доверили нам защищать свои разработки. Сервис использует защищенное SSL соединение и расположен в надежном дата-центре в Германии. Сами файлы обработок и конфигураций обрабатываются на вашем компьютере, а передаются только тексты модулей. Модули защищаются «на лету» и нигде не сохраняются.
Программа-клиент подписывается цифровой подписью разработчика. Сертификат получен в удостоверяющем центре Comodo. Процесс получения достаточно сложный и долгий, включает нотариальное заверение документов и проверку разработчика сотрудниками Comodo. Это гарантирует подлинность файлов и исключает возможность модификации программы сторонними лицами.
Проверить подпись можно в свойствах файла, на вкладке «Цифровые подписи».
Также, в договоре c организациями, есть пункт с NDA.
Необходимо ли подключать какие-то внешние компоненты или как-то специально подготавливать код для защиты?
Защищенный код не использует никаких внешних компонент и библиотек. Специально подготавливать или изменять код в большинстве случаев не требуется. Может потребоваться вставка специальных комментариев-директив, если в вашей разработке используются операторы Выполнить, а также еще в ряде случаев. Сервис даст необходимые рекомендации в процессе защиты. Использование таких директив описано в Помощи.
Какие преимущества у системы SaaS подписки перед «коробочной версией»?
Первое преимущество — это цена. Вы получаете продукт на тот период, когда он вам нужен. Если необходимо, продлеваете срок использования.
Второе важное преимущество — доступ к самой последней версии продукта. Офлайн программы обычно имеют ограниченный период техподдержки и получения обновлений. После этого периода необходимо покупать новую версию продукта, если он устаревает или становится несовместим с новыми версиями платформ, программ или операционных систем.
Нужно ли после защиты устанавливать пароль на модули или исключать тексты модулей из поставки?
Да, это делать желательно, особенно для демо-версий. Вместе с обфускацией это значительно повышает стойкость защиты.
Вы можете дополнительно защитить файл, с установленным паролем, используя нашу функцию «Защита байт-кода от декомпиляции»
Можно ли защитить модули, в которых есть директивы или инструкции препроцессора?
Да.
Можно ли защитить модули форм вашим инструментом?
Да. Можно защитить модули обычных и управляемых форм.
Можно ли защитить модули расширений конфигурации?
Да, можно. Обфускатор поддерживает префиксы и аннотации расширений. Файлы cfe защищены контрольной суммой от изменений, поэтому невозможно обфусцировать его целиком. Для защиты можно воспользоваться обходными путями. Например, защитить модуль в браузере и вставить его обратно в конфигуратор. Другой вариант: перетащить модули мышкой в расширение из защищенной конфигурации или поставки и переименовать.
Нетленка 1С — защита конфигураций
11 октября 2019 14:12
Защита
Обфускатор
Защита конфигураций и обработок 1С 8. 3
Надежная защита ваших разработок
Защита конфигурации 1С основана на обфускации или запутывании текстов модулей и работает без
использования внешних компонент.
Применение различных методов защиты значительно затрудняет изучение и изменение вашего кода.
Защита конфигурации в один клик
Просто скопируйте текст модуля в окно браузера и нажмите одну кнопку. Все, модуль защищен!
Большинство модулей не требуют особой подготовки к защите. Система всегда подскажет, что нужно
сделать или поможет оперативная техподдержка.
Поддерживает защиту любых конфигураций, обработок и расширений 1С 8.x
Защита конфигураций и расширений 1С 8.2 и 8.3. Защита демоверсий. Поддержка директив и инструкций препроцессора.
Защита всех основных объектов конфигурации. Можно защитить даже модули обычных и управляемых форм!
- Поддержка 1С 8.2 и 8.3
- Защита конфигураций, внешних обработок и отчетов
- Защита модулей расширений
- Поддержка директив и инструкций
- Защита модулей обычных и управляемых форм
- Пакетный режим
- Защита байт-кода 1С
- Защита демоверсий
Профессиональные возможности и защита от декомпиляции
«Нетленка 1С: Защита конфигурации» SDK поможет вам автоматически защитить файл конфигурации, внешней
обработки или отчета.
Автоматизируйте процесс защиты в режиме командной строки.
Защитите байт-код 1С с помощью функции защиты от декомпиляции.
Сравнение тарифов
Для дополнительной информации наведите курсор на нужную опцию
тарифа
Старт | Проф | Максимальный |
---|---|---|
|
Код модуля разбивается на последовательность инструкций, которые затем выполняются через стек, по аналогии с исполняемым байт-кодом. Это дополнительно усложняет разбор обфусцированных модулей. Если задать пароль на такой модуль или исключить его из поставки, то это существенно затрудняет процесс декомпиляции»> Дополнительная защита
|
«>Удаление текстов закрытых модулей
|
Товары
|
|
|
Комментарии
Защита и лицензирование 1С
Начнем с того, что защита и лицензирование программного обеспечения – разные понятия. Экономические потери производителей программных продуктов от действий «пиратов» вызвали необходимость разработки и применения мер, препятствующих теневому обороту ПО. Эти меры условно можно поделить на законодательные (лоббирование законов, регламентирующих ответственность за несанкционированное использование и распространение ПО), организационные (установление контроля над пользователями путём регистрации их персональных данных, персонального режима обновления версий продукта и т.п.) и технические (использование программно-технических средств, препятствующих несанкционированному использованию и/или копированию программных продуктов).
В силу того, что лоббирование законов возможно лишь для крупных компаний или объединений производителей ПО, а организационные меры требуют значительных затрат на реорганизацию торговой инфраструктуры и могут привести к переходу части клиентов на продукты конкурентов, не применяющих таких мер, самыми популярными стали технические меры противодействия теневому обороту ПО.
Таким образом, получили широкое распространение системы программной защиты ПО, основной целью которых является техническое противодействие несанкционированному использованию и распространению программных продуктов. Такое положение дел сохранилось, в целом, и до настоящего времени, не смотря на то, что производителями ПО достаточно активно используются законодательные и организационные меры защиты своих программных продуктов.
Основная задача, решаемая Системами Защиты Программного обеспечения (СЗПО) состоит в защите программного обеспечения от нелегального использования.
При этом защитить программу от копирования невозможно: любой файл, который может быть прочитан, будет скопирован — для запуска приложения операционная система должна прочитать файл и загрузить его в память компьютера. В этом разрезе словосочетание «защита от копирования» в отношении программного обеспечения не имеет смысла.
Кому и зачем это нужно
Свыше тридцати лет существует «экономическая криминалистика», использующая методы экономического анализа для исследования различных типов нарушений закона. В рамках данной дисциплины преступник рассматривается как «рационально мыслящий экономический агент», принимающий решение о совершении преступления или отказе от него, руководствуясь экономической оценкой затрат на совершение преступления, выгоды от его совершения и риска быть пойманным органами правопорядка. В то время как применимость анализа «экономического поведения» сразу ко всем видам правонарушений может подвергаться сомнениям, экономическая сущность «компьютерного пиратства» говорит в пользу перспективности подобного подхода к изучению причин и выработке мер противодействия нарушениям на рынке ПО.
Разработка системы защиты
Процесс проектирования и разработки СЗ ПО можно логически разбить на следующие этапы:
-
Выявление целей и задач, стоящих перед производителем ПО. -
Определение требуемого уровня защиты. -
Определение стратегии защиты программного продукта (меры и средства). -
Выбор оптимальной СЗПО (внешняя, встраиваемая, комбинированная, парольная, с электронным ключом, и т.п.). -
Оценка общих планируемых затрат на разработку и внедрение СЗПО с учётом влияния защиты на потребительские свойства ПО. -
Оценка планируемого снижения потерь от «пиратства». -
Принятие решения о целесообразности применения проектируемой СЗПО. -
Доработка спецификаций СЗПО с возвратом к п.7, либо приобретение сторонней разработки, удовлетворяющей спецификации, с переходом к п.12. -
Разработка и оптимизация алгоритма СЗПО. -
Выбор (с обоснованием) языка программирования для реализации СЗПО. -
Программная реализация СЗПО и её тестирование. -
Применение СЗПО к продукту и проверка влияния защиты на показатели функциональности защищаемого ПО. В случае использования сторонней разработки – переход к п.17. -
Доработка СЗПО с возвратом к п.12. -
Тестирование фактического уровня защиты, обеспечиваемого СЗПО. -
Доработка СЗПО с возвратом к п.12. -
Документирование СЗПО -
Сопровождение СЗПО.
Какие методы защиты конфигураций 1С есть на данный момент
Защита посредством штатных средств, т.е. поставки без исходных текстов. Эта защита являлась действенной до тех пор, пока не понадобилось изменить защищенный таким образом код.
Портирование кода на другие языки. Надежность защиты в этом случае зависит от возможности восстановления исходных текстов (или логики) и возможности модификации для удаления защиты. С учетом того, что восстановление текста на С++ задача нестандартная, защиту можно считать надежной.
Однако такой же не задачей является портирование кода с 1С на С++. Поэтому данный вариант применяется очень редко и тиражных решений, использующих его для защиты конфигураций, нет (если не считать таким вариантом СЗК).
Вынесение кода внешних обработок (т.е. модулей, которые не являются частью конфигурации и хранятся в отдельных файлах) в какое-либо зашифрованное хранилище. В этом случае создание объекта такого модуля возможно только при использовании внешней компоненты, которая проверяет возможность работы с таким модулем. Примером такой системы защиты могут служить комплексы СЗК, СЛК, а также система «WiseAdvice: Защита Конфигураций». Однако с учетом логики работы 1С с внешними обработками (например, 1С хочет расшифрованный файл на диске, как минимум, на время создания объекта и т.д.), есть возможность получить эту обработку как файл, далее – декомпиляция кода (как правило, защищаемые обработки поставляются без исходного текста).
Рис.1 Методы защиты конфигураций 1С
Исполнение зашифрованных исходных текстов 1С во внешней компоненте. Для этого могут использоваться как собственные компиляторы/интерпретаторы (например, в СЗК), так и особенности 1С (возможность, доступная только при особой интерпретации документации 1С, используется в «WiseAdvice: Защита Конфигураций» в.1 и в КЗ).
Надежность данного метода можно считать высокой, т.к. исполняемый текст появляется только в памяти и только на время выполнения этого текста. Недостатком является сложность отладки такого кода и необходимость обработки конфигурации перед созданием поставки. Таким образом, этот метод стоит использовать для защиты текстов запросов и алгоритмов построения текстов, т.е. объемных, но не сложных по структуре алгоритмов, для создания которых наличие отладчика не обязательно. Хотя «надежность данного метода можно считать высокой», это не совсем так. Точнее это зависит от его реализации. Исследование методики, примененной в СЗК, затруднено отсутствием реальных примеров использования. Реализация в КЗ недостаточно эффективна. Реализация ИЗК 1 считалась более удачной, но со временем и в ней были обнаружены недостатки.
Прочие мало применяемые на практике механизмы – например, сохранение и выполнение зашифрованных текстов запросов (например это используется в КЗ). Однако, с учетом того, что подавляющее большинство запросов, которые имеет смысл защищать, строятся в результате работы какого-либо алгоритма, данный способ применим мало. Также, в зависимости от реализации, этот способ может быть надежным, а может быть только видимостью защиты (как в КЗ). Есть и другие варианты – обфускация текстов и пр.
Обфускация программного кода скомпилированного модуля 1С (т.е. изменение кода, таким образом, чтобы 1С могла работать с этим кодом, а декомпилятор не смог бы восстановить исходный текст).
Рис.2 Программный код
Этот метод на данный момент мало распространен, хотя защита в этом случае достаточно высока, по крайней мере до тех пор, пока не будут созданы декомпиляторы, которые умеют работать с таким программным кодом. С другой стороны, широкое использование данного метода приведет к появлению инструментов, которые будут позволять изменять непосредственно программный код для достижения требуемой задачи (например, отвязка от ключа или изменение функционала). На сегодня этот метод защиты максимально трудоемок для взлома, поэтому считается наиболее надежным.
На момент написания статьи, существует единственное тиражное решение использующее эту методику: «WiseAdvice: Защита Конфигураций, ред. 2», и не существует инструментов, позволяющих получить исходный текст защищенного модуля.
Принцип обфускации кода для защиты от декомпиляции основан на том, что при компиляции конструкции языка 1С транслируются в определенные последовательности команд исполняющей машины. Конкретные конструкции в конкретные последовательности. На этом строится алгоритм декомпиляции. Если заменить эти последовательности команд на идентичные по логике, но отличные по составу, декомпилятор не сможет распознать исходную конструкцию. Если новая последовательность будет к тому же случайной по составу команд (но не по общей логике), то задача декомпиляции еще усложнится.
Защита конфигурации «1С:Підприємство»: защита кода «1С:Підприємство»
Содержание:
1. Способы защиты «1С:Підприємство»
2. Хранилище конфигурации и база пользователя – установка пароля «1С:Підприємство»
3. Публикация базы «1С:Підприємство» на веб сервере
4. Пароль на модуль «1С:Підприємство»
5. Нестандартные способы защиты: обфускация кода «1С:Підприємство», установка внешней компоненты, решения сторонних разработчиков
1. Способы защиты «1С:Підприємство»
Открытость кода в «1С:Підприємство» – это одно из важнейших ее достоинств. Однако бывают ситуации, когда потенциальный заказчик хочет опробовать сначала продукт, а уже потом принять решение о его покупке. Какой выход? Предоставить ему демо-версию продукта. Однако недобросовестный человек может просто присвоить ваш труд, не заплатив за него ни копейки. А наняв студента-программиста, попробовать снять с «1С:Підприємство» ограничение пользователей, установленные в демо-версии. Как этого избежать? Использовать механизмы защиты «1С:Підприємство».
· Разрешить работу только определенному заказчику, купившему наш продукт.
· Ограничить количество одновременно работающих пользователей в базе.
· Скрыть «уникальные» алгоритмы или механизмы от потребителей или конкурентов.
· Закрыть модули от заказчика до оплаты им разработанного модуля (конфигурации, подсистемы).
· Скрыть методы обмена с каким-то сервисом (веб-сервисом, сайтом и т.п.).
· Не допустить утечки разрабатываемой совместно конфигурациинедобросовестными программистами-фрилансерами.
Рассмотрим способы защиты, которые «1С:Підприємство» предоставляет стандартно:
2. 1С:Підприємство хранилище конфигурации и база пользователя – установка пароля «1С:Підприємство»
Здесь мы просто ограничиваем пользователю доступ к содержимому конфигурации путем настройки соответствующих прав и установкой пароля на пользователя с административными правами.
Не знаю, как сейчас обстоит дело со стойкостью данной защиты и сложно ли взломать пароль пользователя «1С:Підприємство» 8.3, но в ранних версиях «1С:Підприємство» 8, помню, такая защита базы легко ломалась, если «взломщик» имел к ней физический доступ.
3. Публикация базы «1С:Підприємство» на веб сервере
В режиме веб-клиента невозможен запуск «Конфигуратора», а, следовательно, у пользователя и нет возможности получить конфигурацию через браузер или веб-сервер, если не используется режим обновления через веб. Однако этот способ подходит не для всех режимов работы. Например, для конфигураций на обычных формах работа в таком режиме невозможна.
4. Пароль на модуль «1С:Підприємство»
Устанавливается в «Конфигураторе». Выбираем пункт «Текст», опцию Установить пароль «1С:Підприємство».
Таким образом, можно обезопасить исходный код: он будет находиться в скомпилированном виде.
Как сделать:
· Открыть конфигуратор.
· Выбрать в «Конфигурации» пункт «Поставка конфигурации», далее: «Настройка поставки». Отметить — текст каких модулей необходимо исключить из поставки. Подтвердить опцию «Файл поставки может использоваться для обновления».
· В пункте «Поставка конфигурации» — «Комплект поставки» создать файл конфигурации CF.
В клиентской версии загружается CF файл, в котором нужные модули защищены от просмотра. Минус такого решения в том, что настройки поставки нельзя будет изменить через сравнение конфигураций, придется полностью загружать CF-файл.
Все эти методы способствуют преобразованию кода модуля в байт-код, который, при желании можно декомпилировать. Некоторые инструменты для этого уже есть в свободном доступе. В результате их работы получаются тексты, в которых отсутствуют комментарии, изначальное форматирование, но этого часто достаточно, чтобы понять алгоритм и логику закрытого модуля.
Стоит учитывать, что все перечисленные методы не позволяют спрятать код модуля формы, можно лишь спрятать код модуля объекта.
5. Нестандартные способы защиты: обфускация кода «1С:Підприємство», установка внешней компоненты, решения сторонних разработчиков
1. Обфускация кода
При помощи этого способа вы можете привести код в нечитаемый вид. Добиться результата можно как при помощи специальных обработок, так и при помощи специальных сервисов.
Преимуществами данного способа является простота и возможность зашифровать любой код.
Недостатки: низкая степень защиты. На любой обфускатор, понимая механизм его работы, можно создать деобфускатор.
2. Использование внешних компонент
Этот метод стоит использовать, если ценность представляет сам код, а не коды «1С:Підприємство» конфигураций. К его преимуществам следует отнести высокую надежность скрытия кода: восстановить «1С:Підприємство» код из скомпилированной DLL-ки, написанной на другом языке программирования — задача не из легких. К недостаткам — необходимость переписать код «1С:Підприємство» на другом языке (что, используя другую объектную модель, может быть непростой задачей), трудности с отладкой, зависимость от платформы, необходимость в регистрации библиотеки.
3. Решения сторонних разработчиков
Существуют компании, которые профессионально занимаются вопросом защиты интеллектуальной собственности разработчиков на платформе 1С:Підприємство. Как правило, они выносят часть кода в отдельную обработку, ее помещают после этого в какое-либо зашифрованное хранилище. Специальная внешняя компонента открывает доступ к зашифрованным данным.
Используя такой подход, вы добиваетесь высокой надежности защиты кода, также избавляете себя от необходимости переводить код «1С:Підприємство» в код другого языка программирования.
Правда, остается необходимость выносить код в «1С:Підприємство» дополнительные внешние обработки и другие сложности, возникающие при использовании таких систем.
Абсолютно надежного и единого способа защитить свою конфигурацию не существует. В то же время для защиты частей кода от просмотра/копирования есть немало надежных решений. Если себестоимость взлома кода превышает себестоимость покупки — взлом пароля «1С:Підприємство» невыгоден. Комбинируя указанные способы, мы можем увеличить стойкость модулей к взлому, следовательно, и уменьшить шансы недобросовестного заказчика на кражу нашего интеллектуального труда.
Сергей Тимофеев,
разработчик компании “Кодерлайн”
Что такое обфускация — простыми словами о теме обфускации кода
Обфускация [кода] — преднамеренное сокрытие программного кода путём его запутывания с сохранением работоспособности [продукта].
Процедура выполняется вручную (долго, сложно привести в исходный вид — то есть «деобфусцировать») или автоматически (быстро, выполняется специальными программами «обфускаторами» с функцией «деобфускации»). Задачу выполняет программист с той целью, чтобы никакой другой программист не смог прочитать программный код и расшифровать алгоритмы обфускатора.
Для чего нужен обфусцированный код
Прежде всего, обфускация кода делается для безопасности программного продукта. Разработчик может преследовать и коммерческие цели (конкурентная защита от подделки или сокрытие значений/логики). В результате получается сжатый (удалены неиспользуемые классы, атрибуты, методы) или оптимизированный (проверены и переписаны операторы) софт. Обфусцированный код применяется, например, на Android и Java (пример оптимизатора: R8 для Android; ProGuard для Java и Android).
Что такое обфускация кода с точки зрения эффективного управления разработкой
При управлении разработкой оценивается целесообразность и эффективность обфускации. Другими словами, на что вам, как руководителю, следует обращать внимание при выборе исполнителя или постановке такой задачи в принципе?
-
Скрытность
Оцените степень сокрытия алгоритмов управления программой. Целесообразно ли проведение control-flow обфускации (применяется, например в Apple FairPlay для библиотек iTunes или iOS), когда отслеживается обновление управляющей переменной и заменяется переход к узлу диспетчера переходами к следующему блоку, что соответствует новому значению управляющей переменной.
-
Стоимость
Рентабельность метода обфускации. Необходимо оценить, насколько оправданы затраты, чтобы выбранный метод можно было широко применять в нескольких аналогичных приложениях.
-
Защита
В какой степени преобразованный код нечитаем в сравнении с исходным. Метрики сложности программного обеспечения определяют различные меры защиты. Например, количество содержащихся в нем предикатов, глубина иерархии, уровни вложенности и так далее. Цель хорошего проектирования программного обеспечения — минимизировать сложность на основе этих параметров, когда как цель обфускации — максимально усложнить.
-
Стабильность
Определяет, насколько хорошо преобразованный код может противостоять автоматическим атакам деобфускации. Наивысшая степень устойчивости — одностороннее преобразование, которое не может быть отменено деобфускатором. Например, обфускация удаляет такую информацию, как форматирование исходного кода.
Если программист или компания разработчиков выпускают ценное программное обеспечение (например, приложение для iOS или Android) с закрытым исходным кодом, то обфускация должна быть частью процесса разработки. Это усложняет взлом, анализ и отладку кода извне.
Добыть полезную информацию, коммерческую тайну или пользовательские учётные данные будет значительно сложнее, чем если бы разработчик не проводил процедуру обфускации.
С другой стороны, злоумышленники используют обфускацию в целях сокрытия или интеграции вредоносного кода в безопасных на первый взгляд программных продуктах. Задача антивирусов заблаговременно обнаруживать такие методы в запускаемых программах.
Компания ZEL-Услуги
Обратитесь в компанию ИТ-аутсорсинга для дальнейшей экспертной поддержки и консультации по этой теме и любым другим техническим вопросам.
Как поставить пароль на внешнюю обработку 1с
Наверняка каждый разработчик заботится о том, чтобы его программы были защищены от нелегального распространения. Особенно если эта разработка – коммерческий, тиражируемый продукт.
Создатели системы 1С: Предприятие 8 позаботились о защите кода. К сожалению, пароль на доступ можно установить только на модули объектов, общие модули, модули обработок и отчетов. В том числе и внешних. Но и этого немало, так как можно значимые процедуры и функции разместить в модуле и потом к ним обращаться.
В данной статье я хочу разобраться, как установить защиту и снять её, если Вы забыли пароль.
Установка защиты на модуль 1C
Возьмем любой модуль любого объекта. Я взял навскидку первый же документ – «Авансовый отчет». Если поставить курсор на текст кода модуля, в главном меню появится пункт «Текст». В этом пункте есть подпункт «Установить пароль».
Программа меня тут же предупредила о том, что нельзя защитить модуль, имеющий директивы препроцессора:
Напоминаем, директивы препроцессора — это такие конструкции, как #Если, #Тогда, #Конец и т.п.
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания — попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
Что же, посмотрим, во что это выльется. Устанавливаем пароль.
После установки пароля при попытке закрыть модуль выходит сообщение об ошибке:
Игнорируем ошибку и сохраняем конфигурацию. Интересно, откроется ли документ. Запускаем программу в режиме «Предприятия».
Все оказалось хуже, чем я предполагал. Документ полностью не рабочий. Провести его не удалось, постоянно программа ругается на какие-то незаполненные поля, которых ни в шапке формы, ни в таблице нет.
Попробовал для чистоты эксперимента на других документах, тот же результат. Например, в приходной накладной становится недоступным поле «Договор».
Вывод однозначный: не все модули можно защитить. Однако ничего Вам не мешает вынести функции и процедуры с директивами препроцессора в отдельный модуль.
Пробуем защитить общий модуль. Случайным выбором пробую защитить 10 общих модулей. Примерно половина защитились без всяких замечаний. При попытке защитить вторую половину просто вышло сообщение, что модуль нельзя защитить.
Осталось проверить обработки. Возьмем для интереса внешнюю. Защита прошла без проблем.
Проверка надежности защиты с помощью декомилятора модулей 1С
Посмотрим теперь, удастся ли обойти защиту. Покопавшись немного в интернете, я наткнулся на «декомпилятор модулей» (скачать можно по ссылке), который якобы способен снять пароль. Декомпилятор представляет собой внешнюю обработку на обычных формах. Хорошо, пробуем. Начнем все с той же внешней обработки, на модуль которой я установил пароль.
Запускаем 1С в режиме предприятия и открываем обработку с декомпилятором через «Файл» – «Открыть». Замечу, что обработка, которую я нашел, написана на обычных формах, и запускать ее нужно под толстым клиентом:
Нажимаем «Декомпилировать» и получаем сообщение, что все прошло успешно:
Пробуем открыть модуль в конфигураторе, и он прекрасно открывается.
На форумах пишут, что иногда нужно запускать 1С от имени администратора, если выходит ошибка.
Теперь осталось проверить, как декомпилятор справится с общими модулями. Сохраняем конфигурацию в файл.
Выбираем в обработке:
После нескольких минут получаем сообщение:
Загружаем конфигурацию из файла и проверяем защиту. Защита полностью снята.
Тестирование проводилось на платформе 8.3.9.1818, конфигурация «Бухгалтерия предприятия 3.0.44.188».
Самое интересное, что модуль данного «декомпилятора» тоже защищен. Но обработка не позволяет снять защиту с самой себя.
Данный материал предоставлен только в ознакомительных целях с целью обзора механизма защиты платформы 1С. Запрещено использовать данный материал для получения доступа к защищенным авторским правом разработкам.
К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.
Компания, в которой я работаю, разрабатывает (в том числе и я) свою собственную отраслевую конфигурацию (автоматизация швейного и ткацкого производства). На сегодняшний день конфигурация находится в стадии бурного развития — внедрили пяти клиентам, еще три на подходе. У клиентов масса пожеланий и мы их, по мере возможностей, реализовываем, и вообще готовим нашу конфигурацию к официальному представлению и размещению на сайте 1С.
И с недавних пор, появилась необходимость защищать нашу конфигурацию от воровства (различных швейных предприятий в Ивановской области немерено), мы провели небольшое исследование о методах защиты кода в 1С и результатами я спешу поделиться.
- Штатные средства
- Обфускация кода 1С
- Использование внешних компонент
- Решения сторонних разработчиков
Штатные средства
Начнем со штатных средств защиты своего кода от копирования. Это можно сделать двумя способами.
Установить пароль на текст модуля.
Меню «Текст» -> «Установить пароль…».
Исключить текст модуля из поставки конфигурации.
Меню «Конфигурация» -> «Поставка конфигурации» -> «Настройка поставки…», нужно выбрать модули, которые требуется скрыть и не забыть включить пункт «Файл поставки может использоваться для обновления».
После этого нужно зайти в меню «Конфигурация» -> «Поставка конфигурации» -> «Комплект поставки…» и сформировать CF-файл со скрытыми от просмотра текстами модулей.
При использовании этих методов код модуля превращается в байт-код, который можно декомпилировать (если захотеть) и некоторые инструменты в помощь начинающим есть в свободном доступе (правда они, насколько я знаю, предоставляют только базовые возможности).
Кроме этого, штатными средствами не удастся спрятать код модуля формы (хотя код модуля объекта спрятать можно).
Обфускация кода 1С
Обфускация — приведение кода в нечитаемый вид. Это можно сделать как при помощи специальных обработок (в недавнем обзоре интересного есть подобный пример), так и при помощи специальных сервисов (Нетленка 1С, например).
Также этот обфускацию можно использовать совместно со штатными средствами — обфускации подвергается байт-код скомпилированных модулей 1С.
Плюсами данного способа является простота (вставил код — получил абракадабру) и возможно зашифровать любой код.
А к минусам относится низка степень защиты — на любой обфускатор можно создать деобфускатор.
Использование внешних компонент
Неплохой метод для случаев, когда ценность представляет сам код (какой-либо уникальный алгоритм, например), а не вся конфигурация. Так как вынесение проверки легальности запуска конфигурации во внешнюю компоненту поможет не более чем установка пароля на модуль.
К плюсам данного метода следует отнести высокую надежность скрытия кода: восстановить 1С код из скомпилированной DLL-ки написанной на C++, например, — это та еще задача.
К минусам же, относиться необходимость переписать код 1С на другом языке (что тоже, зачастую, задача нетривиальная) и большие трудности с отладкой.
Решения сторонних разработчиков
Есть компании которые профессионально занимаются вопросом защиты интелектуальной собственности разработчиков на 1С. Примером можно привести компанию WiseAdvice.
Суть их метода сводится к вынесению части кода в отдельную обработку, которая храниться в каком-либо зашифрованном хранилище. Доступ к это части кода осуществляется при помощи специальной внешней компоненты, которая и определяет доступ к зашифрованной обработке.
К плюсам такого подхода относится высока надежность защиты кода (во многих подобных решениях код в расшифрованном виде появляется только в оперативной памяти и только в момент исполнения этого самого кода) и отсутствие необходимости переводить код 1С в код какого-либо другого языка программирования.
А к минусам стоит отнести саму необходимость выносить код во внешние обработки и некоторые другие сложности связанные с использованием подобных систем.
Делая вывод, можно сказать, что нет абсолютно надежного способа защитить свою конфигурацию от нежелательного запуска (поправьте, если не так). В то же время для защиты частей кода от копирования есть немало надежных решений.
Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
8.1 Пароль на модель внешней обработки
Всем доброго времени суток! Такая проблема. Была УТ-шка старая и бородатая. Я ее обновил до.
1с 7.7 Вызов процедуры внешней обработки из другой внешней обработки
Здравствуйте всем! Вопрос такой: Есть внешняя обработка Обработка1. Обработка1 запускается через.
Как снять пароль?
Всем привет, не подскажете, как можно снять пароль с windows xp, войти в винду не могу, в.
Как снять пароль администратора
как снять пароль с администратора?
Есть в ТиС, Комплексной. В любом (вроде бы) журнале, есть внизу кнопка «Реестр». Вот оттуда можно выдрать.
За 8 не пробывал, с 77 пароль с внешних обработок снимается легко.
1. Создаешь свою вн обработку без пароля.
2. Берешь редактор составных фойлов, например, FAR с плагом DocFile Brouser
3. Через него открываешь свою созданную обработку и копируешь с ветки Container.Profile значение для UUID
4. Через него открываешь запароленную обработку и заменяешь там знаечение UUID на скопированное.
5. Сохраняешь.
6. Открывешь бывшую обработку в конфигураторе и радуешься.
ЗЫ.
Что хотел сказать еще. Просмотрел на эту тему не мало форумов. Везде умники, которые кричат (я никого не хочу оскорбить, только мое субъективное мнение) типа авторские права и т.д. Я вот, например, свои работы не защищаю никогда. Я и так с заказчиков возьму денег столько, сколько мне надо. А коль вы так кичитесь за свои, например, внешние обработки, защищайте не стандартными средствами 1с, а своими. Через внешнюю компоненту, например. Хотя это гемор и внешнюю компоненту всегда дизасемблировать можно.
И еще. Я в инете ле 15. Полностью согласен с народом, что информация в инете должна быть свободной. Изначально так и было. А сейчас. Ну на каждый х с резьбой найдется жопа с лабиринтом.
ЗЗЫ. Коль народ хочет защитить свои в данном конкретном случае обработки, или защищайте по-человечески (см выше) или лицензируйте.
С уважением ко всем, holod.
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.
Как снять пароль с модуля?
можно ли как-то снять пароль с запароленного модуля а).объекта конфигурации б).внешнего.
Как снять пароль с ноутбука?
Здорова ребя . Ноут друга с такой проблемой дал мне . При включении просит пароль enter hdd1.
Как снять пароль на ноутбуке.
Дано — ноутбук самсунг модель R20 Plus, задача — ребенок поставил пароль и забыл его! итого -.
Hitachi hts как снять пароль
поступил диск от плоттера, запароленый, инфа важна — прошивка плоттера. Как справиться с паролем.
Как снять или удалить пароль
купил мак бук бу хотел переустановить систему но не смог этого сделать так как стоит пароль.
Подскажите пожалуйста как поставить пароль на конфигурацию 1с 8.0.
Не могу найти в настройках.
А может пароль совсем не ставится?
а мне вот кажется, что и не зачем на модуль формы пароль ставить: когда процедуры находятся в модуле обработки — это намного удобнее, ведь никогда не знаешь, когда тебе понадобится обратиться к методам из этого модуля извне. Поэтому лучше сразу все что можно туда выкинуть, а там и запаролить можно 🙂
З.Ы. Встречный вопрос: а уже придумали способ ломания паролей:
1. на модуль обработки;
2. на конфигурацию 8.0;
3. на общий модуль?
Семь лучших методов обфускации исходного кода для защиты кода — Intertrust Technologies
Методы защиты от обфускации исходного кода — профессиональные инструменты
С каждым днем увеличивается количество и диапазон методологий и вредоносных программ, используемых хакерами для получения несанкционированного доступа к устройствам и личной информации. К счастью, компании, составляющие онлайн-мир, и поддерживающие их профессионалы в области безопасности имеют свой собственный арсенал инструментов, чтобы дать отпор.
Обфускация исходного кода — одно из самых важных средств, доступных разработчикам и командам безопасности в борьбе с пиратством приложений, проникновением в устройства, внедрением кода и другими вредоносными действиями. Знание того, как скрыть код, является одним из основных способов защиты от хакеров, задерживая или не позволяя им получить четкое изображение кода приложения. Инструменты обфускации исходного кода используют различные методы, чтобы сделать код запутанным и нечитаемым. Наличие четкой стратегии обфускации кода с использованием методов перекрытия помогает снизить риск от декомпиляторов и хакеров, намеревающихся перепроектировать программу.
Чтобы лучше понять, как работает обфускация в программировании, вот некоторые из наиболее распространенных методов защиты от обфускации, используемых разработчиками по всему миру.
Как работает обфускация исходного кода
1. Преобразование данных
Важным элементом обфускации исходного кода является преобразование данных, обрабатываемых программой, в другую форму, которая оказывает минимальное влияние на производительность кода, но усложняет хакерам его взлом или обратный инжиниринг.
Примеры того, как таким образом запутать код, включают использование двоичной формы чисел для усложнения исходного кода, изменение формы, в которой хранятся данные, или замену значения выражением.
2. Обфускация потока кода
При изменении потока управления кода изменяется ориентация кода. Это означает, что, хотя конечные результаты одинаковы, требуется гораздо больше времени, чтобы понять, почему код принимает определенное направление или куда он идет.
Обфускация потока управления в программировании может быть выполнена путем изменения порядка выполнения операторов программы, изменения графа управления путем вставки произвольных инструкций перехода и преобразования древовидных условных конструкций в плоские операторы переключения, как показано на следующей диаграмме.
3. Обфускация адреса
Этот метод, используемый некоторыми инструментами защиты от обфускации исходного кода, изменяет адреса программных данных и кода, чтобы создать непредсказуемость и затруднить использование.При создании приложения алгоритм обфускации рандомизирует абсолютные местоположения некоторого кода и данных в памяти, а также относительные расстояния между различными элементами данных. Это не только снижает вероятность успешных атак, но также означает, что даже если хакер добьется успеха в одном приложении или устройстве, он не сможет воспроизвести его на других, что снижает преимущества обратного проектирования программы.
4. Регулярное обновление скрытого кода
Этот метод проактивно предотвращает атаки, регулярно выпуская обновления обфусцированного программного обеспечения, препятствуя попыткам хакеров взломать систему.Время от времени заменяя существующее программное обеспечение новыми обфусцированными экземплярами, злоумышленник вынужден отказаться от существующего анализа. В конце концов, усилия по преодолению защиты от обфускации превышают полученную ценность.
5. Вызов сообщений Objective-C и обфускация метаданных
Инструменты обфускации исходного кода, такие как решение Intertrust по защите приложений, запутывают код Objective-C двумя способами. Во-первых, они скрывают вызовы текстовых сообщений, содержащиеся в исходном коде, чтобы гарантировать, что их будет сложно читать и редактировать.Во-вторых, они шифруют некоторые метаданные Objective-C, чтобы скрыть конфиденциальную информацию от инструментов статического анализа, такую как названия категорий, классов, методов, протоколов, свойства классов и переменные экземпляра, а также аргументы методов и их типы. Зашифрованные данные расшифровываются только во время выполнения, когда загружается запутанное приложение.
6. Обфускация инструкций кода сборки
Преобразование и изменение кода сборки могут затруднить обратное проектирование. Один из таких методов — использовать перекрывающиеся инструкции сборки (также известные как метод «перехода в середине»), которые скрывают код в другом коде, заставляя дизассемблер выдавать неверный результат. Ассемблерный код также может быть усилен против проникновения за счет включения ненужных управляющих операторов и мусорного кода.
7. Обфускация отладочной информации
Отладочная информация может использоваться для обратного проектирования программы с целью обнаружения ее исходного кода путем декомпиляции и перекомпиляции кода программы.Вот почему так важно блокировать несанкционированный доступ и отладку. Инструменты обфускации исходного кода достигают этого, изменяя номера строк и имена файлов в отладочных данных или полностью удаляя отладочную информацию.
Обфускация исходного кода при программировании помогает бороться со взломом
Атаки на программное обеспечение, приложения и даже домашние IoT-устройства являются постоянным явлением. Число атак растет по мере того, как все больше нашей личной жизни и ценные данные и информация перемещаются в Интернет. Понимание или умение скрыть код — ключевой элемент нашей защиты от хакеров и других злоумышленников.Для компаний, стремящихся защитить свою интеллектуальную собственность и данные своих клиентов, обфускация исходного кода и эффективные инструменты обфускации исходного кода являются одними из самых мощных средств защиты в их арсенале.
Даже для программного обеспечения с открытым исходным кодом важно поддерживать надежные среды для связи, хранения и передачи данных. Вот почему Intertrust сосредоточил свои ресурсы и опыт на разработке и использовании передовых технологий обфускации исходного кода в своем флагманском решении для обеспечения безопасности приложений whiteCryption.whiteCryption Code Protection и Secure Key Box являются частью общего пакета повышения безопасности приложений, который обеспечивает безопасность важной информации, такой как криптографические ключи, патентованные алгоритмы и пользовательские данные.
Чтобы узнать больше о том, как работает обфускация исходного кода и как мы защищаем ваше программное обеспечение, запланируйте демонстрацию или поговорите с одним из наших экспертов по безопасности.
Введение в обфускацию кода. Часть 1 | автор: DLT Labs
Часть 1
Помните, когда вы в последний раз были в отпуске с семьей? Вы собрали чемоданы нужными вещами и уехали, верно? Я уверен, что вы забрали с собой не все свои вещи.Вы оставили некоторых из них в своей квартире или доме, где бы вы ни жили. Но можете ли вы вспомнить, заперли вы свой дом или нет?
Совершенно верно. Теперь, переходя прямо к делу, почему вы это сделали? Ответ очевиден: не допустить проникновения посторонних в ваше отсутствие и обеспечить безопасность ваших вещей. Итак, для этого у вас могут быть установлены некоторые устройства безопасности, такие как камеры видеонаблюдения, датчики и самые простые замки .
Да, мы!
Для понимания технической темы необязательно знать весь используемый в ней жаргон.Иногда лучший способ — соотнести это с чем-то, что мы наблюдали сами, возможно, несколько раз.
Думайте о коде / исходном коде как о вещах, оставленных у вас дома. Теперь, когда код развертывается через Интернет, вы делаете его общедоступным. Воры могут попытаться украсть ваши вещи, что называется пиратством в контексте кода или программного приложения. Итак, что вы делаете, чтобы предотвратить воровство? Самый простой ответ — , просто заблокируйте его !
Да, вы все правильно прочитали, просто заблокируйте.Но здесь, поскольку программное обеспечение не является физическим товаром, мы не можем заблокировать его так же, как закрываем свой дом. Итак, для этого у нас есть много методов, среди которых мой любимый — Code Obfuscation .
Обфускация кода — это метод защиты вашего кода, чтобы любой посторонний не смог увидеть и понять написанную в нем логику.
Обфускация кода — это метод, при котором исходный код приложения становится трудным для чтения и понимания, поэтому для любой неавторизованной сторонней группы или лица становится практически невозможным его обратное проектирование с помощью любых доступных инструментов.
Мы можем описать обфускацию кода как метод преобразования нашего исходного кода в такую форму, чтобы он давал тот же результат, что и не-запутанный или реальный код, и в то же время он не был бы удобочитаем. .
Грабитель, вторгшийся в ваше место (здесь код), может использовать ваши вещи (логику кода) в личных целях или попытаться использовать их. С технической точки зрения такая практика называется , смягчая ограничения, налагаемые лицензией .
Обфускация — Насколько важно обфускировать код приложения C ++?
Если подумать, существует несколько различных типов обфускации.Начнем с обфускации исходного кода, что является пустой тратой времени; без этого сложно понять! Поэтому давайте вместо этого сосредоточимся на обфускации пакета доставки, на том, как код доставляется пользователю.
Незначительная обфускация
Незначительная обфускация существует, чтобы не позволить случайному пользователю сунуть пальцы и легко сломать вещи. Это не останавливает решительного хакера, но имеет ценность, помогая гарантировать, что то, что вас просят поддержать, — это то, что вы на самом деле сделали.Уровень защиты, необходимый для такого рода вещей, действительно довольно низкий; просто пакет поставки не должен выглядеть читаемым и редактируемым (без специальных инструментов), и этого достаточно.
Минификация Javascript является примером этого, хотя она не продается как таковая. Никто в здравом уме не захочет читать и редактировать минифицированный JS-файл, даже если это технически возможно, если вы достаточно решительны / настойчивы.
Аналогично доставке Java-приложений.Простая упаковка кода в исполняемый файл JAR остановит большинство глупостей, даже если у него есть вся сила вежливого знака «Пожалуйста, держитесь подальше от травы» в городском парке.
Даже при доставке кода C ++ удаления ненужных символов из исполняемого файла будет достаточно, чтобы его можно было квалифицировать как незначительную обфускацию. Ключ в том, что неудобно, читать результат как пользователь, но не проблема выполнить его как компьютер.
Основная обфускация
Основная запутанность не позволяет определенному и знающему пользователю .Это также полностью проигрышная игра; если компьютер может его выполнить, человек может разобрать его и выяснить, что он делает. Самое близкое, что вы могли бы сделать, это заставить программу постоянно расшифровывать себя, превращая то, что она делает в один момент, в совершенно другую вещь, которую она делает в другой раз. Создание такой штуки было бы довольно трудным и все равно не удержало бы действительно хорошего хакера (хотя они действительно были бы очень недовольны вами к концу из-за количества усилий, необходимых для расшифровки всего этого самомодифицирующегося кода).
Гораздо лучше подумать о других решениях. Например, вы можете сохранить «жемчужину короны» кода на серверах, которые вы контролируете, и разрешить только служебные вызовы к нему, сделав клиента по существу бесплатной раздачей, которая является интерфейсом для ценных битов. Или вы можете пойти по более договорному / юридическому пути и передавать исполняемые файлы только организациям, которые формально соглашаются не копаться в вашем коде и не компенсировать вам, если они это сделают (так что это будет своего рода NDA). Цель состоит в том, чтобы создать сильный стимул для хакера не взламывать, а для пользователей — держать код подальше от хакеров, не связанных соглашением.
Но вы не должны предполагать, что ваш код никогда не будет взломан. С помощью виртуализации можно исследовать и отслеживать любое состояние выполнения программы, и все, что пытается его преодолеть (например, отслеживание часов до внешнего источника времени), с гораздо большей вероятностью вызовет проблемы для законных пользователей, чем для хакеров. (Посмотрите историю DRM, чтобы узнать, как очень издателей информации не могут обеспечить безопасность своих систем, когда код находится в руках их оппонентов.) Гораздо лучше сосредоточиться на том, чтобы действительно сделать счастливых законных пользователей. Убытки от случайного взлома будут ничем по сравнению с дополнительными деньгами, полученными за счет надлежащего удовлетворения клиентов.
(PDF) Обфускация кода. Куда он идет?
International Journal of Engineering & Technology
[9] Himangi, G. (2010), защита кода и обфускация программного обеспечения .Net —
с использованием обфускатора, доступ 13 января 2018 г. / www.dotnetcurry.com/ShowArticle.aspx?ID=542&AspxAuto
DetectCookieSupport = 1
[10] Иман, М., и Исхак, А. (2010). Антиреверс как инструмент защиты интеллектуальной собственности. ОАЭ, IEEE, Том (5) (1) Стр. (1, 2).
[11] Джаред, Н. (2008). Уровень программного пиратства против заражения вредоносным ПО.
Разоблачение пиратского вредоносного ПО bsa. По состоянию на 13 января 2018 г.,
Доступно по адресу http://www.myce.com/news/debunking-bsas-piracy-
malware-link-21041/
[12] Linn.C, Debray.S, 2003, Обфускация исполняемого кода для доказательства устойчивости к статической разборке Im-
, Вашингтон, Университет
, Аризона Тусон, PP (2,4,5).
[13] Л. Шан и С. Эммануэль, «Защита мобильных агентов с помощью само-модифицирующего кода
», Журнал систем обработки сигналов, вып. 65, нет.
1, стр. 105–116, 2011.
[14] A. Viticchie et al., «Assessment of Source Code Obfuscation Tech-
niques», 2016 IEEE International Working Conference on
Source Code Analysis and Manipulation (SCAM), Raleigh, NC,
2016 , стр.11-20.
[15] AK Dalai, SS Das и SK Jena, «Технология обфускации кода —
nique для предотвращения обратной инженерии», 2017 Международная конференция
ence on Wireless Communications, Signal Processing and Net —
working (WiSPNET ), Ченнаи, 2017, стр. 828-832.
[16] С.А. Себастьян, С. Малгаонкар, П. Шах, М. Капур и Т. Па-
Рехджи, «Исследование и обзор обфускации кода», 2016 World Con-
ference on Futuristic Trends in Research and Innovation for Social
Welfare (Startup Conclave), Коимбатур, 2016 г., стр.1-6.
[17] Min.G.K и др., (2007), Renovo: экстрактор скрытого кода для
упакованных исполняемых файлов, Университет Карнеги-Меллона, IEEE, стр. (4)
[18] Memon, Jan.et.al, (2006) Emerging Technologies, 2-я международная онлайн-конференция
, Предотвращение угрозы обратного проектирования в Java
Использование методов обфускации байтового кода 13-14 ноября 2006 г.,
Пешавар , Пакистан, IEEE, P. (690).
[19] Маду, M.et.al, 2006, Об эффективности преобразований исходного кода
для двоичной обфускации, стр.(4,3)
[20] Чжан, X.et.al, 2008, Метод межклассовой обфускации для программы Java
, Международная конференция по информационной безопасности
и гарантиям, Чанчунь, 130012, Китай, IEEE , Стр (2, 4, 6).
[21] Патель, В. (2009). Защитите Java-код от декомпиляции с помощью Java
Obfuscator. 13 января 2018 г., доступно по адресу
http://viralpatel.net/blogs/2009/07/protect-java-code-
decompilation-using-java-obfuscator.html
[22] Peikari.C.et.al, (N.D), O’REILLY Media, Know Your Enemy,
IEEE, Pp. (10,11,19)
[23] Раймонд. J.et.al, (2008), Обзор инструментов обратного проектирования
для 32-битной среды Microsoft Windows, Том (V, NO.N),
Стр. (1,2,3).
[24] NationMaster, (2010). Уровень компьютерного пиратства (последний) по странам.
Статистика преступности. По состоянию на 13 января 2018 г., доступно по адресу
http: // www.nationmaster.com/graph/cri_sof_pir_rat-crime-
уровень компьютерного пиратства.
[25] LogicNP, Программное обеспечение. (2010) Crypto Obfuscator For.Net. Мощность
компонентов. 13 января 2018 г. Доступно по адресу
http://www.ssware.com/cryptoobfuscator/features.htm
[26] Настройте Proguard и DexGuard (доступ 20 сентября 2016 г.)
https: //docs.fabric. io / android / crashlytics / dex-and-proguard.html
[27] Руководство ProGuard. (Доступ 25 сентября 2016 г.)
http: // proguard.sourceforge.net/manual/
[28] П. Канани, К. Шривастава, Дж. Ганди, Д. Парех и М. Гала, «Ob-
fuscation: Maze of code», 2017 2-я Международная конференция по
Коммуникационные системы, вычисления и ИТ-приложения (CSCI-
TA), Мумбаи, 2017, стр. 11-16.
[29] Аль-Хакими, AM, Раджадурай, К.П., Рави, Мичиган, «Формулировка оборонительной техники De-
для предотвращения угрозы запрещенной обратной разработки», Международная конференция и семинар по текущему состоянию
Тенденции в информационных технологиях (CTIT), 2011, стр.82-85.
[30] М. Ким и др., «Дизайн и оценка производительности двоичного кода
Packing для защиты встроенного программного обеспечения от обратного инжиниринга
», 13-й Международный симпозиум IEEE 2010 г. по объекту Ob-
/ Компонент / Сервисно-ориентированные распределенные вычисления в реальном времени
ting, Кармона, Севилья, 2010 г., стр. 80-86.
[31] М. Ким и др., «Дизайн и оценка производительности двоичного кода
Packing для защиты встроенного программного обеспечения от обратного инжиниринга
», 13-й Международный симпозиум IEEE 2010 г. по объекту Ob-
/ Компонент / Сервисно-ориентированные распределенные вычисления в реальном времени
ting, Кармона, Севилья, 2010 г., стр.80-86.
% PDF-1.3
%
2 0 obj
>
эндобдж
8 0 объект
[
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 778 778
250 333 555 500 500 1000 833 278 333 333 500 570 250 333250 278
500 500 500 500 500 500 500 500 500 500 333 333 570 570 570 500
930 722 667 722 722 667 611 778 778 389 500 778 667 944 722 778
611 778 722 556 667 722 722 1000 722 722 667 333 278 333 581 500
333 500 556 444 556 444 333 500 556 278 333 556 278 833 556 500
556 556 444 389 333 556 500 722 500 500 444 394 220 394 520 778
500 778 333 500 500 1000 500 500 333 1000 556 333 1000 778 667 778
778 333 333 500 500 350 500 1000 333 1000 389 333 722 778 444 722
250 333 500 500 500 500 220 500 33 37 47 300 500 570 33 37 47 500
400 549 300 300 333 576 540 250 333 300 330 500 750 750 750 500
722 722 722 722 722 722 1000 722 667 667 667 667 389 389 389 389
722 722 778 778 778 778 778 570 778722 722 722 722 722 611 556
500 500 500 500 500 500 722 444 444 444 444 444 278 278 278 278
500 556 500 500 500 500 500 549 500 556 556 556 556 500 556 500
]
эндобдж
11 0 объект
[
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 778 778
250 333 408 500 500 833 778 180 333 333 500 564 250 333250 278
500 500 500 500 500 500 500 500 500 500 278 278 564 564 564 444
921 722 667 667 722 611 556 722 722 333 389 722 611 889 722 722
556 722 667 556 611 722 722 944 722 722 611 333 278 333 469 500
333 444 500 444 500 444 333 500 500 278 278 500 278 778 500 500
500500 333 389 278 500 500 722 500 500 444 480 200 480 541 778
500 778 333 500 444 1000 500 500 333 1000 556 333 889 778 611 778
778 333 333 444 444 350 500 1000 333 980 389 333 722 778 444 722
250 333 500 500 500 500 200 500 33 3760 276 500 564 333 760 500
400 549 300 300 333 576 453250 333 300 310 500 750 750 750 444
722 722 722 722 722 722 889 667 611 611 611 611 333 333 333 333
722 722 722 722 722 722 722 564 722 722 722 722 722 722 556 500
444 444 444 444 444 444 667 444 444 444 444 444 278 278 278 278
500 500 500 500 500 500 500 549 500 500 500 500 500 500 500 500
]
эндобдж
14 0 объект
[
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 778 778
250 333 420 500 500 833 778 214 333 333 500 675 250 333250 278
500 500 500 500 500 500 500 500 500 500 333 333 675 675 675 500
920 611 611 667 722 611 611 722 722 333 444 667 556 833 667 722
611 722 611 500 556 722 611 833 611 556 556 389 278 389 422 500
333 500 500 444 500 444 278 500 500 278 278 444 278 722 500 500
500 500 389 389 278 500 444 667 444 444 389 400 275 400 541 778
500 778 333 500 556 889 500 500 333 1000 500 333 944 778 556 778
778 333 333 556 556 350 500 889 333 980 389 333 667 778 389 556
250 389 500 500 500 500 275 500 33 3760 276 500 675 333 760 500
400 549 300 300 333 576 523 250 333 300 310 500 750 750 750 500
611 611 611 611 611 611 889 667 611 611 611 611 333 333 333 333
722 667 722 722 722 722 722 675 722 722 722 722 722 556 611 500
500 500 500 500 500 500 667 444 444 444 444 444 278 278 278 278
500 500 500 500 500 500 500 549 500 500 500 500 500 444 500 444
]
эндобдж
16 0 объект
>
транслировать
x ڕ [rF} ˆX F} v = k3rEIEj *
Укрепление безопасности для мобильных банковских приложений: обфускация собственного кода
В мобильной среде исходный код часто распространяется без достаточной защиты. Программы, скомпилированные в виде байт-кода, например программы, разработанные для Java или .NET, содержат почти всю исходную информацию из исходного кода. Программы, разработанные с использованием нативного кода, обычно разработанного на C, Objective-C или C ++, гораздо труднее отменить. Далее мы рассмотрим разницу между интерпретируемым кодом и собственным кодом в мобильных операционных системах и почему нам все еще нужна обфускация собственного кода.
Android
В Android приложения обычно компилируются в Java-приложение, превращаются в файлы байт-кода классов компилятором Java, а затем в файлы классов dex с помощью Dalvik Android VM (среда выполнения Android).Xamarin позволяет разработчикам использовать .NET. Однако монокомпилятор Xamarin также преобразует код C # в байт-код Java. Это интерпретируемый код.
На нативной стороне разработчики могут использовать NDK (Android Native Development Kit) для непосредственного взаимодействия с ядром и оборудованием для создания приложений с собственным кодом , используя C и C ++.
Для среднего мобильного разработчика использовать NDK намного сложнее, чем разрабатывать с помощью Java или Xamarin.Вообще говоря, не рекомендуется использовать его, если в этом нет необходимости, например, для взаимодействия с библиотекой с использованием собственного кода.
Когда злоумышленники нацелены на собственный код, виртуальная машина Dalvik обходится и вместо нее создается собственное приложение для Android. Помимо виртуальной машины Dalvik, для нативного кода доступно не так много обфускаторов кода. В инструментальной цепочке Android NDK можно использовать обфускатор, предоставляемый LLVM [1]. LLVM является компилятором по умолчанию, начиная с NDK r13b [2], а GCC [3] был удален с NDK v18b.
iOS
При разработке собственного кода в iOS используется либо Swift, либо Objective-C. Objective-C — это C с некоторыми объектно-ориентированными функциями, в то время как Swift обычно называют «Objective-C без C. » Существует не так много приложений, использующих Java для iOS. Однако Xamarin и C # также являются популярным способом создания приложений для iOS.
В iOS большинство атак на машинный код будет происходить из-за недостатков среды выполнения Objective-C:
- Дизайн приложения, эл.g подпись класса и т. д. хранится в самом двоичном файле, что позволяет злоумышленнику легко восстановить архитектуру приложения.
- Механизм отражения в Objective-C позволяет злоумышленникам перехватывать и изменять состояние приложения.
- Инфраструктура обмена сообщениями в Objective-C слишком проста, и сообщениями можно легко отслеживать и управлять ими.
- Вообще говоря, многие атаки могут быть выполнены против среды выполнения Objective-C, и злоумышленники могут обойти авторизацию, проверки работоспособности и т. Д.
В качестве первой защиты разработчики банковских приложений для iOS могут писать части своего кода, которые имеют дело с конфиденциальными данными, на простом языке C, чтобы предотвратить использование злоумышленником инструментов обратного проектирования Objective-C, таких как class-dump, class-dump-z, Cycript , или Frida Instrumentation Framework.
Существует множество методов обфускации собственного кода как в Android, так и в iOS:
- Макет и обфускация данных
Скрыть все структуры данных, переставить все переменные вместе и переименовать их с непонятными токенизированными именами, переставить данные, хранящиеся в массивах или словарях, и т. Д.
Реорганизовать поток управления приложением, внедрить мертвый / фиктивный код и удалить прототипы функций, встраивая их в другие функции, где они изначально вызываются. Используйте прокси-методы для перенаправления потока выполнения и дерева процессов.
Противодействуйте методам известных деобфускаторов, предотвращая их работу, используя некоторые из их слабых мест.
Удалите из таблицы символов двоичных файлов всю информацию, которая не требуется для выполнения.
Вкратце
Обфускация нативного кода мобильной операционной системы может быть, как это ни парадоксально, труднее, чем обфускация неродного кода.
Однако есть несколько инструментов и методов, которые обеспечивают хорошую защиту от собственных декомпиляторов и других инструментальных сред.
Банковские приложения, использующие собственный код, могут использовать эти методы обфускации для защиты от злонамеренного обратного проектирования.
Общая информация, ссылки и дополнительная литература
- Прочтите статьи Мартина Руппа, Стефана Хансена и других о безопасности приложений для мобильных банковских приложений (2018 г. — сегодня).
- MASC Mobile App Security Core (2019), веб-страница Cryptomathic
- Руководство по безопасности приема мобильных платежей PCI для разработчиков, версия 2 (сентябрь 2017 г.), Emerging Technologies, Совет по стандартам безопасности PCI
- [1] LLVM.Проект LLVM представляет собой набор модульных и повторно используемых технологий компилятора и инструментальных цепочек
- [2] NDK. Android NDK — это набор инструментов, который позволяет вам реализовывать части вашего приложения в собственном коде, используя такие языки, как C и C ++
- [3] GCC. Коллекция компиляторов GNU — это система компиляторов, созданная проектом GNU и поддерживающая различные языки программирования
.
Обфускация кода как метод защиты программного обеспечения
Я являюсь основателем и генеральным директором Apriorit , компании по разработке программного обеспечения, которая оказывает глобальные инженерные услуги технологическим компаниям.
getty
В настоящее время кибер-злоумышленники вооружены впечатляющим набором оружия, от простых вредоносных программ до сложных инструментов обратного проектирования. Дизассемблеры, декомпиляторы и другие инструменты позволяют хакерам получать доступ и анализировать исходный код приложения. Располагая этой информацией, хакеры могут использовать ваше программное обеспечение различными способами: извлекая конфиденциальную информацию, добавляя вредоносный код и даже клонируя ваши приложения.
Недавнее исследование, проведенное компанией по безопасности Positive Technologies, показало, что популярные приложения мобильного банкинга уязвимы для хакерских атак.Наиболее частые выявленные проблемы кибербезопасности были связаны с именами классов и методов, явно написанными в исходном коде, отсутствием защиты от внедрения кода и отсутствием обфускации кода.
Обфускация кода, в частности, является многообещающей практикой для защиты программного обеспечения. Если вы ищете способы защитить свое программное обеспечение от вторжений, вы можете начать с усиления его защиты путем обфускации кода.
Как работает обфускация кода?
Методы обфускации позволяют усилить код приложения, преобразовав его, чтобы скрыть неявные значения и скрыть логику.Эти меры затрудняют доступ неавторизованной третьей стороны под капот вашего программного обеспечения.
Большинство методов обфускации преобразуют один из следующих аспектов кода:
• Data: Сделать элементы кода похожими на то, что они есть
• Поток управления: Сделать исполняемую логику недетерминированной, если программное обеспечение декомпилировано
• Структура макета: Форматирование данных, переименование идентификаторов и удаление комментариев кода
Инструменты обфускации работают с исходным кодом, машинным или двоичным кодом и байт-кодом.Чтобы определить, какой тип кода лучше всего скрыть, необходимо помнить об ограничениях каждого варианта.
При обфускации исходного кода вы можете столкнуться с проблемами при обработке и отладке обфусцированного кода. Обфускация двоичных файлов не только сложнее двух других вариантов, но и должна применяться к каждой системной архитектуре.
В моей компании мы часто выбираем обфускацию байт-кода, так как в этом случае нам не нужно обрабатывать исходный код или машинный код. Однако, когда мы переходим к преобразованию байт-кода в машинный код, трудно сохранять все инъекции обфусцированного кода полностью случайными.
В одном из наших недавних проектов моя команда использовала компилятор LLVM, который помог нам обеспечить высокий уровень защиты байт-кода с минимальным влиянием на производительность программного обеспечения. Помимо усиления кода, этот компилятор может случайным образом размещать верификаторы лицензий на программное обеспечение, что делает практически невозможным взлом программного обеспечения хакерами.
Как можно защитить свое приложение с помощью обфускации кода?
Хотя обфускация является одной из методов безопасного кодирования, рекомендованных OWASP, она все еще не пользуется большой популярностью среди многих разработчиков.Основная причина этого заключается в том, что при чрезмерном использовании обфускация кода может нанести вред производительности программного обеспечения.
Но если мы говорим, скажем, о приложении для мобильного банкинга, важность защиты данных банковского счета пользователя достаточно высока, чтобы оправдать дополнительные затраты времени и усилий на сбалансированную защиту кода.
Если вы хотите наиболее эффективно скрыть код, обратите внимание на следующие моменты:
• Прежде чем обфусцировать ваш код, вы должны решить , какие части вашего кода могут быть запутаны.Избегайте обфускации кода, критичного к производительности. Также убедитесь, что обфускация никоим образом не влияет на функциональность программного обеспечения.
• Обратите внимание на размер и производительность запутанного кода. При усилении защиты большого фрагмента кода время выполнения может увеличиваться до 1000 раз.