Обновил VMProtect с версии 2.09 до 2.1 и перестала работать сборка. Первая проблема со скриптами, решил их отключением, все проверки сначала производил в GUI. Без скриптов работало и запускалось. Но когда решил собрать в консоли и запустить полученный ехе, то ОС выдала краш. ОС Windows 7.
Присылайте тестовый проект (exe+map+vmp файлы), на котором воспроизводится данная проблема.
Не стал плодить топики. При создании проекта, имя файла записывается как InputFileName=“\nnn.dll”. При открытии этого же проекта пишет “file c:\nnn.dll not found”. Убрать бы символ перед именем файла.
Да, и еще при выборе дельфового энтрипоинта для защиты, захватывает 2 дворда после финальных call. Убираю ручной простановкой конца процедуры. Так и должно быть?
Только что создал новый проект в 2.1 - InputFileName=“.\test.exe” (с точкой перед слешем)
По поводу дельфового проекта - а что с ним не так? Если речь идет про эти CALL-ы:
004BBC83 E8F078FFFF call 004B3578 -> Forms.TApplication.Run
004BBC88 E8E3A1F4FF call 00405E70 -> System.@Halt0
То все ОК.
Cоздал новый проект. Без точки создалось по дефолту, и не понятно зачем она, если логичнее без нее. В .vmp записалось - InputFileName=“\nnn.exe”, при открытии (запуске nnn.vmp из проводника) - еррор - пытается найти этот .exe в корне диска.
Про дельфи - соврал, длл сторонняя, написана на С. “Хвост” энтрипоинта (3 дворда убираю принудительно):
1000167B E8F8000000 call 10001778
10001680 59 pop ecx
10001681 59 pop ecx
10001682 C3 ret
10001683 8B65E8 mov esp, [ebp-18]
10001686 834DFCFF or dword ptr [ebp-04], -01
1000168A 33C0 xor eax, eax
1000168C E84A010000 call 100017DB
10001691 C20C00 ret 000C
10002158 FFFFFFFF dd FFFFFFFF State
1000215C 72160010 dd 10001672 FilterProc
10002160 83160010 dd 10001683 ExitProc
А как вы создаете новый проект? Из проводника?
По поводу хвоста от EntryPoint - до сих пор не понятно чем они вам не нравятся? На самом деле они они относятся к обработке исключений и я не рекомендую исключать их из компиляции.
Запускаю вмпрот (GUI), выбираю exe/dll, сохраняю. Выхожу из вмпрота, “запускаю” vmp файл, открывается GUI вмпрота, и тут ошибка поиска моего exe/dll.
Просто не понимаю, почему они включаются в защищаемую процедуру.
Запускаю вмпрот (GUI), выбираю exe/dll, сохраняю. Выхожу из вмпрота, “запускаю” vmp файл, открывается GUI вмпрота, и тут ошибка поиска моего exe/dll.
На версии 2.10 не воспроизводится.
Просто не понимаю, почему они включаются в защищаемую процедуру.
Еще раз - эти команды относятся к обработчику исключений EntryPoint-а (try/catch/finally), поэтому вмпротект их и распарсил.
Что-то с ответом тихо. Так же “убивают”:
“File corrupted!. This program has been manipulated and maybe
it’s infected by a Virus or cracked. This file won’t work anymore.”
Зачем восклицательный знак + точка? Зачем точка в конце сообщения, когда это выдается мессаджбоксом?
Я вам уже отвечал, что на версии 2.10 у нас ваша проблема не воспроизводится. По поводу сообщений - вы можете их отредактировать на своё усмотрение.
2.10 по дефолту создает в проекте InputFileName=“\nnn.exe”. Зачем ""? Сообщения - ес-но могу редактировать, но c таким же успехом Вы можете туда вставить слово из 3-х букв, по крайней мере синтаксических ошибок не будет. “Ужос”
В InputFileName по дефолту записывается относительный путь между каталогом с проектом и ехе-файлом. В результате должно получиться ‘.\nnn.exe’ (если файл проекта лежит рядом с загружаемым файлом). Но, как оказалось на XP SP3 функция PathRelativePathTo работает с ошибками и у вас получается ‘\nnn.exe’. Мы внесем изменения в код, чтобы на XP3 относительный путь сохранялся в правильном виде.
P.S. С помощью служебных символов ‘.’, '', ‘..’ можно задавать относительные пути для файлов/каталогов. Например "." - это текущий каталог, '..' - каталог на уровень выше и т.д.
2.11 - тот же баг, только что новый проект создавал
Все гут, звиняйте
Ок.
Версия 2.13, недочеты:
- При перещелкивании пунктов отладчика дабл-кликом, выборе “Нет” и сохранении файла, автоматически сохраняет строку в .vmp: CheckKernelDebugger=“true”
- Абсолютные пути для DLL-box. Очень неудобно при переносе проекта
Файлы в DLL Box могут иметь путь относительно файла проекта.
- Опция детекта VMware не работает на x64 DLL. На x32 все ок. Это нормально?
Детект VMware работает на исключениях, которые не поддерживаются для х64 кода. В 3-ей версии будет полноценный детект VMware и для х64.