IPB
ЛогинПароль:

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> защита от копирования, символическая
сообщение
Сообщение #1


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


Здравствуйте.
Возникла такая ситуация - делаю программку (БД). Хотелось бы как-то ограничить возможности ее копирования (специально ее ломать нафиг никому не надо, люди от хакерства весьма и весьма далеки, поэтому в супер-заморочках необходимости нет). С подобными задачами никогда не сталкивалась... Поделитесь опытом, пожалуйста - как можно подойти к вопросу?
Спасибо заранее.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Пионер
**

Группа: Пользователи
Сообщений: 51
Пол: Мужской

Репутация: -  0  +


Цитата

...Возникла такая ситуация - делаю программку (БД).
Хотелось бы как-то ограничить возможности ее копирования...


Ограничить возможности копирования, значит привязать к определённому месту на носителе(жёстком диске,
CD-ROM и т.д. и т.п.). Известно, что под файлы файловая система отводит не столько байт, сколько они занимают, а сколько, сколько минимально кластеров нужно для хранения всех данных файла. Короче,
реальный размер файла кратен размеру кластера(например в NTFS обычно 4096).
Так как обычно размер файла не кратен размеру кластера, то остаются так называемые "хвосты"(неиспользуемые байты в последнем кластере файла). В них можно записать контрольные значения и при старте программы первым делом проверять их. Если совпадают, то всё нормально, иначе - копия программы нелегальная - выход. Только кроме изменений в самой программе потребуется создать установочную программу, которая запишет контрольные значения в "хвосты". В идеале эта установочная программа должна самоликвидироваться(самоудалаться).

Извиняюсь, что одни общие слова. Но я думаю, что так действуют все файловые защиты.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


Простой способ, встречающийся частенько: привязаться к оборудованию, например через GetVolumeInformation получить серийный номер винта, потом на основании него по любой хитрой формуле (md5 подойдет smile.gif )получить некий id. У себя иметь генерилку ответов на него, в программе - проверку. Единственное тонкое место - умудриться сделать проверку так, чтобы в самой программе не была включена этаже генерилка, иначе выдерут 5 сек (хотя говоришь это не надо никому).
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


Neznaika, не совсем поняла идею. на каком этапе писать контрольные значения?

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


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


Цитата(мисс_граффити @ 24.08.2007 14:21) *

Neznaika, не совсем поняла идею. на каком этапе писать контрольные значения?

Malice, сначала думала в ту же сторону...
но возникает проблема: винт полетел - им опять обращаться ко мне?

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

Сообщение отредактировано: Malice -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Эх, пример не получается создать.
Я думал примерно так:

Записываем MAGIC в "хвост" файла FileName:

type
String5 = String[5];
const
MAGIC : String5 = 'Magic';
MAGIC_SIZE = SizeOf(String5);
CLUSTER_SIZE = 4096;
FileName : array[0..12] of Char = 'TestFile.dat'#0;
var
hFile : THandle;
FileSize : DWord;
DW : DWord;
...
hFile := CreateFile(@FileName,GENERIC_READ or GENERIC_WRITE,0,NIL,OPEN_EXISTING,0,0);
FileSize := GetFileSize(hFile,NIL);
if (CLUSTER_SIZE - FileSize mod CLUSTER_SIZE) < MAGIC_SIZE then
begin
Write('No memory in tail!');
CloseHandle(hFile);
Exit
end;
SetFilePointer(hFile,FileSize,NIL,FILE_BEGIN);
WriteFile(hFile,MAGIC,MAGIC_SIZE,DW,NIL);
SetFilePointer(hFile,FileSize,NIL,FILE_BEGIN);
SetEndOfFile(hFile);
CloseHandle(hFile)



К сожалению вызов SetEndOfFile(hFile) затирает MAGIC !fire.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


Цитата
в общем, не придумала, к чему можно сделать привязку.

Если полагаться что у пользователей чистая ОС, то наверняка можно достать ее номер (если такое существует) и ассоциировать программу именно с ним.


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


code warrior
****

Группа: Пользователи
Сообщений: 484
Пол: Мужской
Реальное имя: Славен

Репутация: -  8  +


Никогда не задумывался над подобными вещами... Но вот придумал схему (наверняка это велосипед).
Создаем специальный установочный пакет.
Для защиты исполняемого файла от копирования нужно на этапе установки поместить к нему в ресурс некоторый идентификатор ОС или машины. Далее нужно запаковать/зашифровать исполняемый файл (конечно вместе с ресурсом) (пример подобного пакера - upx) и именно в таком виде записать его на машину клиента.
Каждый раз при запуске приложения происходит распаковка приложения в память и мы проверяем на валидность эту самую сигнатуру, которую записали в ресурс при установке.
Вот в принципе и все.

Единственным способом распространения программы будет пакет, который производит установку.

Сообщение отредактировано: hardcase -


--------------------
ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






Цитата
hardcase:
Для защиты исполняемого файла от копирования нужно на этапе установки поместить к нему в ресурс некоторый идентификатор ОС или машины...


Да, это сделать несложно.
Заводим типизированную константу, например.
TestString : String = 'TestString0123456789'
и специальную функцию GenTestString : String. Эта функция будет генерировать некую строку-идентификатор
компьютера, на котором установлена программа. В начале программы будет проверка
if GenTestString = TestString then
ВСЁ НОРМАЛЬНО - ПРОДОЛЖАЕМ РАБОТУ.

TestString находится в сегменте данных, поэтому установщик вызывает GenTestString, получая правильное
значение, ищет в файле программы строку 'TestString0123456789' и заменяет её на полученное значение.
Программа защищена. smile.gif

Весь вопрос в GenTestString. Чем один компьютер отличается от другого?
Не захотели в начале века использовать серийный номер процессора, а зря.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


Как интересно получается smile.gif Я думала, все, кто пишет софт на заказ, с этим сталкивался (сама-то писала только курсовики и прочие учебные работы, к которым, естественно, отдавались исходники... ни о какой защите речи не было).
Цитата
Позвонят в службу поддержки (к тебе), продиктуешь им ответ.

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

Немножко продумала, что мне нужно: чтобы программа запускалась на _любом_ компьютере. Но - только на одном. Судя по описанию, hasp - именно то, что нужно (кстати, никто не знает, у обычных флешек есть какие-либо идентификаторы?).

В общем, спасибо за ответы. Пока буду обдумывать... Если будут еще идеи - с удовольствием почитаю.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


Цитата
Немножко продумала, что мне нужно: чтобы программа запускалась на _любом_ компьютере. Но - только на одном.

Без связи программ между собой, например через интернет-сервер, это невозможно. ИМХО. Как можно определить один компьютер из любого? smile.gif


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


Ключ... который физически один. А без него - не запускается.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(мисс_граффити @ 25.08.2007 11:42) *

Ключ... который физически один.

Юля, ты передергиваешь.. smile.gif
Ты начала с _простейшей_ защиты, к тому же не определив точно, что именно тебе нужно. А теперь говоришь о физическом ключе (на usb?) - и это уже далекооооо не простейшая штука.. Таккие ключи (обычно на LPT) были очень популярны некоторое время назад, но (с приходом Инета?) утратили популярность. Если говорить про такую штуку, то вопрос можно считать закрытым - нужно просто обратиться в фирму, которая их делает (думаю, такая должна быть). Они же дадут и софт к нему.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


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


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(мисс_граффити @ 26.08.2007 10:34) *

ключи продаются готовые, еще и с софтинкой, ..

Дык.
smile.gif


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Профи
****

Группа: Пользователи
Сообщений: 930
Пол: Мужской

Репутация: -  11  +


Можно использовать дату создания файла. Все файлы вне диапазона неработоспособны - триалверсия.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Пионер
**

Группа: Пользователи
Сообщений: 51
Пол: Мужской

Репутация: -  0  +


Недавно попробовал "раздеть" одну программу и ... она "согласилась" smile.gif
Немного головной боли в ИДЕ - оказалось, что эта программа всего лишь проверяет идентификатор
компакт диска - и программа "свободна".

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

Здесь вроде все знают ассемблер, информация по WINAPI тоже доступна,
"снять" "несложную защиту" сможет каждый.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


-
****

Группа: Пользователи
Сообщений: 480
Пол: Мужской

Репутация: -  4  +


Цитата
Но я думаю, что так действуют все файловые защиты.

вы очень далеки от реальности
Цитата
пример подобного пакера - upx

им же и распаковать при необходимости
Цитата
мы проверяем на валидность эту самую сигнатуру, которую записали в ресурс при установке.

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

пусть новый ключ стоит денег.
Цитата
Судя по описанию, hasp - именно то, что нужно

так вроде как эмуляторов этой бадяги полно
Цитата
А ключи продаются готовые, еще и с софтинкой, вписывающей его в откомпилированную программку.

и также продает клиентам и скидывает деньги на счетsmile.gif
Цитата
Можно использовать дату создания файла.

типа нельзя заменить?
Цитата
Недавно попробовал "раздеть" одну программу и ... она "согласилась"

извращенец
Цитата
Вообще найти условные операторы(которые осуществляют проверки) несложно.

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

а вообще как говорил великий-мудрый "все, что можно запустить, можно взломать"


--------------------
бб
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


Гость






Цитата(Bokul @ 24.08.2007 19:34) *

Если полагаться что у пользователей чистая ОС, то наверняка можно достать ее номер (если такое существует) и ассоциировать программу именно с ним.

tracert -a tracert-an
 К началу страницы 
+ Ответить 
сообщение
Сообщение #20


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(S1name @ 4.06.2010 17:56) *
tracert -a tracert-an
и что бы сие значило?.. blink.gif


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

2 страниц V  1 2 >
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 20:30
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name