gifts2017

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

Опубликовал Андрей Карпов (karpik666) в раздел Программирование - Защита и шифрование

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

Обфускация – приведение исходного текста или исполняемого кода программы к виду, сохраняющему её функциональность, но затрудняющему анализ, понимание алгоритмов работы и модификацию при декомпиляции.

Обычная форма

Управляемая форма

Данная разработка является идейным продолжением разработки coder1cv8  [2 in 1] «Обфускация кода 1С» и «RegExp Тестер». В ней исправлены большинство ошибок разработки данного автора: корректно распознаются директивы компиляции, области, инструкции препроцессора, комментарии, корректно заменяются переменные (не знаю, как у вас, но у меня разработка автора просто так не шифровала код, все равно оставались какие-то частично не зашифрованные переменные.)

Для функционирования самой разработки в системе должна быть зарегистрирована компонента RegEx, а также для шифрования текста должна быть зарегистрирована компонента capicom.dll

Что делает:

  1. Удаляет комментарии.
  2. Удаляет области
  3. Заменяет не экспортные функции на guid.
  4. Заменяет не экспортные переменные и параметры на guid.
  5. Если необходимо шифрует с помощью capicom.dll строковые данные, каждый раз ключ разный.
  6. Директивы компиляции и инструкции препроцессора, всегда с новой строки

Обратите внимание, что если использовать шифрование строк в разработке, то это очень сильно замедляет работу, так как при расшифровки будет каждый раз создаваться comОбъект capicom, поэтому в вашем коде необходимо предусмотреть разовую инициализацию этой компоненты, тогда в разы ускорит работу. 

Также на обычной форме есть кнопка "снять пометку с реквизитов формы" - она снимает пометку с тех переменных которые не соответствуют шаблону, где первые символы с маленькой буквы, а последующие с большой, либо один символ с маленькой буквы, это рассчитано на тех разработчиков, которые используют для идентификации переменных: глобальный - начиная с символа "м", локальных - "л" и т.д., хотя наверное эта кнопка и не нужна.

Также разработана аналогичная управляемая форма, работает в тонком и толстом клиенте.

Принимаются предложения и замечания. Если понравилась разработка, ставь плюс.

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

Поэтому не пишите, пожалуйста, комментарии «о этической стороне», «что закрываемый код и так никому не нужен» или что «данная защита ломается очень просто», да, такая защита ломается. Но данный способ защиты очень сильно замедляет разбор обработки, а стоимость защиты должна быть сопоставима со стоимостью разработки.

Код же этой обработки открыт, и рассчитываю на помощь сообщества в плане оптимизации шаблонов регулярных выражений для обработки строк. Сам же рассматриваю данную разработку как хороший толчок использовать регулярные выражения в своих разработках и работе конфигуратора.

 

Обновлено 28.03.2016:

Добавлена в дерево кнопка "Заполнить идентификатор", позволяющая вместо guid использовать свой идентификатор, например представить переменную как набор символов "______" 

Заменить идентификатор


Мои работы:

Общее

Перенос данных XML с Анализом и выборочной загрузкой.

Универсальный редактор таблиц и движения документа (LITE) (Обычная Форма)

Универсальный редактор таблиц и движения документа (PRO) (Обычная Форма)

Универсальный редактор Таблиц и Движений документов (Управляемая форма)

Запуск 1С под другим пользователем без пароля.

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

Редактирование прав на файлы Windows

 

Управление торговлей 11

Установка цен в УТ11. Произвольный запрос к данным ИБ

 

ЗУП 2.5

Скрываем неиспользуемые виды расчета

[ОЗТ] Перезаполнить данные о начислениях текущего сотрудника (Обычная форма)

Резервы отпусков в Документе "Отражение Зарплаты в Регламентированном Учете" (Оценочные Обязательства)

 

Комплексная И УПП

Форма работы с сотрудниками, как из зуп 2.5

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Обфускатор кода (Обычная и управляемая форма)
.epf 41,60Kb
31.03.16
148
.epf 1.0.5 41,60Kb 148 Скачать

См. также

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

Комментарии

1. Андрей Карпов (karpik666) 28.03.16 04:58
Кому интересно, сайт для проверки регулярных выражений: http://regexr.com/
biz-intel; myr4ik07; +2 Ответить
2. Андрей Карпов (karpik666) 28.03.16 08:15
Обновлено 28.03.2016:

Добавлена в дерево кнопка "Заполнить идентификатор", позволяющая вместо guid использовать свой идентификатор, например представить переменную как набор символов "______"
3. Александр Шакмаев (shakmaev) 28.03.16 12:33
Спасибо, хоть небольшая альтернатива всегда платной Нетленки. Однако, ваша обработка очень похожа на http://infostart.ru/public/15907/. Не она ли тут?
4. Андрей Карпов (karpik666) 28.03.16 12:36
(3) shakmaev,
Данная разработка является идейным продолжением разработки coder1cv8 [2 in 1] «Обфускация кода 1С» и «RegExp Тестер». В ней исправлены большинство ошибок разработки данного автора: корректно распознаются директивы компиляции, области, инструкции препроцессора, комментарии, корректно заменяются переменные (не знаю, как у вас, но у меня разработка автора просто так не шифровала код, все равно оставались какие-то частично не зашифрованные переменные.)
Все указано в тексте публикации.
5. Александр Шакмаев (shakmaev) 28.03.16 12:37
(4) karpik666, принял. Не вчитался, прошу прощения.
6. Александр Лопатин (lopatin) 28.03.16 12:41
"используйте данную разработку, и тогда предполагаемый злоумышленник, глядя на такой код, просто плюнет и начнет писать свой"

Некоторые пишут такой код, что начинаешь плеваться и проходишь мимо...

Жалко иногда приходится исправлять ошибки в таком коде, тут уже мимо ни как не получится пройти..
ditiatko; Aleksandtmt; +2 Ответить 1
7. Андрей Карпов (karpik666) 28.03.16 12:44
(6) lopatin, да, сам через такое проходил, это в большей степени связано с тем, что в 1С низкий порог вхождения в сферу, но в тоже время полно достойных разработчиков.
8. Марат Настоящий (rayastar) 28.03.16 15:14
русский менталитет не делиться своими трудами
спасибо что ты есть, гитхаб
FilatovRA; myoker; DimaBab; artfa; komradz; iliabvf; starik-2005; +7 5 Ответить 4
9. Андрей Карпов (karpik666) 28.03.16 15:18
(8) rayastar, не считаю, что только русские так шифруются, большинство коммерческих разработок с закрытым исходным кодом, тот же фотошоп, или даже windows,
10. Steve Gordon (SGordon1) 28.03.16 16:10
поясните смысл шифровки закрытого кода винддовс...
11. Андрей Карпов (karpik666) 28.03.16 16:24
(10) SGordon1, закрытый код не шифруется, однако я привел данный пример, как один из вариантов исключения модификации исходного кода программы, в принципе в 1с тоже можно исключить текст модуля из поставки, однако есть всем известный декомпилятор, который обходит такую защиту.
12. Валентин Бомбин (so-quest) 28.03.16 16:32
плюсик за трудолюбие.
creatermc; adhocprog; karpik666; +3 Ответить
13. Steve Gordon (SGordon1) 28.03.16 17:38
(9) karpik666 так шифруются, , большинство коммерческих разработок с закрытым исходным кодом, тот же фотошоп, или даже windows,

Это я написал?
14. Андрей Карпов (karpik666) 28.03.16 18:08
(13) SGordon1, хм, тогда так:
не считаю, что только русские так "шифруются".
Большинство коммерческих разработок с закрытым исходным кодом, тот же фотошоп, или даже windows,
15. Timeforlive S (timeforlive) 29.03.16 08:02
Как же потом делать отладку, если в процессе работы пользователь выявил ошибку программы (особенно при "фатал ерроре")?
16. Андрей Карпов (karpik666) 29.03.16 08:12
(15) timeforlive, предполагается, что шифроваться будет код, который уже отлажен, в крайнем случае, даже в такой ситуации можно провалиться в отладчик, либо заранее в коде прописать возможные ошибки и их перехватить через попытку.
17. Андрей Карпов (karpik666) 29.03.16 19:21
Так, уже 27 скачиваний, и что ни у кого нет никаких пожеланий или замечаний?
19. Игорь Steelvan (Steelvan) 30.03.16 00:09
Пожелания и замечания могут быть только в случае практического использования, видимо все только любопытства ради скачивают.

Но 43 плюса как бы намекают :)
karpik666; +1 Ответить
20. Александр (МимохожийОднако) 30.03.16 07:27
(16) karpik666, мы всегда предполагаем, что код отлажен. Однако периодически нарываемся на необходимость правки своего кода. Для этого случае есть возможность декодирования или надо держать в архивах копию с читаемым кодом? Сталкивался с ситуацией, когда разработчик перестал поддерживать обработку, а клиенту надо помочь.
21. Андрей Карпов (karpik666) 30.03.16 07:34
(20) МимохожийОднако, конечно должна быть копия программы с читаемым кодом, для этого и нужны "исходники". Такая же проблема может возникнуть, когда обфусцируется байт-код, но что-то не слышал, чтобы разработчики его деобфусцировали, каждый раз когда нужно отлаживать код, для этих целей используются исходники программы.
22. Андрей Карпов (karpik666) 30.03.16 07:38
(20) МимохожийОднако, а по поводу поддержки отвечу вопросом на вопрос: а что если фирма 1С разорится и перестанет поддерживать свои релизы, а в релизе будет ошибка? Разве можно будет поправить эту ошибку?
23. Антон Рощин (wolfsoft) 30.03.16 08:07
Некоторые умельцы без всяких шифраторов пишут такой код, что посмотришь на него, плюнешь и напишешь свой.
корум; greenLiss; u_n_k_n_o_w_n; a.podobin; dj_serega; ditiatko; ojiojiowka; Mi4man; delete; TreeDogNight; v3rter; yurii_host; creatermc; Sholl; Йожкин Кот; LtdTrader; sanfoto; cleaner_it; DrAku1a; karpik666; myr4ik07; kao_andi; vapiarius; artfa; WizaXxX; mindcannon; gigabyte_artur; komradz; vasiliy_b; veretennikoff; fzt; Chif13; AnryMc; Dementor; Brawler; +35 Ответить 2
24. Максим Ивирсин (Mavin) 30.03.16 08:13
Сам я долго уже пользуюсь обработкой "Обфускация кода 1С" и она вполне удовлетворяла меня. Правда иногда приходилось код немного подстроить под обработку, чтобы после обфускации без ошибок компилировался. Решил проверить тот самый код на этой обработке, но оказалось что обработка выдала некорректный результат. Методом исключения, ошибку можно увидеть например на таком коде:

Функция Процедура1() Экспорт

Текст = "//";

Возврат Текст;

КонецФункции

Функция Процедура2() Экспорт

Текст = "//";

Возврат Текст;

