![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Защита от пиратства [D5, WinXP]
Александр1 © (2005-01-21 21:17:00)Здравствуйте уважаемые мастера. У меня такая проблема. Есть программа, не важно какая. Надо сделать так, чтобы она работала только на конкретном компе (защита от пиратства). Я понимаю, что, наверное, надо сделать что-то типа: считать какую-нибуть уникальную информацию о каком либо оборудованию компьютера и записать в программу. А затем проверять если не тот комп, то не работает программа. Посоветуйте пожалуйста, какую именно информацию лучше всего считывать. И как может у кого примеры, какие есть. Может кто уже делал такое?
Заранее спасибо за помощь!
KilkennyCat (2005-01-23 13:08:00) [21]
> её раскопирует пол города и будит пользоваться.
полгорода пользуется программой "теплопотери здания"? чтож-она делает-то такое? или кто у вас там в городе живет?
Беспечный_Ангел (2005-01-23 11:35:00) [22]
> Александр1 (22.01.05 21:36) [33]
Не првильно понял :о) Он показывает ФИЗИЧЕСКИЙ номер первого IDE диска... А вот на сколько логических дисков он разбит - вопрос канэшно... )))
> TUser © (22.01.05 21:08) [32]
А фиг его знает... Но подборка классная!
Александр1 (2005-01-23 06:39:00) [23]
> Johnmen © (23.01.05 00:28) [37]
> Одного не понимаю.
> Человек сам, добровольно раздаёт свою программу, а потом
> плачется на отсутствие материального вознаграждения. Непонятно
> за что...:)
В том то и дело, что я не раздовал её всем подряд, я записал её только на свою кафедру в университете. Я конечно понимал, что её раскопирую, но я не предполагал, что её раскопирует пол города и будит пользоваться.
Johnmen (2005-01-23 00:28:00) [24]Одного не понимаю.
Человек сам, добровольно раздаёт свою программу, а потом плачется на отсутствие материального вознаграждения. Непонятно за что...:)
aus (2005-01-22 21:47:00) [25]Для меня злободневная тема!
Как раз на днях сдох винчестер с подобной программой, написана на FoxPro для DOS, напрямую обращается к диску, чего XP ему не позволяет. Программиста того уже не сыскать, да и не нужно. А программа-то выеденного яйца не стоит, да и по закону принадлежит работодателю, котрый заказал ПО и оплатил услуги программиста.
Пришлось переписывать, но на него я очень зол, как и на FoxPro.
Александр1 (2005-01-22 21:40:00) [26]
> Knight © (22.01.05 21:08) [31]
>
> > [26] Александр1 (22.01.05 21:02)
> > А как определить марку программно?
>
> Не марку, а MAC-address... %)
Сетивушки не у всех есть!
Александр1 (2005-01-22 21:38:00) [27]
> Знаешь как у нас Консультанта стявят? Звонят в Котлас, говорят
> код... те звонят в Архангельск, получают код регистрации...
> эти перезванивают минут через 15 вводят код регистрации...
> материнку сменил... всё сначала + денежка за перерегистрацию..
> %)
Это хорошая идея!
Александр1 (2005-01-22 21:36:00) [28]
> Беспечный_Ангел © (22.01.05 12:32) [19]
Большое при большое спасибо тебе за такой хороший пример!!!!
Прямо супер!!!!
Спасибо также за интересную статью. Я думаю, что когда-нибуть я тоже сделаю мощьную защиты для своих программ!
И если можно то хотел бы спросить. Я так понял приведённый пример показывает номер диска C, а как задать ему другие диски.
Зарание спасибо!
Knight (2005-01-22 21:08:00) [29]
> [26] Александр1 (22.01.05 21:02)
> А как определить марку программно?
Не марку, а MAC-address... %)
TUser (2005-01-22 21:08:00) [30]
> Беспечный_Ангел © (22.01.05 12:33) [20]
Мне все интересно - во времена какой версии ТурбоПаскаля начал создаваться DelphiWorld?
Knight (2005-01-22 21:06:00) [31]
> [25] Александр1 (22.01.05 21:01)
> Этого к сожалению ми не удастся. Т.к. без меня второй раз
> прогу получается не установить. Это плохо. Надо менять номер
> в программе под новый номер винта. И чё я каждый раз буду
> бегать. Я же им не могу сказать как это делать!
Знаешь как у нас Консультанта стявят? Звонят в Котлас, говорят код... те звонят в Архангельск, получают код регистрации... эти перезванивают минут через 15 вводят код регистрации... материнку сменил... всё сначала + денежка за перерегистрацию.. %)
Александр1 (2005-01-22 21:05:00) [32]
> Knight © (22.01.05 12:41) [23]
> А вообще прописывай лицензионное соглашение... если для
> некомерческого использования, то без регистрации, увидел
> иное использование - в суд... с компенсацией стоимости программы,
> моралного ущерба, плюс запрет на её использование в течении
> трёх лет... %)
Ну делать мне нечего больше как в суд ходить.
4eshka) (2005-01-22 21:04:00) [33]Насчет привязки к железу, то есть замечательный компонент: Mitec System information. Лучше всего привязывать к дате биоса мат. платы+видео+серийники.(иногда бывало что на матках не было серийных номеров :) )
Anatoly Podgoretsky (2005-01-22 21:03:00) [34]Значит все таки поимел рабов и сам стал рабом.
Убивать из рогатки. Чистой воды лохотрон.
Александр1 (2005-01-22 21:02:00) [35]
> имхо, никто со взломом твоей проги сильно заморачиваться
> не будет... поэтому можешь привязаться хоть к имени пользователя,
> компа или маку сетевой карты... %)
А как определить марку программно?
Александр1 (2005-01-22 21:01:00) [36]
> А твоя программа после форматирования на диске сохранится??
>
> Ничего страшного не случится если юзеры при переустановке
> системы переустановят и твою программу.
Этого к сожалению ми не удастся. Т.к. без меня второй раз прогу получается не установить. Это плохо. Надо менять номер в программе под новый номер винта. И чё я каждый раз буду бегать. Я же им не могу сказать как это делать!
Александр1 (2005-01-22 20:58:00) [37]
> > Я занаю про эти ключи. Это конечно всё хорошо, но они
> денег
> > стоят. А мои программы дешёвые. Я считал не выгодно получается.
>
>
> ого... то есть, отдать за ключ 600 рублей, получив 3000
> - это не выгодно? Выгодно получить фиг?
>
> Жадность погубит.
Ещё почтовые расходы.
Knight (2005-01-22 12:41:00) [38]А вообще прописывай лицензионное соглашение... если для некомерческого использования, то без регистрации, увидел иное использование - в суд... с компенсацией стоимости программы, моралного ущерба, плюс запрет на её использование в течении трёх лет... %)
Knight (2005-01-22 12:36:00) [39]Ставь "Соболь" и привязывай прогу к нему...
Беспечный_Ангел (2005-01-22 12:35:00) [40]Я думаю, Вам будет интересно это почитать.
Регистрация основанная на серийных ключах
--------------------------------------------------------------------------------
Автор: Владимир Каталов
При хорошем знании ассемблера очень просто обойти защиту типа имя пользователя-регкод: когда пользователь вводит свое имя и регистрационный код, программа генерирует "правильный" код и сравнивает его с тем, который он ввел, поэтому "перехватить" этот код (просто считать его из памяти) не составлет особого труда. В большинстве случаев достаточно просто поставить breakpoint на функцию lstrcmp -- и все дела... Упаковка программы, анти-дебаггерные и анти-дизассемблерные "примочки" помогают слабо.
А вот метод фиксированного ключа может быть реализован достаточно неплохо. Хранить "правильные" ключи в программе совсем не обязательно - можно подчинить их некоторым правилам; что-то подобное делает Microsoft со своими CD-keys, но у них все слишком просто. Алгоритм проверки может быть длинным и запутанным, так что его дизассемблирование (и "разборка", что же он делает) причинит немало головной боли. Именно первый метод я и применил для защиты своей программы (Advanced Disk Catalog - старые версии), но и он был "сломан" (хотя, как мне написал ломавший его хакер, подборка всего двух правильных ключей отняла у него много времени). Тогда мне в голову пришла идея: а что, если ключи хранить внутри программы, но зашифрованными? Я "сгенерил" некоторое количество ключей (абсолютно случайным образом), зашифровал их (по отдельности) 128-битным ключом по алгоритму RSA и прошил в программу в виде ресурса. Когда пользователь вводит ключ, он шифруется по тому же алгоритму и сравнивается с правильными. Так как система с открытым ключом не позволяет произвести обратное преобразование, базируясь только на открытом ключе (а закрытого нет даже у меня - расшифровывать-то не надо), то подобрать ключи невозможно даже теоретически.
Есть, впрочем, еще одна проблема: хакер (или "крэкер", если угодно) может заменить 'je' на 'jne' (или что-то в этом роде) там, где происходит последняя проверка, и функция "IsValidKey(...)" будет всегда возвращать TRUE. Останется лишь написать маленький patch... Чтобы защититься и от этого, я вычисляю CRC своего exe-файла и сравниваю его с правильный, прошитым тоже внутри программы (естественно, при вычислении эта часть файла -- где лежит правильный CRC -- исключается; а "прошивается" он после компиляции). Кстати, это еще и защита от вирусов. Вообще-то, проверку CRC тоже можно локализовать и "запатчить", но это уже немного сложнее, особенно если программа вызывает функции чтения/записи и для других целей. Кроме того, не стоит в случае несовпадения CRC сразу об этом сообщать, иначе можно будет поставить hardware breakpoint и найти место, где он вычисляется. И последнее. Если хочется защитить программы совсем уж "круто", томожно несколько функций в своей программе (те, которые должны вызываться только в зарегистрированной версии), зашифровать по тому же алгоритму с открытым ключом. При этом, естественно, часть серийного номера (отсылаемого зарегистрировавшимся) надо сделать "статическим", т.е. неизменным для всех пользователей. На основе этой части после регистрации генерируется полный закрытый ключ, который далее используется для расшифровки указанных функций. Таким образом, даже если будет написан patch, позволяющий "зарегистрироваться" с любым (произвольным) кодом, расшифровка пройдет неправильно, и вместо нормального кода будет выполняться "мусор".
Этот способ я применил в другой своей программе (Advanced ZIP Password Recovery), и ее пока не вскрыли. Всего наилучшего !
Комментарий от Bad_guy: действительно, если некоторые нужные функции зашифрованы, расшифровать их практически невозможно, и я бы сказал, что для защиты программы этого метода с лихвой достаточно, но никогда не надо забывать, что есть такой способ взлома как кража правильного кода (хотя такой метод противоречит крэкерской этике, да и не крэкерство это вовсе). На мой же взгляд программа - это сейф, содержимое которого вам известно, и прежде чем начинать взламывать этот сейф надо подумать: так ли вам нужно его содержимое ? Автор вот говорит - никто не взломает Advanced ZIP Password Recovery, ну и пускай спит спокойно, а я пока поищу бесплатный аналог (если припрёт).