# История изменений

### Версия 3.5

[!] .NET: Исправлено множество ошибок
[!] ELF: Исправлена ошибка, возникающая в VMProtectGetCurrentHWID при получении информацуии о HDD
[+] .NET: Добавлена поддержка .NET Core (3.0+) и .NET Standard (2.1+)
[+] .NET: Добавлена защита импорта
[+] .NET: Добавлена защита ресурсов
[+] .NET: Добавлена поддержка mixed assemblies
[*] Mach-O: Улучшена поддержка секций с типом S_THREAD_LOCAL_VARIABLES и S_THREAD_LOCAL_REGULAR
[*] Mach-O: Улучшена поддержка Objective-C
[*] ELF: Улучшена поддержка релокейшенов с типом R_386_PC32
[*] PE: Улучшена антиотладка

### Версия 3.4

[!] Исправлена ошибка возникающая при виртуализации команд BT [m16], POP [m64]
[+] Добавлена поддержка .NET приложений
[+] Добавлено дизассемблирование команды PMULLD
[+] PE: Добавлена поддержка COFF символом
[*] ELF: Улучшено дизассемблирование of SWITCH
[*] ELF: Улучшена поддержка настраиваемых элементов с типом R_386_PC32
[*] PE: Улучшена обработка исключений
[*] PE: Улучшена поддержка Windows Server 2016 Datacenter

### Версия 3.3

[+] PE: Added support of "Control Flow Guard"
[+] PE: Added support of PDB files for loading symbols
[+] Mach-O: Added support of OS X 10.13 and later
[+] ELF: Added support of statically linked libstdc++.so
[+] ELF: Added support of CentOS 5 and CentOS 6
[+] ELF: Added support of TLS segments
[+] ELF: Added support of HTTPS for VMProtectActivateLicense
[*] PE: Improved exception handling for x64 applications
[*] PE: Improved detection of virtualization tools under the Hyper-V role
[*] PE: Improved demagling of MSVC symbols
[*] Mach-O: Improved exception handling
[*] Mach-O: Improved support of Objective-C
[*] ELF: Fixed a bug that occurred when the "Pack the Output File" option was used

### Версия 3.2

[!] PE: Исправлена ошибка возникающая при вызове VMProtectIsValidImageCRC внутри защищенного драйвера
[!] Исправлена ошибка возникающая при виртуализации команд XOR, имеющей настраиваемые элементы
[*] PE: Добавлена упаковка секций, содержащих TLS директорию
[*] PE: Улучшено обнаружение отладчиков
[*] PE: Taggant System больше не поддерживается
[*] Значительно ускорена распаковка при использовании опции "Упаковать файл"
[+] Добавлена поддержка ELF формата
[+] Добавлено дизассемблирование AVX команд

### Версия 3.1

[!] Исправлена ошибка возникающая при дизассемлировании команды MOVUPS с REX префиксом 0x41
[!] Исправлена ошибка возникающая при виртуализации команд XLAT, FSIN и POPAD
[*] Улучшена поддержка исключений
[*] Улучшена архитектура ВМ
[*] Улучшена проверка целостности файла на диске при использовании опции "Защита памяти"
[*] Улучшена виртуализация команд FSTENV, FSTCW, FSAVE и FSTSW
[*] PE: VMProtectActivateLicense теперь работает через WinHTTP и использует настройки прокси из IE
[*] PE: Улучшена работа VMProtectGetCurrentHWID для драйверов
[*] PE: Улучшена поддержка Delphi 6 при использовании опции "Защита импорта"
[*] PE: Улучшено обнаружение отладчиков
[+] Добавлена виртуализация команд ADD, AND, SUB, XOR, OR с префиксом LOCK
[+] Добавлена виртуализация команды CQO
[+] Добавлено дизассемблирование команд PINSRB, PINSRD, PINSRQ, PMINSD, PMINUW, PMINUD, PMAXSB, PMAXSD, PMAXUW и PMAXUD
[+] Mach-O: Добавлена поддержка секции "__unwind_info"
[+] Mach-O: Добавлена поддержка LC_LOAD_WEAK_DYLIB
[+] Mach-O: Добавлена поддержка Delphi Berlin
[+] PE: Для драйверов добавлена поддержка Windows 10
[+] PE: При использовании опции "Удалять отладочную информацию" теперь затирается "Rich Header"
[+] Ultimate: В секции "Файлы" теперь можно создавать папки и использовать символы ".." для перехода в вышестоящий каталог
[+] GUI: При отображении защищаемых ANSI строк теперь используется кодовая страница из настроек Windows
[+] LUA: Добавлена возможность вызова функций из DLL

