Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Волшебство программирования на 1С:Предприятие 7.7 и 8.0



Волшебство программирования на 1С:Предприятие 7.7 и 8.0

v8: Защита исходного кода конфигураций в 1С 8.0

Рассмотрены все типовые способы защиты исходного кода конфигураций в 1С 8.0Автор статьи: Гений 1С | Редакторы: eva1
Последняя редакция №2 от 27.05.07 | История
URL: http://kb.mista.ru/article.php?id=519

Ключевые слова: исходный код,защита,шифрование


В 1С можно защитить исходный код общих модулей и модулей объектов.
Код формы защитить нельзя.


Пароль на код модуля


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

Откройте любой код модуля.
Выберите пункт меню Текст - Установить Пароль. Введите пароль и подтверждение.

Исключение кода модуля


С помощью поставки конфигурации можно вообще исключить исходный код модуля из конфигурации - он будет храниться в скомпилированном виде. Причем делается это все очень просто.

Открываете конфигурацию.
Через пункт Конфигурация - Поставка конфигурации - Настройка поставки заходите в форму настройки поставки, выбираете текст каких модулей нужно исключить из поставки (можно выбрать сразу все для каждого уровня иерархии). Выберите также галочку "Файл поставки может использоваться для обновления".

Далее через пункт Конфигурация - Поставка конфигурации - Комплект поставки создаете CF-файл.

Теперь этот CF файл можно загружать у клиента - в этом CF файле нужные модули исключены (защищены от просмотра).

Настройки поставки хранятся в CF-файле, но к сожалению их нельзя изменить через сравнение конфигураций, только путем полной загрузки CF-файла. Поэтому лучше сделать один общий модуль "КлиентСервер", где хранить функции, которые используют директивы препроцессора, а все остальные модули закрыть.



-----------------------------------------------------


Но к сожалению это слабая защита. Простенький пример подтверждает это.
Вот маленький кусок программы:
к=3;

строка="йцукен";
к_симв_строки=Лев(строка,к);


имеющий вот такой байт-код:
(он получается когда ставится пароль на модуль и когда делается поставка без текстов)

{1,
{"Cmd",15,0,
{1,2},
{2,0},
{4,0},
{16,0},
{1,3},
{2,1},
{4,1},
{16,0},
{1,4},
{2,2},
{2,1},
{2,0},
{57,0},
{16,0},
{22,0}
},
{"Const",2,
{"N",3},
{"S","йцукен"}
},
{"Var",3,
{"к",0,-1},
{"строка",0,-1},
{"к_симв_строки",0,-1}
}
} 




А вот программа декомпилирования этого примера, написать которую может каждый второй 1С-ник:

Функция ПолучитьЗначениеПозиции(ном,стр,УбратьКавычки=Ложь)
    рез="";
    к2=ном-1;
    Для к=2 По СтрДлина(стр)-1 Цикл

        а=Сред(стр,к,1);
        
        Если к=СтрДлина(стр)-1 и а="}" Тогда

            Прервать;
        ИначеЕсли а="," Тогда
            Если рез<>"" Тогда

                Прервать;
            КонецЕсли; 
            к2=к2-1;
        ИначеЕсли к2=0 Тогда
            рез=рез+а;
        КонецЕсли; 
    КонецЦикла;
    Если УбратьКавычки Тогда

        Если Лев(рез,1)="""" Тогда
            рез=Сред(рез,2);
        КонецЕсли; 
        Если Прав(рез,1)="""" Тогда

            рез=Лев(рез,СтрДлина(рез)-1);
        КонецЕсли; 
    КонецЕсли; 
    Возврат рез;
КонецФункции // ПолучитьЗначениеПозиции



