VMProtect/help/ru/manager/usage/step19_hwid.htm
VNGhostMans 5ec92ee05e first commit
Version 3.x.x
2023-05-14 20:21:09 +07:00

124 lines
5.4 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="Stylesheet" type="text/css" href=
"../../default.css" />
<meta http-equiv="Content-Type" content=
"text/html; charset=utf-8" />
<title>Шаг 1.9: Привязка к оборудованию</title>
<style type="text/css">
/*<![CDATA[*/
div.c2 {text-align: center}
p.c1 {color:red;}
/*]]>*/
</style>
</head>
<body>
<h1>Шаг 1.9: Привязка к оборудованию</h1><strong>Получение
идентификатора оборудования</strong>
<p>Прежде чем привязываться к оборудованию, необходимо получить
идентификатор оборудования. Идентификатор помещается в серийный
номер и при передаче этого номера системе лицензирования
происходит проверка соответствия идентификаторов. Поэтому для
начала получим идентификатор нашего оборудования. Сократим
<strong>main()</strong> до самого короткого варианта:</p>
<pre class="code">int main(int argc, char **argv)
{
int nSize = VMProtectGetCurrentHWID(NULL, 0);
char *buf = new char[nSize];
VMProtectGetCurrentHWID(buf, nSize);
printf("HWID: %s\n", buf);
delete [] buf;
return 0;
}
</pre>
<p>Запустив эту программу, мы получим тестовый идентификатор
оборудования, используемый по умолчанию:</p>
<pre class="code">HWID: myhwid
</pre>
<p>Чтобы изменить идентификатор, используемый по умолчанию,
добавьте в ini-файл строку:</p>
<pre class="code">MyHWID=test
</pre>
<p>Запустив программу после этого, мы увидим, что система
лицензирования теперь считает "test" идентификатором
оборудования:</p>
<pre class="code">HWID: test
</pre>
<p class="c1"><strong>Внимание!</strong> реальный идентификатор
оборудования программа будет выдавать только после ее обработки в
VMProtect.</p><br />
<strong>Серийный номер с привязкой к оборудованию</strong>
<p>Чтобы наш тестовый серийный номер был привязан к оборудованию,
добавим в ini-файл еще одну строчку, на этот раз с
идентификатором, "записанным" в номер:</p>
<pre class="code">KeyHWID=test
</pre>
<p>А функцию <strong>main()</strong> слегка усложним, она снова
будет подавать серийный номер и анализировать получаемый
результат:</p>
<pre>
int main(int argc, char **argv)
{
int nSize = VMProtectGetCurrentHWID(NULL, 0);
char *buf = new char[nSize];
VMProtectGetCurrentHWID(buf, nSize);
printf("HWID: %s\n", buf);
delete [] buf;
char *serial = "Xserialnumber";
int res = VMProtectSetSerialNumber(serial);
print_state(res);
return 0;
}
</pre>
<p>Запустив код, получим следующий результат:</p>
<pre class="code">HWID: test
state = 0
</pre>
<p>Система лицензирования сравнила текущий идентификатор
оборудования и тот, который был запиан в серийном номере.
Идентификаторы совпали и функция
<strong>VMProtectSetSerialNumber()</strong> вернула 0 - серийный
номер подходит.</p>
<p>Попробуем теперь "запустить" нашу программу на другом
оборудовании. Для этого поменяем значение "test" параметра MyHWID
в ini-файле на "new test". И снова запустим программу:</p>
<pre class="code">HWID: new test
state = SERIAL_STATE_FLAG_BAD_HWID
</pre>
<p>На этот раз система лицензирования вернула флаг
SERIAL_STATE_FLAG_BAD_HWID, означающий несовпадение реально
идентификатора оборудования с тем, что хранится в серийном
номере. Текущий идентификатор оборудования, выведенный на экран -
"new test", а в серийном номере хранится "test". Поменяв в
ini-файле значение параметра KeyHWID на "new test" можно добиться
работы серийного номера и на этом "оборудовании".</p><br />
<a href="step1A_userdata.htm">Следующий шаг</a>
<br />
<br />
<br />
<br />
<hr noshade="noshade" size="1" />
<div align="center">
© 2006-2015 Copyright VMProtect Software
</div>
</body>
</html>