КонецФункции
25. Андрей Карпов (karpik666) 30.03.16 08:16
(24) Mavin, понял, некорректно отрабатывает поиск по слову Процедура или комментарию, спасибо, сейчас постараюсь исправить
26. Максим Ивирсин (Mavin) 30.03.16 08:34
(25) karpik666, причина думаю точно не в имени функции (это я для примера так сделал), а скорей всего в том, что в комментарии такой слэш есть "//". Причем, если оставить только одну функцию, то результат корректный.
27. Андрей Карпов (karpik666) 30.03.16 08:41
(26) Mavin, разобрался. Действительно проблема была в символах // в строке.
Обработку исправил. Сейчас должно все корректно учитывать.
28. Максим Ивирсин (Mavin) 30.03.16 08:54
(27) Теперь обработка выдала результат:
Функция Процедура1() Экспорт x34f5fdf9d4054708942e4b249b39edc8 = \1\2\3; Возврат x34f5fdf9d4054708942e4b249b39edc8; КонецФункции
который естественно не компилируются, поскольку \1\2\3 это явно не строка. Причем вместо \1\2\3 должно стоять все тот же текст "//" (шифрованием не пользовался).
29. Андрей Карпов (karpik666) 30.03.16 09:26
(28) Mavin, разобрался, использовал для тестирования notepad++, а там группировки проставляется через слэш, а оказывается в RegExp нужно использовать "$"
32. Игорь Steelvan (Steelvan) 30.03.16 09:37
(8) rayastar,
По поводу прятать есть отличная сказка про дядю Скруджа, которая очень хорошо показывает менталитет некоторых западных народов.
33. anry mc (AnryMc) 30.03.16 09:44
(2) karpik666,

Оказывается, "для продвижения публикаций", кроме разноцветной рекламы внизу статьи, можно "поднимать" ветку обсуждений сообщениями об обновлениях не редактирую статью...

ЗЫ Что это со мной сегодня? Съел наверно что то...

ЗЫЫ Не проще ли вынести то что не хочешь в модуль с паролем? Трудоемкость поиска "ломалки" для запароленного модуля не намного меньше от "восстановления" исходника ...
34. Дмитрий К. (Dementor) 30.03.16 09:52
(23) wolfsoft, с языка сняли :)
(20) МимохожийОднако, смотрите шире. Кроме сотрудников на ставке и всяких франчей еще есть фрилансеры. И иногда их пытаются обмануть с оплатой. Это как раз для случая, когда клиенту нужно показать работающий код для тестирования, который он после кражи не сможет использовать, получить вознаграждение и далее отдать полноценную работу.
dj_serega; vasiliy_b; +2 Ответить 2
35. Андрей Карпов (karpik666) 30.03.16 09:54
(33) AnryMc, и к чему это? по-моему это уже мое личное дело как продвигать публикации, причем это не запрещено правилами инфостарта, в данном случае ссылки разделены по тематике, также я не выставляю все свои работы, а только те, что считаю интересными. Также эти ссылки появляются в поле "см. также".
36. Андрей Карпов (karpik666) 30.03.16 10:03
(34) Dementor, мне кажется, если продукт уже готов, то клиент конечно же сможет его использовать даже с такой "защитой", однако если в коде есть явная ошибка, то диагностика ее для клиента уже будет серьезной проблемой.
37. anry mc (AnryMc) 30.03.16 10:16
(35) karpik666,
Что это со мной сегодня? Съел наверно что то...
38. борян петров (TODD22) 30.03.16 10:20
(37) AnryMc,
Что это со мной сегодня? Съел наверно что то...

Грибы из брокколи?
40. Stas Agapov (Agapov_Stas) 30.03.16 12:00
(33) AnryMc,
ЗЫЫ Не проще ли вынести то что не хочешь в модуль с паролем? Трудоемкость поиска "ломалки" для запароленного модуля не намного меньше от "восстановления" исходника ...

Запароленные модули - ломаются за 1-2 минуты )
41. Stas Agapov (Agapov_Stas) 30.03.16 12:04
(36) karpik666,
мне кажется, если продукт уже готов, то клиент конечно же сможет его использовать даже с такой "защитой", однако если в коде есть явная ошибка, то диагностика ее для клиента уже будет серьезной проблемой.

