77 lines
3.0 KiB
HTML
77 lines
3.0 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.10: Пользовательские данные</title>
|
||
</head>
|
||
|
||
<body>
|
||
<h1>Шаг 1.10: Пользовательские данные</h1>
|
||
|
||
<p>Серийный номер может содержать до 255 байт произвольных
|
||
данных, которые система лицензирования без изменений передает
|
||
вызывающей программе. Это может быть какая-то дополнительная
|
||
информация о продаже, данные, без которых не будет работать
|
||
полная версия, или еще что-нибудь. Изменим функцию
|
||
<strong>main()</strong>, чтобы она считывала данные из серийного
|
||
номера и показывала их на экране:</p>
|
||
<pre class="code">int main(int argc, char **argv)
|
||
{
|
||
char *serial = "Xserialnumber";
|
||
int res = VMProtectSetSerialNumber(serial);
|
||
print_state(res);
|
||
if (res) return 0;
|
||
|
||
VMProtectSerialNumberData sd = {0};
|
||
VMProtectGetSerialNumberData(&sd, sizeof(sd));
|
||
printf("Serial number has %d byte(s) of data\n", sd.nUserDataLength);
|
||
for (int i = 0; i < sd.nUserDataLength; i++)
|
||
printf("%02X ", sd.bUserData[i]);
|
||
printf("\n");
|
||
return 0;
|
||
}
|
||
</pre>
|
||
|
||
<p>Ini-файл при этом сократим до такого вида:</p>
|
||
<pre class="code">[TestLicense]
|
||
AcceptedSerialNumber=Xserialnumber
|
||
</pre>
|
||
|
||
<p>Теперь запустим программу и убедимся, что наш серийный номер
|
||
подходит, но не содержит никаких данных:</p>
|
||
<pre class="code">state = 0
|
||
Serial number has 0 byte(s) of data
|
||
</pre>
|
||
|
||
<p>Чтобы добавить пользовательские данные в серийный номер,
|
||
необходимо создать в ini-файле переменную UserData и присвоить ей
|
||
строчку из HEX-символов. Символы должны идти парами, т.е. длина
|
||
строки должна быть кратна 2. Строка может быть, например,
|
||
такой:</p>
|
||
<pre class="code">UserData=010203A0B0C0D0E0
|
||
</pre>
|
||
|
||
<p>В этом случае при запуске программы мы получим следующий
|
||
результат:</p>
|
||
<pre class="code">state = 0
|
||
Serial number has 8 byte(s) of data
|
||
01 02 03 A0 B0 C0 D0 E0
|
||
</pre><br />
|
||
<br />
|
||
<br />
|
||
<br />
|
||
<br />
|
||
<hr noshade="noshade" size="1" />
|
||
|
||
<div align="center">
|
||
© 2006-2015 Copyright VMProtect Software
|
||
</div>
|
||
</body>
|
||
</html>
|