### Версия 3.0

[*] PE: Добавлена поддержка исключений в x64 коде
[*] Mach-O: Добавлена поддержка функций SDK
[*] Ultimate: Добавлена поддержка функции лицензирования для драйверов и приложений на VB6
[*] Ultimate: Улучшена функциональность DLL Box - теперь в защищаемое приложение можно включать любые файлы, в том числе и ActiveX серверы с опцией их автоматической регистрации в виртуальном реестре
[*] Улучшено обнаружение Virtual Box
[*] Скриптовый движок заменен на LUA
[*] Новая архитектура ВМ
[+] В SDK добавлена новая функция VMProtectIsProtected

### Версия 2.13

[!] PE: Добавлена поддержка Delay Import
[!] PE: Улучшена совместимость с VS2012
[!] PE: Улучшена совместимость с Embarcadero RAD Studio XE3
[!] PE: Улучшена совместимость с MinGW
[!] Ultimate: Улучшена совместимость DLL Box с Windows 8
[+] WebLM: Добавлена поддержка mbstring.func_overload = 2
[+] WebLM: В коде активации добавлено поле "Дата окончания" (VMProtectActivateLicense теперь может возвращать ACTIVATION_EXPIRED если текущая дата больше даты окончания)
[+] WebLM: В моде для полей "Дата окончания" и "Максимальная дата сборки" добавлено значение "дней с даты покупки"

### Версия 2.12

[!] PE: Исправлены ошибки, возникающие в x64 приложениях
[!] PE: Исправлена ошибка, возникающая при наличии у приложения флага IMAGE_DLLCHARACTERISTICS_NX_COMPAT
[+] PE: Добавлена поддержка Windows 8
[+] WebLM: Добавлен русский и китайский язык

### Версия 2.11

[!] Исправлена ошибка, возникающая при использовании упаковки в х64 приложениях
[!] PE: Исправлена ошибка, возникающая при использовании опции "Защита импорта"
[!] PE: Исправлена ошибка, возникающая при обработке TLS секции, имеющей релоки
[+] Ultimate: Добавлена активация/деактивация
[+] Mach-O: Добавлена упаковка
[*] PE: Поддержка DriverVerifier
[*] PE: Улучшена поддержка SEH для MSVC
[*] Mach-O: Улучшена поддержка IndirectSymbols

### Версия 2.10

[!] Исправлена ошибка, возникающая при использовании опции "Защита ресурсов"
[!] Исправлена ошибка, возникающая при использовании опции "Защита импорта"
[!] Исправлена ошибка, возникающая при защите x64 драйверов, не имеющих релоков
[+] Добавлена поддержка исполняемых файлов от Mac OS X (Mach-O формат)
[+] Добавлена поддержка команды HLT
[+] В SDK добавлено новое API - VMProtectFreeString
[*] Улучшено опеределение имен маркеров и строк, помеченных с помощью VMProtectDecryptStringA/VMProtectDecryptStringW
[*] В имени выходного файла и параметрах лицензирования теперь можно использовать относительные пути
[*] Улучшена поддержка SEH для Delphi
[*] SenseLock Edition: Добавлена опция "Защита ресурсов"
[*] SenseLock Edition: В GUI версии добавлен менеджер лицензий
[*] SenseLock Edition: В GUI версии добавлено программирование ключей
[*] Лицензии в менеджере лицензий теперь можно копировать и вставлять из буфера обмена

### Версия 2.09

[!] Исправлена ошибка, возникающая при обнаружении отладчика под Windows 2000
[!] Исправлена ошибка, возникающая при дизассемблировании команд PMULHUW и LDMXCSR
[!] Исправлена ошибка, возникающая при использовании защиты памяти (не проверялась целостность файла на диске)
[!] Ultimate: Исправлена ошибка, возникающая при запуске защищенных файлов под Windows 2000 (требовалось наличие EncodePointer/DecodePointer из kernel32.dll)
[*] Улучшена виртуализация обработчиков исключений для Visual C
[*] Защита ресурсов теперь доступна в Lite и Professional версиях
[*] При использовании защиты ресурсов добавлена поддержка EnumResourceTypes, EnumResourceNames и EnumResourceLanguages (доступно только при вызове из главного модуля)
[+] Добавлена поддержка исключений для Borland C Builder
[+] Ultimate: Ускорена работа VMProtectGetSerialNumberState и VMProtectGetSerialNumberData
[+] В скрипт для TLicenseManager добавлен метод Save
[-] Убрана опция "Перемещать ресурсы в конец файла" - теперь секция ресурсов всегда размещается последней

