Защита откопирования

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
GRS
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 186
Зарегистрирован: 29.02.2004 (Вс) 22:23
Откуда: Казахстан, Алматы

Защита откопирования

Сообщение GRS » 01.05.2004 (Сб) 9:58

Привет, народ! С Праздником!

Хочу подкинуть тему для размышления....
Защита программы от копирования. Банально? Не спорю. Но так же актуально.
Какие есть способы?
Еще есть вопрос: можно ли как-нибудь записать определенный байт (байты) на диске, что бы он не читался? Т.е. испортить. А потом, чтоб программа обращалась к нему и если может прочитать - значит носитель сэмулирован или... какая разница? Значит - носитель не родной и по этому тихо мирно уходим. И делать такую проверку каждые 5 секунд. Но это уже детали. Собственно, возможно испортить байт (байты) намеренно? Есть способы?

А вообще хотелось бы услышать ваши мнения по поводу защиты от копирования. Может и не от копирования, может ключ какой-то? Я даже не знаю.


С уважением, Роман.
Встану рано утром, выпью чашку ртути... Всё равно я сдохну в этом институте...

EvilCoder
Посланец джихада
Посланец джихада
Аватара пользователя
 
Сообщения: 706
Зарегистрирован: 25.01.2004 (Вс) 15:08

Сообщение EvilCoder » 01.05.2004 (Сб) 11:06

:arrow: <DELETE> :arrow: 8)
Последний раз редактировалось EvilCoder 14.03.2006 (Вт) 23:21, всего редактировалось 1 раз.
<<------- EvilCoder ------->>

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 01.05.2004 (Сб) 13:46

По-моему есть API, которые обращаются напрямую к секторам диска. Сам я таких не применял.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 01.05.2004 (Сб) 14:03

EvilCoder писал(а):
Код: Выделить всё
       if BadSector=True then
                MsgBox "Легальная копия"
       Else
                MsgBox "Пиратов на мыло!!"
       end if


Лечится заменой 1 (одного) байта.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Юстас
Бывалый
Бывалый
 
Сообщения: 200
Зарегистрирован: 24.10.2003 (Пт) 5:05

Сообщение Юстас » 01.05.2004 (Сб) 14:47

>Нанести физическое повреждение на последних дорожках.

Есть программы, которые поврежденные участки диска, или которые невозможно считать по каким-либо причинам, просто заменяют на нулевые байты. Таким образом работают утилиты восстановления порченых дисков. Обычно применяется при копировании фильма. Запорот кусок диска - меняем на нули. При просмотре фильма, копированного с такого диска помех практически незаметно. Так что не думаю, что запороть конец диска даст что-либо.

EvilCoder
Посланец джихада
Посланец джихада
Аватара пользователя
 
Сообщения: 706
Зарегистрирован: 25.01.2004 (Вс) 15:08

Сообщение EvilCoder » 01.05.2004 (Сб) 17:08

:arrow: <DELETE> :arrow: 8)
Последний раз редактировалось EvilCoder 14.03.2006 (Вт) 23:22, всего редактировалось 1 раз.
<<------- EvilCoder ------->>

GRS
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 186
Зарегистрирован: 29.02.2004 (Вс) 22:23
Откуда: Казахстан, Алматы

Сообщение GRS » 01.05.2004 (Сб) 19:38

Парни!
В том и дело, что хоть "ноль", хоть "не ноль" - это ЧИТАЕМЫЕ данные, а когда диск испорчен - это ОШИБКА, т.е. ни то, ни это. Так вот, если возникает ошибка - значит, как говорится "пиратов на мыло". А проги которые считывают испорченные данные - пусть хоть засчитываются! Ошибка, если я не ошибаюсь, которая возникает при поврежденной физически области отличается от ошибки чтения (мало ли, неожиданный конец файла). Другой вопрос, как заставить резак повредить именно какой-то байт (а не сидеть с цифровым микроскопом :roll: ). Вообще, интересно, это на программном уровне возможно? Тот же ASM, он же не может на CD записать, хотя, наверное, нет - все он может.

Ну какие еще предложения будут? :shock:

ЗЫ Спасибо за свои идеи.
Встану рано утром, выпью чашку ртути... Всё равно я сдохну в этом институте...

GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

Сообщение GAGArin » 01.05.2004 (Сб) 20:05

Хм.. Я вот почему то думаю, что обратиться к определённому байту можно и из под VB, но IMHO Microsoft не такие ненормальные чтобы писать функцию для повреждения! байта. И вообщё то байт это просто 8бит а на диске 8 участков и как ты их не жги получишь 8 участков. А какой байт это будет тебе всё равно что-то скажут о нём. И програма копирователь это что-то так и запишет (хотя возможно я не прав)

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 01.05.2004 (Сб) 20:17

