diff options
Diffstat (limited to 'help/ru/project_options_external_addresses.htm')
-rw-r--r-- | help/ru/project_options_external_addresses.htm | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/help/ru/project_options_external_addresses.htm b/help/ru/project_options_external_addresses.htm new file mode 100644 index 0000000..cc8dff5 --- /dev/null +++ b/help/ru/project_options_external_addresses.htm @@ -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> |