За основу взята обработка [2 in 1] «Обфускация кода 1С» и «RegExp Тестер».
Запутывание кода — приведение исходного текста или исполняемого кода программы к виду, сохраняющему её функциональность, но затрудняющему анализ (Википедия).
Обработка позволяет проводить обфускацию кода 1С в несколько этапов:
- Предварительная обработка исходного кода:
- Удаление комментариев;
- Удаление областей и пустых строк;
- Заполнение настроек. Настройки могут быть описаны в тексте исходного кода.
- Добавление условий триал периода. Для этого указывается дата триал периода - после которой обработка перестанет работать и сообщение триал периода которое будет выдаваться. При добавлении ограничений по триал периоду добавляются дополнительные процедуры, что может увеличить текст модуля.
-
Заполнение дерева запутывания и формирования таблицы соответствий идентификаторов имен процедур, функций и переменных. В настройках можно указать список имен которые будут оставаться неизменными.
Идентификаторы можно сформировать несколькими способами:
- Уникальный идентификатор - Например: bf9ee4cee2a04be1b5d029f3456dc126;
- Символ + счетчик - Например: i35 (удобно для нахождения по таблице соответствия исходного имени идентификатора);
- Количество символов - Например: iiiiiiiiiiiiiiiiiiiiiiiiiiiiiii.
- Получение обработанного кода 1С.
Все можно выполнить по нажатию одной кнопки.
Инструкции предпроцессора и комментарии с кавычками (для обхода этих ограничений и сделал возможность замены строк кода)
Для шифрования строк требуется capicom.dll, скачать можно с сайта Майкрософт.
RegExp должен быть доступен на сервере.
Для обхода ограничений по комментариям с кавычками можно использовать замену строк исходного кода на текст обрабатываемый корректно и возвращать его обратно при получении результата. Например заменить "https://infostart.ru/public/959902/" на "СайтПроекта", а потом вернуть обратно.
Обработать можно процедуры с директивами компиляции и без них.
В тексте исходного кода можно указать настройки запутывания кода 1С.
Настройки указываются в формате: //#<Имя настройки><Пробел><Значение настройки>
Демонстрация работы на обычных и управляемых формах:
Работа в управляемом интерфейсе: 1) Обфускация кода 1С по одной кнопке. 2) Обфускация кода 1С поэтапно:
|
Работа в обычном интерфейсе: 1) Обфускация кода 1С по одной кнопке. 2) Обфускация кода 1С поэтапно:
|
Тестирование проводилось на конфигурациях:
- Зарплата и управление персоналом: 3.1.10.78 КОРП;
Релиз платформы: 8.3.13.1809 - в коде использовал "Области" и "СтрЗаменить" - поэтому версия платформы должна быть выше 8.3.6, работать будет и без БСП.
Комментарии и пожелания по улучшению обработки приветствуются. Просьба сообщать о найденных багах.
См. также: