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

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

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

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

Комментарии
Избранное Подписка Сортировка: Древо
98. MaxS 1721 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 и опубликую решение под ключ.
vis_tmp; teflon; 33lab; olegmedvedev; karpik666; +5 Ответить
127. vis_tmp 29 27.09.19 12:27 Сейчас в теме
99. vas2005 8 03.09.17 23:46 Сейчас в теме
При запускена УФ ругается(((
хотя на обычных формах работает(((

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

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

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

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

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


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

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

Вакансии

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


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

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

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