mirror of
				https://github.com/Obfuscator-Collections/VMProtect.git
				synced 2025-10-30 03:41:31 +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>
 |