И снова про защиту ПО.
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.157] |
|
|
В разделе обсуждаются следующие темы:
И снова про защиту ПО.
|
Сообщ.
#1
,
|
|
|
|
Народ!
Я вот тут начитался всяких статей про взлом и защиту, везде фигурируют варианты фразы, "если у хакера есть работающая версия программы, то он снимет любую защиту, при наличии времени и желания"... в общем у меня появилась следующая идея. В любой программе есть ключевой набор данных.... координады объектов, начальные значения.... Все это дело можно собрать в отдельную структуру и закриптить тем же SSL-ем с помощью асиметричного ключа.... в итоге у хакера будет вроде как полнаяверсия программы, с нета ничего докачивать не надо... но вот асиметричный ключ он в принципе не сможет получить.. остается только зарегистрироваться... ![]() Кто что думает по поводу этой идеи.. Спасибо за внимание. |
|
Сообщ.
#2
,
|
|
|
|
а в программе эти данные то как будут расшифрововаться ?
ладно если они всеже относятся только к регистрированной части, то просто украдут второй ключ и поделятся им со всеми : |
|
Сообщ.
#3
,
|
|
|
|
Или сдернет его с дампа памяти проги, т.к. для операции шифрации/дешифрации нужно будет оба ключа держать в памяти. ;D Я уже ломал (почти такую -- только без SSL) прогу. ;D ;D ;D
|
|
Сообщ.
#4
,
|
|
|
|
все данные лежат в ресурсах в виде уже зашифрованного заранее бинарника....
пользователь вводит ключ. с помощью этого ключа вызывается только ф-ция декриптинга.... не получилось - ну и ладно.... прога закрывается.... а если уберут закрытие - то в вместо данных будет мусор.... |
|
Сообщ.
#5
,
|
|
|
|
Так зачем вообще эта прога нада, если она не будет без ключа работать?
Я имею в виду демо-представления. |
|
Сообщ.
#6
,
|
|
|
|
Цитата Muran, 27.05.03, 18:06:59 все данные лежат в ресурсах в виде уже зашифрованного заранее бинарника.... пользователь вводит ключ. с помощью этого ключа вызывается только ф-ция декриптинга.... не получилось - ну и ладно.... прога закрывается.... а если уберут закрытие - то в вместо данных будет мусор.... Угу. Но, во-первых, как функция ввода, так и декрптинга трассируемы (по-любому) а, во-вторых, по результатам прозекторского исследования не составляет проблем получить то, что ввел юзер (и как это преобразовалось). Согласись, не мало? |
|
Сообщ.
#7
,
|
|
|
|
Цитата Muran, 27.05.03, 17:16:58 Народ! Я вот тут начитался всяких статей про взлом и защиту, везде фигурируют варианты фразы, "если у хакера есть работающая версия программы, то он снимет любую защиту, при наличии времени и желания"... в общем у меня появилась следующая идея. В любой программе есть ключевой набор данных.... координады объектов, начальные значения.... Все это дело можно собрать в отдельную структуру и закриптить тем же SSL-ем с помощью асиметричного ключа.... в итоге у хакера будет вроде как полнаяверсия программы, с нета ничего докачивать не надо... но вот асиметричный ключ он в принципе не сможет получить.. остается только зарегистрироваться... ![]() Кто что думает по поводу этой идеи.. Спасибо за внимание. при наличие экспоненциального времени можно многое раскодировать ка бы ты это не кодировал разве что случайный ключ |
|
Сообщ.
#8
,
|
|
|
|
да не дело не во времени....
получается тоже самое, что продавать просто готовую программу а демку с выключеным кодом отдавать на право и на лево... зы я уже подобное реализовывал на assembler'е я делал так - код отвечающий за функции, которые должны быть только в регестреной версии криптовались при помощи hash'а от ключа а перед запуском проверялась crc32 на валидность расшифровки. даже если влепишь вместо je jne то код будет нерабочий. |
|
Сообщ.
#9
,
|
|
|
|
А потом берем добросовестно зарегистрированную прогу и тот код, которым ты хэшируешься, а потом проверяешься через CRC32, просто:
- последний выкусываешь (до посинения банально -- определяется контекстом проги -- иногда можно обработать просто переходами... смотреть надо). - а хэширование -- генеришь кейген, на основании имеющегося ключа, потом можешь... Да многое можно сделать... ;D Если так делать, то генерить (с последующей заменой ключа и решифрацией) "сеансовый ключ", актуальный в пределах одного сеанса. Делать это в фоновом процессе, независимо от юзера и потом давать ему новый ключ. Да, здесь еще не забыть бы помолиться, чтобы при решифрации сустема просто не зависла бы... ;D Иначе юзер будет дико благодарен за доп. инсталляцию... ;D |
|
Сообщ.
#10
,
|
|
|
|
если кто-то выложит ключ, то тут уже мало что поможет...
Цитата the_Shadow, 27.05.03, 18:16:09 Угу. Но, во-первых, как функция ввода, так и декрптинга трассируемы (по-любому) а, во-вторых, по результатам прозекторского исследования не составляет проблем получить то, что ввел юзер (и как это преобразовалось). Согласись, не мало? ну и пусть трассируема... декриптор пойдет по неправильному пути, что от этого взломщику.... сама прога ничего шифровать не будет, и в ней не будет никаких ключей.... то, что ввел юзер - это и будет ключ для расшифровывания.... |
|
Сообщ.
#11
,
|
|
|
|
а демку можно делать вообще без функций, которые должны быть в зарегиной версии...
ну или с урезаными донельзя.... сли у взломщика будет полная версия проги, пусть заделаная всякими переходами, хэшированием... все можно сломать... главное чтобы прога стоила таких трудов... |
|
Сообщ.
#12
,
|
|
|
|
Цитата the_Shadow, 27.05.03, 18:48:39 А потом берем добросовестно зарегистрированную прогу и ии... где ты ее возьмешь чтобы проделать все эти операции ? купишь разве только чтоли... ;D c данным типом защиты все ясно, слабая сторона - эт воровство ключей... ну а что тут сделаешь :-/ |
|
Сообщ.
#13
,
|
|
|
|
Нет. Вся проблема упирается не столько в алгоритм защиты, сколько еще и в добросовестность пользователя. Это раз.
А два -- ты не можешь создавать бесконечное множество ключей. Оно будет конечно (это раз), но это вообщем-то случай чисто теоретический, т.е. явно что число копий будет меньше возможного пространства ключей. Но! Ты не сможешь создавать и бесконечно сложные ключи. Т.е. Марьванна или Светочка или манагер Вася, что будут юзать твои проги, должны будут вводить эти самые ключи, а анекдот про кошку с именем "#$tyu_\%^&56" здесь не "катит". Таким образом, создавая заведомо слабые ключи ты будешь "подставляться" под стандартную атаку методом перебора (элементарный критерий "правильности" перебора -- со структурой того же COFF'а из Win32 мы все знакомы... ;D Правда, можно извратиться, но, IMHO, "эта игра не стоит свеч, как сказала одна изможденая ведьма, увидев приготовленный для себя костер"). За весьма обозримый срок. Получив таким образом ключ, крякер получает "универсальный ключ". Отдавать ввод ключа какому-то "автомату" -- все равно что сдавать крякеру софтинку с потрохами. Случай явный и доказательству, IMHO, не подлежит. Это... так... "на поверхности". Подумав, можно еще по-извращаться чисто теоретически. Для меня, если честно, это не сильно актуально, т.к. я уповаю на то, что чел. не должен быть свиньей сам. А если он козел конченный, то, знаешь, Господь ему воздаст. А я не "вкладываю" себя в это все. ;D |
|
Сообщ.
#14
,
|
|
|
|
Цитата _IX0DeS, 27.05.03, 19:24:12 ии... где ты ее возьмешь чтобы проделать все эти операции ? купишь разве только чтоли... ;D Не смешно. Примерно половина пиратского софта, что я видел, представляла собой копии законно купленного ПО. Либо просто копии, либо ломаные по всякому. А если у хакера есть реально работающая прога, сломать ее - дело техники. Копии уходят с фирм регулярно, так что добыть такую - не проблема. Серийник обычно прилагается. В крайнем случае, найдется бессребреник, который купит прогу и снимет с нее защиту (допустим, чтобы поделится с любимой девушкой ), а там прога расползется...В конечном счете проблема защиты сводится к защите от копирования, а такого в природе НЕТ. |
|
Сообщ.
#15
,
|
|
|
|
tatar_0x4E, к сожалению, 100\%-но прав...
![]() |
|
Сообщ.
#16
,
|
|
|
|
Есть вариант, привязывать прогу к, скажем, серийнику самих виндов, который запрашивать через "осла" (или как там IE зовут), у него есть спецфункция, называется "Задействовать профиль", у нас говорят, что это дыра, оставленная мелкомягкими для чего-то. Кто-то у нас сниффил, что передает IE при включенном профиле и ОХ***** (я не знаю что точно, но что всю конфигурацию системы 100пудов). Так вот, можно сделать интерактивную регистрацию через IE, стырить инфу, на ее основании сгенерить ключ и передать его юзеру. Да, еще нужно просить серийник самой проги. Это конечно тоже ломается, но с куда бОльшими проблемами.
|
|
Сообщ.
#17
,
|
|
|
|
Точно. Перехватываем вызов этой фунции, возвращаем нужный результат и все в порядке. Защита построенная на одной фиче и сконцентрированная в одном месте программы ненадежна по умолчанию.
|
|
Сообщ.
#18
,
|
|
|
|
остаюсь при мнении, что пока самыми надежными являются привязки к всяким алладиновским hasp'ам
|
|
Сообщ.
#19
,
|
|
|
|
Нет, bin, весьма не надежны... ;D
Оно, конечно, по-надежней чем просто какие-то защиты свободнокопируемого софта, но то же не то... ;D |
|
Сообщ.
#20
,
|
|
|
|
2All:
Как вам идея подписывать каждую проданную версию уникальной электронной подписью, с целью выяснения источника утечки лицензионной версии. |
|
Сообщ.
#21
,
|
|
|
|
хорошо, если продаешь одну версию в день, а если сотни даунлоадов в сутки, то запаришься скрипты писать для прописывания ;)
|
|
Сообщ.
#22
,
|
|
|
|
.....У меня тут еще одно предложение, Можно в регистрационных данных указать какие-то параметры, которые будут постоянно фигурировать в программе (имя, фамилия, обратный адрес, ключевые настройки, которые могут увидеть другие пользователи и сразу увидеть не соответствие с тем пользователем, который регистрировал программу).
|
|
Сообщ.
#23
,
|
|
|
|
Ага... Они увидят Registred to: C00LhAcKeR; Organization: GiGi, Inc.; Serial No: 1234567890... Сильно тебе это поможет?
|
|
Сообщ.
#24
,
|
|
|
|
Цитата Balamut, 24.06.03, 23:16:52 2All: Как вам идея подписывать каждую проданную версию уникальной электронной подписью, с целью выяснения источника утечки лицензионной версии. Ничего не даст. Допустим, алгоритм такой: 1) Берем ФИО покупателя + серийник + ... + прога 2) Подписываем 3) Отдаем с подписью Тогда: 1) Пользователь берет прогу 2) Меняет подпись 3) Дарит всем ;D Подпись, конечно, будет левая (да хотя бы нулевая), но кто это сможет проверить? Если сама прога - эта проверка вырезается обычным способом, если кто-то третий, то, единственное, что он сможет доказать, это то, что данный конкретный юзер юзает левую копию, но это и без подписи доказать можно элементарно, а источник - фиг найдешь. |
|
Сообщ.
#25
,
|
|
|
|
Рад тебя видеть, Муран!
Я немножко расслабился, решил посмотреть на этот сайт более широким взглядом... ты ВЕЗДЕСУЩ!!! Не скажите, что значит закриптить и что такое SSL? |
|
Сообщ.
#26
,
|
|
|
|
закриптить=to crypt (to encrypt) - зашифровать
SSL: http://www.virtualcellardoor.com/cgi-bin/pagegen.pl?ssl |
|
Сообщ.
#27
,
|
|
|
|
Цитата 2All: Как вам идея подписывать каждую проданную версию уникальной электронной подписью, с целью выяснения источника утечки лицензионной версии. Меня интересует не столько техническая реализация "сложновыдираемой" подписи, сколько необходимость такой подписи для обеспечения юридической стороны процесса борьбы с пиратством. |
|
Сообщ.
#28
,
|
|
|
|
Собственно, сама по себе "цифровая подпись" в РФ, вроде как принята как объект, удостоверяющий личность субъекта... Т.е. в теории, можно подпсываться "электронным пером". Но как на практике... Наверное, "как всегда", может кто-то лучше знает?
|
|
Сообщ.
#29
,
|
|
|
|
А я, кстати, читал где-то, что есть такой принцип защиты - писать программу не по обычной схеме, когда есть как бы дерево - основной цикл и от него идут разные ветки выполнения - функции, которые возвращают управление в точку вызова. Другая схема состоит в том, что выполнение программы представляет собой один большой замкнутый цикл переходов, где результат каждой функции есть адрес начала следующей. Таким образом, вычисляя адреса динамически на основе введенного пользователем ключа, можно наверное соорудить неплохую защиту...
|