Привязка программы к компьютеру
От: LupakovO  
Дата: 01.11.11 10:19
Оценка:
Здравствуйте.

Написал программу на Delphi. Хочу сделать привязку к конкретному компьютеру, подскажите, как лучше реализовать? К чему привязываться?
Я вроде слышал 3 года назад, что теперь процессоры и материнские платы не содержат уникального ID. Это правда?
Кто-то советует к жесткому диску, но вроде жесткие диски содержат движущиеся части и ломаются чаще. Поэтому прошу совета у специалистов.

02.11.11 08:32: Перенесено модератором из 'Delphi & Builder' — больше соответствует теме. H_D. — Hacker_Delphi
Re: Привязка программы к компьютеру
От: DarkMaster Украина http://www.bdslib.at.ua
Дата: 01.11.11 11:37
Оценка:
Здравствуйте, LupakovO, Вы писали:


LO>Написал программу на Delphi. Хочу сделать привязку к конкретному компьютеру, подскажите, как лучше реализовать? К чему привязываться?

LO>Я вроде слышал 3 года назад, что теперь процессоры и материнские платы не содержат уникального ID. Это правда?
LO>Кто-то советует к жесткому диску, но вроде жесткие диски содержат движущиеся части и ломаются чаще. Поэтому прошу совета у специалистов.

Тебе лучше к шароварщикам обратится. Основные места привязки: материнские платы, винты, система. Винты — не всегда можно точно привязаться — информация, доставаемая через GetVolumeInformation() может быть легко изменена. То же самое относится к системе (Windows ID) — переставили систему — все уехало. Доступ к ID материнки — отдельная песня. Я бы не заморачивался и сделал бы шифрованный ключевой файл. Файл есть и его содержимое корректно — работаем, если нет — прошу на регистрацию, работаем в демо режиме.

P.S. Можно использовать и навесную защиту и комбинацию разных защит — все зависит от того, что программа делает.
WBR, Dmitry Beloshistov AKA [-=BDS=-]
Re: Привязка программы к компьютеру
От: acDev Россия  
Дата: 01.11.11 14:35
Оценка:
Здравствуйте, LupakovO, Вы писали:

LO>Здравствуйте.


LO>Написал программу на Delphi. Хочу сделать привязку к конкретному компьютеру, подскажите, как лучше реализовать? К чему привязываться?


Только HDD (HDDSN) и Монитор (EDID) имеют реально уникальный ID, который производитель обязан "заполнить".

Так же есть ID в:
1) сетевых картах (во встроенных можно в биосе менять значение MAC, поэтому не уникален)
2) планках памяти (не во всех и встречаются дубликаты);
3) материнских платах (не во всех и встречаются дубликаты).

Все эти идентификаторы можно при помощи спец. утилит поменять (кроме HDDSN).

LO>Я вроде слышал 3 года назад, что теперь процессоры и материнские платы не содержат уникального ID. Это правда?


Только Pentium III первых ревизий содержал ID (да и то можно было в биосе отключить его определение).
Материнские платы штампуют китайцы и им всё равно (дорогие платы конечно содержат всякие ID и т.п.).

LO>Кто-то советует к жесткому диску, но вроде жесткие диски содержат движущиеся части и ломаются чаще. Поэтому прошу совета у специалистов.

Жёский диск служит в среднем 5 лет. Да и сам комп живёт не больше (апгрейды и т.п.).

ЗЫ. Все выше упомянутые ID можно проэмулировать (перехватить и изменить) ... умельцев на это хватает.
Re: Привязка программы к компьютеру
От: okman Беларусь https://searchinform.ru/
Дата: 01.11.11 16:56
Оценка: 1 (1) +1
Здравствуйте, LupakovO, Вы писали:

LO>Здравствуйте.


LO>Написал программу на Delphi. Хочу сделать привязку к конкретному компьютеру, подскажите, как лучше реализовать? К чему привязываться?


Привязываться лучше к нескольким параметрам, для надежности.
Например, если из пяти компонентов три или четыре вдруг меняют характеристики — значит,
запуск произведен на другом компьютере.

LO>Я вроде слышал 3 года назад, что теперь процессоры и материнские платы не содержат уникального ID. Это правда?


Дело даже не в этом, а в том, что для получения наиболее "железных" параметров приходится
влезать в kernel-mode (писать драйвер). К тому же, железо разных производителей (Intel/AMD,
GeForce/Radeon) имеет, как правило, разный API для доступа к своим характеристикам.

LO>Кто-то советует к жесткому диску, но вроде жесткие диски содержат движущиеся части и ломаются чаще. Поэтому прошу совета у специалистов.


Наиболее реальный вариант — использовать WMI и CPUID.
В Windows Vista и выше есть полезная функция — GetSystemFirmwareTable (для XP придется
писать хак через Device\PhysicalMemory). С ее помощью можно вытянуть очень много интересного,
но чтобы разобраться во всем этом, нужно перелопатить официальные спецификации SMBIOS, DMI и т.п.
В общем, пуд соли обеспечен, а выгоды туманны.
Re[2]: Привязка программы к компьютеру
От: de Niro Ниоткуда  
Дата: 02.11.11 01:34
Оценка:
Здравствуйте, DarkMaster, Вы писали:

DM>Я бы не заморачивался и сделал бы шифрованный ключевой файл. Файл есть и его содержимое корректно — работаем, если нет — прошу на регистрацию, работаем в демо режиме.


Может, я чего-то недопонимаю.

А что помешает недобросовестному юзеру выложить этот ключевой файл на всеобщее пользование?
Re[3]: Привязка программы к компьютеру
От: Nonmanual Worker  
Дата: 02.11.11 02:32
Оценка: 1 (1)
Здравствуйте, de Niro, Вы писали:

DM>>Я бы не заморачивался и сделал бы шифрованный ключевой файл. Файл есть и его содержимое корректно — работаем, если нет — прошу на регистрацию, работаем в демо режиме.

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

Мы продаем так софт больше 10 лет. Случаев выкладывания серийника или кейфайла было всего несколько. Софт популярный и известный в определенных кругах.
ИМХО если цена приложения невелика (<500$) и продажи массовые а не адресные, и приложению не нужен всегда интернет, то нет смысла в привязке к машине. Больше потеряете потенциальных покупателей чем выиграете. Однако, это всего лишь мое мнение, буду рад услышать сакскесс-стори про то как перешли на регистрацию с привязкой к железу и продажи выросли хотя бы на 10%.
Re[4]: Привязка программы к компьютеру
От: de Niro Ниоткуда  
Дата: 02.11.11 04:13
Оценка:
Здравствуйте, Nonmanual Worker, Вы писали:

DM>>>Я бы не заморачивался и сделал бы шифрованный ключевой файл. Файл есть и его содержимое корректно — работаем, если нет — прошу на регистрацию, работаем в демо режиме.

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

NW>Мы продаем так софт больше 10 лет. Случаев выкладывания серийника или кейфайла было всего несколько. Софт популярный и известный в определенных кругах.


У меня опыт противоположный. Но вопрос был не об этом. Каков смысл этого ключевого файла по сравнению с серийником, тоже не привязанным к железу? Выложить могут и то, и то. Отличие только в размере?
Re: Привязка программы к компьютеру
От: Kubyshev Andrey  
Дата: 02.11.11 04:51
Оценка: +1 -2
Я привязываюсь к имени компьютера.
На мой взгляд удобно.
Re[5]: Привязка программы к компьютеру
От: Nonmanual Worker  
Дата: 02.11.11 04:54
Оценка:
Здравствуйте, de Niro, Вы писали:

DN>У меня опыт противоположный. Но вопрос был не об этом. Каков смысл этого ключевого файла по сравнению с серийником, тоже не привязанным к железу? Выложить могут и то, и то. Отличие только в размере?

Верно, если ключ длинный и его рассылать в письме текстом, то находятся трудные юзеры которые его нормально скопипастить не могут.
Re: Привязка программы к компьютеру
От: byterus Россия  
Дата: 02.11.11 05:11
Оценка:
Я привязываюсь к виндовому идентификатору, у каждой инсталляции он свой.

function GetMachineID: string;
var
  Reg: TRegistry;                    
begin
  Result := 'UNKNOWN_' + IntToStr(Random(100000));
  try
    Reg := TRegistry.Create(KEY_READ OR $0100);
    try
      Reg.RootKey := HKEY_LOCAL_MACHINE;
      if Reg.KeyExists('SOFTWARE\Microsoft\Cryptography') and Reg.OpenKey('SOFTWARE\Microsoft\Cryptography', False) and Reg.ValueExists('MachineGuid') then
        Result := AnsiUpperCase(Reg.ReadString('MachineGuid'));
    finally
      Reg.Free;
    end;
  except
  end;
end;
MySQL stored procedure debugging
Re[2]: Привязка программы к компьютеру
От: _AND Российская Империя За Русский мир! За Русь святую!
Дата: 02.11.11 05:38
Оценка:
Здравствуйте, okman, Вы писали:

O>Здравствуйте, LupakovO, Вы писали:


O>Наиболее реальный вариант — использовать WMI и CPUID.

Это наиболее НЕ реальный вариант.
WMI сервис может быть не запущен, могут настройки COM быть неправильные, может нехватать прав и тд
Re[2]: Привязка программы к компьютеру
От: _AND Российская Империя За Русский мир! За Русь святую!
Дата: 02.11.11 05:45
Оценка: 1 (1)
Здравствуйте, byterus, Вы писали:

B>Я привязываюсь к виндовому идентификатору, у каждой инсталляции он свой.


B>
B>function GetMachineID: string;
B>var
B>  Reg: TRegistry;                    
B>begin
B>  Result := 'UNKNOWN_' + IntToStr(Random(100000));
B>  try
B>    Reg := TRegistry.Create(KEY_READ OR $0100);
B>    try
B>      Reg.RootKey := HKEY_LOCAL_MACHINE;
B>      if Reg.KeyExists('SOFTWARE\Microsoft\Cryptography') and Reg.OpenKey('SOFTWARE\Microsoft\Cryptography', False) and Reg.ValueExists('MachineGuid') then
B>        Result := AnsiUpperCase(Reg.ReadString('MachineGuid'));
B>    finally
B>      Reg.Free;
B>    end;
B>  except
B>  end;
B>end;
B>


Что-то мне кажется что будут проблемы у 32-битного приложения на x64.
Re: Привязка программы к компьютеру
От: _AND Российская Империя За Русский мир! За Русь святую!
Дата: 02.11.11 05:50
Оценка:
Здравствуйте, LupakovO, Вы писали:

LO>Здравствуйте.


LO>Написал программу на Delphi. Хочу сделать привязку к конкретному компьютеру, подскажите, как лучше реализовать? К чему привязываться?

LO>Я вроде слышал 3 года назад, что теперь процессоры и материнские платы не содержат уникального ID. Это правда?
LO>Кто-то советует к жесткому диску, но вроде жесткие диски содержат движущиеся части и ломаются чаще. Поэтому прошу совета у специалистов.

Надо привязываться к нескольким параметрам и делать так, что-бы изменение одного-двух не влияло на результат.
Использовать параметры ОС для привязки, помимо собственно железа.
Re: Привязка программы к компьютеру
От: drVanо Россия https://vmpsoft.com
Дата: 02.11.11 06:08
Оценка: 1 (1)
Здравствуйте, LupakovO, Вы писали:

LO>Здравствуйте.


LO>Написал программу на Delphi. Хочу сделать привязку к конкретному компьютеру, подскажите, как лучше реализовать?


Лучше взять готовое решение из подписи чем изобретать очередной велосипед.
Re[6]: Привязка программы к компьютеру
От: icezone  
Дата: 02.11.11 06:29
Оценка:
Здравствуйте, Nonmanual Worker, Вы писали:

NW>Верно, если ключ длинный и его рассылать в письме текстом, то находятся трудные юзеры которые его нормально скопипастить не могут.


Ваш аттач с ключевым файлом могут антивирусники порезать.
Re[3]: Привязка программы к компьютеру
От: okman Беларусь https://searchinform.ru/
Дата: 02.11.11 06:42
Оценка:
Здравствуйте, _AND, Вы писали:

_AN>Это [WMI и CPUID] наиболее НЕ реальный вариант.

_AN>WMI сервис может быть не запущен, могут настройки COM быть неправильные, может нехватать прав и тд

Привязка к оборудованию — это вообще сомнительный вариант, об этом я уже писал, на этом
форуме и не только. Тут столько всяких "но" и "если", что самое время задуматься о
разумности и целесообразности этого пути. Про WMI я в курсе, как и про другие методы — сам
занимался такой защитой вплотную. Еще варианты — приобретать апробированные технические
решения и библиотеки у сторонних компаний, но они имеют приличную стоимость, либо
распостраняются по очень неудобным лицензиям.
Re: Привязка программы к компьютеру
От: CRT  
Дата: 02.11.11 07:09
Оценка:
Здравствуйте, LupakovO, Вы писали:

LO>Здравствуйте.


LO>Написал программу на Delphi. Хочу сделать привязку к конкретному компьютеру, подскажите, как лучше реализовать? К чему привязываться?

LO>Я вроде слышал 3 года назад, что теперь процессоры и материнские платы не содержат уникального ID. Это правда?
LO>Кто-то советует к жесткому диску, но вроде жесткие диски содержат движущиеся части и ломаются чаще. Поэтому прошу совета у специалистов.

а как ты будешь поступать когда пользователь поменяет железо и обратится к тебе c просьбой сделать так чтобы его ключ работал на новом железе?
Re[2]: Привязка программы к компьютеру
От: _AND Российская Империя За Русский мир! За Русь святую!
Дата: 02.11.11 07:14
Оценка:
Здравствуйте, CRT, Вы писали:

CRT>Здравствуйте, LupakovO, Вы писали:


LO>>Здравствуйте.


LO>>Написал программу на Delphi. Хочу сделать привязку к конкретному компьютеру, подскажите, как лучше реализовать? К чему привязываться?

LO>>Я вроде слышал 3 года назад, что теперь процессоры и материнские платы не содержат уникального ID. Это правда?
LO>>Кто-то советует к жесткому диску, но вроде жесткие диски содержат движущиеся части и ломаются чаще. Поэтому прошу совета у специалистов.

CRT>а как ты будешь поступать когда пользователь поменяет железо и обратится к тебе c просьбой сделать так чтобы его ключ работал на новом железе?


Сбросить его регистрацию и попросить перерегистрировать с тем же ключом?
Re[3]: Привязка программы к компьютеру
От: CRT  
Дата: 02.11.11 07:20
Оценка:
Здравствуйте, _AND, Вы писали:


CRT>>а как ты будешь поступать когда пользователь поменяет железо и обратится к тебе c просьбой сделать так чтобы его ключ работал на новом железе?


_AN>Сбросить его регистрацию и попросить перерегистрировать с тем же ключом?


тогда возникает еще один вопрос. А если он через неделю еще раз попросит, а потом через неделю еще раз, потом еще раз. Что будешь делать?
Re: Привязка программы к компьютеру
От: edton  
Дата: 02.11.11 07:36
Оценка: 1 (1) +2
Здравствуйте, LupakovO, Вы писали:

LO>Здравствуйте.


LO>Написал программу на Delphi. Хочу сделать привязку к конкретному компьютеру, подскажите, как лучше реализовать? К чему привязываться?

LO>Я вроде слышал 3 года назад, что теперь процессоры и материнские платы не содержат уникального ID. Это правда?
LO>Кто-то советует к жесткому диску, но вроде жесткие диски содержат движущиеся части и ломаются чаще. Поэтому прошу совета у специалистов.

Еще 15 лет назад наши классики шаровары вроде Каталова писали что привязка к железу — плохая идея.
Найдите статьи, почитайте.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.