Обфускатор байт-кода

11.12.24

Разработка - Защита ПО и шифрование

Обработка, позволяющая запутывать и шифровать байт-код, поставлять модули без исходных текстов и т.д. Работает только в файловом варианте с версии платформы 8.3.22.1368 из-за конструктора ГенераторСлучайныхЧисел, поскольку алгоритм был изменён.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Обфускатор байт-кода:
.epf 48,22Kb ver:1.6.5.0
65
65 Скачать (10 SM) Купить за 4 550 руб.

Обфускатор является внешней обработкой. Запускается только в режиме управляемых форм. Обфускатор может обрабатывать файлы любых версий 1c 8. Обработка протестирована на платформе 8.3.25.1394, однако конструктор "ГенераторСлучайныхЧисел" с изменённым алгоритмом будет корректно функционировать на версиях 8.3.22.1368+. Если заменить конструктор "ГенераторСлучайныхЧисел" на другой, то она будет работать начиная с версии 8.3.18+. Если также убрать асинхронность, то и на 8.3.10+.

Предисловие:

1С не является интерпретатором в чистом виде. Это означает, что 1С не исполняет исходные тексты модулей непосредственно. Для исполнения модулей 1С сначала производит компиляцию модуля в промежуточное представление, обычно называемое байт-кодом, а уже затем виртуальная машина 1С исполняет этот байт-код.

1С может хранить модули тремя способами:

  • Исходный текст модуля открыт. Это обычный вид хранения модуля. Компиляция модуля происходит во время выполнения при первом обращении к модулю. Внутри контейнера модуль хранится как текстовый файл text, содержащий исходный код модуля.
  • На модуль поставлен пароль. Компиляция происходит в момент сохранения модуля при редактировании. Внутри контейнера модуль хранится в виде двух файлов – text, содержащий исходный текст модуля, зашифрованный ключом, полученным из пароля, и image, содержащий скомпилированный образ модуля (байт-код). Ни пароль, ни ключ шифрования 1С не хранит, поэтому, не зная пароль, расшифровать исходный текст нельзя. Для выполнения 1С использует заранее скомпилированный байт-код из файла image.
  • Поставка без исходных текстов. В этом случае исходный текст модуля отсутствует. В контейнере хранится только скомпилированный образ модуля image, который 1С использует при выполнении модуля. Открыть такой модуль на редактирование нельзя никак.

Назначение флажков и переключателей:

Обфускатор может делать несколько действий, за каждое из которых отвечает свой флажок или переключатель.

Переключатель "Выбор модификации":

  • без изменения - выбрать все без изменения.
  • минимальный - выбрать все минимальные.
  • случайный - выбрать все случайные.
  • максимальный - выбрать все максимальные.

Переключатель "Порядок операций":

  • без изменения - оставить порядок операций в исходном виде без внесения изменений.
  • случайный - случайный порядок операций.

Переключатель "Порядок констант":

  • без изменения - оставить порядок констант в исходном виде без внесения изменений.
  • случайный - случайный порядок констант.

Переключатель "Порядок переменных":

  • без изменения - оставить порядок переменных в исходном виде без внесения изменений.
  • случайный - случайный порядок переменных.

Переключатель "Порядок меток":

  • без изменения - оставить порядок меток в исходном виде без внесения изменений.
  • случайный - случайный порядок меток.

Переключатель "Порядок процедур":

  • без изменения - оставить порядок процедур в исходном виде без внесения изменений.
  • случайный - случайный порядок процедур.

Переключатель "Удаление конструкций":

  • без изменения - ненужные конструкции не удаляются.
  • частичное - частично удаляются ненужные конструкции.
  • полное - полностью удаляются ненужные конструкции.

Переключатель "Шифрование констант":

  • без изменения - константы не шифруются.
  • простое - шифруются константы без вызова процедуры.

Переключатель "Шифрование имён переменных":

  • без изменения - имена переменных не шифруются.
  • полное - полностью шифруются имена переменных.

Переключатель "Шифрование имён меток":

  • без изменения - имена меток не шифруются.
  • полное - полностью шифруются имена меток.

Переключатель "Замена конструкций":

  • без изменения - конструкции не заменяются.
  • частичная - частично заменяются конструкции на аналогичные.
  • полная - полностью заменяются конструкции на аналогичные.