### Версия 2.08

[!] Исправлена ошибка, возникающая при ассемблировании команды TEST [XXXX], REG
[!] Исправлена ошибка, возникающая при диассемблировании х64 команд с префиксом 0x67
[*] Улучшена поддержка файлов, имеющих небольшие занчения для SectionAlignment
[*] Улучшено опеределение имен маркеров и строк для Intel Compiler 12 и Lazarus
[*] Улучшена защита импорта
[*] Ultimate: Теперь можно загружать файлы проекта с параметрами лицензирования
[+] Ultimate: Добавлена защита ресурсов
[+] Ultimate: В скрипт добавлены классы TLicense и TLicenseManager

### Версия 2.07

[!] Исправлена ошибка, возникающая при работе с менеджером лицензий если в настройках Windows установлен язык отличный от английского
[+] В режиме эксперта в опциях теперь можно изменять стандартные сообщения "Обнаружен отладчик", "Обнаружены инструменты виртуализации", "Файл поврежден" и "Необходим серийный номер"
[+] В скрипт для TVMProtector добавлено свойство Messages
[*] Улучшена совместимость защиты памяти с некоторыми антивирусами

### Версия 2.06

[!] Исправлена ошибка с определением имен маркеров для MinGW
[!] Исправлена ошибка, возникающая при защите импорта в х64 файлах
[!] Исправлена ошибка, возникающая при виртуализации FILD WORD PTR [XXXX]
[!] Исправлена ошибка, возникающая при дизассемблировании PSRLW
[!] Исправлена ошибка, возникающая в DLL Box при активном антивирусе
[*] Файл проекта теперь сохраняется в XML формате
[*] Скрипт теперь хранится в файле проекта
[*] Ultimate: Менеджер лицензий теперь находится в GUI версии
[*] Ultimate: Значительно ускорено выполнение кода, привязанного к серийному номеру
[+] Добавлена поддержка МАР файлов для MinGW
[+] Добавлена поддержка JCLDEBUG
[+] В скрипт для TPEDirectory добавлен метод Clear
[+] В скрипт для TVMProcedure добавлены свойства InputSize и OutputSize
[+] Ultimate: В SDK добавлены новые API - VMProtectBeginVirtualizationLockByKey и VMProtectBeginUltraLockByKey

### Версия 2.05

[!] Исправлены ошибки с определением строк для программ на MinGW
[!] Исправлены ошибка "Out of system resources", возникающая при добавлении большого количества процедур в проект
[!] Исправлены ошибка, возникающая при выводе строк в консольной версии
[*] Дата MAP файла теперь берется из содержимого файла
[+] Ultimate: Добавлены примеры по работе с системой лицензирования (на MSVC и Delphi)
[+] Ultimate: Добавлены исходные коды генератора серийных номеров на MSVC
[+] Ultimate: Добавлен DLL Box (доступен только для EXE файлов)
[+] Ultimate: В скрипт добавлен класс TInternalDLLs
[+] Ultimate: В скрипт для класса TVMProtector добавлено свойство InternalDlls
[+] В скрипт для класса TMapRecord добавлено свойство SegmentName
[+] В скрипт для класса TIntelRecord добавлено свойство Operands
[+] Добавлен чешский язык

### Версия 2.04

[!] Исправлена ошибка, возникающая при обфускации FDIVR [ESP+XXXX]
[!] Исправлена ошибка, возникающая при обфускации SWITCH в x64 приложениях
[*] При использовании опции "Защита памяти" теперь проверяется целостность файла на диске
[*] Ultimate: Улучшена интеграция модуля лицензирования с защищаемой программой
[+] Добавлена поддержка файлов, имеющих оверлей
[+] Ultimate: Добавлен пример генератора серийных номеров на C#
[+] Ultimate: В менеджере лицензий добавлен экспорт параметров продукта для генератора на C#
[+] Ultimate: В консольную версию добавлен параметр "-lf", с помощью которого можно указать имя файла с параметрами лицензирования
[+] Добавлен французский файл помощи

### Версия 2.03

[!] Исправлена ошибка, возникающая при использовании защиты импорта в SYS файлах (под Windows 7 не определялся базовый адрес hal.dll)
[!] Исправлена ошибка, возникающая при обфускации команд с использованием CRx регистров в SYS файлах
[!] Исправлены мелкие ошибки
[*] Улучшения в системе лицензирования Ultimate версии
[+] Добавлен французский язык

### Версия 2.02

