Непонятная ошибка при защите программы

Вот скрин с ошибкой и дебагом защищаемой программы, подскажите что не так, где протектор нашел “Переход на часть команды”?

ЗЫ помойму протектор неверно определил размер команды mov

а не, тут как то хитро компилятор дельфи сделал, в конце поставил вместо ret вызов call halt0, вот протектор и пошел анализировать код дальше…

Все правильно - разработчики Delphi решили, что заканчивать код на EntryPoint по CALL это “круто”, а RET и JMP используют только ламеры :slight_smile:) Поэтому перед VMProtect стоит задача определить какой же CALL надо считать последним. В последних версиях VMProtect (> 2.04) пришлось отказаться от эвристики (определение CALL Halt0 по близлежащему коду) по причине большого количества неправильных определений и перейти на поиск Halt0 по сигнатурам. Возможно что в вашем случае сигнатура Halt0 не совпала с сигнатурами, забитыми в VMProtect, из-за версии Delphi или из-за оптимизатора, поработавшего над кодом Halt0. Для решения проблемы пришлите дизассемблированный листинг Halt0 на наш е-маил.

Возникает подобная ошибка при сборке проекта (Delphi 2010 + VMP 2.09).

Загрузка [V] 008466B4 mainform.TFormMain.MIRegClick 
0083E38B E383                    jecxz 0083E310
[Ошибка] mainform.TFormMain.ASaveOnePhotoExecute.0083E38B: Переход на часть команды

Что делать? Прислать кусок кода (процедуры, в которой выдает ошибку) или нужен весь текст модуля?

Присылайте весь комплект (оригинал EXE+MAP+VMP файлы), на котором у вас возникает данная проблема.

Файлы отправил на info@

Исправленная версия выслана на ваш е-маил.

все заработало, спасибо.