Переключатель "Шифрование файлов модулей":

  • без изменения - файлы не шифруются.
  • частичное - частично шифруются файлы.
  • полное - полностью шифруются файлы.

Переключатель "Запись файлов модулей":

  • без изменения - файлы записываются в исходном виде без внесения изменений.
  • произвольная - записываются файлы без разделителей или с разделителями строк.

Переключатель "Порядок блоков файлов модулей":

  • без изменения - оставить порядок блоков файлов в исходном виде без внесения изменений.
  • случайный - случайный порядок блоков файлов.
  • циклический - повторяет последовательность блоков файлов.

Переключатель "Добавление мусора":

  • без изменения - мусор не добавляет.
  • случайное - добавляет случайный мусор.

Переключатель "Поставка модулей":

  • без изменения - поставляются модули в исходном виде без внесения изменений.
    Если был установлен пароль на тексты модулей, то оставляет возможность установки пароля на тексты модулей после обфускации байт-кода. При вводе корректного пароля приведет к расшифровке исходных текстов, но 1С при закрытии модуля заново скомпилирует модуль и перезапишет обфусцированный скомпилированный образ, т.е. обфускация слетит.
    Если исходный текст модуля отсутствовал, то в контейнере будет хранится только скомпилированный образ модуля после обфускации байт-кода.
  • исходный текст модуля отсутствует - поставляются модули окна с надписью "Исходный текст модуля отсутствует".
  • раздельный закрытый модуль - поставляются модули в отдельных файлах с предустановленным паролем "0" и готовым текстом.
  • пустой закрытый модуль - поставляются новые модули без встроенных окон с надписью "Исходный текст модуля отсутствует" и полем для ввода пароля.

Флажок "Не создавать копию" - не создается копия обрабатываемого файла.

Флажок "Замер времени" - замеряет время выполнения кода.

Обрабатываемые файлы:

Обфускатор может обрабатывать файлы *.epf, *.erf, *.cf, *.cfe и *.cfu. Обработка происходит безопасным способом – создается копия обрабатываемого файла с добавкой «_обф» в имени файла, и вся работа идет уже с этой копией. Таким образом, при любом исходе работы обфускатора, исходный файл остается целым. Если нужно обрабатывать непосредственно исходный файл, то рекомендуется создавать резервную копию файла и поставить флажок "Не создавать копию". Обрабатываемый файл должен быть предварительно закрыт паролем прежде чем обрабатывать. Если модуль закрытой обработки будет изменен разработчиком, то ее нужно будет обрабатывать еще раз.

Цель: Затруднить для понимания байт-код, запутать и устранить логические связи в байт-коде.

Список публикаций, использованных при разработке:

Сравнение инструментов:

Инструмент Версия Цена (sm, руб) Защита

Запуск с установ-ленной защитой

Системы лицензи-рования
Защита конфигураций 3 17500 р *.cf, *.cfe работает HASP, Guardant, Codemeter
Защита от декомпиляции модулей 1.70 1500 р *.epf, *.erf, *.cf возможно работает -
Нетленка: защита конфигураций 1С 2 49500 р *.epf, *.erf, *.cf, *.cfe работает -
Обфускатор байт-кода (этот) 1.6.5.0 10 sm *.epf, *.erf, *.cf, *.cfe, *.cfu работает -
Обфускатор
операционного
кода 1с
- 5 sm *.epf возможно работает -

 

 
История версий: 

11.12.2024 - Версия 1.6.5.0:

  • Добавлена новая замена конструкций.
  • Теперь замена конструкций со списками выбора "без изменения", "частичная" и "полная".
  • Переименован переключатель "Удаление номеров строк" на "Удаление конструкций".

24.11.2024 - Версия 1.6.4.0:

  • Добавлен переключатель "Добавление мусора" со списками выбора "без изменения" и "случайное".
  • Теперь переключатели "Создание дополнительных переходов" и "Создание дополнительных элементов" заменены на переключатель "Добавление мусора", который так же добавляет ещё больше ненужного мусора.
  • Теперь порядок операций изменяется также на этапе инициализации модуля.

16.11.2024 - Версия 1.6.3.0:

  • Теперь deflate распаковывается в памяти без временных файлов.
  • Исправлена ошибка шифрования констант.

