# Что такое MAP файл? - Зачем он нужен для защиты

> Разъяснение роли MAP файла (файла символов) для качественной виртуализации. Почему без него защита менее эффективна.

Canonical HTML: <https://www.niceprotect.com/help/ru/what_is_it_a_map_file.htm>

## Что такое MAP файл

**MAP файлом** является файл, имеющий то же имя что и запускаемый **EXE** файл программы или **DLL/OCX** библиотеки, но имеющий расширение **MAP**. Создается этот файл линковщиком языка программирования на этапе формирования бинарного файла программы и содержит имена всех процедур и функций программы, а главное их адреса в исполняемом файле. Используя эту информацию, защита может предоставить выбор этих функций и процедур для виртуализации.


Главным плюсом **MAP файла** в отличии от эвристического поиска функций внутри файла является то, что при следующих компиляциях, когда адреса поменяются - защита всегда будет знать какие функции Вы выбрали для виртуализации, так как их имена обычно не меняются.


К сожалению, нет единого способа сгенерировать MAP файл и в разных средах программирования это делается по разному. Более того - сам формат MAP файла кардинально отличается для разных компиляторов. На данный момент **DotFix NiceProtect** поддерживает следующие форматы и их производные: **Embarcadero Delphi/C++ Builder**, **GCC** (c++ версия и компилятор **FreePascal Lazarus**), **MS Visual Studio** и старый вариант для **Visual Basic 5.0/6.0**. Для всех этих форматов поддерживается базовая расшифровка (деманглинг) имен, а также фильтрация потенциально неиспользуемых для защиты данных (адресов констант, классов, сегментов и так далее). Поддерживаются как 32х так и 64х битные версии.
