Установка защиты и декомпилятор модулей 1С 8.3 и 8.2
Наверняка каждый разработчик заботится о том, чтобы его программы были защищены от нелегального распространения. Особенно если эта разработка – коммерческий, тиражируемый продукт.
Создатели системы 1С: Предприятие 8 позаботились о защите кода. К сожалению, пароль на доступ можно установить только на модули объектов, общие модули, модули обработок и отчетов. В том числе и внешних. Но и этого немало, так как можно значимые процедуры и функции разместить в модуле и потом к ним обращаться.
В данной статье я хочу разобраться, как установить защиту и снять её, если Вы забыли пароль.
Установка защиты на модуль 1C
Возьмем любой модуль любого объекта. Я взял навскидку первый же документ – «Авансовый отчет». Если поставить курсор на текст кода модуля, в главном меню появится пункт «Текст». В этом пункте есть подпункт «Установить пароль».
Попробуем установить:
Программа меня тут же предупредила о том, что нельзя защитить модуль, имеющий директивы препроцессора:
Напоминаем, директивы препроцессора — это такие конструкции, как #Если, #Тогда, #Конец и т.п.
Что же, посмотрим, во что это выльется. Устанавливаем пароль.
После установки пароля при попытке закрыть модуль выходит сообщение об ошибке:
Получите 267 видеоуроков по 1С бесплатно:
- Бесплатный видео самоучитель по 1С Бухгалтерии 8.3 и 8.2;
- Самоучитель по новой версии 1С ЗУП 3.0;
- Хороший курс по 1С Управление торговлей 11.
Игнорируем ошибку и сохраняем конфигурацию. Интересно, откроется ли документ. Запускаем программу в режиме «Предприятия».
Все оказалось хуже, чем я предполагал. Документ полностью не рабочий. Провести его не удалось, постоянно программа ругается на какие-то незаполненные поля, которых ни в шапке формы, ни в таблице нет.
Попробовал для чистоты эксперимента на других документах, тот же результат. Например, в приходной накладной становится недоступным поле «Договор».
Вывод однозначный: не все модули можно защитить. Однако ничего Вам не мешает вынести функции и процедуры с директивами препроцессора в отдельный модуль.
Пробуем защитить общий модуль. Случайным выбором пробую защитить 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
.