|
|
|
Защита ПО через привязку в железу
|
|||
|---|---|---|---|
|
#18+
Программа (будет) защищена через привязку к железу: 1. Юзер запрашивает из программы лицензионный ключ. Отправляет, например, шифровку по почте. В этой шифровке параметры его железа. 2. Получает лицензионный ключ (с шифрованными параметрами его железа, количеством юзеров, сроком использования и т.п.) и вводит его в программу. Программа работает. Если юзер скопирует программу на другой комп, то программа естественно не заработает, т.к. параметры железа другие. Все было бы хорошо, но хочется еще усилить защиту. Ведь как ломают программу? Ищут место, где проверяется защита и отключают его. Мне пришла идея, что нужно в лицензионный шифрованный файл добавить какую-то жизненно необходимую информацию, без которой программа не будет работать. Никак не могу придумать что туда добавить. Есть ли у кого опыт в этом вопросе? О программе: - двухзверка Delphi + Firebird - менеджер лицензий на сервере ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2011, 23:24 |
|
||
|
Защита ПО через привязку в железу
|
|||
|---|---|---|---|
|
#18+
shmelina Никак не могу придумать что туда добавить.Константы (вернее, значения переменных-констант). Дешифровать и присваивать в момент, когда потребовались, по одной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2011, 23:44 |
|
||
|
Защита ПО через привязку в железу
|
|||
|---|---|---|---|
|
#18+
shmelina, тут можно почитать http://derevyanko.blogspot.com/2009/02/hardware-id-diskid32-delphi.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2011, 00:55 |
|
||
|
Защита ПО через привязку в железу
|
|||
|---|---|---|---|
|
#18+
shmelina, HASP смотрели? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2011, 07:49 |
|
||
|
Защита ПО через привязку в железу
|
|||
|---|---|---|---|
|
#18+
eNoseshmelina, HASP смотрели? +1 Привязка к "железу" ИМХО не эффективна, слишком уж ограничивает пользователя + HASP удобно прописывать количество пользовательских лицензий... PS Правда HASP - это дополнительные накладные расходы + телодвижения по доставке ключа, освоению технологии... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2011, 08:35 |
|
||
|
Защита ПО через привязку в железу
|
|||
|---|---|---|---|
|
#18+
С HASP уже имел дело. Это менее удобно и мобильно, как для разработчика так и для пользователя. Есть опыт и железной и софтовой защите. Софтовая мне больше подходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2011, 09:18 |
|
||
|
Защита ПО через привязку в железу
|
|||
|---|---|---|---|
|
#18+
1. А если юзер поставит программу в виртуалку ? 2. А если юзер подключится к БД без вашей программы, а с помощью стороннего клиента - он сможет чтото сделать ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2011, 15:48 |
|
||
|
Защита ПО через привязку в железу
|
|||
|---|---|---|---|
|
#18+
Ashaik2. А если юзер подключится к БД без вашей программы, а с помощью стороннего клиента - он сможет чтото сделать ? Администратор сервера баз данных всегда может "что-то" сделать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2011, 15:49 |
|
||
|
Защита ПО через привязку в железу
|
|||
|---|---|---|---|
|
#18+
Ну поставит в виртуалку, ну ничего не поделаешь. Сначала я делал защиту от виртуалок, но теперь не буду, т.к. виртуализация серверов имеет место быть. Я понимаю, что таким образом можно будет распространять программу. Буду считать это издержками софтовой защиты. Но это все не теме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2011, 16:29 |
|
||
|
Защита ПО через привязку в железу
|
|||
|---|---|---|---|
|
#18+
shmelina, у виртуалок - своё "виртуализированное" железо... конечно какие то параметры типа MAC-адреса сетевой карты - можно и руками пробить, но в остальном - это как другой компьютер... собранные параметры железа можно использовать как ключ к алгоритму шфрования... допустим какого то блока памяти с промежуточным участком кода... а может - и пакер полноценный написать... причём не проверять соответствует ключ или нет... а брать - и расшифровывать... другое железо - в памяти мусор, и попытка выполнить данный код - заканчивается известным окном "приложение выполнило недопустимую операцию" - но тогда саму программу, или её отдельный модуль - придётся перекомпилировать для каждого пользователя... в случае какой-нибудь реализации этого механизма в виде "DLL-она и может быть ключом", со вложенной в неё информацией... но всё равно - то к чему есть физический доступ - рано или поздно будет сломано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2011, 18:03 |
|
||
|
Защита ПО через привязку в железу
|
|||
|---|---|---|---|
|
#18+
majestic-mikeсобранные параметры железа можно использовать как ключ к алгоритму шфрования... допустим какого то блока памяти с промежуточным участком кода... а может - и пакер полноценный написать... причём не проверять соответствует ключ или нет... а брать - и расшифровывать... другое железо - в памяти мусор, и попытка выполнить данный код - заканчивается известным окном "приложение выполнило недопустимую операцию" - но тогда саму программу, или её отдельный модуль - придётся перекомпилировать для каждого пользователя... в случае какой-нибудь реализации этого механизма в виде "DLL-она и может быть ключом", со вложенной в неё информацией... но всё равно - то к чему есть физический доступ - рано или поздно будет сломано. Предположим, обходится элементарно - копированием уже распакованного exe-шника. Точно также, константы, если они выцарапываются через одну функцию с ID константы, "лечатся" заменой этой функции на простую табличную. Вопрос не в том, чтобы сделать математически неломаемую программу - это практически нереально. Вопрос в том, от кого мы защищаемся. Если взломщику будет не лень ломать программу год, шансы на успех минимальны, а защищаться надо по полной - встраивая методы противодействия отладке и декомпиляции, используя для проверки кодов "железа" самописные функции, а не системные вызовы, проверяя неизменность исполняемого кода при выполнении, многократно копируя функции проверок и т.д. Потому что иначе все обращения к железу и проверки ключа в exe-файле поменяют на "пустышки" и привет. Хуже всего дешифровке поддаётся логика программы. Грубо говоря, по результатам работы дизассемблера сложно отличить управляющий выполнением программы if от всегда истинного условия (утверждения). Как вариант, менять часть условий (и переписывать часть утверждений) с if(condition), if(!condition) на нечто типа if(XOR(condition, GetSecSalt<__LINE__>(ID))). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2011, 18:24 |
|
||
|
Защита ПО через привязку в железу
|
|||
|---|---|---|---|
|
#18+
Поможет ли усложнить взлом программы, если в шифрованном файле (в котором привязка к железу) будет сериализован объект, который будет использоваться в работе программы. ЗЫ: С сериализацией знаком поверхностно-теоритически, по этому могу нести чушь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2011, 21:23 |
|
||
|
Защита ПО через привязку в железу
|
|||
|---|---|---|---|
|
#18+
shmelina, Ещё раз: в какой модели угроз мы работаем? Кто взломщик? Что именно он не должен сделать? (Для примера, вроде было исследование, что keygen'ы люди используют охотней чем crack'и.) От профессионала, само по себе, поможет чуть лучше чем никак - если код не запутан, банально ловятся все обращения к зашифрованному файлу, запоминаются ответы, подменяются функции обращения к зашифрованному файлу на обращения к файлу хакера, где эти ответы лежат (собственно, при незапутанном коде проще взять один файл и поменять функции получения кодов железа на возвращающие заданный результат; если нет сервера, на который программа лезет в обязательном порядке, этого достаточно). Простая истина: процессор исполняет незашифрованный код и работает с незашифрованными данными. Из чего следует, что а) все зашифрованные данные в какой-то момент будут расшифровываться, причём ключ расшифровывания должен храниться в самой программе; б) все данные доступны незашифрованными из-под отладчика достаточно низкого уровня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2011, 10:06 |
|
||
|
Защита ПО через привязку в железу
|
|||
|---|---|---|---|
|
#18+
shmelina..Все было бы хорошо, но хочется еще усилить защиту. Ведь как ломают программу? Ищут место, где проверяется защита и отключают его....- двухзверка Delphi + Firebird- менеджер лицензий на сервере собственно в чём вопросы? если усилить - то и нужно применять сильные ломы. программно-аппаратная защита лучше чем программная. тут правильно выше писали - смотрите в сторону железячных ключей защиты. Если Вы сами никогда не ломали программы, не дебажились, не кричали эврика подскочив на стуле - то Вы увы не сделаете защиту сколь более-менее значимую. Или скажем по другому - если вашу защиту Вы сами не сможете обойти - то это можно назвать не совсем плохой защитой. Почему Вы считаете а) что кто то будет именно так думать или действовать? б) что кто то глупее чем вы? в) делаете Вы один. Ломать будут тысячи (если только это кому то нужно будет). То что Вы предполагаете - замечательно, но к защите не имеет никакого значения. Ломают программы по разному. Исскуство взлома заключается в том, чтобы не ходить теми путями которые Вы уготовили. Посему вам достаточно защищаться от пионэров. Для мало-мальских знающих любой отладчик - Ваши алгоритмы будут вызывать приступы смеха. у вас есть компонента работающая на сервере - вот и постарайтесь заюзать её. Это будет более значимая защита чем любые шифровки вами заюзанные. удачи вам (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2011, 16:48 |
|
||
|
|

start [/forum/topic.php?fid=16&fpage=80&tid=1342774]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
76ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
| others: | 234ms |
| total: | 415ms |

| 0 / 0 |