[!] В SenseLock Edition исправлена ошибка, возникающая при одновременной работе нескольких программ, которые используют разные лицензии в ключе (пользователям SenseLock Edition необходимо обновить прошивку в мастер ключе)
[!] Исправлена ошибка при дизассемблировани EntryPoint у программ на Delphi
[!] Исправлены мелкие ошибки
[*] Важные улучшения в системе лицензирования Ultimate версии
[*] SenseLock Edition теперь использует систему лицензирования Ultimate версии (пользователям SenseLock Edition необходимо обновить лицензию в мастер ключе)
[*] Улучшено определение строк, помеченных с помощью VMProtectDecryptStringA/VMProtectDecryptStringW
[+] В GUI добавлена поддержка Unicode
[+] Добавлен традиционный китайский язык

### Версия 2.01

[!] Исправлены мелкие ошибки в инсталляторе, менеджере лицензий и SDK
[*] Для регистрации VMProtect сейчас используется собственная система лицензирования
[+] Добавлен упрощенный китайский язык

### Версия 2.0

[!] Исправлены ошибки при дизассемблировании и виртуализации команд CALL FWORD PTR [XXXX] и JMP FWORD PTR [XXXX]
[!] В версии SenseLock Edition исправлена ошибка, возникающая при запрое серийного номер ключа после смены стандартного PIN пользователя
[!] Исправлена ошибка, возникающая при виртуализации SWITCH в х64 приложениях
[!] Исправлена ошибка, возникающая при дизассемблировании команд ROL, ROR, RCL, RCR, SHL, SHR, SAL и SAR, имеющих REX преффикс в х64 приложениях
[!] Исправлена ошибка, возникающая при виртуализации команды CMOVxx
[!] Исправлены мелкие ошибки
[*] Обновлен файл помощи на русском
[*] Обновлен файл помощи на английском
[+] Добавлена система лицензирования (доступна только в Ultimate версии)
[+] В SDK добавлены новые API - VMProtectDecryptStringA и VMProtectDecryptStringW
[+] В скрипт для класса TVMProcedure добавлено свойство CompilationOptions
[+] В скрипт для класса TVMProcedure добавлены свойства SELicense и SEVersion (доступны только в SenseLock Edition)
[+] В скрипт для класса TVMProtector добавлены свойства VMSectionName и VMExecutorCount
[+] В скрипт для класса TVMProtector добавлены свойства SEMasterPassword, SEUserPIN, SEKeyID, SELicense и SEVersion (доступны только в SenseLock Edition)
[-] Убрана опция "Динамическое создание онлайн команд"

### Версия 1.81

[!] Исправлена ошибка, возникающая при исполнении промутированного кода на процессорах Pentium 4
[!] Исправлена ошибка, возникающая при исполнении завиртуализированного кода на некоторых процессорах Athlon
[!] Исправлены ошибки, возникающие при дизассемблировании и виртуализации структур, описывающих обработчики исключений с фильтром на класс исключения (для программ на Delphi и Borland C++ Builder)
[!] Исправленa ошибкa, возникающая при использовании нескольких ВМ в 64-битных файлах
[!] Исправлены мелкие ошибки
[*] Улучшено определение имен маркеров (для программ на Visual C)
[*] Значительно снижено потребление памяти в процессе компиляции
[*] Ресурс "HTML" теперь не упаковывается
[*] Обновлен файл помощи на русском
[+] В режиме "Мастер" добавлен поиск процедур по маске
[+] Добавлен новый режим упаковки с более высокой степенью сжатия
[+] Добавлена поддержка файлов, имеющих TLS-калбеки
[+] В SDK добавлено новое API - VMProtectIsValidImageCRC

### Версия 1.8

[!] Исправлены ошибки, возникающие при защите импорта в SYS-файлах
[!] Исправлены ошибки, возникающие при защите памяти в DLL/SYS-файлах
[!] Исправлены ошибки, возникающие при использовании нескольких ВМ в DLL/SYS-файлах
[!] Исправлена ошибка, возникающая при мутации кода, имеющего обработчики исключений
[!] Исправлена ошибка, возникающая при одновременном использовании защиты памяти и водяных знаков
[!] Исправлены мелкие ошибки
[*] Улучшено определение ссылок на строки, помеченных маркерами (теперь не нужно помечать маркерами все ссылки на защищаемую строку)
[*] Улучшена защита импорта
[*] Улучшено определение отладчика
[*] Обновлен файл помощи на русском
[+] В GUI-версии теперь можно сохранять файлы проекта под разными именами
[+] Теперь можно открывать файлы проекта
[+] Добавлено обнаружение Sandboxie
[+] Добавлена поддержка файлов, скомпилированных с ключем /SAFESEH
[+] Добавлена поддержка CodeGear 2009
[+] Теперь можно задавать имена маркерам (при использовании VMProtectBegin/VMProtectBeginMutation/VMProtectBeginVirtualization/VMProtectBeginUltra из VMProtectSDKxx.dll/VMProtectDDKxx.sys)
[+] В SDK добавлены новые API (VMProtectIsDebuggerPresent и VMProtectIsVirtualMachinePresent)
[+] Для версии SenseLock Edition добавлена утилита "Система удаленного обновления и лицензирования"
[+] Для версии SenseLock Edition добавлена привязка к идентификатору ключа

### Версия 1.7

[!] Секции, имеющие флаги SHAREABLE+WRITABLE, теперь не упаковываются
[!] Исправлены мелкие ошибки
[*] Улучшена защита импорта для SYS-файлов
[*] Улучшена упаковка SYS-файлов (упакованным секциям больше не устанавливается флаг WRITABLE)
[*] Улучшено определение отладчика
[+] Добавлена опция "Защита памяти" (данная опция защищает память от изменений во время работы приложения)
[+] Добавлена опция "Определение инструментов виртуализации (VMware/Virtual PC)"
[+] В скрипт для класса TPEFile добавлено свойство EntryPoint

### Версия 1.65

[!] Исправлены мелкие ошибки
[*] Улучшена защита импорта
[*] Улучшено определение отладчика
[+] Добавлено определение непарных маркеров (непарные маркеры доступны в общем списке объектов)
[+] Добавлены маркеры с предустановленным типом компиляции: VMProtectBeginVirtualization, VMProtectBeginMutation и VMProtectBeginUltra
[+] Добавлен традиционный китайский язык

### Версия 1.64

[!] Исправлена ошибка, возникающая при работе упакованного файла, имеющего ресурсы "TYPELIB", "REGISTRY" и "MUI"
[!] Исправлена ошибка R6002, возникающая при работе упакованного файла (для программ на Visual C)
[!] Исправлены ошибка, возникающая при использовании опции "Защита импорта" в 64-битных SYS-файлах
[!] Исправлены мелкие ошибки
[*] Файл настроек теперь сохраняется в каталог %APPDATA%/PolyTech/VMProtect
[*] Улучшена защита импорта
[+] Добавлена опция "Виртуальные Машины" (разные завиртуализированные участки кода будут выполняться на разных виртуальных машинах с разной архитектурой)
[+] Добавлена опция "Определение отладчика" (при обнаружении отладчика защищенное приложение будет показывать соответствующее сообщение и закрываться)
[+] В скрипт для класса TPESection добавлено свойство IncludedInPacking
[+] Добавлена поддержка команды IRETD
[+] Добавлен пример c использованием маркеров в Lazarus

### Версия 1.63

[!] Исправлены ошибки, возникающие при использовании опции "Защита импорта"
[!] Исправлены мелкие ошибки
[+] В скрипт добавлено событие OnBeforePackFile
[+] В скрипт для класса TPEFile добавлено свойство Handle
[+] Добавлен пример c использованием маркеров в Free Pascal
[*] Улучшен контроль целостности ВМ объектов

### Версия 1.62

[!] Исправлены ошибки, возникающие при использовании опции "Защита импорта"
[!] Исправлена ошибка, возникающая при обработке исключения в TRY/EXCEPT/END блоке в режиме "Ультра" (для программ на Delphi и Borland C++ Builder)
[*] Улучшена защита импорта для SYS-файлов
[+] Каждый объект из проекта теперь может иметь свои опции компиляции для более тонкой настройки быстродействия (индивидуальные опции настраиваются в дереве проекта)
[+] Добавлена опция "Перемещать ресурсы в конец файла"
[+] Добавлен пример использования расширенных маркеров (папка Examples\Scripts\UseExtMarkers)

### Версия 1.61

[!] Исправлена ошибка, возникающая при запуске упакованных файлов под управлением Windows 95/98
[!] Исправлены мелкие ошибки
[+] В Lite-версии добавлена возможность передачи имени файла через командную строку
[+] В режиме "Мастер" добавлена история
[+] В режиме "Мастер" добавлен выбор языка
[+] Добавлена опция "Защита импорта" (рекомендуется использовать совместно с упаковкой выходного файла)
[+] В консольной версии добавлен параметр "-we" (при использовании этого параметра все предупреждения будут отображаться как ошибки)
[+] В скрипт добавлен класс TPEResourceRecords
[+] В скрипт для класса TPEFile добавлено свойство ResourceRecords

