Проблема в следующем. Имеется драйвер, часть функций которого защищены с помощью VMProtect 1.2.2
Ощущение такое, что в некоторый момент виртуальная машина вылетает и код, который должен исполняться под виртуальной машиной, выполняется как обычный код, что рано или поздно приводит к возникновению BSOD (чаще всего ошибки связаны с чтением или записью в произвольный регион памяти).
Что интересно - ошибки случаются только под русскими версиями (не важно Win 2000, Win XP, Win 2003) и пока ни разу не проявились под английской версией.
В history VMProtect я не встретил никаких упоминаний на подобные проблемы. Исходя из этого вопрос - известна ли подобная проблема и если да, то была ли она исправлена?
Скорее всего проблема связана с многопоточностью. В версиях до 1.24 для драйверов рекомендовалось указывать процедуру выделения памяти для нужд исполнителя. Начиная с версии 1.24 VMProtect полностью поддерживает многопоточность без каких либо дополнительных действий со стороны разработчика.
Спасибо за ответ. Ситуация когда несколько процедур может выполняться “одновременно” под виртуальной машиной, что может трактоваться как многопоточность, действительно может иметь место.
Просто несколько насторожил тот факт, что в основном все происходит под русской версией windows
Что касается кодировки - у Вас на форуме установлена кодировка ISO-8859-1, что вероятно и приводит к проблемам. Попробуйте установить 1251 или UTF8. Сейчас чтобы прочесть сообщения на форуме мне приходится на каждой странице переключать кодировку на 1251 вручную.
Если можно какую-либо ссылку на источник, где освещен вопрос как именно должна выглядеть процедура выделения памяти?
В статье http://polytech.ural.ru/vmprotect.htm этот вопрос не рассматривается…
Ну не поддерживается, так не поддерживается. Разобраться с этой процедурой заняло минут 15…
В любом случае спасибо за рекомендацию.
Однако не уверен что поможет. Баг репорты продолжают сыпаться - и все без исключения под русской версией windows. Если бы причина была в выделении памяти, то ошибка с равной вероятностью проявлялась бы как под русской так и под английской версиями.
Однако не уверен что поможет. Баг репорты продолжают сыпаться - и все без исключения под русской версией windows.
Непонятно - вы уже пробывали защиту с внешним выделением памяти или нет? )
P.S. В любом случае нельзя исключать причину возникновения ошибки в самом драйвере (в алгоритме работы), а не в защите в виде VMProtect.
P.P.S. Вы можете попробывать защитить свой драйвер последней демо версией, правда в силу ограничений демки можно защитить всего одну процедуру, но для тестов я думаю этого вполне хватит.