Методы зашиты VB программы от копирования.

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
GPP
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 351
Зарегистрирован: 02.11.2005 (Ср) 8:02
Откуда: г.Невельск о.Сахалин

Методы зашиты VB программы от копирования.

Сообщение GPP » 04.11.2005 (Пт) 8:44

Давайте обсудим методы защиты программ на VB от копирования и нелегального распространения. У кого какие предложения? 8)
GPP(c) Gorlo Pavel Programming

XPress
Новичок
Новичок
 
Сообщения: 46
Зарегистрирован: 02.07.2005 (Сб) 10:54
Откуда: Из-за компа!

Сообщение XPress » 04.11.2005 (Пт) 9:18

У меня тоже такая проблемма. А вообще я подумал привязать ее к определенному компу :? , например к серийнику винта. Но пока что через VB я научился определять серийник не самого винта, а серийники его логических дисков (C:, D: ), которые меняются после форматирования! что не очень обрадовало меня :( . Может если найдешь способ как определять серийник самого винта скинешь сюда, буду очень признателен :) .

GPP
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 351
Зарегистрирован: 02.11.2005 (Ср) 8:02
Откуда: г.Невельск о.Сахалин

Сообщение GPP » 04.11.2005 (Пт) 9:44

Давайте рассмотрим и усовершенствуем старый и довольно надежный, как я считаю способ, использующий схему "ключ-->> серийный номер". Этот метод заключается в том, что на каждом компьютере для каждой копии программы будет использоваться свой индивидуальный серийный номер без которого программа откажется работать. У кого какие предложения?
GPP(c) Gorlo Pavel Programming

SergT
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 237
Зарегистрирован: 22.06.2005 (Ср) 21:50
Откуда: Москва

Сообщение SergT » 04.11.2005 (Пт) 9:47

После WIN 98, по моему, стало невозможно определять заводские номера приборов (раньше можно было и из BIOS взять данные). Теперь, действительно, можно получить только серийный номер Хард-диска, который всегда меняется при его форматировании! Можно привязываться и к Мак-номеру сетевой карты.. но при замене элементов компа - неизбежно меняются вышеуказанные параметры. Но это все более про инсталяцию программы на данный комп. Что касается вопроса ( защиты программ на VB от копирования ), то вопрос гораздо глубже!
Этой теме посвящено много материалов в И-нете и способов много, но универсального нет. Пока все сводится к тому, чтобы увеличить время взлома программы. Глядишь - она ко времени взлома потеряет актуальность.. Но чем НЕСТАНДАРТНЕЕ будет защита - тем больше шансов на успех!
Л. Толстой, «зачем обдумывать обдуманное, бери готовое и иди дальше, в этом сила человечества»
"Всё в наших руках, поэтому их нельзя опускать" (Коко Шанель)

SergT
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 237
Зарегистрирован: 22.06.2005 (Ср) 21:50
Откуда: Москва

Сообщение SergT » 04.11.2005 (Пт) 9:56

Вопрос с ключем весьма интересен. Кстати,привязка к серийнику - не такая уж плохая затея. Ведь не каждый день юзер форматирует свой Хард.. Просто встанет вопрос о тех-поддержке! У меня есть практика такой регистрации с одной компанией ( мы купили - они дали ключ)! Ключ уникален и содержит в себе часть кода программы+инфу о регистрируемом. Т.е. последовательность такова:
1. Посылаю в компанию свои данные
2. Получаю уникальный ключ
3. После установки ключа-получаю код регистрации
4.Отсылаю код регистрации в компанию и получаю код активации
5. (Уф..) Вставляю код в окошко программы - ВСЕ!
Правда такие сложности оправданы - программа стоит 1500уе
Да! Забыл отметить, что компания НАСТАИВАЕТ, что бы форматирование Харда не проводилось чаще, чем раз в полгода

А, вообще, ниже есть похожая тема http://bbs.vbstreets.ru/viewtopic.php?t=20495
Л. Толстой, «зачем обдумывать обдуманное, бери готовое и иди дальше, в этом сила человечества»
"Всё в наших руках, поэтому их нельзя опускать" (Коко Шанель)

XPress
Новичок
Новичок
 
Сообщения: 46
Зарегистрирован: 02.07.2005 (Сб) 10:54
Откуда: Из-за компа!

Сообщение XPress » 04.11.2005 (Пт) 11:58

GPP писал(а):Давайте рассмотрим и усовершенствуем старый и довольно надежный, как я считаю способ, использующий схему "ключ-->> серийный номер".

Вообще то я так и хотел сделать: Пользователь преобретает копию программы где угодно, а после установки она выдает ему ключь типа серийник винта и пользователь предявляя этот ключь покупает у меня серийный номер этой программы. Но проблемма заключалась в том что этот серийник диска(точнее volume label) который я мог извлечь меняется при форматировании. У меня конечно была идея с тех поддержкой типа как сказал SergT, но она несколько утомительная. Вот и хочется узнать как можно извлечь серийник самого хард диска?Я идиот! Убейте меня, кто-нибудь!???, а не его лейбл!

pitbull
Постоялец
Постоялец
 
Сообщения: 314
Зарегистрирован: 25.06.2004 (Пт) 15:37
Откуда: Кемерово

Сообщение pitbull » 04.11.2005 (Пт) 14:05

http://www.vbstreets.ru/VB/Articles/65983.aspx
+
совсем недавно тема уже поднималась - поищи по форуму.

XPress
Новичок
Новичок
 
Сообщения: 46
Зарегистрирован: 02.07.2005 (Сб) 10:54
Откуда: Из-за компа!

Сообщение XPress » 04.11.2005 (Пт) 14:45

н-даааа, туговато.....встает вопрос: а вообще можно на VB определить серийник хард-драйва?

GPP
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 351
Зарегистрирован: 02.11.2005 (Ср) 8:02
Откуда: г.Невельск о.Сахалин

Сообщение GPP » 04.11.2005 (Пт) 17:00

Господа программиты что вы зациклились на жестком диске. Давайте обсудим усовершенствование метода "ключ-->серийный номер". Какие есть предложения?
GPP(c) Gorlo Pavel Programming

SeT
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 362
Зарегистрирован: 29.12.2004 (Ср) 13:11

Сообщение SeT » 04.11.2005 (Пт) 17:33

А что если по BIOS? Там где-то в какой-то ячейке памяти (диапазоне тоесть) хранятся данные по BIOS.
01000100
Причиняет боль 0010
Виртуальная любовь 00100
Индустрия снов 0010

XPress
Новичок
Новичок
 
Сообщения: 46
Зарегистрирован: 02.07.2005 (Сб) 10:54
Откуда: Из-за компа!

Сообщение XPress » 05.11.2005 (Сб) 7:25

Вот это другое дело :) ! Пасиб те FleX_2004 :P

Grimm
Новичок
Новичок
Аватара пользователя
 
Сообщения: 43
Зарегистрирован: 24.10.2005 (Пн) 0:17

Сообщение Grimm » 05.11.2005 (Сб) 8:14

Сейчас занимаюсь микроконтроллерами и асмой, поэтому стала интересна тема использования LPT и USB ключей.

У кого каие идеи на этот счет и почему собственно я еще не встречал ключей COM (или это только я не встречал).
Я слишком рано стал ребенком

GPP
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 351
Зарегистрирован: 02.11.2005 (Ср) 8:02
Откуда: г.Невельск о.Сахалин

Сообщение GPP » 05.11.2005 (Сб) 11:21

Напишите кто-нибудь такой код. Есть набор цифр, допустим 13467809.
Нужно заменить все 3-ки на 7-ки, а 7-ки на 3-ки. Спасибо!
GPP(c) Gorlo Pavel Programming

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 05.11.2005 (Сб) 11:29

GPP писал(а):Напишите кто-нибудь такой код. Есть набор цифр, допустим 13467809.
Нужно заменить все 3-ки на 7-ки, а 7-ки на 3-ки. Спасибо!


утром деньги - вечером код, вечером деньги - утром код... можно и наоборот, но деньги вперед!
Весь мир матрица, а мы в нем потоки байтов!

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 05.11.2005 (Сб) 11:30

:roll:
Код: Выделить всё
s = Replace(s, "3", "*")
s = Replace(s, "7", "3")
s = Replace(s, "*", "7")
Изображение

Grimm
Новичок
Новичок
Аватара пользователя
 
Сообщения: 43
Зарегистрирован: 24.10.2005 (Пн) 0:17

Сообщение Grimm » 05.11.2005 (Сб) 11:41

есть два пути - можно представить этот набор как строку или как число. есть разница?
если нет, то самый простой вариант со строками представлен ниже:

-----------------------------------------------
Dim Num As String
Dim NewNum As String
Dim NumToRep1 As String
Dim NumToRep2 As String
Dim i As Integer
NumToRep1 = "7"
NumToRep2 = "3"
Num = "13467809"

NewNum = ""

For i = 1 To Len(Num)
If Mid(Num, i, 1) = NumToRep1 Then
NewNum = NewNum & NumToRep2
Else
If Mid(Num, i, 1) = NumToRep2 Then
NewNum = NewNum & NumToRep1
Else
NewNum = NewNum & Mid(Num, i, 1)
End If
End If
Next i
-----------------------------------------------
Я слишком рано стал ребенком

Grimm
Новичок
Новичок
Аватара пользователя
 
Сообщения: 43
Зарегистрирован: 24.10.2005 (Пн) 0:17

Сообщение Grimm » 05.11.2005 (Сб) 11:43

tyomitch
согласен так быстрее, но тогда символ '*' запрещенн для использования в пароле
Я слишком рано стал ребенком

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 05.11.2005 (Сб) 12:40

Grimm, ну тогда vbNullChar вместо "*"
Изображение

Grimm
Новичок
Новичок
Аватара пользователя
 
Сообщения: 43
Зарегистрирован: 24.10.2005 (Пн) 0:17

Сообщение Grimm » 05.11.2005 (Сб) 13:11

tyomitch
окей, окей, так что насчет реальных ключей вставляемых в порты
Я слишком рано стал ребенком

GPP
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 351
Зарегистрирован: 02.11.2005 (Ср) 8:02
Откуда: г.Невельск о.Сахалин

Сообщение GPP » 05.11.2005 (Сб) 17:30

Давайте все таки разберемся с методом "Ключ-->>Серийный номер". Принцип такой:

При запуске программа генерирует случайное число(к примеру 12345678910) и записывает его в реестр(или файл). Ставит метку в реесте о том, что ключ уже генерировался.

Серийный номер каждой копии к примеру вычисляется по формуле

SN=X*2+1-512(Где X это наше число 12345678910).

Это самый простой метод из этого способа защиты! Давайте усовершенствуем его. Ваши предложения. 8)

Попробуйте сломать эту прогу:
Вложения
GPP_Protection 1.0.rar
Пример защиты Ключ-->>Серийный номер. Самый простой пример.
(5.42 Кб) Скачиваний: 403
GPP(c) Gorlo Pavel Programming

Grimm
Новичок
Новичок
Аватара пользователя
 
Сообщения: 43
Зарегистрирован: 24.10.2005 (Пн) 0:17

Сообщение Grimm » 05.11.2005 (Сб) 21:18

FleX_2004
окей ясно, а если совместить и програмный и физический способы?

я то вообще думал придумать механизм шифрования, вставить его в прогу и в микроконтроллер в ключе, то есть юзверь или прога генерит любое число, потом это число шлется на порт, и в проге и там генерится новый ключ, который сверяется с сгенеренным в проге

да и потом мое ПО расходится единицами, ну иногда чуть более 10-15, так что никакие кул-хацкеры точно браться за взлом не будут :lol:
Я слишком рано стал ребенком

vvs_adm
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1492
Зарегистрирован: 03.02.2005 (Чт) 3:45
Откуда: оттуда ;)

Сообщение vvs_adm » 05.11.2005 (Сб) 21:53

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

GPP
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 351
Зарегистрирован: 02.11.2005 (Ср) 8:02
Откуда: г.Невельск о.Сахалин

Сообщение GPP » 06.11.2005 (Вс) 4:40

vvs_adm

Да, я согласен, взломать такую защиту легко. Но кто будет этим заниматься, ведь я не собираюсь писать Windows или еще что-нибудь подобное, что будет расходиться на УРА! По этому я и предлагаю усовершенствовать этот способ совместными силами.
GPP(c) Gorlo Pavel Programming

GPP
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 351
Зарегистрирован: 02.11.2005 (Ср) 8:02
Откуда: г.Невельск о.Сахалин

Сообщение GPP » 06.11.2005 (Вс) 4:46

FleX_2004

Я тоже сейчас занимаюсь кодированием ключа внутри программы, аглоритм разрабатываю сам. И мне тоже 18. Возраст не имеет значения.
GPP(c) Gorlo Pavel Programming

pitbull
Постоялец
Постоялец
 
Сообщения: 314
Зарегистрирован: 25.06.2004 (Пт) 15:37
Откуда: Кемерово

Сообщение pitbull » 06.11.2005 (Вс) 11:56

.... мдя, если в 18 еще рано, то в 25 будт уже поздно!!!

GPP
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 351
Зарегистрирован: 02.11.2005 (Ср) 8:02
Откуда: г.Невельск о.Сахалин

Сообщение GPP » 06.11.2005 (Вс) 14:12

Будем обсуждать методы защиты или разбираться кому сколько лет!? Товарищи программисты давайте займемся делом! Может что-нибудь дельное получиться. Спасибо за понимание!
GPP(c) Gorlo Pavel Programming

След.

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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 41

    TopList