### Версия 1.6

[!] Исправлены мелкие ошибки
[*] Улучшена работа с одинаковыми строками (теперь одинаковые строки отображаются как один объект, содержащий несколько записей)
[+] Добавлена возможность упаковки выходного файла
[+] В скрипт добавлен класс TPEExportRecords
[+] В скрипт для класса TPEFile добавлено свойство ExportRecords
[+] В скрипт добавлено событие OnBeforeSaveFile
[+] Добавлен файл помощи на китайском языке (перевод Wang Xiaopeng)
[+] При загрузке MAP-файла добавлена проверка даты и времени модификации (если дата и время модификации MAP-файла отличается от даты и времени модификации защищаемого файла, то MAP-файл не будет загружен)

### Версия 1.56

[!] Исправлена ошибка, возникающая при виртуализации команд BT, BTC, BTR и BTS
[!] Исправлены мелкие ошибки
[*] Список опций защиты отсортирован в порядке убывания приоритета
[*] Улучшена поддержка SEH для VC8
[*] Улучшено динамическое создание онлайн-команд
[*] Улучшен контроль целостности объектов ВМ
[+] Добавлена поддержка команд PREFETCH и PREFETCHW
[+] В скрипт добавлены функции CompareText и AnsiCompareText
[+] В скрипт для класса TPEFile добавлено свойство Size
[+] Добавлен пример c использованием маркеров в MinGW
[+] Добавлен китайский язык (перевод Wang Xiaopeng)
[+] В окне добавления процедуры добавлен поиск по маске с использованием символов "*" и "?"
[+] В сообщения компилятора теперь выводится информация о размере выходного файла

### Версия 1.55

[!] Исправлена ошибка, возникающая при работе с файлом, имеющим "невыровненное" значение ImageSize
[!] Исправлена ошибка, возникающая при определении начала блока TRY для программ на Delphi
[!] Исправлена ошибка, возникающая при обработке "смешанного" кода из Discardable и NonDiscardable секций в SYS-файлах
[!] Исправлена ошибка, возникающая при виртуализации 64-битных DLL/SYS-файлов
[*] Восстановлена опция "Шифрация регистров при выходе из ВМ"
[+] В скрипт добавлен класс TIniFile
[+] В скрипт для класса TPEFile добавлены дополнительные свойства и методы
[+] В GUI-версию добавлен калькулятор для расчета смещений в файле по адресам
[+] Добавлен итальянский язык (перевод Gabriele Lanza)

### Версия 1.54

[!] Исправлена ошибка, возникающая при мутации команды PUSH ESP
[!] Исправлена ошибка, возникающая при виртуализации команды FLDCW [ESP+xxxx]
[!] Исправлена ошибка, возникающая при обфускации байт-кода
[*] Улучшения в GUI
[+] Добавлены немецкий и испанский языки
[+] Добавлена поддержка скриптов
[+] В консольной версии добавлен параметр, с помощью которого можно указать имя файла со скриптом

### Версия 1.53

[!] Исправлены ошибки, возникающие при виртуализации кода в DLL/SYS-файлах
[*] Улучшения в виртуализации кода
[*] В консольной версии при перенаправлении вывода текста в файл убраны бегущие проценты
[+] Добавлена возможность вставки маркеров для x86-64
[+] Добавлена возможность создавать папки в проекте
[+] В консольной версии добавлен параметр, с помощью которого можно указать имя файла проекта

### Версия 1.52

[!] Исправлена ошибка, возникающая при мутации команд CMOVxx, CMPXCHG и CMPXCHG8B
[!] Исправлена ошибка, возникающая при мутации команды LEA ESP,[ESP+xxxx]
[*] Команды RCL и RCR добавлены в базовую логику ВМ
[+] Добавлена поддержка x86-64
[+] В GUI-версии на закладке "Опции" теперь можно указать имя выходного файла
[+] Добавлена справка на русском и английском языках

### Версия 1.51

[!] Исправлена ошибка, возникающая при создании "Relocation Table" нулевой длины
[!] Исправлена ошибка, возникающая при мутации команды CALL [xxxx] в режиме "Мутация" в DLL/SYS-файлах
[!] В примере на Delphi в определение VMProtectBegin добавлена команда, препятствующая оптимизации VMProtectBegin (оптимизация VMProtectBegin могла приводить к неработоспособности защищенного файла)
[+] Добавлена опция "Автосохранение проекта после компиляции"

### Версия 1.5

