mirror of
https://github.com/Obfuscator-Collections/VMProtect.git
synced 2025-08-02 13:50:11 +03:00
first commit
Version 3.x.x
This commit is contained in:
80
help/ru/project_options_external_addresses.htm
Normal file
80
help/ru/project_options_external_addresses.htm
Normal file
@@ -0,0 +1,80 @@
|
||||
<!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>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>Внешние адреса</h1>
|
||||
|
||||
При защите кода место, освободившееся в
|
||||
процессе компиляции, VMProtect использует для своих нужд, в
|
||||
том числе для хранения различных данных
|
||||
(завиртуализированного, промутированного кода, исполнителей
|
||||
ВМ и т.п.). В связи с этим могут возникать различные
|
||||
ситуации, когда "внутрь" защищенного кода может происходить
|
||||
переход из других частей программы (адреса, на которые может
|
||||
происходить переход, называются внешними). Подобные ситуации
|
||||
могут возникать при использовании маркеров кода, когда
|
||||
происходит переход из незащищенного участка программы внутрь
|
||||
маркера:
|
||||
<pre class="code">VMProtectBegin(nil);
|
||||
for I:=0 to 10 do
|
||||
begin
|
||||
Inc(J);
|
||||
VMProtectEnd;
|
||||
end;
|
||||
</pre>
|
||||
|
||||
<p>В виде ассемблерных команд данный цикл выглядит следующим
|
||||
образом:</p>
|
||||
<pre class="code">----------------- начало маркера ----------------
|
||||
0044D12C mov eax, 0000000B
|
||||
0044D131 inc ebx
|
||||
----------------- конец маркера -----------------
|
||||
0044D132 dec eax
|
||||
0044D133 jnz 0044D131
|
||||
</pre>
|
||||
|
||||
<p>Очевидно, что после виртуализации команд с адресами
|
||||
0044D12C и 0044D131 при выполнении незавиртуализированной
|
||||
команды условного перехода по адресу 0044D133 возникнет
|
||||
ошибка (т.к. по адресу 0044D131 вместо оригинального кода
|
||||
будут записаны различные данные или просто мусор). Для
|
||||
рассматриваемого примера адрес 0044D131 будет являться
|
||||
внешним.</p>
|
||||
|
||||
<p>При включении опции "Режим отладки" на место оригинального
|
||||
кода будет записана команда INT 03, являющаяся обычной точкой
|
||||
останова и служебной командой при работе под отладчиком. При
|
||||
запуске защищенной программы из-под отладчика в случае
|
||||
передачи управления по адресу 0044D131 произойдет вызов точки
|
||||
останова, а при открытии окна отладчика можно будет увидеть,
|
||||
по какому адресу произошел данный переход.</p>
|
||||
|
||||
<p>При обнаружении подобных переходов рекомендуется проверить
|
||||
правильность расстановки маркеров кода. Если защищаемый код
|
||||
не помечен маркерами или невозможно изменить логику
|
||||
приложения так, чтобы внутрь защищаемого кода не было
|
||||
перехода из других частей программы, то, используя
|
||||
графическую версию приложения, данные адреса <a href=
|
||||
"project_functions.htm#ExtAddress">следует пометить как
|
||||
внешние</a>.</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