Защита программы. Алгоритм сравнения

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
|kerish|
Постоялец
Постоялец
 
Сообщения: 831
Зарегистрирован: 22.10.2004 (Пт) 0:31

Сообщение |kerish| » 05.04.2005 (Вт) 23:56

Господа, мы же в 21 веке.
Почему бы не сделать регистрацию проги прямо через инет.
Ну типа сервак генерирует пасс и высылая, выводит прогу из Trial-состояния. (заодно кстати заносит высланный пароль в список уже используемых).
P.S. Но это пойдет только для крупных проектов.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 06.04.2005 (Ср) 1:44

Ну почему же только для крупных - тот же Exact Audio Copy именно так и регистрируется. Более того, за счет такого подхода в нем реализована веселая проверка валидности ключа - перед обращением к CDDB прога лезет на сайт своего автора. Если сайт недоступен (перекрыт на файерволле, например :) ), или есть, но ключ неправильный - обломись, товарищ, с автозаполнением названий трэков! А грамотных CD-грабберов, которые окромя собственно граббинга больше ничего не умеют, в инете море.

Правда, это все равно не спасло сию программу от кряка - кажется, там лоудер используется, который, видать, ловит запрос на poikosoft.com и говорит программе, что все окей... :(

Тимофей
Обычный пользователь
Обычный пользователь
 
Сообщения: 83
Зарегистрирован: 01.03.2004 (Пн) 10:01
Откуда: Киров

Сообщение Тимофей » 06.04.2005 (Ср) 7:48

Кстати ребята Alibek правильно поставил суть вопроса. Но с запросом пароля в инете это слишком наверно. Да и сильно наварачивать тут вряд ли стоит. Раз уж ломают
Кстати как же с триальностью. Как обойти перевод системного времени вручно. К чему привязаться ?

marvan
Бывалый
Бывалый
 
Сообщения: 269
Зарегистрирован: 22.06.2004 (Вт) 13:26
Откуда: Москва

Сообщение marvan » 06.04.2005 (Ср) 9:35

Тимофей писал(а):Как обойти перевод системного времени вручно. К чему привязаться ?

например, к дате системных файлов

Тимофей
Обычный пользователь
Обычный пользователь
 
Сообщения: 83
Зарегистрирован: 01.03.2004 (Пн) 10:01
Откуда: Киров

Сообщение Тимофей » 06.04.2005 (Ср) 11:35

К каким системным файлам для примера ?

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 06.04.2005 (Ср) 11:48

Привязка к датей файлов напоминает мне анек:



Мужик в поезеде идет ищет чего-то, ищет. Ну и никак найти не может. Проводник у него спрашивает "А что это вы потреяли?" Мужик ему "Свое купе найти не могу. Точно помню, когда в туалет выходил, за окном было озеро" :)

marvan
Бывалый
Бывалый
 
Сообщения: 269
Зарегистрирован: 22.06.2004 (Вт) 13:26
Откуда: Москва

Сообщение marvan » 06.04.2005 (Ср) 12:00

2Тимофей
мне встречались примеры проверки даты
system.ini и исполняемого файла
но, лучше использовать это как дополнительный способ

з.ы.
2 RayShade
очень точная аналогия получилась. :D

Cryonyx
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 292
Зарегистрирован: 12.11.2004 (Пт) 15:40
Откуда: Net_SubStream

Сообщение Cryonyx » 06.04.2005 (Ср) 20:10

В этом случае мона просто создавать свой файл, в который чего-нибудь записывать для виду, а потом чекать его дату. Или один раз создать где-нить в самой глубокой папке винды маленькую папочку и чекать её дату, ну и т.д. насколько фантазии хватит :D
Если тебе не по сердцу мой путь,
Выбери сам или выбери с кем,
А мне по барабану вся эта муть -
Я не червонец, чтобы нравиться всем!
© К.Кинчев
--
Мой блог: щёлкай сюда

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 06.04.2005 (Ср) 20:15

Правда? Ты слышал о такой штуке, как filemon?
Lasciate ogni speranza, voi ch'entrate.

kif
Постоялец
Постоялец
 
Сообщения: 736
Зарегистрирован: 10.12.2001 (Пн) 18:06
Откуда: Украина, Одесса

Сообщение kif » 06.04.2005 (Ср) 21:16

