Вопрос думаю не новый, но не нашел вразумительных ответов и решений...
Думаю программисты не раз сталкивались с задачей - выдать "ДЕМО версию" своей обработки ...для этого необходимо установить пароль на обработку или исключить модуль из поставки... НО данная защита не очень эффективна..
Вопрос в следующем: подскажите эффективные способы защиты собственных обработок
примеры и прочее..
P.S. Думаю данная тема будет интересна не только мне ;)
Да, на определенном этапе этим переболевают многие 1Сники. А потом большинство из них приходит к выводу, что лучшей защитой разработок является их поддержка и дописывание (адаптация). За это вменяемые клиенты платят охотнее всего. А с невменяемыми (теми, кто не собирается платить) никакое шифрование не поможет: захотят украсть - украдут, а если не получится украсть - откажутся от использования.
(6) Agapov_Stas, гуглим по слову обфускация. Смотри еще что уже написано на ИС. Приходим к выводу, пока обработки вы не защитите на 100% Только усложните работу, тем кто захочет украсть.
Поэтому самое правильное решение поставить пароль, чтобы не дай бог если вы его забудите, можно было легко и быстро получить исходники. А те кто будут после вас поддерживать разработку будут просто в вас плювать и с радостью перейдут на открытый код при первой же возможности.
Cooler, в данном случае - меня интересует именно эта тема )
Смысл поста cooler'а был в том, что из множества способов решения вашей проблемы смена бизнес-логики (т.е. зарабатывать на поддержке, а не на защите) может оказаться наиболее прогрессивной и доходной…
Вот, к примеру, некая фирма 1С на ИТС зарабатывает больше, чем на продаже продуктов… :0)
(11) DeepSnorkler, да это понятно ) спорить можно много что для чего и что лучше )
но тему я создал именно по этому вопросу )
поэтому и спрашиваю у вас совета
p.s. тот же ИТС - он защищен логином, паролем и сроком подписки
(13) Xershi, если Вы тут набиваете себе рейтинг - то не стоит...
Хотелось бы получать ответы именно по заданной теме, а не посторонние вопросы
я всегда удивлялся с тем где человек задает вопрос, а ему в ответ начинают писать не решение, а "Зачем тебе это нужно.." и т.д.
Если задал вопрос - значит зачем то же нужно ... если Вам не нужно - просто пройдите мимо ...
я всегда удивлялся с тем где человек задает вопрос, а ему в ответ начинают писать не решение, а "Зачем тебе это нужно.." и т.д.
Если задал вопрос - значит зачем то же нужно ... если Вам не нужно - просто пройдите мимо ...
Ответ очень прост: люди уже наступали на эти грабли и понимают…
А так-то, кто вам мешает почитать "не решение" и все равно побродить по граблям… Ну или не читать… :0)
По теме: присоединюсь к (10), если уж очень хочется… Цена взлома возрастает, возможно к содержимому интерес пропадет…
И да, прохожу мимо… :0)
(14) Agapov_Stas,
1. Удивляются чему-то, а не с чего-то.
2. Заданный вопрос часто неправильно/некорректно сформулирован и потому требует уточнения.
3. Кому и что делать, и как отвечать на вопросы, и как проходить мимо учат те, кто сам не умеет отвечать и потому не имеет никаких прав учить.
(1) Agapov_Stas, как по мне, единственный достаточно эффективный способ защиты своих разработок - это вынос части функционала во внешний модуль (dll, или что нибудь этакое) и использование аппаратного ключа защиты/своей программной лицензии с "преферансом и куртизанками".
У меня нет опыта подобных разработок, но логика подсказывает, что надо двигаться в сторону онлайна. Например, можно хранить какие-то ключевые куски кода на закрытом от посторонних сайте. Пользователь запускает продукт, вводит логин/пароль, недостающий код загружается "на лету" с сайта - программа работает. Соответственно демка будет работать при условии, что 1) есть логин/пароль, 2)подключение к интернету.
У меня нет опыта подобных разработок, но логика подсказывает, что надо двигаться в сторону онлайна. Например, можно хранить какие-то ключевые куски кода на закрытом от посторонних сайте. Пользователь запускает продукт, вводит логин/пароль, недостающий код загружается "на лету" с сайта - программа работает. Соответственно демка будет работать при условии, что 1) есть логин/пароль, 2)подключение к интернету.
Если обработка открыта - то недостающий код (который хранится на каком то удаленном сервере) легко "выдергивается" из лицензионной обработки
22.
Захаров_Николай
1127.06.16 19:11 Сейчас в теме
(21) Agapov_Stas, я присоединяюсь к высказавшимся товарищам. По поводу необходимости данного действия.
Тем не менее есть ряд более или менее успешных методов по защите.
1. Это вынесение нужного часто повторяющегося кода во внешнюю обработку. Например запроса. Легко ломается.
2. Обфускация кода к компиляция в байт код. Без компиляции, студент вооруженный отладчиком разберет обфускацию со скорость зависящей от его лени. Средняя защита.
3. Обфускация кода, компиляция и вынос важного кода во внешнюю компоненту. Пока самый действительный метод. И масса предложений от разработчиков.
Возьмем к примеру Катран. Код не только для запуска но и для открытия большинства форм вынесен во внешнюю обработку. Вызов обработки идет из обфусцированного-компилированного модуля. Обработка зашифрована в теле внешней компоненты ключем. Казалось бы неплохо. Но можно одолжить у товарища программиста на 15 минут ключа и все. Защита сломана.
Везде есть узкие места и любую защиту можно сломать. Вопрос лишь в цене.
Я не представляю ценность обработки которую стоило бы защищать чем то круче пароля. Ведь стоимость работы программиста с уровнем компетенции позволяющем сломать эту защиту мне кажется будет больше чем стоит любая обработка.
Вам искренне советую развиваться и у Вас отпадет желание заниматься этой ерундой так как ценность вашего часа вырастет и Вам не надо будет связываться с непонятными заказчиками, за вами будут ходить и просить поработать с ними так как нормальных программистов сейчас как амурских тигров.
24.
Захаров_Николай
1127.06.16 22:35 Сейчас в теме
(23) Agapov_Stas, Пресловутая Нетленка кстати сейчас тестируют новшество. Байт-код который не декомпилируется. Пока не знаю как этого добились но звучит многообещающе. Ранее предоставлялся бесплатный пробный период при регистрации. Которого вполне хватит чтобы понять как она работает и обфусцировать все свои обработки.
Вот эти ребята работают довольно давно. Предоставляют услуги по декомпиляции и защите.
Серьезный подход. я думаю для защиты обработки это тяжелая артиллерия.
И был еще один интересный проект. Который позиционировался как неприступный. Но что-то найти его уже не могу.
(21) Agapov_Stas, 1) если люди уже заплатили за лицензию, то у них не будет мотивации делиться с халявщиками, 2) можно вообще не делать никакой разницы между демо- и лицензионной версиями - держать код на сайте и регулировать доступ к этому сайту.
(27) roman77, вы тут собрались ошибки проверять или помогать людям на форуме???
Залез - нашел ошибку у человека. Оставил свой бесполезный комментарий ( который вообще никак не помог), поставил себе плюсик и с чувством полной удовлетворенности лег спать... пользы ноль!
(28) Agapov_Stas, 1) я уже помог, тебе все всё высказали - дальше сам думай; 2) грубая ошибка в первом же слове смотрится очень некрасиво, дискредитирует всё, что написано дальше вот и не удержался.
Звучит смешно.
В действительности, читать так: "Байт-код, который не декомпилируется распространенными декомпиляторами на текущий моментиз-за ошибок и недоработок таких декомпиляторов."
Т. е. рекламный трюк.
34.
Захаров_Николай
1130.06.16 11:16 Сейчас в теме
(31) PetroP, (32) Xershi, В силу того что меня эта тема мало интересует я не знаю, что они там сделали. По факту PetroP прав скорее всего рекламный трюк.
Я думаю об этом никто не узнает ввиду того, что нетленка мало кому интересна.
Тем не менее это один из самых простых и эффективных способов защиты для разработок, стоимость которых не превышает 10 тыс. рублей. Тех кто сможет декомпилировать такой код - единицы, да и стоимость часа работы такого специалиста достаточно высока. Даже Awa в свое время писал, что полностью автоматически декомпилировать такие обработки не всегда получается. Гипотетическому заказчику проще будет купить пару таких обработок, чем оплачивать услуги по взлому.
Хак №1: Если обработку, поставляемую без исходных кодов, выгрузить в файлы средствами платформы 8.3, то байт код скомпилированного модуля можно посмотреть, да и не только, в файле ObjectModule.bin.
Хак N2: Если хочется обратиться к возможному взломщику обработки, то стандартный метод - комментарии, в этом случае не поможет, так-как комментарии теряются при компиляции. Но, выход есть - можно создать текстовую переменную и в неё записать свой текст обращения :)
П.С.: Если уж обсуждать обработки по защите, то уж точно не "нетленку" и т.п.. Начинать лучше сразу с http://infostart.ru/public/68368/
(35) h00k, смешно звучит процитированный слоган, а не сама обфускация.
Компиляция в байт-код - в принципе не является необратимым процессом. Просто отсутствие документации порождает возникновение ошибок при написании декомпиляторов.
Что касается самой обфускации, то надо принять:
1. Никакая защита не даст 100% результат, а обфускация - средняя защита.
2. Если предполагается постоянная поддержка и доработка кода (связанная, например, с изменением законодательства), обфускация - оптимальная защита. Иначе - смысла в ней немного.
смешно звучит процитированный слоган, а не сама обфускация.
Да это-то я понял, но, в контексте данной ветки, замечание, не очень корректное, оно больше запутает ТСа.
А поговорку "что один человек построил другой завсегда разобрать сможет" и так все знают.
Соглашусь с roman77 - смотри в сторону онлайна. Это ж демка, для оценки, а не постоянной работы. Ну и пущай по логину/паролю коннектится на твой сайт. Только не код отдавай, а результат. Она передала тебе входные данные, вернула рассчитанный результат через те же веб-сервисы. Которые работают только до определенной даты. И как оно внутри работает - никто не узнает. Заплатят - отдашь полнофункциональную. А обфускация нужна больше чтобы не уперли с полнофункциональной твои ноу-хау например.
(37) SirStefan, хороший совет, по надежности почти не уступает выносу части бизнес логики во внешнюю компоненту.
Вот только реализация - это дополнительные затраты. Хостинг и настройка веб-сервера - дополнительные риски и снова затраты.
Не проще ли купить простое готовое решение? Да и то, что модуль защиты от Rebelx будет существенно дешевле и гораздо надежнее собственной разработки объяснять, надеюсь, не надо?
П.С.: Смысл "копать" эту тему есть только в паре случаев:
- расширить свой кругозор и получить еще одну компетенцию
- проработать вопрос для разработки своего конкурирующего решения.
Оба вопроса замечательно решаются при помощи поиска по форуму, так-как тема неоднократно поднималась, обсуждалась, выдавались все те же советы чтои в этой ветке, а потом благополучно уходила в небытие.
Да и за последние 5-8 лет в этой области, применительно к 1С, кардинально мало что поменялось, ну, кроме того, что появилось продвинутое тиражное решение для защиты обработок/ конфигураций и был исправлен явный "косяк" платформы сохранявший закрытые модули в открытом виде во временную папку.
Издеваешься?! :) Это была какая-то версия 8.0... года так 2006 выпуска, +/- год. Примерно в то время, когда я только начинал активно этой темой интересоваться.
Вот только реализация - это дополнительные затраты. Хостинг и настройка веб-сервера - дополнительные риски и снова затраты.
Не проще ли купить простое готовое решение? Да и то, что модуль защиты от Rebelx будет существенно дешевле и гораздо надежнее собственной разработки объяснять, надеюсь, не надо?
Существенно дешевле? Написать веб-сервис, поднять его на домашнем компьютере - это дорого? Гораздо надежнее? Либо код исполняется у меня и тестеры его не получают ни в каком виде, либо все зависит от скилла реверс инжиниринга у спецов тестера. Ну и без претензий к Rebelx - почему вы считаете что его разработка априори гораздо надежнее вашей?
Естественно. Скачать демо версию, прочитать инструкцию, подготовить защищенную обработку - все, можно отдавать клиенту.
Даже если абстрагироваться от технической части организации домашнего веб сервера доступного из интернет и всех подводных камней с этим связанных, а сосредоточиться только на реализации бизнес логики в своей копии базы и разработке веб сервиса, выдающего результат, то после какого количества обработок себестоимость этого инструмента приблизится к 10К рублей? Если допустить, что на вынос бизнес-логики за пределы обработки и публикацию-тестирование сервиса затрачивается 0,5 часа. то, для гипотетического программиста со стоимостью часа работы 1 тыс. рублей, это всего лишь 20 обработок... а если выносить логику в dll, то вообще не больше десятка.
Либо код исполняется у меня и тестеры его не получают ни в каком виде
Это уже вопрос умения настраивать веб сервер, а то и скрипт с кодом вполне можно сохранить, если веб сервер "криво" настроен.
Ну и без претензий к Rebelx - почему вы считаете что его разработка априори гораздо надежнее вашей?
Во-первых, я не занимался, профессионально, разработкой защиты обработок, я всего лишь, в качестве развлечения, эти защиты отключал.
А во-вторых, я помню сколько времени Rebelx тратил на тестирование, поиски уязвимостей его алгоритмов защиты и т.п. В итоге, если я ничего не путаю, даже Awa признал, что полностью автоматически его защита уже не ломается.
Это уже вопрос умения настраивать веб сервер, а то и скрипт с кодом вполне можно сохранить, если веб сервер "криво" настроен.
Там нет скрипта с кодом - сервер обращается к 1с, 1с считает. Увести через веб-сервер базу 1С, ну оочень нужно постараться.
Я тоже в свое время на уровне любителя занимался отключением защит. Потому и считаю, что мой вариант защищеннее: обфускация обратима в ручном режиме. С 1с через веб-сервисы вытянуть код нереально. Отключить проверку на дату окончания тестового периода уже не выйдет переводом системного времени на компьютере. И поиском и корректировкой/удалением создаваемых в системе файлов тоже. Тем более, что для смены демо режима не требуется полная распаковка всего кода, иногда достаточно найти дату окончания срока строкой и поменять год например на 2096.
Плюс ко всему код у себя можно оптимизировать и исправлять ошибки на лету.
Это относится именно к сабжевой задаче - демо режим. Обычные обработки для защиты своих наработок я бы доверил уже проверенному инструменту и не стал бы изобретать велосипед.
А настройка IIS и веб-сервисов у меня заняло часа три. При этом получен опыт, так что я даже не стал бы это включать в себестоимость продукта.
47.
Захаров_Николай
1101.07.16 08:20 Сейчас в теме
(46) SirStefan, Господа. Вы уже флудите в тертой теме дня два. Раздули из мухи слона.
Самый дешевый способ для топик стартера защитить свои обработки это демонстрировать их на грамотно настроенном RDP, TeamViewer и наконец через вэб-морду. Судя по вопросу у него не хватит квалификации на все предложенные танцы с бубном.
P.S.: Давайте на чистоту что за обработка такая на защиту которой можно потратить времени и средств больше чем на создание 10 таких обработок? Вы что часто пишите бестселлеры? Тиражируемые решения? У всех в практике попадались недобросовестные клиенты. Сколько их? Единицы. Если у вас их было больше трех. То бросайте это дело. Вы не можете работать с людьми, это мое мнение. Если вы ввязались в проект то разбейте его на части. Если первая часть не оплачена во-время то все, не стоит продолжать двигаемся дальше. Потери минимальны.
Сколько их? Единицы. Если у вас их было больше трех. То бросайте это дело.
Спасибо за совет, я бы сам ни когда не додумался, что мне надо бросать заниматься программированием из-за того, что примерно 10% заказчиков оказываются не добросовестными, в той или иной степени :D
Если Вы успели поработать с всего парой десятков заказчиков, то у Вас все ещё только начинается. Когда появится четвертый-пятый недобросовестный клиент - вспомните свой совет и последуйте ему :)
52.
Захаров_Николай
1101.07.16 12:49 Сейчас в теме
(50) h00k, Во-превых посыл был не Вам. Уверен вам есть что защищать.
Во-вторых я писал о работе с клиентами. А не о продажах.
В-третьих если меня что-то не касается я прохожу мимо. Если вас зацепила эта за живое, то я не знаю что добавить.
В-четвертых разводить в этой теме флуд считаю не совсем правильным. Поэтому отписываюсь.
Если вас зацепила эта за живое, то я не знаю что добавить.
Да нет, просто иногда удивляет подобная наивность и максимализм. Со временем начинаешь смотреть на это философски, как в (2). Я, кстати, полностью поддерживаю его высказывание и считаю что все что дальше - флуд.
Вот только реализация - это дополнительные затраты. Хостинг и настройка веб-сервера - дополнительные риски и снова затраты.
Это справедливо относительно готового решения. А вот относительно выноса во внешнюю компоненту, то я не был бы столь категоричен. Кому вк легче писать, кому веб-сервис. И там, и там есть отдельные преимущества и недостатки, все зависит от специфики самой обработки. Например, контроль лицензирования тиражного варианта обработки легче проводить как раз через веб-сервис...
А вот относительно выноса во внешнюю компоненту, то я не был бы столь категоричен.
От алгоритмов зависит, но в любом случае, добавление в шаблон защищаемых алгоритмов плюс компиляция-тестирование - это не меньше часа возни.
Несомненный плюс такого подхода очевиден - это и гибкость установки ограничений и отсутствие узкого места - "интернета", к которому у продакшен сервера заказчика просто может отсутствовать доступ, но и себестоимость работ повышается. Если предполагается большое количество разных обработок так защищать, то использование СЛК от 1С или ЗК2 от WiseAdvice, чисто с экономической точки зрения, более оправдано.
П.С.: Чаще всего мне встречался вынос запросов во внешние библиотеки, а реализация запросов вне 1С - это именно то развлечение, после которого начинаешь прощать конфигуратору почти все недостатки, ведь в нем есть конструктор(!!!) запросов :)
Один раз наткнулся на вынос текста запросов, это прям сказка какая-то была. Ставишь точку останова в отладчике и все, защиты уже нет. Почти как у (18) roman77,
можно хранить какие-то ключевые куски кода на закрытом от посторонних сайте.
с грамматикой у него все хорошо, а вот с опытом и логикой, видимо, пока не очень.
Ну и СЛК от 1С - тоже, тот еще цирк: подключаешь (NFR) ключ - и всё, защиты считай уже нет. А в особо запущенных случаях даже и ключ не нужен.
Надо грамотно формулировать задачу, если заказчик сам не может, оговаривать стоимость, писать обработку, сдавать результат и получать вознаграждение. Что будет дальше - не важно. Пусть кто-то другой в коде разбирается и то же зарабатывает! Лочить зачем? Какой в этом смысл если 1Сников так много, что пока Ты будешь лочить найдется 10ка других, кто напишет, заберут деньги и бабай :)
Просто договорись на сумму, которая Тебя устраивает, получи ее и всё, ищи следующего заказчика.
Какой в этом смысл если 1Сников так много, что пока Ты будешь лочить найдется 10ка других, кто напишет, заберут деньги и бабай
Угу, именно по этому интеграция 1С и TecDoc, в течении более чем 6 лет(!!!), была всего в 2х вариантах: TecDoc Explorer Дениса и мой TecDoc Клиент, а цена в 25-30 тыс. за обработку порождала кучу веток "купим в складчину" и т.п., на известных форумах... а потом, мне же, еще и в личку писали запросы на "вылечить от жадности" мою же обработку :D
вынос мозга логики во внешние компоненты на с++ являются хорошей защитой в контексте данного вопроса?
Лучшая защита - конкурентная цена + хорошая поддержка, а все остальное ломается, так или иначе.
Единственное что можно сделать - повысить требования к квалификации ломателей применив сложные способы защиты, одним из которых является вынос бизнес логики во внешнюю компоненту, которую тоже надо не забыть защищать :)
удивительно как упираются люди, чтобы защитить свой, никому не нужный, говнокод. А по настоящему стоящих обработок, в общем-то единицы. Да и что-то новое выдумать, уже проблематично, всегда найдется десяток других альтернативных обработок с открытым кодом, который не составит труда доделать под себя.
А уж про конфигурации я вообще молчу, по сути весь самопал это эксклюзив, который кроме конкретно взятого предприятия, под которое пишется, никому и не даром не нужен.
Единственное, для чего это может понадобится, для саботирования и шантажа своих же работодателей, которые заплатили программисту за разработку для себя, а он взял и тихо обфусцировал код и паролем защитил, причем перед увольнением, иначе он сам же будет испытывать трудности с доработкой. А перед увольнением можно, потом чувство гордости за оставленной подлянки для следующего программиста.
(55) Boneman, иногда бывает иначе - пришел на предприятие, сделал им нормальную доработку за нормальные деньги, а им платить жалко или захотели привести какого-то своего блатного говнокодера. И тебе говорят, что " у нас был независимый эксперт и он смотрел доработки и заключил что они полное ничто и не стоят этих денег", могут и кинуть с деньгами. У меня так не было, а у знакомых было пару раз. Чтобы защититься от таких "независимых экспертов" и нужно защищать свой код, или выводить во внешние компоненты, или еще что-то. А если работу оплатили, конечно нужно оставлять открытый код.
Только вот месяц назад знакомого кинули на деньги очередные парнокопытные. А когда я ему год назад говорил про обфускацию кода, он отмахивался, мол это всё твои комплексы.
59.
Захаров_Николай
1127.07.16 10:14 Сейчас в теме
(58) spe1c, где же вы их находите?
(57) alex_ua85, как же бороться с такой крутой обфускацией? Вдруг понадобиться что-то самому исправить?
А вообще надо клиентов на поддержке держать тогда и защита не нужна. Поддержка приносит больше денег чем продукт. (ООО 1С подтвердит)
P.S.: Расскажите кого кидали, как это происходит. :)
(59) Захаров_Николай, Согласен, почитав про защиту модулей, понимаешь, что сам потом себе набьешь шишек, вдруг кто-то что-то доработает или тебя не будет, а кому-то придется что-то исправлять, как быть, вдруг из-за тебя встанет работа фирмы, тогда что? Неужели код написанный тобой такой ценный? Вряд-ли. Лучше думать про оптимизацию кода и повышение мастерства. Хотя не мне судить, конечно каждый решает сам, что и как ему делать, но все же лучше думать о последствиях и о других коллегах.
Посмотрите готовое решение для защиты модулей. Люди уже поработали, зачем изобретать велосипед? Тема развивается, как отдельный сервис, генерация кода происходит прямо на сайте, не знаю почему они не добавились в Инфостарт. Многим было бы интересно, может и добавились, но я не нашел.
Принцип защиты - время/стоимость декомпиляции на порядок выше времени написания/стоимости аналогичного кода.
Принцип нападения - сад подводных камней: время и стоимость допиливания/обучения на порядок выше стоимости кода.