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

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

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

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

Комментарии
Избранное Подписка Сортировка: Древо
98. MaxS 1457 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 7 03.09.17 23:46 Сейчас в теме
При запускена УФ ругается(((
хотя на обычных формах работает(((

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

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

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

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

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


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

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

Вакансии

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

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

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

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

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