Добрый день.
Проблема в следующем. Имеется драйвер, часть функций которого защищены с помощью VMProtect 1.2.2
Ощущение такое, что в некоторый момент виртуальная машина вылетает и код, который должен исполняться под виртуальной машиной, выполняется как обычный код, что рано или поздно приводит к возникновению BSOD (чаще всего ошибки связаны с чтением или записью в произвольный регион памяти).
Что интересно - ошибки случаются только под русскими версиями (не важно Win 2000, Win XP, Win 2003) и пока ни разу не проявились под английской версией.
В history VMProtect я не встретил никаких упоминаний на подобные проблемы. Исходя из этого вопрос - известна ли подобная проблема и если да, то была ли она исправлена?
Error in virtual machine under russian Windows
Error in virtual machine under russian Windows
Last edited by FraGGer on Tue Apr 10, 2007 1:40 pm, edited 2 times in total.
Спасибо за ответ. Ситуация когда несколько процедур может выполняться "одновременно" под виртуальной машиной, что может трактоваться как многопоточность, действительно может иметь место.
Просто несколько насторожил тот факт, что в основном все происходит под русской версией windows
Что касается кодировки - у Вас на форуме установлена кодировка ISO-8859-1, что вероятно и приводит к проблемам. Попробуйте установить 1251 или UTF8. Сейчас чтобы прочесть сообщения на форуме мне приходится на каждой странице переключать кодировку на 1251 вручную.
Просто несколько насторожил тот факт, что в основном все происходит под русской версией windows
Что касается кодировки - у Вас на форуме установлена кодировка ISO-8859-1, что вероятно и приводит к проблемам. Попробуйте установить 1251 или UTF8. Сейчас чтобы прочесть сообщения на форуме мне приходится на каждой странице переключать кодировку на 1251 вручную.
Если можно какую-либо ссылку на источник, где освещен вопрос как именно должна выглядеть процедура выделения памяти?
В статье http://polytech.ural.ru/vmprotect.htm этот вопрос не рассматривается...
В статье http://polytech.ural.ru/vmprotect.htm этот вопрос не рассматривается...
В своем профиле выберите русский язык, тогда форум будет отображаться в правильной кодировке.FraGGer wrote:Что касается кодировки - у Вас на форуме установлена кодировка ISO-8859-1, что вероятно и приводит к проблемам. Попробуйте установить 1251 или UTF8. Сейчас чтобы прочесть сообщения на форуме мне приходится на каждой странице переключать кодировку на 1251 вручную.
Ну не поддерживается, так не поддерживается. Разобраться с этой процедурой заняло минут 15...
В любом случае спасибо за рекомендацию.
Однако не уверен что поможет. Баг репорты продолжают сыпаться - и все без исключения под русской версией windows. Если бы причина была в выделении памяти, то ошибка с равной вероятностью проявлялась бы как под русской так и под английской версиями.
В любом случае спасибо за рекомендацию.
Однако не уверен что поможет. Баг репорты продолжают сыпаться - и все без исключения под русской версией windows. Если бы причина была в выделении памяти, то ошибка с равной вероятностью проявлялась бы как под русской так и под английской версиями.
Процедура выделения памяти должна работать в двух режимах:Ну не поддерживается, так не поддерживается. Разобраться с этой процедурой заняло минут 15...
1. Выделение памяти: входной параметр ECX - размер блока в байтах; выходной параметр EAX - указатель на выделенный блок.
2. Освобождение памяти: входные параметры ECX=0, EDX - указатель на высвобождаемый блок.
Непонятно - вы уже пробывали защиту с внешним выделением памяти или нет? )Однако не уверен что поможет. Баг репорты продолжают сыпаться - и все без исключения под русской версией windows.
P.S. В любом случае нельзя исключать причину возникновения ошибки в самом драйвере (в алгоритме работы), а не в защите в виде VMProtect.
P.P.S. Вы можете попробывать защитить свой драйвер последней демо версией, правда в силу ограничений демки можно защитить всего одну процедуру, но для тестов я думаю этого вполне хватит.