Народ!
GSerg же уже писал -
GSerg писал(а):Лечится заменой 1 (одного) байта.

Здесь нужен другой способ - этот не пройдет!
Нет меня больше

GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

Сообщение GAGArin » 01.05.2004 (Сб) 20:55

A.A.Z. писал(а):Народ!
GSerg же уже писал -
GSerg писал(а):Лечится заменой 1 (одного) байта.

Здесь нужен другой способ - этот не пройдет!

Обьясни плиз что такое другой и этот? А то мне как непосвященному не совсем ясно :oops:

EvilCoder
Посланец джихада
Посланец джихада
Аватара пользователя
 
Сообщения: 706
Зарегистрирован: 25.01.2004 (Вс) 15:08

Сообщение EvilCoder » 01.05.2004 (Сб) 21:47

:arrow: <DELETE> :arrow: 8)
Последний раз редактировалось EvilCoder 14.03.2006 (Вт) 23:24, всего редактировалось 1 раз.
<<------- EvilCoder ------->>

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 02.05.2004 (Вс) 9:54

Я здесь с год назад уже такое предлагал. Только проверяем на просто читается - не читается. СНАЧАЛА пишем на диск тестовый файл, потом царапаем, сканируем царапину и ВТОРОЙ СЕССИЕЙ пишем нашу информацию вместе с данными о царапине. А чтобы не ломалось одним байтом - избавляемся от IF - THEN, вместо этого шифруем наши данные данными о положении царапины. Есть еще проблема - царапина - вещь не устойчивая, на краю может то читаться, то не читаться. Но это можно обойти, используя допуск. Скажем контрольная сумма всех адресов битых дорожек - 1000000000. Вычисляем ключ так:
key=(summ+500)\1000
мы застрахованы от неточного чтения на краю царапин.

Но как обойти эмуляторы CD, которые эмулируют и бэд-сектора... :cry:

Max!
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 502
Зарегистрирован: 03.04.2003 (Чт) 22:08
Откуда: Литва

Сообщение Max! » 02.05.2004 (Вс) 11:32


EvilCoder

Ну раз ноль записывает то это значит испорчен. , а если не ноль то копия......

Не ужели все так плохо?


Ну раз ноль вгружаем прогу раз не ноль не даем запустить прогу тоесть сразу закрываем (Сама себя) А желательно в форм-лоад ставить эту проверку и всё!
Max!

EvilCoder
Посланец джихада
Посланец джихада
Аватара пользователя
 
Сообщения: 706
Зарегистрирован: 25.01.2004 (Вс) 15:08

Сообщение EvilCoder » 02.05.2004 (Вс) 13:09

:arrow: <DELETE> :arrow: 8)
Последний раз редактировалось EvilCoder 14.03.2006 (Вт) 23:27, всего редактировалось 1 раз.
<<------- EvilCoder ------->>

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 02.05.2004 (Вс) 14:19

Это только общие рассуждения, очевидно нужно использовать API посекторного чтения CD. А что это за API, и вообще, есть ли такая - не знаю, не пробовал осуществить. А сканирование тогда будет просто чтение тестового файла с занесением с массив результата (прочлось\не прочлось).
Ну и пускай эмулируют ведь они (эмуляторы) не смогут востановить все в точности как было. (заменят нулями так еще лучше)

А если эмулятор запоминает расположение бэд-блоков и при попытке чтения возвращает ошибку?

GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

Сообщение GAGArin » 02.05.2004 (Вс) 16:35

Mikle писал(а):Я здесь с год назад уже такое предлагал. Только проверяем на просто читается - не читается. СНАЧАЛА пишем на диск тестовый файл, потом царапаем, сканируем царапину и ВТОРОЙ СЕССИЕЙ пишем нашу информацию вместе с данными о царапине. А чтобы не ломалось одним байтом - избавляемся от IF - THEN, вместо этого шифруем наши данные данными о положении царапины. Есть еще проблема - царапина - вещь не устойчивая, на краю может то читаться, то не читаться. Но это можно обойти, используя допуск. Скажем контрольная сумма всех адресов битых дорожек - 1000000000. Вычисляем ключ так:
key=(summ+500)\1000
мы застрахованы от неточного чтения на краю царапин.

Но как обойти эмуляторы CD, которые эмулируют и бэд-сектора... :cry:


И как вы такое представляете? Под каждую болванку прогу с изменёнными данными о царапине? Или с электронным микроскопом сидеть будем?
И ещё раз повторюсь функция обращения к писальнику не даст испортить диск, а записать ноль так его любой копирователь без напряга возьмёт.
Короче точно царапину не расположишь, а если не точно то хреново, да и действительно сбойные сектора можно запоминать при чтении диска (хотя я не уверен что сейчас так делают какие-то копирователи)

EvilCoder
Посланец джихада
Посланец джихада
Аватара пользователя
 
Сообщения: 706
Зарегистрирован: 25.01.2004 (Вс) 15:08

Сообщение EvilCoder » 02.05.2004 (Вс) 18:26

:arrow: <DELETE> :arrow: 8)
Последний раз редактировалось EvilCoder 14.03.2006 (Вт) 23:31, всего редактировалось 1 раз.
<<------- EvilCoder ------->>

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 02.05.2004 (Вс) 18:46

GAGArin
И как вы такое представляете? Под каждую болванку прогу с изменёнными данными о царапине? Или с электронным микроскопом сидеть будем?

Прога одна, она расшифровывает данные, используя ключ, который получает, сканируя царапину.
И ещё раз повторюсь функция обращения к писальнику не даст испортить диск

Царапину получаем на "писальником", а напрямую - гвоздем. :lol:

EvilCoder
Посланец джихада
Посланец джихада
Аватара пользователя
 
Сообщения: 706
Зарегистрирован: 25.01.2004 (Вс) 15:08

Сообщение EvilCoder » 02.05.2004 (Вс) 19:07

:arrow: <DELETE> :arrow: 8)
Последний раз редактировалось EvilCoder 14.03.2006 (Вт) 23:33, всего редактировалось 1 раз.
<<------- EvilCoder ------->>

cg_ck
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 118
Зарегистрирован: 11.06.2003 (Ср) 12:02
Откуда: Riga(Latvia)

Сообщение cg_ck » 02.05.2004 (Вс) 21:00

Если бы было что-то подобное, уже широко бы преминялось и одними и другими бы... Тебе нужно сделать прогу, которая должна работать только на определённом компе, и не где в другом месте? Или в любом месте, но только с родного диска?
Вообще как бы про второе лучше забыть. Дядьки из Microsoft ешё не добились этого. Нам, простым смертным, это не по зубам.
Ходит по лесу хомяк, хищный маленький дурак...

EvilCoder
Посланец джихада
Посланец джихада
Аватара пользователя
 
Сообщения: 706
Зарегистрирован: 25.01.2004 (Вс) 15:08

Сообщение EvilCoder » 02.05.2004 (Вс) 21:39

:arrow: <DELETE> :arrow: 8)
Последний раз редактировалось EvilCoder 14.03.2006 (Вт) 23:34, всего редактировалось 1 раз.
<<------- EvilCoder ------->>

GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

Сообщение GAGArin » 02.05.2004 (Вс) 22:37

Mikle писал(а):GAGArin
Прога одна, она расшифровывает данные, используя ключ, который получает, сканируя царапину.

Какой ключ??? Как он к проге попал? Она просканила диск, сделала ключ и проверела по нему тот же диск? Смешно. А если ключ пишем на этот диск вместе с прогой (второй сессией) то знаете ли тоже не очень просто на каждый диск новый ключ узнавать и записывать. Это "чуток" трудоёмко. Да и царапины имеют привычку расти... Ну и как бы делать её надо лазером (а не гвоздём) а то 30% покупателей пошлют продавца с таким диском :) А если лазером то надо или спец аппаратуру или заставить РВишник портить диск (что малореально). А со спец аппаратурой проблем с неидентичностью царапин не должно возникнуть

А на счёт читается не читается, так если бад сектора заменить хоть нулями полностью файл читаться тоже не будет. Так что не конает. А если надо просто найти хоть один бад сектор в этом интервале, то я у себя дома такую защиту гвоздем сломаю без напряга. 8)

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

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 03.05.2004 (Пн) 9:20

GAGArin
Какой ключ??? Как он к проге попал? Она просканила диск, сделала ключ и проверела по нему тот же диск? Смешно. А если ключ пишем на этот диск вместе с прогой (второй сессией) то знаете ли тоже не очень просто на каждый диск новый ключ узнавать и записывать

Тут и вопрос и ответ.
Это "чуток" трудоёмко

Согласен, но об этом речь не шла.
Ну и как бы делать её надо лазером (а не гвоздём)

Тоже согласен, так царапина и "расти" не будет. Вообще, этот метод больше подходит не для серийного диска за 100 р., а для эксклюзивного, продаваемого ДОРОГО.

EvilCoder
какой ключ, зачем шифровка? ты о чем? На просто нужно Читается или Нет

GAGArin тебе уже ответил, что такую защиту сходу сломают тем же гвоздем. Нужна не проста царапина, а ИДЕНТИЧНАЯ царапина.

codemaster
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 604
Зарегистрирован: 13.02.2004 (Пт) 13:35

Re: Защита откопирования

Сообщение codemaster » 03.05.2004 (Пн) 9:38

GRS писал(а):Привет, народ! С Праздником!

Хочу подкинуть тему для размышления....
Защита программы от копирования. Банально? Не спорю. Но так же актуально.
Какие есть способы?
С уважением, Роман.


Как вариант решение от
http://www.aladdin.ru/

cg_ck
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 118
Зарегистрирован: 11.06.2003 (Ср) 12:02
Откуда: Riga(Latvia)

Сообщение cg_ck » 03.05.2004 (Пн) 12:17

EvilCoder:
Ну, у каждого компа есть проц, сетевая или что-то в этом роде. У этих штуковин есть серийные номера. Вот на них и опираться
Ходит по лесу хомяк, хищный маленький дурак...

GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

Сообщение GAGArin » 04.05.2004 (Вт) 3:39

Если корпорация не сможет переставить прогу из за банального апгрейда то тебе не будут благодарны... Хотя есть такая защита. Прога привязывается к винчестеру как к самой "вечной" части компа. Но вообще то она должна знать на фабрике на какой винт она пойдёт. Иначе в чём смысл если любая её копия сможет пахать на любом другом компе. Да и инфу о том винчестере где она стоит хранить надо в отдельном файле, а он поддаётся редактированию... Вопрос только насколько поддаётся.

ASD
Модератор
Модератор
Аватара пользователя
 
Сообщения: 1758
Зарегистрирован: 07.12.2001 (Пт) 21:08
Откуда: Russia

Сообщение ASD » 04.05.2004 (Вт) 22:26

Не проще поискать инфу по SafeDisc и Starforce и почитать описание на чем основана их защита. И от этого плясать?
Moderator VBStreets
---------------------------

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 05.05.2004 (Ср) 8:58

Я думаю, что конструкцию IF ... THEN легко можно обойти простым дизасемблером. Надо в программе найти необходимый условный переход и поменять на безусловный. Именно так работают "современный" crack.
По-моему лучше задать вопрос так: как в программе скрыть процедуру проверки ключей (либо Вашей: "поиск царапен") ?
Состояний же любви — десять: любовный взгляд, привязанность в мыслях, рождение желания, бессонница, исхудание, отвращение к предметам восприятия, утрата стыда, безумие, потеря сознания и смерть — вот их признаки

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 05.05.2004 (Ср) 9:16

Sirik
Я так и написал - никаких IF...THEN. Ключом зашифрованы данные, пока не будет ключа - не расшифруем.

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

Сообщение Ennor » 05.05.2004 (Ср) 11:28

Н-да, прикольно :) . Как человек, 2 года проработавший в конторе, где использовали алладиновские хаспы, позволю себе высказаться по теме - глядишь, кому и помогу.

Как вам прекрасно известно, любая защита, основанная на привязке к сменному носителю, обходится посекторным копированием диска. Если хотите пример - Daemon Tools, урлу не помню, найдете там, где находится все. Являет собой виртуальный сидюк с возможностью программной эмуляции 4-х (!!!) видов копипротекшна. Посекторное копирование делается в том же CloneCD - режим Protected PC Game. Я себе дома таким образом подмонтировал родной диск с Baldur's Gate 2 - ToB, а там одна из самых навороченных защит - LaserLock. Еще есть вопросы?
Если кому еще интересно, то функция, позволяющая посекторно читать сидюк (как и любой другой том данных в самом общем смысле слова) - DeviceIOControl(). Работает по типу оконной процедуры - реальное действие в каждом случае определяется аргументами. Смотрите в MSDN, там даже пример был чтения физических секторов CD с ее помощью.

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

Aladdin. Все слыхали про хаспы, но, в то же время, все видели пиратские копии 1С с программной эмуляцией оного :) . Да, это тоже не панацея - особенно если подходить к делу по принципу "привяжем ключ - и все дела". Более того, ребята из Aladdin Knowledge Systems сами это подтверждают (поскольку я подписку о неразглашении не давал, то выложу все, что знаю об этой системе :) ). Простое шифроваие исполняемого файла мало что дает, нет даже гарантии его невскрываемости. Периодическая проверка на наличие ключа обходится эмулятором. Теоретически, есть даже возможность обойти мьютексную проверку, хотя ее у Алладина вроде как нет (зато в tELock она есть).

Есть одна вещь, которую эти ребята настоятельно рекомендуют на своих конференциях - Pattern Code Security (PCS). Я точно не в курсе, как она работает, но народ говорит, что это действительно помогает. Сам я, правда, не проверял ее устойчивость (квалификации не хватает :) ), поэтому ручаться не буду.

ЗЫ Не стоит забывать, что скомпилированный код VB6 - один из самых сложных в дизассемблировании. Банальное А+В превращается в такую кашу, что без исходников и/или Debug Info понять, что происходит в программе, невозможно. Именно поэтому до сих пор не существует декомпилятора VB. Вот и думайте, как можно использовать это премущество.

След.

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

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

Сейчас этот форум просматривают: Majestic-12 [Bot], SemrushBot и гости: 20

    TopList