Имя: Пароль:
1C
1С v8
Вынесение части кода во внешнюю компоненту
0 Адепт1С
 
25.02.18
09:17
Во многих статьях по защите обработок описано, что часть кода выносят во внешнюю компоненту, но непонятно как именно действует программист в таких случаях.
Кто занимался этим или сталкивался с подобными вынесениями обясните на простом примере сам принцип. Вроде с подключением внешних компонент все понятно.

// Пример заполнения таблицы значений

        ТЗ.Очистить();
        
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    Номенклатура.Ссылка КАК Номенклатура
        |ИЗ
        |    Справочник.Номенклатура КАК Номенклатура";
    
    РезультатЗапроса = Запрос.Выполнить();
    
    Выборка = РезультатЗапроса.Выбрать();
    
    Пока Выборка.Следующий() Цикл
        Стр = ТЗ.Добавить();
        ЗаполнитьЗначенияСвойств(Стр, Выборка);
    КонецЦикла;

Не могли бы вы на этом примере объяснить, какую часть кода обычно выносят. Логично было бы вынести часть с запросом, но тогда как из внешней компоненты мы обратимся к БД из внешней компоненты в обход платформы? Текст выносить бессмысленно. Или выносить само формирование табличной части. Поделитесь опытом кто сталкивался с этим.
1 Aleksey
 
25.02.18
09:22
рарус выносит всё.
И почему текст бессмысленно?
2 Mikhail Volkov
 
25.02.18
10:09
(0) Обычно выносят во внешнюю компоненту самое трудоемкое в выполнении с целью повышения производительности. А защита - побочный результат.
3 H A D G E H O G s
 
25.02.18
12:45
Текст ещё и зашифровать надо.
4 H A D G E H O G s
 
25.02.18
12:46
Ну а закрытый ключ можно хранить разбросанным по частям в памяти.
5 mistеr
 
25.02.18
12:47
(4) Не поможет.
6 H A D G E H O G s
 
25.02.18
12:48
(5) я понимаю. Но немного усложнит жизнь.
А как вы храните закрытый ключ?
7 Новиков
 
25.02.18
13:06
Текст выносить бессмысленно.
Почему бессмысленно? Вынес туда этот текст, в шифрованном виде. Где нужно вызываешь этот текст, дешифруешь обратно. Сам текст обработки дополнительно подвергаешь обфускации, поставляешь модуль без текста.

Соответственно, 99.9% тех, кто захочет декомпилировать модуль - отвалятся сразу же, т.к. даже исходный текст модуля при помощи известного декомпилятора не получат. Сам этот известный механизм уже давно не развивается, т.к. по слухам автор его умер. Других средств пока не видно.
Все кто же сумеет хотя бы декомпильнуть, сможет обойти твою внешнюю защиту, при желании и упорстве. Но это, 0.01% от всех, кто вообще не отвалится на этапе выше. Отсюда можно сделать вывод - просто слепи внешнюю обработку, изыми текст, обфусицируй код и сам попробуй его восстановить. Если получилось - есть смысл возиться дальше. Ну это я так думаю если что :)
8 Лефмихалыч
 
25.02.18
13:14
(0) выносить надо ту часть кода, ради которой твое поделие будут покупать. Только смысла в этом нет почти совсем.
9 Tarzan_Pasha
 
25.02.18
16:36
(8)да это защита от кидалова со стороны клиента. НЕ захочет заплатить оставшуюся часть - останется вот с таким зашифрованным модулем, который перестанет работать через некоторое время.
10 Emery
 
25.02.18
16:41
(0) > часть кода выносят во внешнюю компоненту, но непонятно как именно действует программист в таких случаях

Я вот сейчас готовлю «зарплату» для публикации в Интернете. Будет две версии для 1С77 и УФ 1С83. Не думаю, что это будет быстро, но процесс идет. Будет там защита? Думаю, что это делать надо, хотя бы ради освоения самого процесса защиты. Но я не буду стремиться к абсолютности. Если какой-нибудь умелец сумеет «нарисовать» аналог моей внешней компоненты либо просто взломать ее, где будет происходить весь процесс расчета заработной платы, то я, наверное, не сильно расстроюсь :) .

Защита там будет примерно такая. Из 1С данные будут выгружаться в формат SQLite, который соответствующий движок, может быть, встроенный во внешнюю компоненту, будет пытаться «колбасить» (при наличии достаточного количества память) в базе данных «In Memory», в разрядности операционной системы, обрабатываться и возвращаться назад в 1С (в режиме «real time» или «on line»). Однако все даты расчетного периода будут сводиться к диапазону, допустим, одного года. Т.е., если хочешь бесплатно выйти в расчетах за пределы одного триального года, то либо ломай компоненту, либо плати символические деньги за его продление. Хотя, даже здесь я не буду злобствовать и часть sql-скриптов, которые могут понадобиться пользователю для их модификации, вынесу наружу. Код же конфигураций будет полностью свободным и открытым.

