Форум: "Потрепаться";
Текущий архив: 2003.03.31;
Скачать: [xml.tar.bz2];
ВнизКак защитить приложение от переноса на другой компьютер. Найти похожие ветки
← →
Status_I (2003-03-09 01:40) [0]Пожалуста,помогите кто знает!Как защиттить приложение,установленное на одном компьютере от установки на другой.Может как-нибудь используя,например,дисковод,или ещё каким-нибкдь способом?Подскажите кто знает!
Спасибо.
← →
MAN-In-RED (2003-03-09 01:47) [1]
> Может как-нибудь используя,например,дисковод,
Это как? Вообще к железу не рекомендую.
← →
KpeHgeJIb (2003-03-09 01:54) [2]Можно привязатся к серийному номеру HDD он уникальный и повторений не бывает.
Как получить серийный номер жесткого диска
--------------------------------------------------------------------------------
Использовать Windows API функцию GetVolumeInformation()
Пример:
procedure TForm1.Button1Click(Sender: TObject);
var VolumeSerialNumber : DWORD;
MaximumComponentLength : DWORD;
FileSystemFlags : DWORD;
SerialNumber : string;
begin
GetVolumeInformation("C:\", nil, 0, @VolumeSerialNumber,
MaximumComponentLength, FileSystemFlags, nil, 0);
SerialNumber := IntToHex(HiWord(VolumeSerialNumber),4)+
"-"+IntToHex(LoWord(VolumeSerialNumber), 4);
Memo1.Lines.Add(SerialNumber);
end;
Информация найдена на http://blackman.wp-club.net/myfaq/faq4a.php#anc74 Можеш покапатся там может найдеш еще чтото. Там много всего но очень не удобно искать.
← →
Status_I (2003-03-09 01:59) [3]Ну, например,при инсталяции или первом запуске считывается какой-нибудь ID(например, номер HDD) ,и заносится в фаил на дискете.При повторной инсталяции приложение сравнивает ID в файле и компьютера.Может и наивно, но что-нибудб в этом роде существует?
← →
KpeHgeJIb (2003-03-09 02:14) [4]Ты хочеш чтоб ее могли проинсталировать только один раз или чтоб после инсталяции ее не могли перенести на другой компьютер?
Если просто перенести то самый простой способ это создать в риестре запись желательно закодированую в бинарном виде (все тотже номер HDD) и при каждом запуске проверять содержимое этой записи и серийник HDD и если они не совпадают то выводить сообшение и выходить из прграммы. И даже если вычислять к какой именно записи в риестре твоя программа обрящается то все равно будет сложно разобратся что именно там записано, поскольку запись в бонарном виде. И если ее просто перенесут на другой комп то значение записи не совпадет с серийником HDD.
У этого способа есть ндостаток, если сменят HDD то программа решит что ее перенесли и не запустится. Так что думай и решай. Можно привязатся к нескольким девайсам и обновлять записи в риестре если один из девайсов поменялся.
← →
Status_I (2003-03-09 05:01) [5]Ограничевать количество инсталяций нельзя.Хотелось бы, чтобы приложение запускалось бы только на том компе, котором было проинсталировано,но с этого же CD не устанавливалось бы на другой комп.То есть для другого компа нужен был бы другой диск (с эекземпляром того же приложения).
← →
Юрий Зотов (2003-03-09 08:23) [6]> Status_I
Задумайтесь над таким вопросом - как Ваш инсталлятор на CD сможет отличить "правильный" компьютер от "неправильного" при ПЕРВОЙ инсталляции? Или как это сможет сделать сама программа при ее ПЕРВОМ запуске?
Очевидно, они смогут сделать это только в том случае, если они вообще умеют отличать "правильный" компьютер от "неправильного". То есть, если они привязаны к компьютеру ЗАРАНЕЕ. Вами, при компиляции. А тогда выходит, что информацию о том компьютере, на который будет инсталлироваться программа Вы должны получить тоже ЗАРАНЕЕ. И зашить ее в программу.
Не слишком хорошо получается, верно? Вероятно, следует подумать о другом способе защиты.
← →
ZLOST (2003-03-09 08:28) [7]getVolumeInformation() возвращает не серийник харда а серийник тома. т.е. при фoрматировании серийник меняется!!! и если диск состоит из партишенов с: и d: то getvolumeinformation() возвратит для каждого и них РАЗНЫЕ номера, хотя они на одном винте лежат!
решение:
брать серийник материнки, или биоса.
для биоса:
[code]
BiosSerial:= string(pchar(ptr($FEC71)));
[/code]
← →
SkyQuake (2003-03-09 09:11) [8]>ZLOST
Строчка
BiosSerial:= string(pchar(ptr($FEC71)));
вызывает ошибку "Access violation"
← →
zzet (2003-03-09 09:52) [9]>getVolumeInformation() возвращает не серийник харда а серийник тома. т.е. при фoрматировании серийник меняется!!! и если диск состоит из партишенов с: и d: то getvolumeinformation() возвратит для каждого и них РАЗНЫЕ номера, хотя они на одном винте лежат!
Ну и что? При форматировании теряется и реестр, куда пишется инфа о диске.. Все равно после формата все переустанавливать.
← →
blackman (2003-03-09 10:42) [10]Поиск на моем сайте с 1 марта через Yandex со всеми его прибамбасами:
http://blackman.wp-club.net/uploads/advanceds.php
Ищет и в FAQ и в каталоге...
← →
Lovers (2003-03-09 12:02) [11]Есть хорошая компонента http://www.mitec.d2.cz/, посмотри, но она иногда глючит, так, что аккуратней.
← →
Lyosha (2003-03-09 12:58) [12]Создай пустой файл с "умным" названием (типа Windows\system\win32.dll) и вставь в программу проверку на его наличие
← →
MAN-In-RED (2003-03-09 14:30) [13]Имхо, сначала лучше позаботится о внутренней структуре программы…
Код типаif new_serial_num<>old_serial_num then
легко обойти…
close
else
work;
← →
a3m (2003-03-09 17:33) [14]а что если программа считывает какие-нибудь серийники (мамы, винта..), какая-то заумная функция пересчитывает их и выдает номер (в принципе уникальный для данного компьтера). Далее, пользователь сообщает этот номер разработчику (т.е. Вам), вы передаете его как параметр функции, вычиляющий второй номер. Сообщаете его пользователю. Он его вводит в программу. При каждом запуске программа проверяет номер, составляя его из серийников устройств, вычисляет второй номер и сравнивает его с номером, полученным от разработчика. Если совпал -- продолжаем работу. Если нет -- уж извините. Отслеживание уникальности регистрации -- на совести разработчика. Надеюсь изложил доступно...
p.s. насчет внутренней структуры: если пользователь не очень сведущ, он не будет дизасемблировать программу, мучить ее отладчиком..
← →
wnew (2003-03-09 18:18) [15]
> a3m © (09.03.03 17:33)
Такие способы существуют, но как временный тест-вариант, пока пользователь не решит купить этот прог. продукт, а потом, если прога уже продана - лучше электронного ключа вряд-ли, что-то придуманно.
← →
ZLOST (2003-03-09 19:31) [16]нужно получить какой-нить уникальный номер - серийник винта, мат-ки, биоса.
Какой-нить хэш-функцией генерить UNIQ-ID - хэш который будет уникальным длякаждого компа.
далее - сообщаьб юзера его UNIQ-ID, и когда вам обратятся за серийником, вы по юзерскому uniq-id - спец-ой прогой генерите ключ для unlock.
простейший пример:
ser= string(pchar(ptr($FEC71)));
ser:= hash1(ser); // 1-ый хеш для cqrity
hash := MD5(ser); // 2-ой хэш для чеканья
label1.caption := "ваш идентификационный ключ: "+hash;
U_key := inputbox("enter a key","enter a key","");
if MD5(u_key)<>hash then halt; // если неправильно - экзит
// сравниваем: u_key и ser;
// напрямую их не надо сравнивать - SoftIce"ом легко выкупят ;)))
// для интереса забейте все ассемблетными NOOPами и туфтой типа goto ;))
// или пропускайте через несколко хэшей ;)
← →
MUSTODONT (2003-03-09 19:39) [17]Любая непрофессиональная защита легко обходиться. Кому интересно
http://www.aladdin.ru/
← →
Beginer1 (2003-03-09 20:40) [18]http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1046069022&n=2
:)
← →
Status_I (2003-03-10 03:08) [19]Спасибо господа за советы.Немного поясню, что я пытаюсь сделать.
Моё приложение написано для компьютера, который входит в состав кое-какого оборудования и им управляет,заносит измерения в БД и т.д.У клиента может быть две и более подобных линий, и не хотелось бы, что бы купив один экземпляр моего приложения,клиент поставил его на все имеющиеся, у него, линии.
Может есть способ зажититься от подобного копирования?
← →
Alex Konshin (2003-03-10 05:27) [20]Ну так и привязывайся к этому оборудованию или к базе. От них можно получить что-то уникальное?
← →
Anatoly Podgoretsky (2003-03-10 09:03) [21]Тут вопрос, кто производит инсталляцию, переинсталляцию, обслуживание.
Если первые два пункта ты, то у тебя не должно быть проблем, тем более, что ты пишешь, что компьютер часть оборудования. Особенно если уникальная информация есть в линии.
В данном случае привязка к железу правомочна.
← →
Status_I (2003-03-13 01:18) [22]От оборудования ничего уникального получить нельзя.База тоже ничем примечательным не отличается-BDE.Инсталяцию и переинсталя цию не исключено, что в 20% случаев производит клиент.Но даже если я, то когда-нибудь и у клиента возникнет в этом необхлдимость.Я пытался построить алгоритм проверки используя дискету и,скажем,фаил в котором записан какой-нибудь ID,а дискету защитить от копирования,при этом на дискете файл существует изначально, просто не 0-ой длины, а заранее определённый.Ну в общем что-нибудь плдобное.Но в готовую программу всё как-то это не собирётся-не хватает системы.Помогите!Пожалуйсто!
← →
ZeroDivide (2003-03-13 09:18) [23]Ни как, к сожалению.
← →
stone (2003-03-13 09:50) [24]2 Status_I (10.03.03 03:08)
А обслуживание производится или продал и все?
← →
Vlad V. Oshin (2003-03-13 10:06) [25]
> Lyosha © (09.03.03 12:58
именно из-за этого играл в некоторые игрушки нахаляву
filemon + на балванку пишешь "нужные" пустые файлы, и все. Один диск для кучи игрушек :)
← →
ДедушкаКо (2003-03-13 10:16) [26]
> Как защитить приложение от переноса на другой компьютер
да просто радоваться надо если переносят
← →
Sir Alex (2003-03-13 10:47) [27]Лучше воспользоваться специализированными программами защиты, например ASProtect. Она платная (99$), но ведь и Вы свою не бесплатно отдаете, значит деньги будут...
← →
Status_I (2003-03-13 19:08) [28]Обслуживание производится,конечно-в этом моя основная работа.А дополнительное ПО, только моё.То есть , то что не учла моя фирма( и не хочет).И если перенося на другую линю, то не радоваться нужно, а убыток считать.
← →
Anatoly Podgoretsky (2003-03-13 20:24) [29]Подобные продукты надо защищать профессионально, например или AsProtect или интеллектуальные электронные ключи, продукт я понимаю не дешевый и стоимость профессиональной защиты будет небольшой.
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2003.03.31;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.007 c