защита от копирования, символическая |
защита от копирования, символическая |
мисс_граффити |
24.08.2007 8:38
Сообщение
#1
|
просто человек Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: 55 |
Здравствуйте.
Возникла такая ситуация - делаю программку (БД). Хотелось бы как-то ограничить возможности ее копирования (специально ее ломать нафиг никому не надо, люди от хакерства весьма и весьма далеки, поэтому в супер-заморочках необходимости нет). С подобными задачами никогда не сталкивалась... Поделитесь опытом, пожалуйста - как можно подойти к вопросу? Спасибо заранее. -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Neznaika |
24.08.2007 11:32
Сообщение
#2
|
Пионер Группа: Пользователи Сообщений: 51 Пол: Мужской Репутация: 0 |
Цитата ...Возникла такая ситуация - делаю программку (БД). Хотелось бы как-то ограничить возможности ее копирования... Ограничить возможности копирования, значит привязать к определённому месту на носителе(жёстком диске, CD-ROM и т.д. и т.п.). Известно, что под файлы файловая система отводит не столько байт, сколько они занимают, а сколько, сколько минимально кластеров нужно для хранения всех данных файла. Короче, реальный размер файла кратен размеру кластера(например в NTFS обычно 4096). Так как обычно размер файла не кратен размеру кластера, то остаются так называемые "хвосты"(неиспользуемые байты в последнем кластере файла). В них можно записать контрольные значения и при старте программы первым делом проверять их. Если совпадают, то всё нормально, иначе - копия программы нелегальная - выход. Только кроме изменений в самой программе потребуется создать установочную программу, которая запишет контрольные значения в "хвосты". В идеале эта установочная программа должна самоликвидироваться(самоудалаться). Извиняюсь, что одни общие слова. Но я думаю, что так действуют все файловые защиты. |
Malice |
24.08.2007 12:47
Сообщение
#3
|
Профи Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: 20 |
Простой способ, встречающийся частенько: привязаться к оборудованию, например через GetVolumeInformation получить серийный номер винта, потом на основании него по любой хитрой формуле (md5 подойдет )получить некий id. У себя иметь генерилку ответов на него, в программе - проверку. Единственное тонкое место - умудриться сделать проверку так, чтобы в самой программе не была включена этаже генерилка, иначе выдерут 5 сек (хотя говоришь это не надо никому).
|
мисс_граффити |
24.08.2007 13:21
Сообщение
#4
|
просто человек Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: 55 |
Neznaika, не совсем поняла идею. на каком этапе писать контрольные значения?
Malice, сначала думала в ту же сторону... но возникает проблема: винт полетел - им опять обращаться ко мне? в общем, не придумала, к чему можно сделать привязку. почитала про hasp... идея интересная, но, к сожалению, аладдиновский сайт лежит - не могу узнать про цены и т.п. -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Malice |
24.08.2007 13:45
Сообщение
#5
|
Профи Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: 20 |
Neznaika, не совсем поняла идею. на каком этапе писать контрольные значения? Malice, сначала думала в ту же сторону... но возникает проблема: винт полетел - им опять обращаться ко мне? Да, конечно, а что такого ? Позвонят в службу поддержки (к тебе), продиктуешь им ответ. Ты же по простетцки хотела. Посложнее - активация через инет или хасп, но это та еще заморочка. ps или купи протектор какой нибудь и навесь, никаких заморочек, как с хаспом. Главное, чтоб окупилось. Сообщение отредактировано: Malice - 24.08.2007 13:48 |
-Neznaika- |
24.08.2007 15:29
Сообщение
#6
|
Гость |
Эх, пример не получается создать.
Я думал примерно так: Записываем MAGIC в "хвост" файла FileName:
К сожалению вызов SetEndOfFile(hFile) затирает MAGIC |
Bokul |
24.08.2007 18:34
Сообщение
#7
|
Гуру Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: 11 |
Цитата в общем, не придумала, к чему можно сделать привязку. Если полагаться что у пользователей чистая ОС, то наверняка можно достать ее номер (если такое существует) и ассоциировать программу именно с ним. -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
hardcase |
24.08.2007 20:55
Сообщение
#8
|
code warrior Группа: Пользователи Сообщений: 484 Пол: Мужской Реальное имя: Славен Репутация: 8 |
Никогда не задумывался над подобными вещами... Но вот придумал схему (наверняка это велосипед).
Создаем специальный установочный пакет. Для защиты исполняемого файла от копирования нужно на этапе установки поместить к нему в ресурс некоторый идентификатор ОС или машины. Далее нужно запаковать/зашифровать исполняемый файл (конечно вместе с ресурсом) (пример подобного пакера - upx) и именно в таком виде записать его на машину клиента. Каждый раз при запуске приложения происходит распаковка приложения в память и мы проверяем на валидность эту самую сигнатуру, которую записали в ресурс при установке. Вот в принципе и все. Единственным способом распространения программы будет пакет, который производит установку. Сообщение отредактировано: hardcase - 24.08.2007 20:58 -------------------- ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
|
-Neznaika- |
24.08.2007 21:43
Сообщение
#9
|
Гость |
Цитата hardcase: Для защиты исполняемого файла от копирования нужно на этапе установки поместить к нему в ресурс некоторый идентификатор ОС или машины... Да, это сделать несложно. Заводим типизированную константу, например. TestString : String = 'TestString0123456789' и специальную функцию GenTestString : String. Эта функция будет генерировать некую строку-идентификатор компьютера, на котором установлена программа. В начале программы будет проверка if GenTestString = TestString then ВСЁ НОРМАЛЬНО - ПРОДОЛЖАЕМ РАБОТУ. TestString находится в сегменте данных, поэтому установщик вызывает GenTestString, получая правильное значение, ищет в файле программы строку 'TestString0123456789' и заменяет её на полученное значение. Программа защищена. Весь вопрос в GenTestString. Чем один компьютер отличается от другого? Не захотели в начале века использовать серийный номер процессора, а зря. |
мисс_граффити |
24.08.2007 23:35
Сообщение
#10
|
просто человек Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: 55 |
Как интересно получается Я думала, все, кто пишет софт на заказ, с этим сталкивался (сама-то писала только курсовики и прочие учебные работы, к которым, естественно, отдавались исходники... ни о какой защите речи не было).
Цитата Позвонят в службу поддержки (к тебе), продиктуешь им ответ. Позвонят, скажут что новый винт (комп... апгрейдились), я продиктую, они скопируют и отдадут Странная защита получается. Немножко продумала, что мне нужно: чтобы программа запускалась на _любом_ компьютере. Но - только на одном. Судя по описанию, hasp - именно то, что нужно (кстати, никто не знает, у обычных флешек есть какие-либо идентификаторы?). В общем, спасибо за ответы. Пока буду обдумывать... Если будут еще идеи - с удовольствием почитаю. -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Bokul |
25.08.2007 0:36
Сообщение
#11
|
Гуру Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: 11 |
Цитата Немножко продумала, что мне нужно: чтобы программа запускалась на _любом_ компьютере. Но - только на одном. Без связи программ между собой, например через интернет-сервер, это невозможно. ИМХО. Как можно определить один компьютер из любого? -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
мисс_граффити |
25.08.2007 10:42
Сообщение
#12
|
просто человек Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: 55 |
Ключ... который физически один. А без него - не запускается.
-------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Lapp |
26.08.2007 1:56
Сообщение
#13
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Ключ... который физически один. Юля, ты передергиваешь.. Ты начала с _простейшей_ защиты, к тому же не определив точно, что именно тебе нужно. А теперь говоришь о физическом ключе (на usb?) - и это уже далекооооо не простейшая штука.. Таккие ключи (обычно на LPT) были очень популярны некоторое время назад, но (с приходом Инета?) утратили популярность. Если говорить про такую штуку, то вопрос можно считать закрытым - нужно просто обратиться в фирму, которая их делает (думаю, такая должна быть). Они же дадут и софт к нему. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
мисс_граффити |
26.08.2007 9:34
Сообщение
#14
|
просто человек Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: 55 |
У нас они по-прежнему популярны.
Про простейшую=не требующую особых усилий. Мне не хотелось, чтобы защита была по объему кода сопоставима с самим проектом. А ключи продаются готовые, еще и с софтинкой, вписывающей его в откомпилированную программку. -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Lapp |
26.08.2007 13:39
Сообщение
#15
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
-------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
SKVOZNJAK |
31.08.2007 11:45
Сообщение
#16
|
Профи Группа: Пользователи Сообщений: 930 Пол: Мужской Репутация: 11 |
Можно использовать дату создания файла. Все файлы вне диапазона неработоспособны - триалверсия.
|
Neznaika |
27.09.2007 12:22
Сообщение
#17
|
Пионер Группа: Пользователи Сообщений: 51 Пол: Мужской Репутация: 0 |
Недавно попробовал "раздеть" одну программу и ... она "согласилась"
Немного головной боли в ИДЕ - оказалось, что эта программа всего лишь проверяет идентификатор компакт диска - и программа "свободна". Вообще найти условные операторы(которые осуществляют проверки) несложно. Главное определить, что эта проверка не влияет на данные, которые потом будет использовать программа. Здесь вроде все знают ассемблер, информация по WINAPI тоже доступна, "снять" "несложную защиту" сможет каждый. |
FreeMan |
27.09.2007 15:29
Сообщение
#18
|
- Группа: Пользователи Сообщений: 480 Пол: Мужской Репутация: 4 |
Цитата Но я думаю, что так действуют все файловые защиты. вы очень далеки от реальности Цитата пример подобного пакера - upx им же и распаковать при необходимости Цитата мы проверяем на валидность эту самую сигнатуру, которую записали в ресурс при установке. и на этой проверке и палемся Цитата Позвонят, скажут что новый винт (комп... апгрейдились), я продиктую, они скопируют и отдадут пусть новый ключ стоит денег. Цитата Судя по описанию, hasp - именно то, что нужно так вроде как эмуляторов этой бадяги полно Цитата А ключи продаются готовые, еще и с софтинкой, вписывающей его в откомпилированную программку. и также продает клиентам и скидывает деньги на счет Цитата Можно использовать дату создания файла. типа нельзя заменить? Цитата Недавно попробовал "раздеть" одну программу и ... она "согласилась" извращенец Цитата Вообще найти условные операторы(которые осуществляют проверки) несложно. вот ты наконец и сгенерировал правельный вывод - программа не должна проверять правильность сигнатуры, тогда сложность взлома увеличивается в разы. а вообще как говорил великий-мудрый "все, что можно запустить, можно взломать" -------------------- бб
|
S1name |
4.06.2010 16:56
Сообщение
#19
|
Гость |
|
Lapp |
5.06.2010 0:04
Сообщение
#20
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
-------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Текстовая версия | 4.10.2024 1:05 |