в файле настроек в шифрованном виде хранить дату первого запуска и дату последнего сеанса работы.

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

Хило, но вариант. :( :D
Братья и сестры, что вы делаете???
Ведь вы же братья и сестры.

Alexander N. Samarin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 397
Зарегистрирован: 05.03.2005 (Сб) 20:59
Откуда: Интернат 18 (СУНЦ МГУ), комната 214А, кровать посередине

Сообщение Alexander N. Samarin » 07.04.2005 (Чт) 8:04

kif писал(а):Если юзер поменял дату на предыдущий день, то сравнением даты последнего сеанса и текущей (измененной) можно это определить.


Почти бессмасленно, если с последнего сеанса прошло 2 и больше дней, а юзер отматывает на 1 день назад
На это не смотрите! Это не подпись!!!!!!

Cryonyx
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 292
Зарегистрирован: 12.11.2004 (Пт) 15:40
Откуда: Net_SubStream

Сообщение Cryonyx » 07.04.2005 (Чт) 16:22

А что если дату хранить в каком-нить хитром виде :?:
Ну, например, генерить текст, в котором бы дата была разбросана по разным местам :wink:
Это я так, к слову.... :D
Если тебе не по сердцу мой путь,
Выбери сам или выбери с кем,
А мне по барабану вся эта муть -
Я не червонец, чтобы нравиться всем!
© К.Кинчев
--
Мой блог: щёлкай сюда

Alexander N. Samarin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 397
Зарегистрирован: 05.03.2005 (Сб) 20:59
Откуда: Интернат 18 (СУНЦ МГУ), комната 214А, кровать посередине

Сообщение Alexander N. Samarin » 07.04.2005 (Чт) 16:34

Т. е. день, затем 1/6 "Войны и мира", месяц, затем 1/6 "Войны и мира", год, затем 1/6 "Войны и мира", то же самое со временем. Никто не додумается, зато прочтут :D :lol: :lol: :lol:
На это не смотрите! Это не подпись!!!!!!

Тимофей
Обычный пользователь
Обычный пользователь
 
Сообщения: 83
Зарегистрирован: 01.03.2004 (Пн) 10:01
Откуда: Киров

Сообщение Тимофей » 12.04.2005 (Вт) 8:18

kif предлагал по-моему самое действенное. У меня подобное и реализовано.

Джеффи
Бывалый
Бывалый
 
Сообщения: 256
Зарегистрирован: 06.03.2005 (Вс) 0:26

Сообщение Джеффи » 12.04.2005 (Вт) 21:17

Так ребята, не особо понял что вам нужно :D
Но дам совет, если делать защиту лучше всего лезить в в оборудование например для создания сирийного кода...

Ну а вообще на счёт триальности проще всего сравнивать время и дату с сервером программы, т.е. способ интернета, причём запутать это так чтобы никто не разгдадал...

А в иделале защита должна быть такова: сирийный номер - вычисляется из сирийного номера (названия, производителя и всякой херни) жёсткого диска и процессора + ключ пихнуть в запутанную функцию содержащию кучу GoTo, мусора и так далее... + регистрация через интернет сравнивание ключа и сирийного номера И ГЛАВНОЕ изменена ли программа т.е. размер или текстовое изменение... (если взломали переделкой программы...) + далее про триальность я уже говорил, но следует добавить и другие способы сравнения - хранение на компе в разных местах файлы реестр (только если дата совподает с сервером и проходит тесты на компьютере(файлы)) только тогда разрешать тестировать программу.
+ ещё серийник генерировать из оборудования И имени и фамилии. И НАКОНЕЦ в идеале создать вирус, который НЕ ВРЕДИТ ПОЛЬЗОВАТЕЛЮ, который следит за программой и всеми манипуляциями над ней (вплодь до уничножения дезассемблера при обращению к нашей программе или же блока постоянного подбора кода чисто в окне программы...), вирус должен самокопироваться само собой=) НО НЕ РАЗМНОЖАТЬСЯ ПО СЕТИ И ИНТЕРНЕТУ, т.е. сидеть только на 1 машине, не томозить работу компьютера и не показывать своего вида...

Друзья я думаю вот чем надо заняться, дружно создать вирус...
Разве мы хуже хакеров, убьём их их же оружием!

Вот пример добычи серийника харда:

Cryonyx
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 292
Зарегистрирован: 12.11.2004 (Пт) 15:40
Откуда: Net_SubStream

Сообщение Cryonyx » 12.04.2005 (Вт) 21:31

Вопрос на засыпку - а если у юзверя непостоянный инет, вот как у меня :?:
Тогда облом.
А про вирь... Корректнее это будет назвать монитор, всё-таки вирус хоть как-то да вредит компу (хотя, если подумать, какая прога не вредит - память жрёт, понимаешь :D )
Если тебе не по сердцу мой путь,
Выбери сам или выбери с кем,
А мне по барабану вся эта муть -
Я не червонец, чтобы нравиться всем!
© К.Кинчев
--
Мой блог: щёлкай сюда

Джеффи
Бывалый
Бывалый
 
Сообщения: 256
Зарегистрирован: 06.03.2005 (Вс) 0:26

Сообщение Джеффи » 12.04.2005 (Вт) 21:57

А при чём тут постоянный интернет???
1. В случае с триалингом - только перед запуском нужно сравнение дат...
2. В случае с регистацией тоже самое :D перед запуском...

Тимофей
Обычный пользователь
Обычный пользователь
 
Сообщения: 83
Зарегистрирован: 01.03.2004 (Пн) 10:01
Откуда: Киров

Сообщение Тимофей » 13.04.2005 (Ср) 7:07

Да у некоторых вообще на машинах доступа в интернет нет......
С чем тогда сравнивать будешь ?

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 13.04.2005 (Ср) 9:21

Эмулировать Интернет программно?

Shurrik
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 110
Зарегистрирован: 20.05.2004 (Чт) 5:35
Откуда: Керчь, Крым

Сообщение Shurrik » 13.04.2005 (Ср) 10:51

Я тоже сталкиваюсь с проблемой защиты своих программ. Первая попытка была от любопытного коллеги, заглядывающего через плечо. Там пароль был не само слово, а способ преобразования случайных цифр и букв. Программа выдает например 4Т2Д, а надо ответить 1В5Н. А алгоритм такой, цифры вообще не причем, а нодо учитавать буквы - Т=3, Д=2. Отнимаем и получаем 1, складываем и получаем 5, добавляем любые буквы. Алгоритм можно сделать и еще запутанней.
От взома хорошего программиста может защититься только более опытный программист. От стандартного взлома, можно использовать:
1. Проверку пороля не сразу, а через таймер.
2. Добавить кучу "мусора" не относящегося к делу.
3. Проверять время "до" и "после" некоторых фрагментов программы, чтобы отследить пошаговое выполнение ее кем-то.
4. Сделать защиту двухуровневой. Первый - очень простой и легко ломаемый, а второй - более сложный. После взлома первого уровня программа должна работать, но при этом содежать какую-нибудь "мину", например находить на компе документы WORD и портить их.
Колесо: Хочешь жить? Умей вертеться.

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 13.04.2005 (Ср) 10:53

Ну уж нет, портить документы Word не надо. Вообще не надо ничего портить. Представь ситуацию - тестишь программу, и она тебе "совершенно случайно" удаляет критически важный файл (скажем, отчёт, который полгода писал). Это будет венец программистской деятельности, разве не так? ;)

Джеффи
Бывалый
Бывалый
 
Сообщения: 256
Зарегистрирован: 06.03.2005 (Вс) 0:26

Сообщение Джеффи » 13.04.2005 (Ср) 11:10

Amed
Если нет интернета то и скачать программу из интернета нельзя, собственно нет программы зачем интернет?

С другой стороны можно обеспечить триальность с интернетом, а вот регистрацию уже без, я думаю разумно.

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 13.04.2005 (Ср) 11:14

Да-да, именно.

Как вариант - эмуляция скачивания файла из эмулированного Интернета? :wink:

Джеффи
Бывалый
Бывалый
 
Сообщения: 256
Зарегистрирован: 06.03.2005 (Вс) 0:26

Сообщение Джеффи » 13.04.2005 (Ср) 11:22

То есть ты хочешь сказать чтобы прога создавала сервер для скачивания данных на компе, и сама оттуда и скачивала? :wink:

Cryonyx
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 292
Зарегистрирован: 12.11.2004 (Пт) 15:40
Откуда: Net_SubStream

Сообщение Cryonyx » 13.04.2005 (Ср) 19:33

Чего ты уже собираешься качать? :shock:
А возьмём случай, когда прога "коробочная"...
И к чему тогда все эти закачки?
А может, юзверь даже про инет не слышал? :wink:
Если тебе не по сердцу мой путь,
Выбери сам или выбери с кем,
А мне по барабану вся эта муть -
Я не червонец, чтобы нравиться всем!
© К.Кинчев
--
Мой блог: щёлкай сюда

MagicMan
Новичок
Новичок
 
Сообщения: 48
Зарегистрирован: 18.11.2004 (Чт) 11:03

Хочу поделиться опытом

Сообщение MagicMan » 13.04.2005 (Ср) 19:56

Прежде всего хочу сказать - мои последние проекты это Анти-Спаммер (www.anti-spammer.ru лично для себя написал а потом решил кинуть в массы) и программа Эффект (www.effect.sviyash.ru - по заказу) - последняя активно продается на 4CD и DVD по 100 баксов.

Так вот начну с Анти-Спаммера, немного умея пользоваться отладчиком и дизасамблером (SoftIce и т.п.) я учел разные моменты и сделал код по сравнению паролей. Какое же было моё удивление когда через 2 недели я на каком-то хакерском сайте нашел кей генратор для моей проги :) И тут я задумался всерьез - и пришел к такому выводу - сделать такой код чтобы из введенных или полученных данных генерить необходимые для программы числа и с ними и работать - тоесть чтобы не возможно было узнать какие должны быть числа и чтобы если обойти проверку то чтобы все равно не работало. На примере скажу - для работы с почтовыми серверами используются коды: 220 , 443 например - так вот я сделал процесс активации - тоесть программа запрашивает этот код и отправляет серийник винта на сервер, на сервере создается файл с данными (220,443 и т.п.) конкретно для этого винта - и чел с ними работает - через месяц (триал период) файл с настройками удаляется и при попытке создать ещё раз посылает его нахер. Такой алгоритм никто пока не взломал.
Только такой способ приемлим для тех программ которые работают непосредственно с инетом.
Для других более простых я использую другой метод - создаю файл и туда пишу число запусков и т.п. - после записи в файл устанавливаю на нем дату например год 2002. Чтобы поиском на последние изменения не нашли, параллельно с этим отрываю ещё пару сотен системных файлов - и усё.....
А вообще есть ещё один уникальный способ - но об этом рассказать не могу.

Удачи,
Юрий.

kif
Постоялец
Постоялец
 
Сообщения: 736
Зарегистрирован: 10.12.2001 (Пн) 18:06
Откуда: Украина, Одесса

Re: Хочу поделиться опытом

Сообщение kif » 14.04.2005 (Чт) 0:27

MagicMan писал(а): 220 , 443 например - так вот я сделал процесс активации - тоесть программа запрашивает этот код и отправляет серийник винта на сервер, на сервере создается файл с данными (220,443 и т.п.) конкретно для этого винта - и чел с ними работает - через месяц (триал период) файл с настройками удаляется и при попытке создать ещё раз посылает его нахер. Такой алгоритм никто пока не взломал.
Только такой способ приемлим для тех программ которые работают непосредственно с инетом.
Юрий.


Согласен, но никто не мешает мне купить за 100 баксов твою программу, зарегистрировать (получить файлик) и продать 4-м кентам по 30.
Это тоже нужно учитывать.
если программа после регистрации не работает с твоим сервером, то это не поможет, если же работает, то можно послать владельца и его кентов. :D
Братья и сестры, что вы делаете???
Ведь вы же братья и сестры.

MagicMan
Новичок
Новичок
 
Сообщения: 48
Зарегистрирован: 18.11.2004 (Чт) 11:03

Re:

Сообщение MagicMan » 14.04.2005 (Чт) 7:48

Сервер генерит ответный код на основе серийника винта юзверя - поэтому продать ничего не получится.

Джеффи
Бывалый
Бывалый
 
Сообщения: 256
Зарегистрирован: 06.03.2005 (Вс) 0:26

Сообщение Джеффи » 14.04.2005 (Чт) 9:54

Народ, думаю лучший способ цепляться за сириник винта и забыть про инет, просто добавим кучу мусора...

Пред.

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: SemrushBot, Yandex-бот и гости: 19

    TopList  
cron