| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Технологии защиты программного обеспечения > Создание защиты программы. |
| Автор: Нитонисе 10.12.2009, 11:36 |
| Нужно установить защиту на программу, таким образом, чтобы она могла запускаться только на одном компьютере. То есть - у пользователя есть экземпляр программы, он проводит ее активацию с моей помощью, после чего он может пользоваться этой программой, но только на том компьютере, где эта программа была установлена. Как это можно реализовать? |
| Автор: djamshud 10.12.2009, 11:43 |
| Можно привязаться к железу. И знать, что вас сломают. К с++ вопрос отношения не имеет. |
| Автор: Нитонисе 10.12.2009, 12:03 |
| Я пишу на С++, потому тут и разместил эту тему. На счет привязки к железу это понятно, не понятна только конкретная реализация. |
| Автор: GoldFinch 10.12.2009, 12:04 |
| Нитонисе, юзай поиск по форуму и гугл, тема - боян |
| Автор: xvr 10.12.2009, 13:44 | ||
|
| Автор: 17dufa 10.12.2009, 14:00 |
| когда в универе делали подобную лабу привязывались к ID процессора, ID жесткого диска (не тома, а именно диска) или MAC адресу сетевухи. Если будет малейшее желание сломать такую защиту - действительно сломают, ломают даже HASP ключи *MAC сетевухи в винде, наскока мне известно, вообще мона поменять (при перезагрузке он приравнивается реальному, но во время сеанса можно поменять и все следующие запросы MAC в этом сеансе будут возвращать измененное значение). Какие конкретно API использовали - уже не помню, гугл в помощь. |
| Автор: xvr 10.12.2009, 14:12 |
| Вдогонку - можно привязать к конкретной Винде через CryptoAPI (см. сертификаты и хранилища ключей). Если на компе есть TPM, то наверное возможно привязаться к нему. Но в любом случае это програмная защита, и она может быть отломана |
| Автор: Нитонисе 10.12.2009, 14:12 |
| Программа не сильно важная, потому супер-мега защита не требуется. Нужна простенькая защита от мелких вредителей. То есть чтобы если вдруг кому-то захочется осуществить взлом - программа должна продержаться хотя бы день)) Добавлено через 56 секунд Я так понимаю прописывать в реестре какие-то спец-ключи - неэффективная защита? |
| Автор: 17dufa 10.12.2009, 15:08 |
| Нитонисе, смотря от кого. от тетечки гоняющей солитер - более чем |
| Автор: 17dufa 10.12.2009, 16:05 |
| GoldFinch, а про вариант "и если код защиты может прочитать это значение только своими средствами, не вызывая системных АПИ, то такой код можно виртуализировать, и такую защиту практически невозможно будет реверсировать используя дизасм и отладку." где можно подробней почитать? что-то не совсем понимаю. |
| Автор: GoldFinch 10.12.2009, 16:23 |
| 17dufa, ты когданить код накрытый themidа/winlicense видел? это когда 30 инструкций процессора превращаются в 3миллиона инструкций конечно если из кода накрытого ВМ вызывается АПИ, это эту АПИ можно перехватить, и примерно понять что этот код делает. а если код не вызывает апи - его практически невозможно реверсировать. декомпилировать ВМ у themida допустим можно, но ничто не мешает сделать ее метаморфной. |
| Автор: xvr 10.12.2009, 18:34 | ||||||
Ключевое слово вынеся жизненно важную часть функционала программы во внешний аппаратный (защищенный) ключ. Т.е. ВНУТРИ ключа крутится часть программы. Для его эмуляции эту часть программы придется написать с нуля. Если эта 'часть' будет правильно выбранна, то такое 'написание с нуля' по трудозатратам будет эквивалентно вообще написанию всей программы с нуля. Так что это не ломается.
|
| Автор: 17dufa 10.12.2009, 18:46 |
| xvr, взаимодействие с аппаратным ключом идет через сторонний софт (в частности ОС), что мешает просто в тупую записать весь лог взаимодействия и в последствии его сэмулировать? Хотя понял, взаимодействие недетерминировано. Но попробовать можно. |
| Автор: xvr 10.12.2009, 21:23 | ||||
Пример - делаем САПР для разводки печатных плат. Сам разводчик помещаем в ключ. Т.е. при старте в него заливается netlist, в конце из него читается готовая топология. Перехватив и записав ВЕСЬ обмен данными с ключем, мы сможем сделать его эмулятор, который будет корректно разводить одну единственную плату, ту, на которой его ломали
|
| Автор: W4FhLF 11.12.2009, 09:54 |
| xvr, а какое щас железо в ключиках? Писать целиком "жизненно важную часть" под ключ (там же ARM вроде всегда были) это тоже весьма трудозатратно. И не факт, что потом этот алгоритм будет удовлетворять требованиям. Это если сравнивать с ВМ на CPU. |
| Автор: xvr 11.12.2009, 11:18 | ||||||
Какое поставят, то и будет
|
| Автор: DrHex 11.12.2009, 12:02 |
| все зависит то что хочет автор, если знает заранее ключ компьютера(например ид железа) то надо будет сделать что то типо архива с паролям(ну и конечно что паролем будет именно этот ключ, а когда программа стартует то читает текущие значения ид(винчестера) сравнимает с оригинальным по CRC32 к примеру и если подходит то начинает расспаковку), но с другой стороны как узнать ключ заранее??? Конечно можно сделать саможификацию инсталяции, но если сохранят на диск то тут маленький трабыл, хотя.... Вообще это исскуство где нужна фантация... |
| Автор: xvr 11.12.2009, 12:47 | ||
В одном маленьком королевстве жил-был король, который очень любил воевать. И очень он любил разное оружие и защиту от него. И пришел как то к нему изобретатель, и сказал: - О великий король, я изобрел пушку, которая может пробить любую броню! Вот ее чертежи, - с этими словами он полез в карман, достал чертежи и вручил их королю. Обрадовался король, велел выдать изобретателю 1000 золотых. А изобретатель достал из 2го кармана пачку чертежей и продолжил: - А еще я изобрел броню, которую не может пробить эта пушка! Обрадовался король, велел выдать изобретателю еще 1000 золотых. А изобретатель полез в 3й карман, достал еще пачку чертежей, и продолжил: - А еще я изобрел пушку, которая может пробить эту броню. Задумался король, но все же велел дать изобретателю еще 1000 золотых. А изобретатель достал из 4го кармана еще одну пачку чертежей, и сказал: - А еще я изобрел бро... Тут король велел страже схватить изобретатели и пересчитать, сколько у него карманов. - 145 штук, - пересчитала стража. И велел король выдать изобретателю 145000 золотых, а затем немедленно казнить. После чего запретил заниматься изобретательством в своем королевстве под страхом смертной казни. |
| Автор: 29Victor29 22.12.2009, 23:01 |
| Подскажите пожалуйста, где можно найти информацию для написания драйвера для USB-устройств ( можно под DOS , лучше на C/C++ , хотя буду рад любому предложенному Вами варианту ). ЗАРАНИЕ БЛАГОДАРЮ ВСЕХ ОТКЛИКНУВШИХСЯ!!! |
| Автор: rthsobakas 25.12.2009, 21:06 |
| я извиняюсь что тут вмешиваюсь. Я все не читал тока начало. А что если исользовать параметры железа(тока не говорить никому какого) как ключи при шифровании rsa. То есть прога делает откртый , закрытый ключ, потом расшифровывает прогу в память. Как -нибудь так.. |
| Автор: kolobok0 28.12.2009, 09:52 | ||
1) взять отпечаток ключа под дебагером - два пальца об асфальт. 2) в защите есть парадокс. а) защита нужна для коммерческого софта - иначе теряется смысл. б) слишком полная и правильная защита отрицательно влияет на распространение софта. посему помимо защиты, не забывайте дать халяву народу. а защиту стройте не только на софтверном уровне, но и юзайте железо. оптимальней - ключи. ещё круче - логическую защиту. это когда взломав софтверную илижелезячную - понимаешь что потратил время впустую удачи Вам (круглый) ЗЫ По поводу расшифровывания программы - см. цербер (дос) была когда то такая софтинка для защиты. уход от отладки, изменение среды работы, дешифровка программы на старте. брешь - защита чужих программ |
| Автор: BEOWOLF 1.2.2010, 02:59 | ||
Да забудьте вы наконец о защите программ через ID винчестера, видеокарты и прочего железа, сколько можно писать, что эта защита - полная туфта? Поясню, почему. Во-первых, вы договариваетесь с клиентом насчёт софта, а не обязываете его привязаться к железу. Может он захочет проапгрейдить камп, или поработать с программой дома/наработе. А может установит программу на внешний винчестер, один на всех. Во-вторых, группе пользователей ничто не мешает установить VMWare, и спокойно пользоваться несколькими копиями программы якобы под одним и тем же железом. Именно так все и поступают в подобных случаях. Что делать? Самый лучший вариант - когда пользователь запускает программу, то копия логинится на вашем сервере, когда закрывает программу - logout. И таким образом, лицензионные соглашения всегда будут выполняться - залогиненой сможет быть только то количество копий, о котором договаривались, и не больше, ну а запускаться они смогут с того железа, с которого удобно |
| Автор: Abyx 4.2.2010, 14:06 |
| BEOWOLF, не везде есть и может быть интернет. |
| Автор: Cтpaнник 7.2.2010, 15:58 | ||
Ага. А если проге по логике ее работы доступ в Инет и нафиг не нужен, то подобная ненужная и непонятная сетевая активность вызывает паранойю у системных администраторов, и прога быстро "получает по рукам" файерволом. С соответствующими юридическими последствиями для разработчика, разумеется. |
| Автор: CasperSC 27.3.2010, 18:13 | ||
А что за это ещё и какие-то последствия могут быть? Ты же не крадёшь конфиденциальную информацию, да ещё и в соглашении можно указать, что программа, соединяется с интернетом. Ну или при проверке новой версии, можно логиниться. Dotfuscator нормально защищает сам код программы? |
| Автор: Yogurt 11.2.2011, 13:53 |
| У меня в программе есть функция, которая берёт имя компьютера, шифрует его, и записывает в идентификационный файл. Но сама программа разблокируется только после нажатия определённой последовательности букв на клавиатуре. Нажатия перехватывает PreTranslateMessage. Затем вышеуказанная функция, и затем человек работает уже без меня Тут единственная проблема, что удалённо программу не поставишь |
| Автор: Akella 11.2.2011, 15:23 | ||
А если пользователь изменил имя компьютера? Всё? Переактивация? |
| Автор: Yogurt 14.2.2011, 14:23 | ||
| Я за всю жизнь не разу не менял имя просто так. Это делается только при переустановке ОС. При это, естественно, придётся переустанавливать всё ПО. Я опирался на начала темы, человек пишет, что сам устанавливает. Если все кнопки заблокированы, и разблокируются только после нажатия подряд определённой комбинации. После этого программа работает уже сама, запускается сколько угодно раз без участия разработчика
|
| Автор: xvr 14.2.2011, 17:57 | ||
Так что - не аргумент |
| Автор: Akella 28.2.2011, 11:33 | ||
Бред какой-то, извините за выражение. |
| Автор: Hayate 17.8.2011, 08:48 | ||
Можно где-нибудь почитать про проектирование таких приложений? А то хочется попробовать у ПО с открытым исходным кодом вынести жизненно важную часть функционала на сервер в интернете. |
| Автор: PavelSafonov 29.1.2015, 22:51 |
| Можно вынести жизненно важный функционал (в виде бинарного кода) на сервер и организовать лицензионный доступ с контролем кол-ва запущенных процессов. Это реалиует технология http://resanity.com. |
| Автор: chukhlomin 20.7.2015, 10:56 |
| 28 июля компания SafeNet(мировой лидер в области защиты и лицензирвания программного обеспечения(ключи HASP/Sentinel)), будет проводить бесплатный вебинар по теме защиты и лицензирования ПО. На вебинаре будут наглядно продемонстиррованы способы защиты ПО с использования аппаратных, программных и облачных ключей защиты. Также будут показаны способы создания демо-версий, удаленных обновлений лицензий, перенос части кода для выполнения внутри ключа защиты и многое другое. Зарегистрироваться на вебинар можно по ссылке: _http://safenet-sentinel.ru/events/index.php?ELEMENT_ID=6512 |