22.08.2024 - Версия 1.6.2.0:

  • Добавлена возможность шифрования имён меток.

15.08.2024 - Версия 1.6.1.0:

  • Добавлена возможность выбора модификации со списками выбора "без изменения", "минимальный", "случайный" и "максимальный".
  • Теперь доступна кнопка "Открыть" для внешних отчётов.
  • Изменён флажок "Изменить имена переменных" на переключатель "Шифрование имён переменных".
  • Изменён флажок "Сгенерировать количество элементов" на переключатель "Создание дополнительных элементов".

07.08.2024 - Версия 1.6.0.0:

  • Добавлен переключатель "Шифрование файла модуля" со списком выбора "полное".
  • Закладка "Дополнительные настройки" переименована в "Настройки".
  • Упразднена закладка "Структура файла".
  • Упразднен переключатель "Поставка модулей" со списком выбора "постоянный неверный пароль".
  • Упразднен переключатель "Запись файла модуля" со списками выбора "без разделителей" и "с разделителями".
  • Убрана справочная информация.

17.11.2023 - Версия 1.5.4.1:

  • Изменен флажок "Удалить номера строк" на переключатель "Удаление номеров строк".

01.10.2023 - Версия 1.5.3.1:

  • Добавлена возможность заменить конструкции.
  • Добавлено новое шифрование констант.
  • Изменен флажок "Добавить переходы" на переключатель "Создание дополнительных переходов".
  • Исправлена некорректная запаковка расширений.

04.09.2023 - Версия 1.5.2.1:

  • Добавлено новое шифрование констант.
  • Добавлена возможность изменить порядок переменных.
  • Реализована произвольная запись файла модуля.

24.08.2023 - Версия 1.5.1.1:

  • Реализовано смешанное шифрование констант.
  • Перенесена форма выбора модулей в основную.

 

байт-код обфускация шифрование защита epf erf cf cfe cfu

См. также

Защита ПО и шифрование Программист Платформа 1С v8.3 1С:Бухгалтерия 3.0 Абонемент ($m)

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

1 стартмани

09.02.2023    2755    12    aximo    5    

2

Защита ПО и шифрование Программист Абонемент ($m)

Для установки защиты pdf документа, полученного в 1С, написано консольное приложение на c#., использующее одну зависимость pdfSharp.dll. В результате работы приложения ограничены операции над документом и записаны метаданные. С помощью аргументов командной строки можно управлять работой приложения.

2 стартмани

30.01.2023    2164    2    olevlasam    3    

3

Защита ПО и шифрование Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Универсальный синтаксический анализатор ASN.1, который может декодировать любую допустимую структуру ASN.1 DER или BER, независимо от того, закодирована ли она в кодировке Base64 (распознаются необработанные base64, защита PEM и begin-base64) или в шестнадцатеричном кодировании.

1 стартмани

04.12.2022    3599    16    keyn5565`    0    

14

Защита ПО и шифрование Программист Платформа 1С v8.3 Абонемент ($m)

Демонстрация возможностей шифрования строки на основе мастер-пароля в 1С Предприятие 8.3.19. AES без zip файла, RSA, PKDF2. (c использованием библиотеки С# через com).

2 стартмани

31.08.2022    4502    9    vit59    2    

6

Защита ПО и шифрование Программист Платформа 1С v7.7 Платформа 1С v8.3 Абонемент ($m)

Как уберечь конструкторскую документацию от воровства конкурентами? Недавно столкнулся с этой проблемой. Заказчик серьёзно обеспокоен утечкой информации о конструкторских разработках в адрес конкурентов, за счет подкупа исполнителей, занимающихся производством по конструкторской документации, операторов технологического оборудования и обрабатывающих центров по изготовлению деталей и сборочных единиц.

2 стартмани

09.03.2022    6163    3    ge_ni    9    

2

Защита ПО и шифрование Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Система построена на веб платформе, все управление происходит на сайте в личном кабинете пользователя.

1 стартмани

27.12.2021    5137    2    idm80    12    

9

Защита ПО и шифрование Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Столкнулся с проблемой отсутствия примеров кода по работе в Web-клиенте 1С с криптографией. Свою задачу решил, выкладываю сюда, может, кому пригодится.

1 стартмани

20.12.2021    6010    15    Derushev    1    

5