[!] Исправлена ошибка, возникающая при перетаскивании файлов в главное окно
[!] Исправлена ошибка, возникающая при работе с файлами, имеющими атрибут "Read only"
[!] Исправлены мелкие недочеты при компиляции в режиме "Ультра"
[*] Защищенный файл теперь имеет точно такие же атрибуты как оригинальный файл
[+] В список защищаемых процедур теперь можно включать строки (присвоение строк необходимо отмечать маркерами)
[+] В дистрибутив добавлены примеры c использованием маркеров в Borland C++ Builder, Delphi, MASM, Visual Basic и Visual C++
[+] Добавлена опция "Интегрировать в оболочку"

### Версия 1.4

[!] Исправлена ошибка, возникающая при мутации команд IMUL, MUL, IDIV, DIV
[!] Исправлена ошибка, возникающая при виртуализации нескольких CASE таблиц, идущих друг за другом
[!] Исправлена ошибка, возникающая при виртуализации команд POP word/dword ptr [esp+xxxx] и IMUL reg8
[!] Исправлена ошибка, возникающая при дизассемблировании команд MOVNTPS и MOVNTPD
[+] Добавлен новый тип компиляции "Ультра (мутация + виртуализация)"
[+] Добавлен выбор типа компиляции в окне добавления/изменения процедуры
[+] Добавлен поиск водяных знаков в процессах (используется для поиска водяных знаков в упакованных файлах)
[*] Улучшена совместимость с ASM компиляторами (TASM, MASM и т.п.)

### Версия 1.3

[!] Исправлена ошибка, возникающая при эмуляции команды FILD word ptr [xxxx]
[+] Для каждой процедуры можно указать тип компиляции ("Мутация" или "Виртуализация")

### Версия 1.25

[+] Добавлена поддержка SEH для VC7-8
[+] Добавлена поддержка маркеров в Visual Basic (начало и конец участка маркируются вставками на бейсике - Call VarPtr("VMProtect begin") и Call VarPtr("VMProtect end"))
[*] В зарегистрированной версии программы исполнитель ВМ теперь полностью видоизменяется (препятствует автоматическому определению защиты сигнатурными сканерами PEiD, RDG Packer Detector и т.п.)

### Версия 1.24

[+] Добавлена возможность вставлять в защищаемый файл водяные знаки
[*] Исполнитель ВМ теперь полностью поддерживает многопоточные приложения (теперь нет необходимости создавать процедуру выделения памяти для нужд исполнителя)
[-] Убрана опция с выбором функции выделения памяти для нужд исполнителя

### Версия 1.23

[!] Исправлены мелкие недочеты [+] Добавлен режим работы "Мастер" [+] В дереве процедур добавлен показ ссылок [*] Опции "Скрывать константы", "Динамическое создание онлайн-команд", "Шифрация регистров при переходах", "Контроль целостности объектов ВМ" и многое другое теперь доступны только для зарегистрированных пользователей

### Версия 1.22.2

[!] Исправлена ошибка, возникающая при компиляции проектов с включенной опцией "Выделение памяти в исполнителе"

### Версия 1.22

[!] Исправлены мелкие ошибки
[+] Добавлена возможность контроля целостности байт-кода (при включенной опции "Контроль целостности объектов ВМ")

### Версия 1.21

[!] Исправлена ошибка, возникающая при эмуляции CMPXCHG8b, если в операндах участвуют регистры EAX и EDX
[+] В исполнителе присутствуют только те команды, которые будут участвовать при исполнении байт-кода
[-] Из базовой логики ВМ убраны некоторые команды (затрудняет анализ и декомпиляцию байт-кода)

### Версия 1.2

[!] Исправлена ошибка, возникающая при перемещении директории Bound Import
[+] Добавлена возможность включения в проект участков кода, помеченных маркерами (начало и конец участка маркируются вставками на ассемблере - "db $EB,$10,'VMProtect begin',0" и "db $EB,$0E,'VMProtect end',0")
[+] Добавлена возможность включать в проект экспортируемые функции
[-] Убрана опция "Шифрация байт-кода" (шифрация байт-кода теперь всегда включена)

### Версия 1.1

[!] Исправлены ошибки, возникающие при: эмуляции SBB (неправильное состояние некоторых флагов); эмуляции CMOVxx, CMPXCHG и CMPXCHG8b (в случаях, когда в качестве второго аргумента использовалась адресация с применением регистра ESP или DWORD значения)
[+] Добавлена поддержка SEH в VB6 (native)
[+] Добавлена поддержка MAP-файлов, генерируемых IDA
[+] Добавлена возможность пакетного добавления процедур
[+] Добавлен показ ссылок на команды прямо в листинге процедур
[+] Добавлена новая опция "Шифрация регистров при переходах"