ну если в код зашить ограничение по дате и зашифровать - то думаю не сможет ... именно для этих целей мне данная обработка интересна
разобрался, использовал для тестирования notepad++, а там группировки проставляется через слэш, а оказывается в RegExp нужно использовать "$"

Текущий файл уже с исправленной ошибкой ?
42. Андрей Карпов (karpik666) 30.03.16 12:07
(33) AnryMc, для обычной формы конечно можно и в модуль объекта поместить, но если этот не обфусцировать, то его всем известный декомпилятор щелкнет как орешки, но я пришел к шифратору когда стал делать разработку для управляемых форм, много ли вы серверного кода помещаете в модуль объекта? Если делать код оптимизированным, то вообще код не следует использовать директиву "НаСервере", что сразу исключает модуль объекта, поэтому я помещаю такой код на форму, но с директивой "НаСерверебезКонтекста".
43. Андрей Карпов (karpik666) 30.03.16 12:07
(41) Agapov_Stas, да, исправленный
44. Владимир Гусев (adhocprog) 30.03.16 13:39
45. Art Fa (artfa) 30.03.16 15:21
(3) shakmaev, та обработка не поддерживает инструкции препроцессора
46. anry mc (AnryMc) 30.03.16 15:51
(42) karpik666,
много ли вы серверного кода помещаете в модуль объекта?


А разве пароль не ставиться и на общие модули?
47. Александр Дуганов (sashs1980) 30.03.16 16:09
Попробовал. Половина процедур и функций вообще не попали в результат... Или есть какие ограничения. Пробовал зашифровать модуль обычной формы.
48. Александр Дуганов (sashs1980) 30.03.16 16:16
в модуле более 100 процедур и функций, в результате 23 только процедуры и ни одной функции
49. Андрей Карпов (karpik666) 30.03.16 16:17
(46) AnryMc, если речь идет о внешней обработке, то тут код никак не поместишь в общий модуль
(47) sashs1980, ограничений не должно быть, отправьте в личку пример кода, который не распознался, возможно я чего-то не учел в алгоритме.
50. Stas Agapov (Agapov_Stas) 30.03.16 19:24
(43) karpik666, Подскажите какой программой делали Gif -ку ? (Неплохо смотрится - а то той что я делаю частенько коряво получается )
51. Stas Agapov (Agapov_Stas) 30.03.16 19:25
(46) AnryMc, пароль снимается в три секунды
52. Андрей Карпов (karpik666) 30.03.16 19:40
(50) Agapov_Stas, вначале снял видео, а затем импортировал в фотошоп и сохранил как веб, есть ограничение на 500 кадров в анимации.
53. Андрей Карпов (karpik666) 30.03.16 19:43
Серьезно переработан поиск строковых переменных в коде, теперь не должно конфликтовать с комментариями, также убрал при анализе лишние переносы строк. Просьба перескачать обработку.
54. Александр (МимохожийОднако) 30.03.16 20:08
(34) Dementor, я согласен. Однако я исхожу из личной практики. У меня на 500 случаев только 1-2 раза обманывали. А вот долги возвращали (добровольно) даже через 10 лет. Ворованное или неоплаченное впрок не пойдёт. Карма важнее )) Я ни в коем-случае не против этой обработки. Но встретившись пару-тройку раз с клиентами, которых кинули на поддержке с подобными обработками, я пришёл к тому, что пусть мне будет стыдно, но свой код я скрывать не буду. Кому надо тот поправит.
fzt; gaysin; AnryMc; +3 Ответить
55. Stas Agapov (Agapov_Stas) 30.03.16 20:20
(53) karpik666, скачал - попробовал на обработке
Перестала работать )
не отрабатывает запрос после обфускации ((
56. Константин Гейнрих (CyberCerber) 30.03.16 22:08
Приветствую!

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

Процедура ПривязатьОплаты() Экспорт Если ТекущаяДата() > Дата(2016,4,1) Тогда Возврат; КонецЕсли;


Т.е. ничего вообще не изменилось. До этого выкладывали на ИнфоСтарте обфускатор кода, он меня тоже до конца не устроил, но у него лучше получалось.
57. Stas Agapov (Agapov_Stas) 30.03.16 23:05
(56) CyberCerber, да - для таких целей и я скачивал - но то как он шифрует - эту проверку можно отключить очень быстро (а надежда была - не оправдалась)
58. Андрей Акулов (DrAku1a) 31.03.16 01:53
А если такой код попробовать преобразовать обратно - переименовывая переменные в что-то вида "Парам1, Парам2, Парам3" и восстановив структуру кода (Форматировать). По идее - будет вполне читабельно и общий смысл понятен. Вот такой "Анти-обфускатор" ))
CyberCerber; AnryMc; +2 Ответить 2
59. Андрей Карпов (karpik666) 31.03.16 05:06
(55) Agapov_Stas, хм, сейчас посмотрю в чем дело;
(56) а как бы вы хотели, чтобы программа такой код зашифровала? в данном случае шифруется ведь не скомпилированный код, а просо текст, а у вас экспортная процедура, у которой, если поменять наименование может что-то сломаться в программе, так как эта процедура может вызываться в других местах, стандартная функция ТекущаяДата(), а также функция получения Даты, здесь просто нечему шифроваться.
(58) DrAku1a, я думал еще сделать деобфускатор, однако все равно наименование переменных и комментарии никак не восстановишь, и разбираться в таком коде та еще морока, я когда-то пытался разобраться в работе конфигурации Широкоформатная печать, хоть там код и был не шифрованным, однако я успел раз 300 обматерить того "разработчика", который писал его.
(57) Agapov_Stas, для того, что вы хотите нужен шифратор байт-кода, тогда действительно можно зашифровать так, что никто не сможет взломать, хотя точно не знаю, может уже есть какой-то деобфускатор.
60. Андрей Карпов (karpik666) 31.03.16 05:08
Напоминаю
Принимаются предложения и замечания.

Если что говорите, что необходимо переделать или добавить.
61. Максим Ивирсин (Mavin) 31.03.16 11:45
(60) Тогда еще один тест, который также не проходила обработка "Обфускация кода 1С". После обфускации модуля обработки, она становится нерабочей.
Тут речь идет о комментариях в тексте запроса. Сразу отмечу, что удаление комментариев не будет являться решением, поскольку иногда их добавляют с той целью, чтобы потом эти комментарии заменить на что-то нужное с помощью СтрЗаменить.
Прикрепленные файлы:
ТестОбфускации.epf
62. Андрей Карпов (karpik666) 31.03.16 11:53
(61) Mavin,
 Процедура Тест() x9cfbec67d813410cbf161778a7400fd8 = Новый Запрос; x9fe556d4a7a84a7e810b99dfb9d9562f = "ВЫБРАТЬ РАЗРЕШЕННЫЕ 	//Наименование 	Организации.Наименование КАК Наименование, 	//Наименование полное 	Организации.НаименованиеПолное КАК ПолноеНаименование ИЗ 	Справочник.Организации КАК Организации"; x9cfbec67d813410cbf161778a7400fd8.Текст = x9fe556d4a7a84a7e810b99dfb9d9562f; xbfcc5e2671274175b21383b9fdd8a9f4 = x9cfbec67d813410cbf161778a7400fd8.Выполнить();
 x2b50b9ce97754ff396a0ad5206686d38 = xbfcc5e2671274175b21383b9fdd8a9f4.Выбрать();
 Если x2b50b9ce97754ff396a0ad5206686d38.Следующий() Тогда Сообщить(x2b50b9ce97754ff396a0ad5206686d38.Наименование);
 Сообщить(x2b50b9ce97754ff396a0ad5206686d38.ПолноеНаименование); КонецЕсли; КонецПроцедуры  
...Показать Скрыть


