mirror of
https://github.com/Obfuscator-Collections/VMProtect.git
synced 2024-12-27 08:49:27 +03:00
124 lines
5.4 KiB
HTML
124 lines
5.4 KiB
HTML
|
<!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>
|