[версия для печати]
Коммерческие
Бесплатные
Комплекс защиты конфигурации - 2   
О компиляции модулей в 1С:Предприятии 7.7   
В контексте 1С:Предприятия 7.7 компиляцией называется процесс подготовки программного модуля для выполнения, при котором исходный код модуля на встроенном языке преобразуется во внутренний р-код. Именно полученный после компиляции р-код и выполняется «движком» 1С:Предприятия, а исходный код становится не нужен.
Подобная схема работы позволяет исключить исходный код программных модулей из поставки клиенту, произведя предварительную компиляцию на стороне поставщика конфигурации. Программный пакет КЗК-2 (Комплекс Защиты Конфигурации версии 2) предназначен для выполнения такой предварительной компиляции на стороне поставщика и обеспечения разворачивания сохраненного р-кода на стороне клиента для выполнения. Такую же схему защиты применила и сама фирма 1С в 1С:Предприятии версии 8.х (поставка без исходных кодов).
Для выполнения компиляции КЗК-2 использует средства «движка» 1С:Предприятия, а не собственную реализацию компилятора, поэтому на выходе получается такой же р-код, как и при обычной схеме работы. Но это накладывает и ограничение на возможность работы КЗК-2. Для его функционирования у пользователя обязательно должно быть установлено 1С:Предприятие, а исполняемые файла Компилятора из состава КЗК-2 должны иметь доступ к файлам «движка» 1С:Предприятия (для этого можно поместить Компилятор в тот же каталог, что и Предприятие или прописать пути в переменной окружения PATH).
После обработки КЗК-2, полученный р-код записывается в модули конфигурации (или внешних отчетов) в виде комментариев, чтобы не нарушать структуру файла конфигурации (1Cv7.md). Такой подход, кроме всего прочего, позволяет реализовать открытый программный код, который 1С:Предприятие будет выполнять если не загружена внешняя компонента Прекомпилятор из состава КЗК-2 или истек срок действия лицензии, установленный при компиляции.
Зачем может понадобиться оставлять открытый исходный код?
Например, при защите доработок, а не полностью самостоятельно разработанного модуля, по окончания срока лицензии у клиента остается вполне работоспособный модуль, но без дополнительного кода, который реализован только в скомпилированной части и отсутствует в открытом коде.
Еще один пример – создание демонстрационных версий, которые имеют полный функционал какое-то время, а после окончания срока лицензии переходят в демо-режим с ограниченным функционалом.
Стойкость защиты с использованием компиляции базируется на том, что по сути своей она является однонаправленным процессом. В общем случае невозможно получить из р-кода обратно тот же текст программы, что был до компиляции. Возможно написание специального декомпилятора, который преобразует скомпилированный модуль обратно в модуль на встроенном языке 1С:Предприятия. Но полученный текст для дальнейшего сопровождения и доработки потребует сильной ручной переработки, сравнимой с переписывание защищенного модуля «с нуля».
Для усложнения декомпиляции КЗК-2 позволяет произвести дополнительную обработку скомпилированных модулей. При этом производится «запутывание» полученного после компиляции р-кода. После этой обработки автоматическая декомпиляция усложняется на порядок. При этом следует учесть, что даже для написания простейшего декомпилятора требуется достаточно серьезные знания и навыки.
Все вышесказанное позволяет сделать вывод, что на текущий момент КЗК-2 является лучшим решением по защите модулей 1С:Предприятия 7.7 по соотношению совокупной стоимости защиты и ее стойкости.

[наверх]