Вроде нормально строку распознала, с учетом комментариев
63. Андрей Карпов (karpik666) 31.03.16 12:10
(61) Mavin, а если вот так будет?
 Процедура Тест() x916220aab32c40a1b19622bc723f6cca = Новый Запрос; x5cbbbf848af145f3a8df8068ee514b31 = "ВЫБРАТЬ РАЗРЕШЕННЫЕ"+Символы.ПС+"	//Наименование"+Символы.ПС+"	Организации.Наименование КАК Наименование,"+Символы.ПС+"	//Наименование полное"+Символы.ПС+"	Организации.НаименованиеПолное КАК ПолноеНаименование"+Символы.ПС+"ИЗ"+Символы.ПС+"	Справочник.Организации КАК Организации";
 x916220aab32c40a1b19622bc723f6cca.Текст = x5cbbbf848af145f3a8df8068ee514b31; x7781e025410e4a0f8d4dba697f964a3a = x916220aab32c40a1b19622bc723f6cca.Выполнить();
 xdc0ca4d0a3444b798b6f28ec65b7f97d = x7781e025410e4a0f8d4dba697f964a3a.Выбрать();
 Если xdc0ca4d0a3444b798b6f28ec65b7f97d.Следующий() Тогда Сообщить(xdc0ca4d0a3444b798b6f28ec65b7f97d.Наименование);
 Сообщить(xdc0ca4d0a3444b798b6f28ec65b7f97d.ПолноеНаименование); КонецЕсли; КонецПроцедуры  
...Показать Скрыть

В принципе так нормально учитываются все переносы строк.
64. Максим Ивирсин (Mavin) 31.03.16 12:40
(63) да, это рабочий вариант будет.
65. Андрей Карпов (karpik666) 31.03.16 12:41
У кого-нибудь есть идеи для поиска двойных кавычек в текстовой строке. Сейчас используется такой шаблон "(\""[^\""\n\r]*)((\""\""){1,})([^\""\n\r]*\"")", и в нем я нахожу двочные кавычки, а затем их выделяю специальными символами, чтобы потом заменить, однако некоторые строки он не обрабатывает.
66. Андрей Карпов (karpik666) 31.03.16 12:58
Обновлено 31.03.2016
Заменил переносы строк на "+Символы.ПС +", теперь корректно обрабатываются запросы. содержащие комментарии
Настроил немного по-другом получения кавычек в строке, надеюсь к ним больше не придется возвращаться.
все слова кроме строк приводятся к нижнему регистру.
67. Иван Устьянцев (nSpirit2) 31.03.16 13:28
(63) karpik666,
 
Процедура Тест() 
	Запрос = Новый Запрос; 
	ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	Организации.Наименование КАК Наименование,
	|	Организации.НаименованиеПолное КАК ПолноеНаименование
	|ИЗ
	|	Справочник.Организации КАК Организации";
	Запрос.Текст = ТекстЗапроса; 
	Резальтат = Запрос.Выполнить();
	Выборка = Резальтат.Выбрать();
	Если Выборка.Следующий() Тогда 
		Сообщить(Выборка.Наименование);
		Сообщить(Выборка.ПолноеНаименование); 
	КонецЕсли; 
КонецПроцедуры 
 
...Показать Скрыть


А в чем сложность то с этим бороться? С тех пор как 1с добавили рефакторинг в конфигуратор заменять имена переменных прям очень не очень защита.
Или оно что то еще может кроме переименования и замены форматирования ?
68. Андрей Карпов (karpik666) 31.03.16 13:45
(67)
Что делает:

Удаляет комментарии.
Удаляет области
Заменяет не экспортные функции на guid.
Заменяет не экспортные переменные и параметры на guid.
Если необходимо шифрует с помощью capicom.dll строковые данные, каждый раз ключ разный.
Директивы компиляции и инструкции препроцессора, всегда с новой строки

