Привязка программы к конкретному оборудованию/железу.

Доброго времени суток.
Собираюсь приобрести продукт “VM Protect Ultimate”, НО, интересует вопрос, на который я не нашел ответа в “FAQ” или на форуме.

# Вопрос: Как осуществляется привязка программы к железу?

  • Интересует пошаговая инструкция.

P.S. → Вопрос задаётся по той причине, что в данный момент я использую лицензию протектора “WinLicense”, так там есть спец.программа, которую нужно запустить на стороне клиента и она сгенерирует спец.ключ, который привязан к железу. После чего этот спец.ключ помещаешь в программу и всё.

  • Как у вас это реализовано пока разобраться не могу. Прошу разъяснить данный момент, так как только он смущает и останавливает перед приобретением вашего продукта.

P.S. → Ещё просьба к администрации данного проекта. Пожалуйста, организуйте выбор языка на вашем сайте, чтобы можно было выбрать “РУССКИЙ ЯЗЫК”. Не все ваши клиенты и потенциальные клиенты владеют Английским языком.

  1. Шаг первый, в котором вы получается HWID компьютера пользователя (это может быть реализовано как отдельная программа)
  2. Шаг второй, в котором вы создаете серийный номер с привязкой его к HWID
  3. Шаг третий, в котором вы проверяете введенный пользователем серийный номер

1-ый пункт вообще не понятен.

int nSize = VMProtectGetCurrentHWID(NULL, 0);
char *buf = new char[nSize];
VMProtectGetCurrentHWID(buf, nSize);
printf("HWID: %s\n", buf);
  • На любом компьютере выдаёт: “HWID: myhwid”


    P.S. → Может я глупый, но я никак не могу понять, как получить HardwareID компьютера при помощи вашего протектора.
  • Может имеет смысл опубликовать код для получения HWID компьютера или готовую программу для получения HWID как это реализовано у Oreans(WinLicense).
  • Или нужно кроме протектора ещё что-то приобретать?

Упс. Не подумал что нужно еще рассказать про четвертый шаг:
4. Открываете свой проект в VMProtect и жмете F9 (Compilation). На этом шаге в защищаемую программу встраивается реальный код системы лицензирования, а также убирается зависимость от VMProtectSDKxx.dll/VMProtectDDKxx.sys

Разобрался.

# Как получить HWID компьютера:

  1. Необходимо записать код:
int nSize = VMProtectGetCurrentHWID(NULL, 0);
char *buf = new char[nSize];
VMProtectGetCurrentHWID(buf, nSize);
printf("HWID: %s\n", buf);
  • В таком виде вам будет выдавать “myhwid”.
  1. Вам необходимо запаковать программу, и после этого вам будет показывать реальный HWID.

Реальный HWID (вместо myhwid) программа покажет ТОЛЬКО после обработки в VMProtect.

День добрый!

У меня задача продавать мой проект с привязкой к железу каждого клиента.
Посмотрел все вышеназванные три шага, первый шаг сделал, с остальными загвоздка.
По первому шагу получился айди компа вида: HWID: QPc1kUmtp0xiPog/8hZUfv5Ll6XD7+3X
Иду дальше к шагу 2:

http://vmpsoft.com/support/user-manual/working-with-vmprotect/main-window/license-management/ ,

по ссылке неясно куда вводить этот айди. И главный вопрос: “Этот айди берется с какого железа?”. Получается выбрать железо для привязки я не могу?

Далее идет шаг 3 http://vmpsoft.com/support/user-manual/the-software-licensing-system/example-of-usage/step-3-get-state-of-serial-number/ ,
Тут тоже неясно. В какую часть моей программы вставлять ваш код?
С уважением, Михаил

Добрый день!
Спс

по ссылке неясно куда вводить этот айди.

HWID воодите при генерации серийника в это окно:
http://vmpsoft.com/usermanual/licenses2.jpg

И главный вопрос: “Этот айди берется с какого железа?”. Получается выбрать железо для привязки я не
могу?

Главный вопрос - зачем вам нужно выбирать железо?

Тут тоже неясно. В какую часть моей программы вставлять ваш код?

VMProtectSetSerialNumber вызываете там где серийный номер попадает в вашу программу.

Что я не так делаю?

Либо вы не вызываете VMProtectSetSerialNumber либо не анализируете результат этой функции и в итоге программа начинает выполнять привязанный к серийнику код без наличия самого серийника.

ВСЁ разобрался. была проблема с запусками от админа!


Спасибо.

Если вопрос был про то где хранить сам серийный номер, то без разницы.

Нене, я просто не хочу хранить его отдельным файлом рядом с защищенным приложением, такое возможно?

А что вы храните в serial.txt? Не серийный номер? :slight_smile:)

Да в нем хранится серийник.

Получается продам я первому клиенту прогу

НО беру я вм на компе №2 и генерю под его айди ключ, подставляю его в файл сериал, и программа, что привязана к компу №1, оказывается успешно отрабатывает на компе №2.

По-моему вы уже сами запутались :slight_smile:)

Получается продам я первому клиенту прогу и привяжу к его компьютеру. Он передаст второму, который скачает вмпротект и сгенерит ключ для своего hwid, в итоге программа у второго запустится на ура…

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

Ок, попробуем :sunglasses:

Получается на каждого нового клиента нужно создавать новый проект вмпротекта?

Необязательно.

Админ, как сделать. чтобы ключ лежал не в текст файле рядом, а например в реестре?

К сожалению мы не консультируем по таким вопросам. Задавайте вопросы на тематических форумах по программированию.

Да, спасибо за оперативную поддержку.