gifts2017

В помощь пользователям КЗК 2

Опубликовал script Мальчинко (script) в раздел Программирование - Защита и шифрование

Задача:
Защитить внеш. обработку или отчет с помощью КЗК 2 - передать клиенту с тем что бы он мог ее запустить, но без копирования файла precomp.dll в каталог ИБ.

Так же может применяться и для блоков конфигурации.

 

Решение

Использовать разработку:

Размещение двоичных данных в объектах 1С

http://infostart.ru/public/14459

Посмотреть на "живой" пример можно скачав

http://infostart.ru/public/download.php?file=64469

Способ:

1)   Обрабатываем файл precomp.dll обработкой  из "Размещение двоичных данных в объектах 1С" и получаем файл картинки. Вставляем этот файл в первую таблицу (если их несколько) в внеш. обработке в любое место. Картинка вставляется как объект картинка. Присваиваем ей имя "precomp"

2)   Далее обрабатываем код обработки с помощью КЗК 2 получаемзашифрованный код и блок с вызовом загрузки модуля защиты.Например:

// Текст автоматически вставлен при компиляции с помощью "Комплекса защиты конфигурации (версия 2.0)"

Попытка      // провека на загруженность компоненты Прекомпилятор,      // чтобы избежать зацикливания при окончании срока лицензии      Лицензия = СоздатьОбъект("КЗК2.Лицензия");Исключение      // загрузка компоненты Прекомпилятор      Если ЗагрузитьВнешнююКомпоненту("precomp.dll") = 0 Тогда           // при неудаче вывод предупреждения пользователю            Предупреждение("Компонента прекомпиляции недоступна!");      Иначе           // после удачной загрузки создаем внутренний объект компоненты            Лицензия = СоздатьОбъект("КЗК2.Лицензия");            // запускаем служебный метод, который перекомпилирует и перезапустит модуль            Лицензия.ПерезапуститьМодуль();           // ВНИМАНИЕ!             // Метод ПерезапуститьМодуль() является служебным и предназначен           // для вызова только из внешних обработок из стартера скомпилированной обработки.            // Самостоятельный вызов этого метода где-нибудь еще может привести к падению 1С:Предприятия      КонецЕсли;КонецПопытки;

 

//[BEGIN COMPILED]//Далее идет закодированный текст модуля 

3) в самый верх вставляем код извлечения файла precomp.dll из картинки в каталог ИБ. Текст можно копировать.

// выгрузка компонентов защиты "Комплекса защиты конфигурации (версия 2.0)"Попытка           глWSH = СоздатьОбъект("WScript.Shell");       ИмяФайла = "precomp.dll";      ИдентификаторФайла = "precomp";      РазмерФайла = "61440"; //- это размер файла-картинки из обработки получения картинки               Если ФС.СуществуетФайл(КаталогИБ()+ИмяФайла) = 0 Тогда            //РаспаковатьBin(ИмяФайла,ИдентификаторФайла,РазмерФайла)            КаталогФормы="";            ИмяФормы="";            РасположениеФайла(КаталогФормы,ИмяФормы);            ИмяВременногоФайла=КаталогИБ()+ИмяФайла;            ТекстСкрипта="            |Sub Main            |     Dim FSO,F            |     Set FSO = CreateObject(""Scripting.FileSystemObject"")            |     Set F = FSO.OpenTextFile("""+КаталогФормы+ИмяФормы+""",1)            |     Str = """"            |     BeginFind = 0            |     Do            |           Char = F.Read(1)            |           Str = Str & Char            |           If BeginFind = 0 Then            |                If Right(Str,"+СокрЛП(СтрДлина(ИдентификаторФайла))+")="""+ИдентификаторФайла+""" Then            |                       BeginFind = 1            |                       Str = """"            |                 End If            |           Else            |                 If Right(Str,2) = ""BM"" Then            |                       F.Skip(1076)            |                       Str=F.Read("+СокрЛП(РазмерФайла)+")            |                       F.Close            |                       Set F=FSO.CreateTextFile("""+ИмяВременногоФайла+""")            |                       F.Write(Str)            |                       F.Close            |                       Exit Do            |                 End If            |           End If            |     Loop While F.AtEndOfStream=0            |End Sub            |";            VBS=СоздатьОбъект("MSScriptControl.ScriptControl");             VBS.Language="vbscript";             VBS.Timeout=-1;             VBS.AddCode(ТекстСкрипта);             VBS.Run("Main");      КонецЕсли; Исключение      глWSH = 0;      Сообщить("> Не удалось создать объект ""WScript.Shell""       |Ничего страшного... можно продолжать работу...       |Сообщите Программисту 1C!","i");КонецПопытки;

 

******************************************

Все. Когда пользователь откроет такую обработку с работает начальный код, который выгрузит из картинки библиотеку и поместит в каталог ИБ. Последующий код найдет, существующий уже, файл precomp.dll и загрузит защиту КЗК 2 в 1С. Далее обработка откроется и защищенный код будет успешно скомпилирован. 

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Александр Рытов (Арчибальд) 28.01.10 13:09
2. Епрст (Ёпрст) 28.01.10 13:15
Ну и ?
А что принципиально нового то ?...
Давно ужо все пихают в ert всё что не поподя - файло,ВК и т.д...
Тот же формекс или 1c++
3. АЛьФ (АЛьФ) 28.01.10 14:19
Я вот тут подумал: может делать подобное внедрение прямо в модуль обработки при компилировании?
4. Artem N (Artem N) 28.01.10 14:32
Декомпилятор для 1С 7.7 уже написан. Всё бесполезно ;)
5. Евгений Мартыненков (JohnyDeath) 28.01.10 15:55
6. Artem N (Artem N) 28.01.10 16:06
(5) Релиз пока не вышел :-)
Есть картинка только :-)
7. script Мальчинко (script) 28.01.10 17:06
А про декомпилятор информация откуда :?:
8. Artem N (Artem N) 28.01.10 17:26
9. Донат Каверин (Donat) 28.01.10 18:45
А что автор говорит по поводу релиза?
Будет ли он открытым и когда?
10. Artem N (Artem N) 28.01.10 19:38
(9) Релиз будет, факт.
По поводу открытости вопрос сложный. Скрывать там особо нечего (написано всё это, хе-хе, на C#), но и финансовый вопрос интересен. Когда -- думаю, в очередной период сдачи налогового расчёта по авансовым платежам по транспортному налогу :D

P.S.: Декомпилятор не работает без запущенного экземпляра 1С. Фича! :)
11. script Мальчинко (script) 28.01.10 20:41
Я эту тему создавал не для обсуждения декомпилятора :evil:
Делайте отдельную тему и мусорте там
12. Ярослав Радкевич (WKBAPKA) 29.01.10 11:48
вот если бы для 8.1 была бы приблуда, а так для 7.7. уже не актуально
13. gavril (gavril) 29.01.10 12:28
(12) +1
обидно что пообещанное на конец 2009-го так и не вышло :(
14. Ярослав Радкевич (WKBAPKA) 29.01.10 12:55
2(13): обещаного 2 года ждут ;)
15. Юрий Тимофеев (Tatitutu) 29.01.10 13:31
(10)
P.S.: Декомпилятор не работает без запущенного экземпляра 1С. Фича!

а на рисунке (6) НЕТ запущеннного )))
да рисунок...
16. script Мальчинко (script) 29.01.10 13:39
Задолбали короче говоря...
Какая польза от этого декомпилятора то
Серьезных коммерческих продуктов с помощью КЗК все равно никто не делает.
Многие как и Я пользуются КЗК что бы временно защитить разработку которая была сделана на условиях оплаты по факту. Что бы тебя не кинули
После оплаты я код всегда открываю. Многие делают точно так же.
Оставлять код закодированным просто не удобно. Приходишь к клиенту нужно что то поправить а опа код закрыт исходников нет....
По этому давайте прекратим эту тему про де компилятор вообще.
17. Юрий Тимофеев (Tatitutu) 29.01.10 14:06
(16) Как скажешь...
- тему твою в форуме поднял
- плюс поставил
- комментарий написал
и все для того чтобы в лицо сказали "ЗАДОЛБАЛИ"
хорошо хоть не послал :cry: и на том спасибо.

Красиво пишешь , но не верю ... слова расходятся с делом.

ответ тогда следует читать в (2) там все четко написано
18. script Мальчинко (script) 29.01.10 14:09
Извините кого обидел - но тему декомпилятора я не поднимал.
19. script Мальчинко (script) 29.01.10 14:10
Напостил про декомпилятор Artem N
20. АЛьФ (АЛьФ) 29.01.10 14:49
2(6) Судя по картинке, декомпилятор этот делается на основе демки КЗК. Если это так, то автора ждет неприятный сюрприз на реальных защищенных обработках. И его желание финансово что-нибудь поиметь с этого вполне может обернуться не очень хорошими последствиями для здоровья.
21. Artem N (Artem N) 29.01.10 18:38
(20) На картинке вообще testcases, неужели не очевидно? :) Задачи поломать КЗК2 автор не ставил.
(19) Извини, так получилось. Но в (7) ты сам меня поддержал ;)
22. АЛьФ (АЛьФ) 30.01.10 10:05
2(21) "Задачи поломать КЗК2 автор не ставил" - очень странно видеть такое утверждение в комментариях к теме о КЗК в контексте декомпилятора. С учетом того, что в 7.7 и декомпилировать-то нечего, если не используется КЗК.
23. Artem N (Artem N) 30.01.10 16:16
(22) Если в настройках КЗК2 "Дополнительная обработка скомпилированного кода" флажок установлен, то декомпилятор, понятно, не декомпилирует :-) Потому что он для этого не предназначен.
А вот если этот флажок сброшен, то на выходе получаем девственно чистый код...

Но я продолжаю придерживаться точки зрения (4), потому что деобфуксация возможна ;)
24. АЛьФ (АЛьФ) 30.01.10 16:44
2(23) Попробуй. За руки никто не держит. Пример конфиги со скомпилированным глобальником я тебе выслал. Как получишь из него "девственно чистый код", милости просим.
25. Александр Зубцов (iov) 30.01.10 16:58
Итак подведя итог ПОИМЕТЬ халяву желание не убить!
и желание сделать красиво - практично - безапасно (но с оплатой труда) тоже. Как результат ? правильно основное правило надо делать продукт взлом которого в разы дороже и сложнее чем просто купить (потом (когда обьем продаж спадет ) -открывать код (и делать закрытый продукт с новыми функциями)- как рекламно распространительный ход работает на ура).
26. Artem N (Artem N) 30.01.10 17:07
(24) Автору писькой меряться не с руки :D Да и тебе не 20 лет вроде :| Поэтому "на слабо" поведётся тот, у кого будет желание доработать декомпилятор, выпущенный под BSD-лицензией.
27. АЛьФ (АЛьФ) 30.01.10 18:22
2(26) Да никакого "на слабо". Подобные "декомпиляторы" были еще до выпуска КЗК 2.0, еще на этапе его первоначального публичного тестирования. Если интересно, можешь покопать архивы Мисты и Одинэссии на эту тему. Просто не вижу в этом повода для бравады типа (4). Еще раз: будет чем реально похвастать - милости просим.
28. Аркадий Кучер (Abadonna) 30.01.10 20:04
11.script 28.01.2010 20:41:29
Я эту тему создавал не для обсуждения декомпилятора
Делайте отдельную тему и мусорте там

Автор-то прав, однако :D
29. Артур Аюханов (artbear) 31.01.10 10:25
(28) Согласен, автор прав!
Предупреждаю ВСЕХ - Буду модерить все дальнейшее в ветке не по теме!
30. Аркадий Кучер (Abadonna) 31.01.10 10:26
(29) Ага, только, думаю, "они больше не будут" ;)
31. Артур Аюханов (artbear) 31.01.10 12:01
(30) Если автор темы попросит, могу скрыть все сообщения не по теме
32. Алексей Константинов (alexk-is) 31.01.10 12:59
(0) Почему бы тексты модулей в описании не покрасить? :)
artbear; script; +2 Ответить 1
33. script Мальчинко (script) 31.01.10 14:52
Почему бы тексты модулей в описании не покрасить?

Покрасил :D
34. Артур Аюханов (artbear) 01.02.10 08:13
(33) Что скажешь на (31) ?

(32) ОФФ. Скрытая реклама :) :D ?
35. Алексей Константинов (alexk-is) 01.02.10 08:51
(34) Я намекнул на качество оформления и направление, в котором можно его улучшить. Автор прислушался к рекомендациям и поправил публикацию. Материал стал выглядеть лучше. Как пользователь КЗК 2.0 я оценил материал как полезный. Для меня полезный и, что не мало важно, неплохо оформленный. За что собственно и поставил плюс.
...и это несмотря на то, что при оформлении публикации не использовалась Разукрашка, что видно по HTML-коду страницы.
36. АЛьФ (АЛьФ) 01.02.10 09:57
Так как пользователи КЗК относятся к мысли в (3)?
37. Алексей Прилепский (IamAlexy) 01.02.10 10:12
38. Алексей Константинов (alexk-is) 01.02.10 10:48
(36) Можно конечно, но актуальнее будет выпустить КЗК для 8.1.
...или обещенного 3 года ждут? :)
39. Алексей Прилепский (IamAlexy) 01.02.10 10:58
(38) скоро будет три.. недолго осталось :)
40. Duke (SvSoft) 03.02.10 11:25
(36) Ну, как пользователь КЗК2, скажу следующее:
Если тебе, Альф, не влом, то в виде опции, почему бы и нет ;)
41. Константин Исиченко (IsiKosta) 30.05.10 15:37
(36) АЛьф, сделайте возможность встраивать precomp.dll, никак пользователь не может запустить защищенную обработку. Не могу понять, что он не так делает.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа