mirror of
https://github.com/Obfuscator-Collections/VMProtect.git
synced 2025-08-03 00:40:10 +03:00
first commit
Version 3.x.x
This commit is contained in:
134
help/ru/use_markers.htm
Normal file
134
help/ru/use_markers.htm
Normal file
@@ -0,0 +1,134 @@
|
||||
<!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>Использование маркеров</title>
|
||||
<style type="text/css">
|
||||
/*<![CDATA[*/
|
||||
div.c2 {text-align: center}
|
||||
/*]]>*/
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>Использование маркеров</h1>
|
||||
|
||||
<p>Для защиты отдельных участков кода, а также для защиты
|
||||
строковых констант в текст программы вставляют маркеры, которые
|
||||
представляют собой вызов импортируемых процедур, находящихся во
|
||||
внешней DLL-библиотеке (для 32-разрядных приложений используется
|
||||
VMProtectSDK32.dll, а для 64-разрядных - VMProtectSDK64.dll; для
|
||||
защиты драйверов используются VMProtectDDK32.sys и
|
||||
VMProtectDDK64.sys соответственно) - далее по тексту
|
||||
VMProtectSDK. Процедуры и функции, находящиеся в VMProtectSDK, не
|
||||
выполняют каких-либо действий и выступают лишь в роли меток, по
|
||||
которым VMProtect определяет границы защищаемого кода. Начало и
|
||||
конец защищаемого блока, соответственно, маркируется следующим
|
||||
образом:</p>
|
||||
|
||||
<ul>
|
||||
<li><strong>Delphi</strong>
|
||||
<pre class="code">uses VMProtectSDK;
|
||||
|
||||
VMProtectBegin(НАЗВАНИЕ_МАРКЕРА);
|
||||
...
|
||||
VMProtectEnd;
|
||||
</pre>
|
||||
</li>
|
||||
|
||||
<li><strong>C/C++</strong>
|
||||
<pre class="code">#include "VMProtectSDK.h"
|
||||
|
||||
VMProtectBegin(НАЗВАНИЕ_МАРКЕРА);
|
||||
...
|
||||
VMProtectEnd();
|
||||
</pre>
|
||||
</li>
|
||||
|
||||
<li><strong>MASM</strong>
|
||||
<pre class="code">include VMProtectSDK.inc
|
||||
|
||||
invoke VMProtectBegin,SADD(НАЗВАНИЕ_МАРКЕРА)
|
||||
...
|
||||
invoke VMProtectEnd
|
||||
</pre>
|
||||
</li>
|
||||
|
||||
<li><strong>Visual Basic</strong>
|
||||
<pre class="code">VMProtectBegin (StrPtr(НАЗВАНИЕ_МАРКЕРА))
|
||||
...
|
||||
VMProtectEnd
|
||||
</pre>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<p>Также вместо VMProtectBegin можно использовать маркеры с
|
||||
предустановленными <a href=
|
||||
"project_functions.htm#CompilationTypes">типами
|
||||
компиляции</a>:</p>
|
||||
|
||||
<ul>
|
||||
<li>VMProtectBeginVirtualization - маркер будет использовать
|
||||
тип компиляции "Виртуализация".</li>
|
||||
|
||||
<li>VMProtectBeginMutation - маркер будет использовать тип
|
||||
компиляции "Мутация".</li>
|
||||
|
||||
<li>VMProtectBeginUltra - маркер будет использовать тип
|
||||
компиляции "Ультра".</li>
|
||||
</ul>
|
||||
|
||||
<p>Обработка маркеров производится следующим образом: при анализе
|
||||
кода защищаемого приложения VMProtect находит все вызовы процедур
|
||||
и функций VMProtectSDK. Границы защищаемых блоков определяются по
|
||||
парам маркеров
|
||||
VMProtectBegin/VMProtectBeginVirtualization/VMProtectBeginMutation/VMProtectBeginUltra
|
||||
и VMProtectEnd. В процессе обработки проекта с помощью VMProtect
|
||||
из кода защищаемой программы удаляются как сами маркеры, так и
|
||||
упоминание о библиотеках VMProtectSDK, поэтому нет необходимости
|
||||
включать данные библиотеки в дистрибутив программы. Маркеры
|
||||
удаляются независимо от того, были они включены в компиляцию или
|
||||
нет. При использовании именованных маркеров их имена также
|
||||
удаляются.</p>
|
||||
|
||||
<p>Если задано название маркера, ему будет присвоено имя вида
|
||||
"VMProtectMarker НАЗВАНИЕ_МАРКЕРА". Если название маркера не
|
||||
задано, ему будет присвоено уникальное имя вида
|
||||
"VMProtectMarker"+номер маркера по порядку. Однако использование
|
||||
неименованных маркеров имеет один серьезный недостаток,
|
||||
заключающийся в том, что при вставке в исходный код программы
|
||||
нового маркера нумерация неименованных маркеров изменится,
|
||||
поэтому при защите программ всегда целесообразно использовать
|
||||
именованные маркеры.</p>
|
||||
|
||||
<p>Важным моментом, который необходимо учитывать при работе с
|
||||
маркерами, является то, что нельзя допускать переходы из
|
||||
незащищенных участков внутрь маркера, что может произойти,
|
||||
например, при пометке маркером только части цикла. В случае если
|
||||
приложение после защиты с использованием маркеров стало
|
||||
неработоспособным, адреса переходов из незащищенных участков
|
||||
можно определить с помощью включения опции "Режим отладки". В
|
||||
данном режиме, при работе защищенного приложения из-под
|
||||
отладчика, на месте обнаружения переходов из незащищенного
|
||||
участка кода в защищенный отладчик будет прерывать выполнение
|
||||
программы. После обнаружения всех подобных переходов необходимо
|
||||
изменить местоположение маркеров в коде программы либо, если это
|
||||
невозможно, пометить эти адреса как внешние, используя
|
||||
графическую версию VMProtect.</p>
|
||||
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
<hr noshade="noshade" size="1" />
|
||||
|
||||
<div align="center">
|
||||
© 2006-2015 Copyright VMProtect Software
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
Reference in New Issue
Block a user