(7)  > «Соответственно, 99.9% тех, кто захочет декомпилировать модуль - отвалятся сразу же, т.к. даже исходный текст модуля при помощи известного декомпилятора не получат. Сам этот известный механизм уже давно не развивается, т.к. по слухам автор его умер. Других средств пока не видно.»

Если имеется в виду Ава (Awa), то не очень давно я с ним общался на sql.ru.

Средств не видно, но они есть. Просто смысла их публиковать нет. Нужно уважать чужую собственность. Это с одной стороны. А с другой, в скрытом коде нет ничего такого, чтобы нельзя было создать самому, с нуля. Нужно просто рассматривать защищенную конфигурацию как прототип, чтобы не писать ТЗ, а просто сказать, сделай мне все также, как в этой конфе. Да и не интересно самоутверждаться за счет чужих интересов. Мы же не пиндосы. Это исключительно их стиль.
11 H A D G E H O G s
 
25.02.18
16:47
Смысл защиты то не в том, чтобы скрыть код.
Смысл защиты в том, чтобы не распространяли конфигурации.
12 H A D G E H O G s
 
25.02.18
16:49
Я думаю, 1С скоро прикрутит что-то такое в платформу. Код будет открыт, но работать все будет только у клиентов, которым ты выдал программные лицензии. Ну и внешний сервер лицензирования будет, по типу сервера взаимодействия.
13 H A D G E H O G s
 
25.02.18
16:52
Единственная проблема - уникальный идентификатор клиента. Его можно подделать в любом случае, если только он не используется в данных. 1С с подделкой идентификатора борется, привязывая ПЛ к физической машине, это немного не правильно и не удобно. Нужно привязывать к ИНН/КПП/ОГРНИП, но как это совместить с открытым кодом обработки данных?
14 H A D G E H O G s
 
25.02.18
16:53
Посмотрим, сбудется мое вангование :-)
15 mistеr
 
25.02.18
18:56
(12) Ну, СЛК уже давно есть.
16 h-sp
 
25.02.18
19:04
(10) это должен быть какой-то эксклюзивный кусок, какие-то сложные расчеты, то, что трудно повторить. А если взять обычный кусок программы и его вынести куда-то - это вообще фигня. Например раньше списание товара по партиям, запрос выносили во внешнюю компоненту. Эта компонента просто выбрасывается и пишется такой же свой кусок, причем вы будете чего-то там выдумывать, какие-то sqlite, а любой студент напишет тот же кусок на языке 1с за два дня, а ваше поделие выкинет, да еще и поржет.
17 Emery
 
26.02.18
07:50
(16) > любой студент напишет тот же кусок на языке 1с за два дня, а ваше поделие выкинет, да еще и поржет

А может быть в этом и есть смысл?

Я же писал выше, что обход защиты заключается в переписывании внешней компоненты либо в ее взломе. Структура данных и интерфейс там будут доступны для модификации, то это только половина работы. И если кто-то согласиться с этой конструкцией и сочтет необходимым написать свой расчетный модуль, то это уже хорошо, в том плане, что я программирую под 1С совершенно нестандартно (1С:Несовместимо), следовательно, таким образом, найду себе последователей моего стиля программирования.

Однако писать весь расчетный модуль на 1С это явно глупо. По крайней мере, на «семерке» (а ей еще жить лет 20-30). «Восьмерка» однако, тоже не показывает чудеса производительности (где-то видел рекламу мощного сервера, о котором писали, что на нем будет шустро выполняться даже 1С!). Да и времени это займет не мало. Студенты хорошо знают «зарплатное» законодательство?

У меня в первой версии «зарплаты» расчетный модуль в исходниках на VisualFoxPro занимает более полумегабайта. Так там код заточен только под нашу фирму. Желание понравиться если не всем, то многим, заметно увеличит этот размер.

Так что посмотрим, кто будет смеяться последним :) .
18 Джексон
 
26.02.18
11:30
(17) > я программирую под 1С совершенно нестандартно (1С:Несовместимо), следовательно, таким образом, найду себе последователей моего стиля программирования.

Ты сломал мне мимиметр.
19 H A D G E H O G s
 
26.02.18
11:42
"что я программирую под 1С совершенно нестандартно (1С:Несовместимо),"

Ты можешь даже не закрывать код, нормальные люди будут глазокровоточить и шипеть на него, но никак не использовать.
20 Emery
 
26.02.18
12:09
А что слово «Несовместимо» всегда означает слово «Плохо»? Да мне кажется, что назови я свой стиль «1С:Самое плохое программирование на этом скриптовом движке, которое существует в природе (в переводе на литературный язык)!» и то наверняка найдутся желающие заценить этого зверя. А так похоже на классику: «Я Пастернака не читал, но я полностью с ним не согласен!» :)
Независимо от того, куда вы едете — это в гору и против ветра!