You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 16 Next »

Для того чтобы приступить к защите программного обеспечения на платформе 1С:Предприятие необходимо:

Порядок действий для защиты конфигурации

Подготовка конфигурации

  1. Определение списка модулей для защиты.
    Защитить можно общие модули, модули отчетов и обработок, а также модули менеджеров объектов. Названия модулей не должны содержать синтаксических ошибок и директив процессора. Также не допускается использование методов глобального контекста "Выполнить" и "Вычислить". Недопустима установка проверки ключа для функций, не содержащих ни одной переменной (будет вызвано исключение "Функция слишком простая для защиты").
  2. Установка пароля на защищаемые модули.
    Выберите пункт меню: Текст Установить пароль.
    Это необходимо для компиляции исходного текста в опкод).
    Можно установить любой пароль, только его необходимо запомнить.

    В процессе установки защиты исходный текст модуля из результирующей конфигурации будет удалён.
  3. Сохранение библиотеки защиты.
    Это необходимо для функционирования системы защиты.
    Образ библиотеки рекомендуется сохранить в макете типа "Двоичные данные".

    Установить систему защиты можно только при использовании операционной системы Windows.

  4. Создание функции GetUSBKeyComponentLocationV3.

    Функция GetUSBKeyComponentLocationV3 не нужна, если не требуется процедура проверки ключа.


    Эта функция должна возвращать полное имя макета, в котором хранится образ библиотеки защиты, или полное имя файла библиотеки защиты.
    Также можно использовать в макете zip архив с файлами библиотек и файлом манифеста.
    Функция GetUSBKeyComponentLocationV3 вызывается однократно перед загрузкой библиотеки защиты.

    Пример реализации функции GetUSBKeyComponentLocationV3
    // GetUSBKeyComponentLocationV3
    //
    //Возвращаемое значение:
    //    Строка, расположение компоненты защиты для текущего используемого типа платформы
    //
    Функция GetUSBKeyComponentLocationV3()
        
        МетаОбработки = Метаданные.Обработки.МатрицаРолейПользователей;
        
        Макет = ?(Макет = Неопределено, МетаОбработки.Макеты.Найти("КомпонентаЗащитыV3_Hasp_zip"), Макет);
        Макет = ?(Макет = Неопределено, МетаОбработки.Макеты.Найти("КомпонентаЗащитыV3_Guardant_zip"), Макет);
        
        Если Макет = Неопределено тогда
            СистемнаяИнформация = Новый СистемнаяИнформация;
            
            Если СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86 тогда
                Постфикс = "Win32";
            ИначеЕсли СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86_64 тогда
                Постфикс = "Win64";
            ИначеЕсли СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Linux_x86 тогда
                Постфикс = "Linux32";
            ИначеЕсли СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Linux_x86_64 тогда
                Постфикс = "Linux64";
            КонецЕсли;
            Макет = ?(Макет = Неопределено, МетаОбработки.Макеты.Найти("КомпонентаЗащитыV3_Hasp_" + Постфикс), Макет);
            Макет = ?(Макет = Неопределено, МетаОбработки.Макеты.Найти("КомпонентаЗащитыV3_Guardant_" + Постфикс), Макет);
        КонецЕсли;
    
        Если Макет = Неопределено тогда
            ВызватьИсключение("Макет с образом компоненты защиты не найден");
        КонецЕсли;
    
        Возврат Макет.ПолноеИмя();
    КонецФункции

    Для ключей HASP:
    При необходимости в защищаемом модуле может быть размещена функция GetUSBKeyObjectNative(ModuleID). При интеграции проверки ключа в защищаемый модуль содержимое этой функции будет замещено таким образом, что функция будет возвращать используемый объект компонента. Данную функциональность можно использовать, например, для получения информации о статусе лицензии.
    Если значение параметра ModuleID неопределенно, то проверка лицензии не будет выполняться, а будет инициализирован объект компонента. Этот объект может использоваться для вызова методов GetInfo и Update.

    Пример реализации функции GetUSBKeyObjectNative(ModuleID) для отладки
    // GetUSBKeyObjectNative
    //
    //Параметры
    //    ModuleID    - номер логического модуля продукта
    //
    //Возвращаемое значение:
    //    Объект компоненты
    //
    //
    Функция GetUSBKeyObjectNative(ModuleID)
        Перем USBKeyObject, USBKeyComponentFileName, USBKeyComponentName;
        
        USBKeyComponentName = "AddIn.HASP_DEMOMA.USBKeyLibV3";
        Попытка
            USBKeyObject = Новый(USBKeyComponentName, Неопределено);
        Исключение
            USBKeyComponentFileName = GetUSBKeyComponentLocationV3();
            Если НЕ AttachAddIn(USBKeyComponentFileName, "HASP_DEMOMA", AddInType.Native) тогда
                ВызватьИсключение "Ошибка подключения компоненты " + USBKeyComponentFileName;
            КонецЕсли;
            USBKeyObject = Новый(USBKeyComponentName, Неопределено);
        КонецПопытки;
        
        Если ModuleID <> Неопределено тогда
    
            Scope = GetUSBKeyScope(ModuleID);
            Если Не USBKeyObject.Login(ModuleID, Scope) тогда
                ВызватьИсключение(USBKeyObject.GetLastError());
            КонецЕсли;
        КонецЕсли;
        
        Возврат USBKeyObject;
    КонецФункции //GetUSBKeyObjectNative
    Пример использования функции GetUSBKeyObjectNative(ModuleID)
    // ПолучитьИнформациюОЛицензии
    //
    //Параметры
    //    ModuleID    - номер логического модуля продукта
    //
    //Возвращаемое значение:
    //    Информация о лицензии
    //
    // Функция возвращает информацию о лицензии в формате XML. 
    //
    //Примечание:
    // Метод "GetSessionInfo" компоненты защиты доступен только при использовании ключей HASP 
    //
    Функция ПолучитьИнформациюОЛицензии(ModuleID) Экспорт
        Объект = GetUSBKeyObjectNative(ModuleID);
        Возврат Объект.GetSessionInfo("<haspformat format=""sessioninfo""/>");
    КонецФункции

    При необходимости в защищаемом модуле может быть размещена функция GetUSBKeyScope(ModuleID). При наличии эта функция будет вызвана при инициализации объекта лицензирования. Если параметры поиска не требуются, то она должна вернуть параметры поиска ключа в виде строки "Неопределенно".

    Пример использования функции GetUSBKeyScope(ModuleID)
    // GetUSBKeyScope
    //
    //Параметры
    //    ModuleID    - номер логического модуля продукта
    //
    //Возвращаемое значение:
    //    Строка фильтра параметров ключей
    //
    // Функция определяет параметры поиска ключей
    //
    //Примечание:
    // Метод "GetInfo" компоненты защиты доступен только при использовании ключей HASP 
    //
    //
    Функция GetUSBKeyScope(ModuleID)
        Перем Результат;
        KeyID = Константы.KeyID.Получить();
        Если ЗначениеЗаполнено(KeyID) тогда
            Результат = "<?xml version=""1.0"" encoding=""UTF-8"" ?>
                |<haspscope>
                |    <hasp id=""" + KeyID + """ />
                |</haspscope>";
        КонецЕсли;
        Возврат Результат;    
    КонецФункции
  5. Сохранение конфигурации. 
    Выберите пункт меню: Конфигурация – Сохранить конфигурацию в файл...
  6. Запуск конфигурации. 
    При запуске открывается форма для установки защиты.

Использование формы защиты конфигурации


  • No labels