Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Технологии защиты программного обеспечения > Защита програм от нелегального копирования


Автор: DJDOGgy 15.5.2006, 22:18
Помогите пожалуйста начинающему програмисту. 
Я написал прогу для одной фирмы и ее согласны купить, но я хочу защитить ее от несанкционированого копирования. Возможно ли это? И если да, то расскажите как, пожалуйста(время поджимает)!
Зарание большое спасибо!!!!! 

Автор: Kagor 15.5.2006, 22:50
Модератор: Перемещено из Новости IT/Новости из мира Delphi, Kylix и Pascal. 

Автор: пользователь 16.5.2006, 00:39
Ну например изменить код так, чтобы смысл был такой же, но было много лишнего. Вообщем усложнить его.... В случае чего можно будет доказать, что это твой код, так как ты сможешь подробно описать, что там лишнего ты приписал.  

Автор: Rouse_ 16.5.2006, 09:29
По закону пользователь имеет право создать резерную копию продукта на случай выхода из строя носителя. Так что защита от копирования будет противозаконна.  

Автор: Snowy 16.5.2006, 09:47
Вопрос для этого раздела http://forum.vingrad.ru/index.php?showforum=125 

Автор: Sunvas 18.5.2006, 07:12
Цитата(DJDOGgy @  15.5.2006,  22:18 Найти цитируемый пост)
я хочу защитить ее от несанкционированого копирования.

Получай серийник винта и сравнивай при каждом запуске... 

Автор: maximjon 29.5.2006, 20:43
Sunvas, лучше тип процессора, его частоту и т.д. в общем привяжи к железу 

Автор: Poseidon 29.5.2006, 21:04
Цитата(maximjon @  29.5.2006,  20:43 Найти цитируемый пост)
Sunvas, лучше тип процессора, его частоту и т.д.
 Нет, все же если привязываться, то лучше к винчестеру. По одной простой причине: если заменим винт, нто придется копировать все на другой. А именно от копирования нам и надо защититься. А вот если привяжимся к процессору, то при его замене программа начнет рузаться, что ее типо скопировали и т.п., хотя копирования не было.
 

Автор: skyboy 29.5.2006, 21:06
maximjon, за  такой сюрприз заказчик не четвертует? 
DJDOGgy, программа настолько уникальна? Или это "понты побросать" охотО?  smile  

Автор: maximjon 1.6.2006, 19:38
Например мои проги привязываються к любой части компа, я не говорю что надо к железу, можно следить за логинами в винде, версии винды, но идея про винт не плоха, я с ней тоже согласен. 

Автор: ConstantinXXX 1.6.2006, 22:15
maximjon, Зайди на http://constantinxxx.narod.ru/ --------> Delphi7 --------> [Анти]взлом.
Там я разместил несколько статеик про защиту от копирования и не только. Страничка совсем недавно поевилась так, что там немного статей. smile

Добавлено @ 22:16 
Вот насчет привязки к винту. Дайте маленький код. Я знаю, что есть такой компанент в Delphi, но мне желательно без него. smile  Зарание спасибо.

Добавлено @ 22:26 
maximjon, 
Цитата(maximjon @  1.6.2006,  19:38 Найти цитируемый пост)
можно следить за логинами 
 Я лично каждые 20 - 30 дней переустанавливаю Windows. Вот как твоя прога будет следить за моими логинами и т.п. smile  Лучше к винту привязать, его не так часто меняют.
 

Автор: ConstantinXXX 1.6.2006, 22:31
защите от копирования или Shareware в среде Delphi.
Если разбивать на dll. 

Дробим прогу на exe и несколько DLL-ей, функциям в DLL-ях даем одинаковые public'и, а названия DLL-ям даем длинные, притом начальные части названий должны совпадать, так, чтобы короткие имена отличались только числом после тильды. Вот по коротким-то именам мы их вызывать и будем. А число после тильды, как известно, зависит от порядка копирования файлов на диск, при стирании файлов с "промежуточными" номерами не меняется и при копировании не воспроизводится. Так что, копируя в "неалфавитном порядке", перемежая рабочие DLL-и с "заглушками" (потом их можно стереть), легко можно добиться невоспроизводимости сочетаний длинное-короткое имя, и после несанкционированного копирования EXE будет вызывать не те функции из не тех библиотек. Единственная тонкость: неплохо поставить проверку на длинность имени в самих dll-ях, причем с использованием FindFirstFile, так как часть win32-платформ передает dll-и, вызываемой по короткому имени, как имя ее модуля именно короткое имя. А иначе прога будет легко копироваться из DOS (т.е. только короткие имена) без потери функциональности.

Вот т так пойдет защититься от копирования. smile  

Автор: kiberdog 2.6.2006, 10:40
Могу предложить следующее, т.к. этим приходилось заниматься (клиент попался дотошный).
В Вашей программе наверняка есть меню, названия кнопок и т.д. на русском языке поэтому делаем следующее:
1. То что написано в меню, кнопках и т.д. шифруем. В качестве ключа выступает дискета, флэшка, CD. Эти устройства имеют свой уникакальный номер, который можно узнать при помощи функции GetVolumeInformation, но следует учесть следующее что при форматировании дискеты, флэшки номер меняется, тоже происходит при перезаписи CD.  После этого шифруем все надписи отдельной программой.
2. В Вашу программу добавляем  только модуль дешифрации.
3. При запуске Вашей программы происходит дешифрация надписей меню, кнопок.
4. Ваша программа сможет нормально работать при наличии уникального ключевого носителя

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

