KoderLine
Обслуживание
и внедрение
Наш Facebook Наш Instagram Наш YouTube
+7 (495) 374 55 29 Обратный звонок
Обфускация кода 1С. Для чего используется Обф...

Обфускация кода 1С. Для чего используется Обфускация (защита программных продуктов)

0
3132
08.08.2017 Всеволод Корсаков
Обфускация помогает в ситуации, когда сложному клиенту необходимо передать «Полнофункциональную разработку» с некоторыми ограничениями (до момента оплаты, например):

- у клиента не должно быть возможности править модуль;
- затруднено сопровождение/изменение/тиражирование;
- легко спрятать в модуле любые функции ограничения по сроку, среде исполнения, осуществить простую привязку к «железу»;
-  должен оставаться стимул оплатить работу.

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

Форма обработки:




ПРИМЕР 
Исходный код:



 
Результат:
Обфускация — имя переменной УИД




Обфускация — имя переменной случайное число + шифрование строк



  
или
Обфускация — имя переменной УИД + шифрование строк



Возможности обработки:

1.Обфускация модуля/модуля формы/функции – приложения по заданным параметрам. Обфусцируются переменные:
- описанные в конструкции переменные
- описанные как параметры функции/процедуры
- анализ контекста выполнения НЕ выполняется
2. Реализовано разбивка/шифрование строк по заданным параметрам.
3. При шифровании строк «По умолчанию» функция возврата пароля шифрования «прячется» в обрабатываемом модуле. Ее можно заменить своей функцией, возвращающей аппаратно-зависимый пароль (метка диска, имя машины, наличие сетевого адреса и все, что подскажет Ваша фантазия), тем самым исключить хранение пароля в модуле, реализовать простейшую защиту от несанкционированного использования защищенного модуля.
Соответственно без пароля/неправильном пароле функционал модуля будет недоступен/потерян (в случае шифрования строк).


Порядок работы:
1. В поле «Текст модуля исходный» копируем преобразуемый модуль
2. На вкладке «Параметры шифрования» определяем параметры шифрования строк, при необходимости свою функцию получения пароля
3. Нажимаем кнопку «Обработать»
4. Забираем обфусцированный модуль 


Особенности/ограничения:

1. Обфусцированный модуль в режиме шифрования строк/разбивки может выполняться МЕДЛЕННЕЙ исходного в НЕСКОЛЬКО РАЗ, если зашифрованные строки находятся внутри циклов.

По быстродействию хочу поставить акцент:
Вызов функции получения пароля происходит при развертывании каждой части шифрованной строки.
Если это модуль формы, мы можем значительно ускорить выполнение кода, определив пароль один раз при инициализации модуля. Хранить в переменной модуля/реквизите формы, возвращая эту переменную при вызове функции. Это будет ЗНАЧИТЕЛЬНО быстрее, чем вычисление пароля каждый раз (или используя другие варианты  оптимизации кэширования повторного использования значений и т.д).
По умолчанию это формирование строки из кодов символов, пароля, указанного при обфускации:  Символ(КодN1)+Символ(КодN2).
Эта функция заменяемая. Как вариант, указываем функцию получения значения пароля из модуля «Повтор используемых значений».

По умолчанию новый модуль генерируется универсально. Вычисление пароля происходит при КАЖДОМ вызове расшифровки строки. 
Поскольку при обфускации нет возможности автоматически определить, что обрабатываем — модуль формы/модуль приложения, то пока этот нюанс обрабатываем самостоятельно. Правка минимальна.

2. При установке режима шифрования строк разбиваются/шифруются ВСЕ строковые переменные модуля.
3. Имена функций НЕ обрабатываются.
4. Перенос директив препроцессора, обработка областей модуля НЕ ТЕСТИРОВАЛАСЬ,

5. НЕ анализируются и обрабатываются «как есть» переменные, которым задано наименование глобального контекста 1С или зарезервированного слова 1С.

Пример: 
Если в коде объявлена переменная «Символ», «КодСимвола», то используются ОДНОИМЕННЫЕ функции. Исходный код 1С обрабатывает корректно (хотя есть одноименные функции глобального контекста). При обсфукации вызов функции «Символ» будет заменен новым именем переменной «Символ», и в модуле возникнет синтаксическая ошибка.

 
 5. Используются функции шифровки/дешифровки, доработанные с Infostart … Публикацию, к сожалению, уже не смог найти. 

Обработку обфускации модуля формы/программного модуля 1С «Шифрование24» можно скачать ЗДЕСЬ 

 "+" простота реализации, отсутствие внешних компонент
 "-" низкое быстродействие 
 

Всеволод Корсаков,
разработчик 1С компании ООО “Кодерлайн”


Задать вопрос автору статьи
Тема вопроса*
Ваше имя*
E-mail или телефон*
Ваш вопрос*
 

Добавить комментарий
Текст сообщения*
Защита от автоматических сообщений
 
Теги
#1С: CRM #1С: ERP #1С: ERP Управление строительной организацией #1С: ERP. Управление буровой компанией #1С: WMS Управление складом #1С: Аренда и управление недвижимостью #1С: БУХ #1С: Договорчики #1С: Документооборот #1С: ЗУП #1С: Интеграция #1С: КА #1С: Колледж #1С: Конвертация данных #1С: Платформа #1С: Розница #1С: Сценарное тестирование #1С: ТОИР #1С: УАТ #1С: УКФ #1С: Университет #1С: УНФ #1С: УПП #1С: Управление строительной организацией #1С: УТ #1С: УХ #ADO #APACHE #API #com-объекты #Excel #GoogleDrive #HTTP #ITIL #Koderline: Управление медиа-холдингом #Koderline: Управление проектами строительства скважин #LINUX #MS SQL Server #WEB #WEB-сервисы 1С #Word #XML #Администрирование 1С #Безопасность сервера #Бесшовная интеграция #БИТ.Финанc #Битрикс24 #Блокировки в 1С #БСП #БУ #Бурение скважин #Бюджетирование #Внедрение #Внедрение ERP #Закрытие месяца #Запросы 1С #Интеграция 1С #Как сделать в 1С #Конвертация данных #Корпоративное сопровождение #Лизинг #Лицензии 1С #Моделирование #МСФО #Налоги #Обмен между базами #Обновления #Оптимизация #Отпуск #Отчетность #Отчеты в 1С #Оценка задач #Перенос данных #Планирование #Полезные обработки #Правила обмена #Проводки 1С #Программирование в 1С #Программные права #Продажи #Производство #Расширение конфигурации #РСБУ #СКД #Сравнение конфигураций #Тестирование 1С #Техническое задание #Торговое оборудование #Транспортная логистика #Управление проектами #Финансовый учет #Ценообразование #Экзамен 1С #Яндекс.Касса Email или телефон
Услуги программиста 1С
Получите специалиста  
для решения всех задач
в области 1С
Программы 1С
Цены и подробное описание программ 1С:Предприятие 8.
Яндекс.Метрика