Процедура ВыполнитьДекомпиляцию()
    Перем МасКонст;  //"Const"
    Перем МасПерем;  //"Var"
    Текст=ЭлементыФормы.ПолеТекстовогоДокумента1; //исходный текст байт-кода

    КоличествоСтрок=Текст.КоличествоСтрок();
    сч=1;  //поиск первой строки
    стр0=Текст.ПолучитьСтроку(сч);
    Пока Лев(стр0,1)<>"}" и сч<КоличествоСтрок Цикл

        сч=сч+1;
        стр0=Текст.ПолучитьСтроку(сч);
    КонецЦикла; 
    сч=сч+1;
    стр0=Текст.ПолучитьСтроку(сч);
    МасКонст=Новый Массив;  
    Если Лев(стр0,8)="{""Const""" Тогда

        сч=сч+1;
        стр0=Текст.ПолучитьСтроку(сч);
        Пока Лев(стр0,1)<>"}" и сч<КоличествоСтрок Цикл
            МасКонст.Добавить(ПолучитьЗначениеПозиции(2,стр0));
            сч=сч+1;
            стр0=Текст.ПолучитьСтроку(сч);
        КонецЦикла; 
        сч=сч+1;
        стр0=Текст.ПолучитьСтроку(сч);
    КонецЕсли;    
    МасПерем=Новый Массив;
    Если Лев(стр0,6)="{""Var""" Тогда

        сч=сч+1;
        стр0=Текст.ПолучитьСтроку(сч);
        Пока Лев(стр0,1)<>"}" и сч<КоличествоСтрок Цикл
            МасПерем.Добавить(ПолучитьЗначениеПозиции(1,стр0,Истина));
            сч=сч+1;
            стр0=Текст.ПолучитьСтроку(сч);
        КонецЦикла; 
    КонецЕсли;    
    мас=Новый Массив;
    Результат="";
    сч=3;
    стр0=Текст.ПолучитьСтроку(сч);
    Пока Лев(стр0,1)<>"}" и сч<КоличествоСтрок Цикл

        зн1=Число(ПолучитьЗначениеПозиции(1,стр0));
        зн2=Число(ПолучитьЗначениеПозиции(2,стр0));
        Если зн1=1 Тогда

            //Результат=Результат+"// номер строки "+зн1+","+зн2+Символы.ПС;
            Результат=Результат+Символы.ПС;
        ИначеЕсли зн1=2 Тогда
            мас.Добавить(МасПерем[зн2]);
        ИначеЕсли зн1=4 Тогда

            Результат=Результат+мас[0]+"="+МасКонст[зн2];
            мас.Очистить();
        ИначеЕсли зн1=16 Тогда 
            Если мас.Количество()>1 Тогда

                Результат=Результат+мас[0]+"="+мас[1];
            КонецЕсли; 
            мас.Очистить();
            Результат=Результат+";";
        ИначеЕсли зн1=22 Тогда 
        ИначеЕсли зн1=57 Тогда 
            мас[1]="Лев("+мас[1]+","+мас[2]+")";
            мас.Удалить(2);
        Иначе

            Результат=Результат+"// неизв. код "+зн1+","+зн2+Символы.ПС; 
        КонецЕсли;    
        сч=сч+1;
        стр0=Текст.ПолучитьСтроку(сч);
    КонецЦикла; 
    сообщить(Результат);
КонецПроцедуры



27 июня в 10:30

компания «1-й Архитектор бизнеса» приглашает на бесплатный семинар

Платформа 1С:Предприятие версии 8.1. Что нового, как перейти...

Программа

Часть 1. Новое в версии 8.1 платформы «1СПредприятие 8»

  • Повышена производительность и масштабируемость системы при одновременной работе большого количества пользователей.
  • Улучшена работа системы в условиях пиковых нагрузок.
  • Повышена масштабируемость системы.
  • Возросла скорость выполнения операций; уменьшились требования к объему оперативной памяти.
  • И другие преимущества новой версии.
  • Для пользователей:
  • Новые интерфейсные (usability) возможности.
  • Улучшены порядок запуска и перезапуска системы.
  • Сохранение файлов в MS Excel.
  • Более комфортные режимы обновления программы.
1. Для пользователей:
  • Новые интерфейсные (usability) возможности.
  • Улучшены порядок запуска и перезапуска системы.
  • Сохранение файлов в MS Excel.
  • Более комфортные режимы обновления программы.
  2. Для администраторов:
  • Новые механизмы обновления конфигурации.
  • Изменения журнала регистраций.
  • Дополнительные возможности администрирования клиент-серверного варианта работы.
  • Изменения процесса тестирования и исправления информационной базы.
  • Новый программный уровень - кластер серверов 1С:Предприятия 8.1.
  • 1С:Предприятие 8.1 и Linux.
  • Поддержка системы управления базами данных PostgreSQL и IBM DB2.
  • Новые возможности отладчика.
  • Механизм заданий.
Часть 2. Что дает для предприятия переход на 8.1
  • Лицензионное ПО
  • Экономическая эффективность
  • Защищенность
Часть 3. Особенности перехода с 8.0 на 8.1
Часть 4. Особенности перехода с 7.7 на 8.1

Условия участия: Участие бесплатное. Обязательна предварительная регистрация

Семинар будет проходить в офисе на Савеловской.
Запись: тел/факс: (495) 937-66-35, E-mail: marketing@1ab.ru
или заполните регистрационную анкету на сайте http://www.1cv8.ru

Официальный сайт рассылки - www.mista.ru
Волшебный форум -
www.forum.mista.ru
Книга знаний - www.kb.mista.ru

С уважением,
Станислав Митичкин (Волшебник)
stasmit@mail.ru



В избранное