Автор: maximjon 3.6.2006, 18:43
Я не занимаюсь прогами для пользователей, только очень редко и в основном они свободны. А в крупных компаниях винду переустанавливают очень редко. Я, например, уже больше 10 месяцев не переустанавливал винду. smile  

Автор: ConstantinXXX 5.6.2006, 13:40
maximjon, В таком слючии можно привезать к винде. smile  

Автор: Antonimus 12.1.2007, 17:12
Пустое это все! Если что-то попадает в память компьютера (в зашифрованнои виде или нет), все становится достоянием хакера, потому что под дебагерами все видно как черным по белому. А зашифрованные фрагменты Вы хакеру сами же и расшифруете своей же программой в один прекрасный момент, потому что в этот самый момент эти фрагменты должны быть выполнены, а в зашифрованном виде их выполнить нельзя. Так дождавшись расшифровки фрагмента хакер его сохраняет расшифрованным и блокирует функцию расшифровки. После этого программа будет работать лучше и быстрее, чем защищенная. Вобщем, такого рода защиты называют пятиминутками (утрированно конечно). Сам я пользую защиту USB-ключами "LOCK". Они позволяют запрятать во внутренней памяти до 256К программного кода, который не читается из ключа, а выполняется прямо внутри ключа. Вот это действительно защита. Программа (достаточно большая ее часть) вообще в комп никогда не попадает, поэтому хакеру и ломать нечего. Единственный вариант - разобраться по потоку данных через USB и по куску кода, который остается в компе, что прога делает и написать аналог. Не крутовастая ли задачка? smile  Если интересно, могу ссылку на доку по ключам скинуть.

Автор: Kagor 12.1.2007, 19:51
Цитата(Antonimus @  12.1.2007,  18:12 Найти цитируемый пост)
Сам я пользую защиту USB-ключами "LOCK"
Это на подобие хасп ключей? Если да, то уже давно есть хасп эмуляторы...

Автор: W4FhLF 12.1.2007, 20:55
Цитата(Antonimus @  12.1.2007,  17:12 Найти цитируемый пост)
Сам я пользую защиту USB-ключами "LOCK". Они позволяют запрятать во внутренней памяти до 256К программного кода, который не читается из ключа, а выполняется прямо внутри ключа. Вот это действительно защита.


Это там процессор чтоли внутри стоит, ага?smile Исполняется она на процессоре, на основном, пусть даже в оперативную память она не попадает, но снять дамп ключа можно и в этом случае.

Добавлено @ 20:57 
Вообще пора понять: Стойкость программы определяется целессобразностью и стоимостью её взлома. 
Подумайте над этим и хватит уже спорить какая защита круче. "Крутость" защиты определяется не только сложностью взлома самой защиты, но и другими факторами.

Автор: dumb 13.1.2007, 03:07
вообще, два одинаковых поста Antonimus'а в темах по защите выглядят как реклама упоминаемых там "затычек" - типа "ничем не защитить, и вот только lock рулит"... user posted image

Автор: nerezus 14.1.2007, 16:06
Теоретически такие ключи помогут, если расчет ведется на них, да и себестоимость у них будет не такой уж и большой.

До тех пор, пока алгоритм не рипнут с ключа =)

Автор: W4FhLF 14.1.2007, 16:59
Цитата(nerezus @  14.1.2007,  16:06 Найти цитируемый пост)
Теоретически такие ключи помогут, если расчет ведется на них, да и себестоимость у них будет не такой уж и большой.


Практически таких ключей существовать никогда не будет. Такие меры неоправданы. 
Чтобы исключить обмен данными с текущим компьютером в ключе фактически должен существовать свой небольшой компьютер. Причём логично предположить, что в его ПЗУ должен быть записан какой-то критический код, а не простая проверка серийника на валидность. Код этот естестсвенно должен быть x86 совместимым, иначе, чтобы написать программный комплекс помимо дополнительного ПО потребуется ещё и знание других языков. 
Страшно представить сколько будет стоить разработка такого защитного комплекса, а после помимо сибистоимости такой железяки будет кусаться накрутка от производителя, ибо окупать надо. В итоге цена такого ключа будет очень высока, реализация сложна, модификация накладна, а стойкость невысока. 
К программам, которые требуют таких мер защиты применяется совсем иная политика.

Автор: nerezus 14.1.2007, 23:54
Цитата

Чтобы исключить обмен данными с текущим компьютером в ключе фактически должен существовать свой небольшой компьютер. Причём логично предположить, что в его ПЗУ должен быть записан какой-то критический код

именно так )

Цитата

Код этот естестсвенно должен быть x86 совместимым

нет, иначе ключ будет огромным и дорогим.
достаточно поддержки примитивных "калькукляторных операций" и десятка килобайт памяти для кода.
имхо себестоимость без накрутки - бакса 3(сколько стоит калькулятор на вещевом рынке?)

Автор: Antonimus 16.1.2007, 18:24
Парни, вы не поняли. В ключе действительно компьютер (можно и так сказать), дамп с ключа не снять. Процессор там не x86, а ARM. По производительности достаточно шустрый. Языков других знать не надо, так как он программается на обычном С++. Мы в такой ключ запихали целиком САПР для оконного производства (все кроме функций операторской консоли), нормально рулит, народ даже не въезжает, что прога не в компе, а в ключе выполняется.

Автор: dumb 17.1.2007, 07:50
Antonimus, давай я вместо твоей мутной пурги "мне бы защитить/мне бы поломать/итд.итп.", коей ты расплодил по всем форумам, просто приведу ссылку на описание http://www.astroma-spb.ru/lock.htm. кому надо - сам прочитает, что это и как это.

бесплатный совет: заплатите 10$ студенту, чтоб вам страничку нарисовали хоть как-нибудь...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)