В принципе пока больше и ничего, Та же нетленка https://netlenka1c.ru/ делает тоже самое.
Конечно можно вручную или с помощью рефакторинга заменять переменные (хотя на встроенный 1с-овский я бы не сильно надеялся, постоянно меня подводил, когда код более менее сложный), вопрос сколько на такую замену уйдет времени и будет ли вам все понятно. Сейчас это конечно довольно простая защита, но буду развивать.
69. Иван Устьянцев (nSpirit2) 31.03.16 13:53
(68) karpik666, Ну нетленка много чего делает. Фэйковые переходы ложные условия, вообще запутывание цепочки выполнения кода что делает его структурный анализ более сложным.

Ну а так желаю вам удачи в вашем начинании. :)
70. Андрей Карпов (karpik666) 31.03.16 13:58
(69) nSpirit2, https://netlenka1c.ru/Home/Description Обфускация контроля потока - это только 1 пункт, а остальное уже реализовано и в данной обработке, но есть конечно к чему стремиться.
71. Den (dance000) 01.04.16 10:33
(23) wolfsoft,
Да чего уж там умельцы, достаточно посмотреть на свой код пятилетней давности )))
МимохожийОднако; +1 Ответить
72. Программулькин (Программулькин) 19.04.16 15:39
а как обратно код получить?
73. Андрей Карпов (karpik666) 19.04.16 16:25
(72) Программулькин, никак=) на такие случаи должны быть исходники, конечно можно позаморачиваться и как сказали в (58) заменить с помощью рефакторинга переменные, и добавить переносы строк, но код все равно будет мало похож на первоначальный. Если бы можно было так легко все вернуть обработно, то такая защита никому и не нужна будет.
74. fzt fzt (fzt) 26.04.16 11:20
(72) Программулькин, ахаха. Сочувствую? =)
75. Программулькин (Программулькин) 26.04.16 15:57
(74) fzt, не, я просто подумал, было бы интересно иметь как доп функцию, по определённому ключу, вернуть все обратно. Ключ, скажем, набор символов из X разрядов.
76. Андрей (h00k) 27.07.16 01:03
(75) Программулькин,
я просто подумал, было бы интересно иметь как доп функцию, по определённому ключу, вернуть все обратно.

Система контроля версий типа git, mercurial или bazaar поможет получить желаемое.
Алгоритм примерно такой:
1.1 сделал обработку,
1.2 отладил и закоммитил,
2.1 создал ветку release 1.0,
2.2 в ней выполнил обфускацию и закоммитил
2.3 обработку отдал заказчику/ опубликовал.

Всплыла бага:
1.1 закрыл ветку release 1.0,
1.2 переключился на ветку develope,
1.3 внес исправления и закоммитил,
2.1 добавил ветку release 1.1,
2.2 в ней выполнил обфускацию и закоммитил
2.3 обработку отдал заказчику/ опубликовал.

А добавление какого либо ключа для обратной расшифровки - это дополнительная уязвимость для и так весьма слабой защиты.
77. rjhev korum (корум) 08.11.16 13:46
Спасибо обфускатору, мой код стал более понятным и выполняется быстрее! (ц) из сети
78. UMix У (Umix) 25.11.16 08:48
(66)
Здравствуйте,
так и не понял как пользоваться(((
Только текст перегоняет - это пожалуйста, но открыл нужную обработку для защиты - увидел только глобальные переменные..., ничего окромя...
скопировал текст из форм - да, с ним отработал, вставил обратно в форму - куча ошибок )))
Поясните может. Может к версии платформы привязан?
Спасибо.
79. Андрей Карпов (karpik666) 25.11.16 09:09
(78) нет, от версии не зависит, пришлите мне код, который вы хотите зашифровать, я посмотрю, может это ошибка обработки.
80. Ник Рыжик (ra1ich) 30.11.16 11:47
Хорошая защита своего кода
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа