Форум: "Основная";
Текущий архив: 2003.08.21;
Скачать: [xml.tar.bz2];
Вниззащита от несанкционированного копирования Найти похожие ветки
← →
Man (2003-08-06 13:21) [0]Привет всем! Такая вот проблема:необходимо сделать для проги защиту от несанкционированного копирования. Задумана следующая схема: при инсталяции собираютя данные об оборудовании, которые преобразуются в последовательность символов. Эта последовательность передаётся нам и на основе её выдаём ключ активации,который прописывается допустим в реестре. При запуске программы снова получается последовательность из данных об оборудовании,преобразовывается и сравнивается с ключом активации. Вопрос в преобразовании последовательности для получения ключа активации. Каким образом её выполнять,какие есть стандартные алгоритмы,подходы. Зараннее всем большое спасибо!
← →
PVOzerski (2003-08-06 13:22) [1]А потом юзер апгрейд железа сделает...
← →
Карелин Артем (2003-08-06 13:29) [2]Хэш-функция поможет нам. Ищи на торри по секьюрити. А вообще баловство это.
← →
pasha676 (2003-08-06 13:30) [3]2Man
Разработка и сопровождение любой защиты примерно в 1000 раз дешевле взлома.
Подумай об этом.
← →
Anatoly Podgoretsky (2003-08-06 13:32) [4]Хуже, он за чет пользователя хочет получить спецоборудование для своей программц, то эелезо к которуму он привяжется, вместо поставки его со своей программой, кроме того покупатель становится заложником его программы, он не имеет права сменить компьютер, провести апгрейд. Называется мошенничество.
← →
Digitman (2003-08-06 13:40) [5]
> защита от несанкционированного копирования
> При запуске программы снова получается последовательность
> из данных об оборудовании,преобразовывается и сравнивается
> с ключом активации
Ну и где ж тут защита от копирования ? По твоей идее, копию-то уже сделали и запустили)
А уж что она (копия) там делает (по реестру шарит или еще что-то) - совсем иной вопрос, не имеющий ничего общего с защищенностью собственно от создания копии.
← →
kull (2003-08-06 13:50) [6]
> Digitman © (06.08.03 13:40)
> Ну и где ж тут защита от копирования ?
Это наверное шутка такая? Очевидно, что Man имеет в виду защиту от нелицензионного (бесплатного, если хотите) использования...
Хотя к железу привязываться - гиблое дело.
Вариант: Можно попробовать использовать внешние ключи типа HardLock, Hasp и т.п. Правда email- ом здесь уже не обойдешься, прийдется к клиенту выезжать...
← →
Man (2003-08-06 14:02) [7]Да,гм...
Почему сразу юзер - заложник моей проги? Их не столь много будет,все зарегистрированы.
← →
Anatoly Podgoretsky (2003-08-06 14:10) [8]Каждый зарегистрированый и будет заложником твоей программы, поскольку она не будет работать без того железа, а ты его поставляешь за счет покупателя и он не имет права без тебя его сменить.
По другому ты заключаешь договор между собой и железом. Подобная практика защиты давно считается мошенничеством, ты обязан поставить то железо, без которого твоя программа не будет работать или ты должен предоставить возможность замены любого железа в компьютере, включая сам компьютер без твоего участия.
← →
PVOzerski (2003-08-06 14:11) [9]2Man ©:
Так что, по Вашему, юзер должен делать, если он решит поменять комп или какие-то комплектующие, а Вы в это время в отпуске будете?
← →
Digitman (2003-08-06 14:19) [10]
> kull
> Очевидно, что
Не очевидно. Копирование есть копирование, это - одно, а использование копии - иное. С т.з. "очевидности" тема/вопрос д.б. прозвучать иначе : "Защита от несанкционированного использования копии".
← →
kull (2003-08-06 15:07) [11]
> Почему сразу юзер - заложник моей проги? Их не столь много
> будет,все зарегистрированы.
Тогда вполне подойдут Hasp или Hardlock.
> Digitman © (06.08.03 14:19)
Другим это почему-то очевидно...
Да, вопрос не совсем корректно поставлен, но у нас не филологический форум...
← →
Anatoly Podgoretsky (2003-08-06 15:14) [12]kull © (06.08.03 15:07)
Это цивильное решение, используется аппратная защита и она должна поставляться с программой. К тому же должна выдаваться определенная гарантия на это железо, в течении которой ремонт/замена делается за счет продавца.
← →
xShadow (2003-08-06 15:18) [13]Да и ещё одно не маловажное дополнение, все изменения делаеме в реестре или в файлах с лёгкостью улавливаются утилитами regmon и filemon. Это был офтоп.
Если реально делать защиту то программа не должна хранить ничего в реестре, она может это делать в самой себе т.е. информация каждый раз считывается из файла exe при этом сам файл exe каждый раз должен меняться внутренне, для это можно использовать RC6 кодирование с ключом. Программа не должна привязываться к железу ей просто нужен некий магический ключ активации и всё...
← →
PVOzerski (2003-08-06 15:26) [14]Я привязывал, в свое время, прогу к винчу через соответствия между длинными и короткими именами. Привязка делалась на этапе инсталляции. Но при этом дистрибутив оставался у юзера, так что он сам мог переставить программу при необходимости. Правда, число допустимых установленных копий мы не обговаривали.
← →
Anatoly Podgoretsky (2003-08-06 15:35) [15]Правильно, если пользователь может переинсталлировать программу при необходимости, то у него проблем не возникнет и программу без его ведома не украдут и не используют.
Но так ты же как нормальный человек доверяешь пользователю и не считаешь его вором. Пожтому ни у тебя ни у пользователя этих проблем не возникает.
← →
Man (2003-08-06 15:43) [16]>xShadow ©
Так и пусть улавливают,код активации на другом железе не такой будет.
>PVOzerski ©
Можно поподробней,интересно.
← →
PVOzerski (2003-08-06 15:57) [17]2Man: элементарно. Часть функций вынес в dll-и. Обозвал их именами длиннее 8 символов при совпадении 1-х 8. А потом подключал dll-и динамически по коротким именам. Притом и public names функций сделал в разных dll-ях одинаковыми. Фишка в том, что короткое имя генерится операционной системой автоматически, а число после тильды в этой ситуации зависит от порядка копирования файлов на диск. И уже остается, даже если меньший номер потом освобождается. А при несанкционированном копировании эти короткие имена на новом носителе автоматически же замещаются другими.
← →
Man (2003-08-06 16:14) [18]>PVOzerski ©
Честно говоря не совсём доехал про длинные и короткие имена,~ и т.п. Если несложно поподробней,раз уж всё элементарно(с точки зрения реализация - да,но принцип?).
← →
PVOzerski (2003-08-06 16:35) [19]2Man © (06.08.03 16:14):
Простейший пример:
файл: library001.pas
library a;
function Plus(x1,x2:longint):longint;export;
begin
Result:=x1+x2;
end;
exports
Plus name "Func";
begin
end.
файл: library002.pas
library b;
function Minus(x1,x2:longint):longint;export;
begin
Result:=x1-x2;
end;
exports
Minus name "Func";
begin
end.
файл: caller.pas
{$apptype console}
program Caller;
function Plus(x1,x2:longint):longint;
external "librar~3.dll" name "Func";
function Minus(x1,x2:longint):longint;
external "librar~1.dll" name "Func";
var
x,y:longint;
begin
readln(x,y);
writeln(Plus(x,y));
writeln(Minus(x,y));
end.
файл: setup.bat
md c:\protdemo
copy library002.dll c:\protdemo
copy library002.dll c:\protdemo\library003.dll
copy library001.dll c:\protdemo
copy caller.exe c:\protdemo
del c:\protdemo\library003.dll
c:
cd protdemo
Скомпилируй, проинсталлируй, проверь, как работает.
Потом скопируй установленное куда-нибудь еще и запусти оттуда :^)
Я, правда, сейчас FreePascal употребил почему-то, но Delphi сойдет тоже.
← →
Man (2003-08-06 17:16) [20]Понятно,а если было "санционированное" копирование...
← →
PVOzerski (2003-08-06 17:24) [21]А для санкционированного надо инсталлятором пользоваться
← →
Man (2003-08-06 17:37) [22]Так он его другу дал и т.п.,тот своему...("число допустимых установленных копий мы не обговаривали").
При нашем подходе тоже подобная дыра есть,но всё же можно отследить,когда "друзей" очень много.
← →
PVOzerski (2003-08-06 17:43) [23]Ну, в принципе, дистрибутив можно разместить на принципиально некопируемом носителе (есть же способы защиты CD и дискет, например, через физические повреждения). Не будет же один дистрибутивный диск гулять по сотням желающих.
← →
Man (2003-08-06 17:50) [24]Такой вот ещё вопрос:вышеописанную идея хочу реализовать т.о.:
прога состоит из модуля загрузки и рабочих dll-ек.При инсталяции они зашифровываются с public ключом(данные железа).При запуске они расшифровываются в память,используя приватный ключ,который берётся из реестра(Здесь загвоздка:как расшифровать не в файл а в память и сразу юзать).
← →
TButton (2003-08-06 17:59) [25]IMHO забей ты на эту защиту. единственная реальная защита, которую я встречал, это защита компашки "Америка" (продолжение казаков) там прога сверяет серийный номер диска или что-то такое.... еще порадовала защита на музыкалке the Eminem show я весь вечер всяко разно пытался его на mp3 перекатать так нифига и не вышло.
← →
PVOzerski (2003-08-06 18:05) [26]2Man: см. исходники и доки по UPX и т.п. программам. Там же найдешь предупреждение, что такой подход ухудшает эффективность использования оперативной памяти.
← →
Man (2003-08-06 18:28) [27]А взять то их где?
← →
HolACost ( nickname ) (2003-08-06 18:37) [28]http://sourceforge.net/projects/upx/
← →
Man (2003-08-06 19:03) [29]>PVOzerski ©
Я тут подумал,можно попроще чуток:использовать 1 ключевую библиотеку с шифруемым именем. Т.е. при инсталяции шифрую имя dll,а при запуске пытаюсь динамически зачитать её с расшифрованным именем.
← →
TButton (2003-08-06 20:30) [30]2 PVOzerski
вот я не знаю как другие, а я таким извращензмом как копирование установленой проги не занимался. имхо если копировать то сетап.
← →
Igor Popov (2003-08-07 03:29) [31]ну блин.... дитЁ...
Выписывай ключики на ИМЯ ПОЛЬЗОВАТЕЛЯ, а при запуске сравнивай
Как хранить ключик у юзера - твое право.
Sincerelly yours, "IGP Systems"
Visit our forum: http://forum.igp.org.ua/
← →
Man (2003-08-07 12:42) [32]>Igor Popov
Декомпилировал,место сравнения ключей нашёл по выводимой ошибке,поменял комнанду условного перехода - всё будет работать...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.08.21;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.007 c