### Версия 1.09

[*] Доработан процесс определения конца процедуры при дизассемблировании циклов
[+] Для совместимости с UPX добавлена очистка флага Sharable у Writable-секций (в случаях, когда старая таблица релоков используется для нужд ВМ)

### Версия 1.08

[*] Ускорен процесс дизассемблирования больших участков кода
[*] Доработан механизм метаморфизма исполнителя байт-кода

### Версия 1.07

[!] Исправлены ошибки, возникающие при работе с PE файлами (в случаях, когда виртуальный размер секций кода равен нулю); обфускации FPU команд (ошибки приводили к неправильному результату); дизассемблировании (вместо CWDE распознавалась команда CWD); эмуляции команд ROL и ROR (если аргумент имел размер в 1 байт)
[+] Добавлена поддержка группы команд SSE2

### Версия 1.06

[!] Исправлены ошибки, приводящие к неправильному состоянию A флага после эмуляции команд SUB, CMP, DEC, NEG, CMPXCHG, SCAS и CMPS.
[!] Исправлена ошибка, возникающая при работе с "невыровненным" файлом
[+] Добавлена поддержка инструкций BSF, BSR и CMPXCHG8b
[+] Для многопоточных приложений теперь можно указать процедуру выделения памяти для исполнителя ВМ (процедура выделения памяти должна быть определена как fastcall)

### Версия 1.05

[+] Добавлена поддержка инструкций FUCOMPP и FCMOVxx
[+] При просмотре участков кода добавлен показ типов строк (ANSI/Unicode/Pascal) и комментарии для полей структур, создаваемых компиляторами
[+] Добавлена процедура метаморфизма исполнителя байт-кода
[+] Добавлены новые опции компиляции: "Шифрация байт-кода" и "Удаление настраиваемых элементов (только для EXE файлов)"
[-] Убрана опция "Обфускация байт-кода" (обфускация байт-кода теперь всегда включена)

### Версия 1.04

[!] Исправлена ошибка при определении обработчиков SEH для С++
[*] Полностью переработан обфускатор байт-кода
[+] Добавлена подцветка настраиваемых элементов при просмотре участков кода

### Версия 1.03

[+] Использование "свободного места" из-под оригинальных участков кода для хранения байт-кода
[+] Добавлено распознавание "коротких" строк в pascal-формате (первый байт - длина строки)

### Версия 1.02

[!] Исправлены ошибки с выполнением онлайн-команд в DLL/SYS
[*] Изменён алгоритм подсчёта контрольной суммы байт-кода
[+] Добавлена опция "Контроль целостности исполнителя ВМ" (также работает как противоотладочный приём при отладке исполнителя если отладчик использует в качестве точек остановки INT 03).
[+] Использование "старой" таблицы настраиваемых элементов для хранения байт-кода

### Версия 1.01

[!] Исправлена ошибка при создании файлов с настраиваемыми элементами (ошибка возникала при работе DLL/SYS-файлов в операционных системах Windows 95/98/Me)
[!] Исправлены мелкие ошибки в дизассемблере
[+] Добавлена поддержка инструкций F2XM1, FABS, FCLEX, FCOS, FDECSTP, FINCSTP, FINIT, FLDCW, FLDLN2, FLDLG2, FPREM, FREM1, FPTAN, FRNDINT, FSIN, FSTCW, FTST, FYL2X, FPATAN, FLDZ, FISTP
[+] Добавлена поддержка MAP-файлов от Borland C Builder
[+] В настройках программы теперь можно выбирать язык интерфейса и сообщений (доступны русский и английский языки)

### Версия 1.0

[!] Исправлены мелкие ошибки, связанные с интерфейсом
[+] Добавлена поддержка инструкций CMOV и CMPXCHG

### Версия 0.97

[!] Исправлены мелкие ошибки, связанные с интерфейсом
[+] Добавлена поддержка Virtual Pascal

### Версия 0.96

[!] Исправлены ошибки в компиляторе (некорректная работа с C флагом при компиляции инструкций NEG и SBB; более корректная обработка POPF; неправильная проверка CRC байт-кода при обработке внешних условных переходов)
[!] Исправлены ошибки в исполнителе ВМ, связанные с обфускацией байт-кода
[+] Улучшена обработка MAP-файла, генерируемого C/C++ компиляторами (имена процедур содержат информацию об аргументах)

### Версия 0.94

[!] Исправлено множество ошибок

© 2006-2015 Copyright VMProtect Software