1с защищенный модуль как открыть
В 1С можно защитить исходный код общих модулей и модулей объектов.
Код формы защитить нельзя.
Защитить можно только те модули, которые не содержат
Пароль на код модуля
Исходный код шифруется с помощью данного пароля, взломать без знания пароля невозможно.
Откройте любой код модуля.
Выберите пункт меню Текст - Установить Пароль. Введите пароль и подтверждение.
Исключение кода модуля
С помощью поставки конфигурации можно вообще исключить исходный код модуля из конфигурации - он будет храниться в скомпилированном виде. Причем делается это все очень просто.
Открываете конфигурацию.
Через пункт Конфигурация - Поставка конфигурации - Настройка поставки заходите в форму настройки поставки, выбираете текст каких модулей нужно исключить из поставки (можно выбрать сразу все для каждого уровня иерархии). Выберите также галочку "Файл поставки может использоваться для обновления".
Далее через пункт Конфигурация - Поставка конфигурации - Комплект поставки создаете CF-файл.
Теперь этот CF файл можно загружать у клиента - в этом CF файле нужные модули исключены (защищены от просмотра).
Настройки поставки хранятся в CF-файле, но к сожалению их нельзя изменить через сравнение конфигураций, только путем полной загрузки CF-файла. Поэтому лучше сделать один общий модуль "КлиентСервер", где хранить функции, которые используют директивы препроцессора, а все остальные модули закрыть.
Но к сожалению это слабая защита. Простенький пример подтверждает это.
ВНИМАНИЕ! ДАЛЕЕ ТЕКСТ ПИСАЛ НЕ АВТОР СТАТЬИ, ГЕНИЙ 1С
Просьба не обращаться к Гению с просьбами рассказать, как расшифровать байт-код или как его получить из закрытой конфигурации. Я этого никогда не делал.
Чтобы получить байт код, рекомендую открытый конфигуратор SQL для 1С8 (ищите на инфостарт)
Чтобы расшифровать байт-код, посмотрите обработки автора TormozIT там же.
Точнее не знаю.
Вот маленький кусок программы:
имеющий вот такой байт-код:
(он получается когда ставится пароль на модуль и когда делается поставка без текстов)
А вот программа декомпилирования этого примера, написать которую может каждый второй 1С-ник:
Описание байт-кода имеет разделы:
- описание алгоритма
- описание констант
- описание переменных
- описание процедур
Разбор байт-кода показывает, что движок 1С это простая стековая машина с "польской" системой вычислений.
Данная система исчисления хорошо знакома большинству программистов по калькуляторам БЗ-34 и другим этой серии.
Основываясь на этом можно, сказать об упрощенном понимании заложенном в приведенный алгоритм.
На самом деле, так называемый спусковой крючок для калькулятора не сам оператор как в приведенном алгоритме, а завершающий оператор "".
Не разбираемый в приведенном коде набор "", на самом деле возврат управления из выполняемого фрагмента на выше стоящий уровень.
Естественно, мы не приводим полный набор команд этого макро языка, составить список сможет, каждый второй 1С-ник, готовый потратить на это какое то время.
Приведу, только фрагмент:
№ п/п | Оператор | Количество данных подним в стеке | Наименование |
---|---|---|---|
1 | 56 | 1 | СокрЛП |
2 | 57 | 2 | Лев |
3 | 58 | 2 | Прав |
4 | 59 | 3 | Сред |
5 | 60 | 2 | Найти |
Как понятно, структура байт-кода такова:
Пример кода позволит разобрать дерево байт кода какой бы глубины оно не было (Не стоит думать, что приведенный код станет основой для написания полноценного декомпилятора для стековой машины 1С, т.к. он содержит упрощенный алгоритм разбора потока):
Второй приводимый фрагмент, рассматривает код более обобщенно по сравнению с предыдущим, но не претендует на абсолютную истину и написан только для демонстрации обобщенного взгляда на проблему.
Не забывайте о том, что декомпилируя код, вы можете нарушить право собственности на интелектуальный продукт.
Программы 1С можно дорабатывать через Конфигуратор. В таких случаях немного осложняется обновление конфигурации.
Поэтому широкое распространение получили внешние обработки — с помощью них выполняются необходимые действия, а конфигурация остается типовой.
Внешние обработки можно подключить в 1С в список дополнительных отчетов и обработок и разместить в нужном для себя разделе.
Но не все обработки поддерживают такую функцию, также бывает, что обработку нужно открыть разово или использовать редко. В таких случаях используется интерактивное открытие обработки и тогда часто выходит ошибка «Нарушение прав доступа».
Разберем, почему происходит такая ситуация в 1С 8.3, и как ее решить.
Как открыть обработку интерактивно
При интерактивном открытии обработки ее не нужно никуда подключать. Достаточно зайти в раздел «Сервис и настройки — Файл — Открыть» или нажать CTRL + O на клавиатуре.
Получите понятные самоучители по 1С бесплатно:
Затем выбираем саму обработку. В этот момент и выходит ошибка.
Для исправления ошибки назначим пользователю роль, которая позволяет открывать обработки интерактивно. Роль так и называется — Интерактивное открытие внешних отчетов и обработок. Отметим, что эту роль нужно назначить даже пользователю с полными правами.
Установка ролей построена таким образом: роли указываются в профилях групп доступа, а профили назначаются пользователям.
Сначала рассмотрим, где находится нужный профиль, а затем разберем, как назначить ее пользователю.
Профиль для открытия внешних обработок
Зайдем в меню «Администрирование — Настройки программы — Настройки пользователей и прав».
Раскроем раздел «Группы доступа» и перейдем по ссылке «Профили групп доступа».
Нужный профиль в программе уже создан и называется «Открытие внешних отчетов и обработок».
Откроем его и увидим, что в нем содержится единственная роль «Интерактивное открытие внешних отчетов и обработок».
Как назначить профиль пользователю
В том же разделе, где находится профиль групп доступа, откроем справочник «Пользователи».
Выберем пользователя, которому нужно назначить профиль. Перейдем по ссылке «Права доступа». Ставим флажок для пункта «Открытие внешних отчетов и обработок» и нажмем «Записать» для сохранения настроек.
Обязательно закрываем 1С и запускаем заново. Открываем обработку и ошибки больше не будет.
Сегодняшняя тема статьи очень интересная и, надеемся, полезная. При разработке Вам могли попадаться модули, которые защищены паролем. И только когда он у Вас есть, можно менять модуль. Сейчас таких ситуаций немного, но они бывают.
Разработчики могут закрыть свой код по двум основным причинам:
· Не хотели делиться кодом и вариантом решения задачи.
· Хотят получить деньги за доработку этого же модуля.
Для таких вот случаев и создали обработку 1С 8.3 «Декомпилятор». Она удачно декомпилирует закрытый модуль и создает копию закрытого модуля. Но есть один момент, что комментарии и код, который был помещен в комментарии, удаляются в последней версии модуля. Данная обработка пока написана для обычных легких форм. Но если постараться, то возможно удастся найти ее на просторах интернета. Саму себя эта обработка не декомпилирует, так как в ней используется совсем другой метод шифрования.
2. Процесс декомпиляции
Как видите на изображении, обработка проста. Имеет одно поле ввода и несколько настроек для декомпиляции.
В поле «Файл» мы можем выбирать обработки (тип файла epf), отчеты (тип файла erf) и файлы конфигурации (тип файла cf). После выбора необходимого файла, с которого необходимо снять защиту пароля, идем дальше к нашим флажкам.
Флажок «Не создавать копию» необходим для того, чтобы при снятии пароля с модуля не создавалась копия объекта, выбранного в поле выше. Если мы не установим там флажок, то при декомпиляции обработка создаст копию файла с префиксом в наименовании файла.
Итак, последняя настройка, над которой нам необходимо подумать перед началом, – это «Искать все модули (медленно)». Установка данного флажка позволит нам проверить весь файл тщательнее и не упустить ничего. В большинстве случаев, если выбрали эту опцию, то процесс может затянуться, так как анализ кода будет глубокий. Правда, существуют ситуации, когда без его установки декомпиляцию не выполнишь, и приходится жертвовать временем ради получения результата.
В нашей профессии лучше иметь хорошую репутацию, чем получать деньги за доработку кода, который сами зашифровали. Необходимо лучше работать, а «Декомпилятором» пользоваться только в крайних случаях.
Каждый программист-разработчик может оказаться в ситуации, когда требуется защитить свои уникальные наработки и алгоритмы от взлома или несогласованного распространения. Особенно это касается защиты интеллектуальной разработки сложных проектов или интеллектуальной собственности компаний.
Обработка зачастую содержит много тысяч строк отлаженного кода, написанного в течение длительного времени, проверенная неоднократными прогонами и тестами, опробованная заказчиком в тестовых группах.
Обработки в 1С:Предприятие позволяют сильно расширить функционал типовых конфигураций 1С, оптимизировать действия персонала по получению и обработке информации, автоматизировать типовые и рутинные процессы, повысить информированность персонала и, как следствие, эффективность работы сотрудников.
Существует несколько способов защитить внешнюю или встроенную обработку в 1С паролем.
1. Установить пароль на текст модуля объекта обработки
Чтоб установить пароль на текст модуля объекта обработки, следует открыть данный модуль в Конфигураторе.
Рис. 1 Открываем модуль объекта обработки
Рис. 2 Модуль объекта обработки в конфигураторе
В главном мен выбираем «Текст» и команду «Установить пароль на модуль».
Рис. 3 Установить пароль на модуль
Таким же образом можно указать пароль на модули объектов справочников, документов, план видов характеристик, бизнес-процессов, задач, а также на общий модуль конфигурации.
2. Исключить код модуля из поставки конфигурации
С помощью пункта главного меню «Поставка конфигурации» необходимо исключить изначальный код модуля из конфигурации, тогда код будет храниться в скомпилированном виде.
Для этого необходимо открыть 1С:Предприятие в режиме конфигуратора, в главном меню выбрать «Конфигурация → Поставка конфигурации → Настройка поставки». В открывшейся форму выбираете модули, текст которых необходимо убрать из поставки конфигурации. Также не забудьте поставить галку «Файл поставки может быть использован для обновления».
Далее в главном меню выбираете «Конфигурация → Поставка конфигурации → Комплект поставки» и сохраняете файл конфигурации CF на свой диск.
Этот файл конфигурации загружайте у заказчика, в нём будут указаны ранее защищенные от просмотра модули.
3. Обфускация модулей кода 1С
Обфускация кода — изменение кода в непонятный вид, спутывание модулей кода. Эту операцию можно выполнить как с помощью специализированных обработок с просторов интернета, так и при помощи специализированных сервисов (платных и бесплатных).
При обфускации происходит замена имен переменных, процедур и функций в произвольные имена. Удаление или изменение форматирования, регистра кода модулей, изменение логических конструкций, изменение контроля потока и применение дополнительных методов защиты кода модулей.
Для защиты своего уникального кода (уникальные вычисления или алгоритм, уникальные расчеты сложных проектов) можно использовать вынесение во внешнюю компоненту своих наработок. Для разработки внешних компонент в 1С 8.3 Предприятие необходимо знание основ создания COM-объектов (ActiveX).
Читайте также: