0. karpik666 2363 27.03.16 08:08 Сейчас в теме

Защита разработок от копирования (Обычная и Управляемая форма)

Вы разработчик, и разработали чудесный алгоритм, но не хотите ни с кем с ним делиться - используйте данную разработку, и тогда предполагаемый злоумышленник, глядя на такой код, просто плюнет и начнет писать свой.

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо
98. MaxS 1581 03.04.17 08:31 Сейчас в теме
(97) Пример кода разборки/сборки обработки ))

Пока Истина Цикл

КаталогОбработки = ПолучитьИмяВременногоФайла();
СоздатьКаталог(КаталогОбработки);
ИмяФайлаXMLОбработки = КаталогОбработки + "\ОбработкаОбмена.xml";
ПутьКИБ = ОбщегоНазначения.ПолучитьПредставлениеИнформационнойБазы();
ИмяЛогФайла = КаталогОбработки +"\" + ФайлОбработки.ИмяБезРасширения+"_log.txt";

//{ Выгрузка обработки в файлы
КомандаЗапуска = КаталогПрограммы() + "1cv8.exe" 
+ " DESIGNER "
+ "/F " + ПутьКИБ
+" /DumpExternalDataProcessorOrReportToFiles "
+ ВКавычках(ИмяФайлаXMLОбработки)
+ " " + ВКавычках(ФайлОбработки.ПолноеИмя)
+ "  /Out" + ВКавычках(ИмяЛогФайла);

КодВозврата = Неопределено;
ЗапуститьПриложение(КомандаЗапуска, ФайлОбработки.Путь, Истина, КодВозврата);
СтрЛог = ПрочитатьФайлВСтроку(ИмяЛогФайла, КодировкаТекста.ANSI);
//}

Если Найти(СтрЛог,"Выгрузка завершена.")=0 Тогда
	Прервать;
КонецЕсли;

//{ Загрузка обработки из файлов
ЗаписатьСтрокуВФайл(КаталогОбработки + "\ОбработкаОбмена\Ext\ObjectModule.bsl", ТХ.ПолучитьТекст());
КомандаЗапуска = СтрЗаменить(КомандаЗапуска,"DumpExternalDataProcessorOrReportToFiles","LoadExternalDataProcessorOrReportFromFiles");

КодВозврата = Неопределено;
ЗапуститьПриложение(КомандаЗапуска, ФайлОбработки.Путь, Истина, КодВозврата);
СтрЛог = ПрочитатьФайлВСтроку(ИмяЛогФайла, КодировкаТекста.ANSI);
//}


Если Найти(СтрЛог,"Загрузка завершена.")=0 Тогда
	Прервать;
КонецЕсли;

Результат = Истина;
УдалитьФайлы(КаталогОбработки);
Прервать;

КонецЦикла;

Показать

Может быть когда-нибудь подготовлю cfu и опубликую решение под ключ.
teflon; 33lab; olgerd666; karpik666; +4 Ответить
99. vas2005 8 03.09.17 23:46 Сейчас в теме
При запускена УФ ругается(((
хотя на обычных формах работает(((

{Форма.Form.Форма(109,25)}: Тип не определен (ОписаниеОповещения)
лДиалог.Показать(Новый <<?>>ОписаниеОповещения("ОткрытьКодЗавершение", ЭтаФорма));
{Форма.Form.Форма(142,25)}: Тип не определен (ОписаниеОповещения)
лДиалог.Показать(Новый <<?>>ОписаниеОповещения("СохранитьКодЗавершение", ЭтаФорма));
{Форма.Form.Форма(687,110)}: Слишком много фактических параметров (ОткрытьФорму)
ОткрытьФорму("ВнешняяОбработка.ОбфускацияКода1С.Форма.ФормаВыбораЗаполненияУпр", , Элементы.ДеревоАнализа,,,<<?>>,,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
100. karpik666 2363 04.09.17 09:39 Сейчас в теме
(99) Здравствуйте, скорее всего у вас древняя платформа для управляемых форм, поставьте хотя быть 8.3.6
103. Dnki 14.09.17 16:58 Сейчас в теме
Поразила идея сделать красиво: формы Об и Упр в одном флаконе.
Однако! тексты обработки просто продублированы!
Где гарантия, что алгоритмы идентичны? Я пользуюсь ОФ. Она поддерживается?
104. karpik666 2363 14.09.17 17:09 Сейчас в теме
(103) на обычной и управляемой форме одинаковый код, вы правы, по поводу универсальности, однако на управляемой форме весь код исполняется на клиенте, если я захочу, чтобы он был одинаков и там и там, то я его должен поместить в модуль объекта обработки "на сервер".
105. JohnPawn 169 11.11.17 22:18 Сейчас в теме
Для более корректного переноса, которое зависит от "Ограничение количества символов в строке", предлагаю внести 3 поправки в функцию
Функция ПроставитьРазделительСтрок()

1) перед циклом
Для лСч=0 По лКолвоСтрок Цикл 
добавляем переменую
лНачалоБлока=0;

2) внутри цикла заменяем
Если лНачало-лПозиция>=ОграничениеКолВаСимволов Тогда
на
Если лНачало-лНачалоБлока>=ОграничениеКолВаСимволов Тогда

3) внутри
Если лНачало-лНачалоБлока>=ОграничениеКолВаСимволов Тогда КонецЕсли;
добавляем
лНачалоБлока=лНачало;

Без поправок ограничение срабатывает, только если расстояние между соседними ";" больше ограничителя символов. Обработку скачивал давно.
karpik666; +1 Ответить
107. karpik666 2363 02.04.18 15:21 Сейчас в теме
(105) большое спасибо, давно не занимался данной обработкой.
108. maksa2005 272 13.08.18 07:02 Сейчас в теме
109. maksa2005 272 30.08.18 12:57 Сейчас в теме
Спасибо разработчику. Защитил хоть как-то свои платные творения))
111. d.zhukov 396 27.09.18 10:19 Сейчас в теме
Спасибо за обработку. Вопрос разработчику: как добавить исключения? у меня слово "запрос" и "массив" заменяет в итоге обработка валится с ошибкой после обфускации
113. karpik666 2363 27.09.18 10:37 Сейчас в теме
(111) Добрый день, тут я думаю не обойтись словами исключениями, в данном случае нужно обрабатывать целиком конструкцию "новый", давное не занимался обработкой, есть многое в планах.
112. d.zhukov 396 27.09.18 10:32 Сейчас в теме
Если у меня строчка "Запрос = Новый Запрос" заменяет соответственно оба слова. Желательно на такой случай придумать список слов-исключений
114. d.zhukov 396 28.09.18 12:41 Сейчас в теме
и еще один странный момент. после обфускации все переменые уходят в конец текста. может это как то настраивается?
115. artfa 36 28.09.18 14:32 Сейчас в теме
на управляемых формах не поддерживало инструкции препроцессора, исправили?
116. d.zhukov 396 04.10.18 14:24 Сейчас в теме
Данная обработка не решает вопрос защиты от декомпилятора. может я не так что то делаю? Как сделать, чтобы при декомпиляции вызвать ошибку "Индекс за границами массива"?
123. SerVer1C 166 12.02.19 08:02 Сейчас в теме
(116)
Как сделать, чтобы при декомпиляции вызвать ошибку "Индекс за границами массива"?
Попробуйте использовать несуществующий индекс в том участке алгоритма, в который никогда не зайдет поток выполнения.
117. d.zhukov 396 05.10.18 06:56 Сейчас в теме
Андрей, подскажите, плз как отправить декомпилятор в ошибку "Индекс за границами массива"? У вас же вроде получилось это сделать с обработкой печати для ккм) можно в лс
118. SeiOkami 671 08.02.19 09:37 Сейчас в теме
Уже пробовали добавлять символы разных языков?
Типа:


&НаСервере
Процедура 程დההלי程ךת程程קין차()

КонецПроцедуры
119. karpik666 2363 08.02.19 10:21 Сейчас в теме
(118) нет, можно конечно указать "Произвольный символ", но именно получить такую строку не делал, не вижу разницы преобразовать название процедуры к такому виду, или к "x_________".
120. SeiOkami 671 08.02.19 13:55 Сейчас в теме
(119) добавить пыли в глаза для вызова состояния полного офигевания)
121. dmarenin 222 10.02.19 16:27 Сейчас в теме
(120) дак а какой смысл, в конечном итоге всё приходит в байт код. байт код можно разобрать
Прикрепленные файлы:
122. SerVer1C 166 12.02.19 07:59 Сейчас в теме
Так себе эта затея с обфускацией исходника... Текст оригинальной обработки первоначального автора удалось восстановить достаточно быстро. Тут нужен настоящий обфускатор, типа нетленки, а это просто обработка по замене названий. Для программиста совсем не важно, как называется переменная: а1 или [guid], логика алгоритма не меняется. Более полезная вещь - это обфускатор оп-кода 1с. Вот тут обратных инструментов практически нет.
126. Dream_kz 89 04.04.19 13:17 Сейчас в теме
В Форме ФормаВыбораЗаполненияУпр у реквизита ВариантЗаполнения не стоит КнопкаВыпадающегоСписка, из-за этого нельзя поменять вариант
Платформа 8.3.13.1690
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Санкт-Петербург
зарплата до 120 000 руб.
Полный день

Работа от Инфостарт
Санкт-Петербург
Временный (на проект)

Руководитель отдела внедрения 1С
Новосибирск
зарплата от 60 000 руб. до 160 000 руб.
Полный день

Программист 1С
Санкт-Петербург
зарплата от 115 000 руб. до 160 000 руб.
Полный день

Программист 1С
Санкт-Петербург
зарплата от 120 000 руб. до 150 000 руб.
Полный день