ДВИЖОК ИНТРОСПЕКЦИИ ПАМЯТИ ДЛЯ ЗАЩИТЫ ЦЕЛОСТНОСТИ ВИРТУАЛЬНЫХ МАШИН
MEMORY INTROSPECTION ENGINE FOR PROTECTING INTEGRITY OF VIRTUAL MACHINES

УРОВЕНЬ ТЕХНИКИ
[0001] Изобретение относится к системам и способам защиты компьютерных систем от вредоносных программ и, в частности, к антивредоносным системам, использующим технологию аппаратной виртуализации.
[0002] Вредоносное программное обеспечение, также известное как вредоносные программы, воздействует на большое количество компьютерных систем по всему миру. В своих многочисленных формах, таких как компьютерные вирусы, черви и руткиты, вредоносные программы представляют собой серьезную опасность для миллионов пользователей компьютеров, что делает их уязвимыми, среди прочего, к потере данных и конфиденциальной информации, краже идентификационных данных и потере производительности.
[0003] Технология аппаратной виртуализации позволяет создавать имитационные компьютерные среды, обычно известные как виртуальные машины, которые ведут себя во многих случаях как физические компьютерные системы. В типичных приложениях, таких как консолидация серверов и инфраструктура-как-услуга (IAAS), несколько виртуальных машин могут работать одновременно на одном и том же физическом компьютере, разделяя аппаратные ресурсы между ними, что, таким образом, уменьшает инвестиционные и эксплуатационные затраты. Каждая виртуальная машина может работать в ее собственной операционной системе и/или программных приложениях отдельно от других виртуальных машин. Вследствие устойчивого распространения вредоносных программ, каждая виртуальная машина, работающая в такой среде, потенциально требует защиты от вредоносных программ.
[0004] Техническое решение по виртуализации, обычно используемое в данной области техники, включает в себя гипервизор, известный также как монитор виртуальных машин, содержащий слой программного обеспечения, выполняющийся между вычислительным аппаратным обеспечением и операционной системой (OS) виртуальной машины, и имеющий больше привилегий процессора, чем соответствующая OS. Антивредоносные операции могут осуществляться на уровне привилегий гипервизора. Хотя такие конфигурации могут облегчить обнаружение и предотвращение вредоносных программ, они вносят дополнительный уровень сложности и могут приводить к значительным вычислительным затратам.
[0005] Существует значительный интерес в развитии технических решений по противодействию вредоносным программам для платформ аппаратной виртуализации, которые надежны и масштабируемы с минимальными вычислительными расходами.
РАСКРЫТИЕ ИЗОБРЕТЕНИЯ
[0006] Согласно одному аспекту хост-система содержит по меньшей мере один процессор, конфигурированный с возможностью выполнять операционную систему и модуль подготовки защиты. Операционная система конфигурирована с возможностью выделять секцию виртуализированной физической памяти виртуальной машины целевому программному объекту, выполняемому в виртуальной машине, причем виртуальная машина открыта гипервизором, выполняемым на хостовой системе. Виртуализированная физическая память разделена на страницы, причем страница представляет собой наименьшую единицу памяти, индивидуально отображаемой между виртуализированной физической памятью и физической памятью хостовой системы. Модуль подготовки защиты конфигурирован с возможностью, в ответ на определение того, удовлетворяет ли целевой программный объект критерию выбора для защиты от вредоносных программ, когда целевой программный объект удовлетворяет этому критерию выбора, изменять выделение памяти целевого объекта, при этом изменение выделения памяти включает в себя обеспечение того, что любая страница, содержащая по меньшей мере часть целевого программного объекта, зарезервирована для целевого программного объекта.
[0007] Согласно другому аспекту способ содержит использование по меньшей мере одного процессора хостовой системы для формирования операционной системы, конфигурированной с возможностью выделять секцию виртуализированной физической памяти виртуальной машины целевому программному объекту, выполняемому в виртуальной машине, причем виртуальная машина открыта гипервизором, выполняемым на хостовой системе. Виртуализированную физическую память разделяют на страницы, причем страница представляет собой наименьшую единицу памяти, индивидуально отображаемой между виртуализированной физической памятью и физической памятью хостовой системы. Способ дополнительно содержит, в ответ на определение того, удовлетворяет ли целевой программный объект критерию выбора для защиты от вредоносных программ, когда целевой программный объект удовлетворяет критерию выбора, использование указанного по меньшей мере одного процессора для изменения выделения памяти целевого программного объекта, причем изменение выделения памяти включает в себя обеспечение того, что любая страница, содержащая по меньшей мере часть целевого программного объекта, зарезервирована для целевого программного объекта.
[0008] Согласно другому аспекту долговременный машиночитаемый носитель, кодирует инструкции, которые, при выполнении по меньшей мере одним процессором хостовой системой, обеспечивают возможность побуждать указанный по меньшей мере один процессор выделять секцию виртуализированной физической памяти виртуальной машины целевому программному объекту, выполняемому в виртуальной машине, причем виртуальная машина открыта гипервизором, выполняемым на хостовой системе. При этом виртуализированная физическая память разделена на страницы, причем страница представляет собой наименьшую единицу памяти, индивидуально отображаемой между виртуализированной физической памятью и физической памятью хостовой системы. Инструкции дополнительно побуждают указанный по меньшей мере один процессор изменять выделение памяти целевого программного объекта в ответ на определение того, удовлетворяет ли целевой программный объект критерию выбора для защиты от вредоносных программ. Изменение выделения памяти выполняется, когда целевой программный объект удовлетворяет критерию выбора. Изменение выделения памяти включает в себя обеспечение того, что любая страница, содержащая по меньшей мере часть целевого программного объекта, зарезервирована для целевого программного объекта.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0009] Вышеизложенные аспекты и преимущества настоящего изобретения будут более понятными при чтении следующего подробного описания со ссылками на чертежи, на которых:
[0010] фиг. 1 показывает примерную конфигурацию аппаратного обеспечения хостовой компьютерной системы, защищенной от вредоносных программ согласно некоторым вариантам осуществления настоящего изобретения;
[0011] фиг. 2 показывает примерный набор виртуальных машин, открытых гипервизором, выполняющимся на хостовой системе на фиг. 1, согласно некоторым вариантам осуществления настоящего изобретения;
[0012] фиг. 3 иллюстрирует примерную иерархию программных объектов, выполняющихся на хостовой системе на различных уровнях привилегий процессора, включая множество объектов, защищенных от вредоносных программ, согласно некоторым вариантам осуществления настоящего изобретения;
[0013] фиг. 4 показывает примерное отображение адресов памяти в конфигурации системы с фиг.2 согласно некоторым вариантам осуществления настоящего изобретения;
[0014] фиг. 5 показывает примерное выделение памяти, причем пространство виртуализированной физической памяти разделено на страницы, при этом определенная секция памяти выделена каждому из множества программных объектов;
[0015] фиг. 6 иллюстрирует примерное выделение памяти, причем страница выделена исключительно целевому программному объекту согласно некоторым вариантам осуществления настоящего изобретения;
[0016] фиг. 7 показывает примерную последовательность этапов, выполняемых движком интроспекции памяти, для защиты виртуальной машины согласно некоторым вариантам осуществления настоящего изобретения;
[0017] фиг. 8 показывает примерную последовательность этапов, выполняемых при помощи варианта осуществления модуля подготовки защиты для модифицирования выделения памяти целевому программному объекту;
[0018] фиг. 9 показывает примерную последовательность этапов, выполняемых при помощи другого варианта осуществления модуля подготовки защиты для модифицирования выделения памяти целевому программному объекту;
[0019] фиг. 10 показывает примерную последовательность этапов, выполняемых модулем подготовки защиты для модифицирования освобождения памяти для целевого программного объекта согласно некоторым вариантам осуществления настоящего изобретения.
ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯ
[0020] В нижеследующем описании предполагается, что все перечисленные соединения между конструкциями могут быть непосредственными рабочими соединениями или опосредованными рабочими соединениями через промежуточные конструкции. Набор элементов включает в себя один или более элементов. Любое указание на элемент подразумевает указание на по меньшей мере один элемент. Множество элементов включает в себя по меньшей мере два элемента. Если иное не требуется, любые описанные этапы способа не обязательно должны выполняться в определенном показанном порядке. Первый элемент (например, данные), производный от второго элемента, включает в себя первый элемент, эквивалентный второму элементу, а также первый элемент, сгенерированный посредством обработки второго элемента и, опционально, других данных. Осуществление определения или принятие решения согласно параметру включает в себя осуществление определения или принятие решения согласно параметру и, опционально, согласно другим данным. Если не указано иное, индикатор некоторой величины/данных может представлять собой сами величину/данные или индикатор, отличный от самих величины/данных. Если не указано иное, страница представляет собой наименьшую единицу виртуальной физической памяти, отображаемой индивидуально на физическую память хостовой системы. Если не указано иное, говорят, что часть виртуальной физической памяти охватывает набор страниц, когда каждая страница данного набора страниц содержит часть этой соответствующей части. Резервирование страницы для целевого объекта включает в себя выделение всей страницы целевому объекту и в противном случае обеспечение того, что соответствующая страница не вмещает в себе частей объектов, отличных от целевого объекта. Машиночитаемые носители включают в себя долговременные носители, такие как магнитные, оптические и полупроводниковые носители данных (например, жесткие диски, оптические диски, флэш-память, динамическая операционная память (DRAM)), а также линии связи, такие как проводящие кабели и волоконно-оптические линии связи. Согласно некоторым вариантам осуществления настоящее изобретение обеспечивает, в частности, компьютерные системы, содержащие аппаратное обеспечение (например, один или несколько процессоров), программированное для выполнения описанных здесь способов, а также машиночитаемые носители, кодирующие инструкции для выполнения описанных здесь способов.
[0021] Нижеследующее описание иллюстрирует варианты осуществления изобретения в качестве примера и не обязательно в качестве ограничения.
[0022] Фиг. 1 показывает примерную конфигурацию аппаратного обеспечения хостовой системы 10 согласно некоторым вариантам осуществления настоящего изобретения. Хостовая система 10 может представлять собой вычислительное устройство профессионального применения, такое как корпоративный сервер или устройство конечного пользователя, такое как, среди прочего, персональный компьютер или смартфон. Другие хостовые системы включают в себя развлекательные устройства, таких как телевизоры и игровые консоли или любые другие устройства, имеющие память и процессор, поддерживающие виртуализацию и требующие защиты от вредоносных программ. Фиг. 1 показывает компьютерную систему для иллюстративных целей; другие клиентские устройства, такие как мобильные телефоны или планшеты, могут иметь отличную конфигурацию. В некоторых вариантах осуществления система 10 включает в себя набор физических устройств, в том числе процессор 12, блок 14 памяти, набор устройств 16 ввода, набор устройств 18 вывода, набор устройств 20 хранения и набор сетевых адаптеров 22, которые все соединены набором шин 24.
[0023] В некоторых вариантах осуществления процессор 12 содержит физическое устройство (например, многоядерную интегральную схему), конфигурированную с возможностью выполнять вычислительные и/или логические операции с набором сигналов и/или данных. В некоторых вариантах осуществления такие логические операции поступают в процессор 12 в виде последовательности инструкций процессора (например, машинного кода или программного обеспечения другого типа). Блок 14 памяти может содержать энергозависимые машиночитаемые носители (например, оперативное запоминающее устройство (RAM)), хранящие данные/сигналы, к которым обращается или которые генерируются процессором 12 в течение выполнения инструкций. Устройства 16 ввода могут включать в себя, среди прочего, клавиатуры компьютера, мыши и микрофоны, в том числе соответствующие аппаратные интерфейсы и/или адаптеры, позволяющие пользователю вводить данные и/или инструкции в систему 10. Устройства 18 вывода могут включать в себя устройства отображения, такие как, среди прочего, мониторы и динамики, а также аппаратные интерфейсы/адаптеры, такие как графические карты, позволяющие системе 10 передавать данные пользователю. В некоторых вариантах осуществления устройства 16 ввода и устройства 18 вывода могут иметь общую часть аппаратного обеспечения, как в случае устройств с сенсорным экраном. Устройства 20 хранения включают в себя машиночитаемые носители, позволяющие долговременной памяти читать и записывать инструкции и/или данные программного обеспечения. Примеры устройств 20 хранения включает в себя магнитные и оптические диски и устройства флэш-памяти, а также съемные носители, такие как компакт-диски (CD) и/или универсальные цифровые диски (DVD) и дисководы. Набор сетевых адаптеров 22 позволяет системе 10 соединяться с компьютерной сетью и/или другими устройствами/компьютерными системами. Шины 24 собирательно представляют собой множество системных, периферических шин и шин наборов микросхем, и/или все другие схемы, обеспечивающие взаимную связь устройств 12-22 хостовой системы 10. Например, шины 24 могут, среди прочего, содержать северный мост, соединяющий процессор 12 с памятью 14 и/или южный мост, соединяющий процессор 12 с устройствами 16-22.
[0024] Фиг. 2 показывает примерный набор гостевых виртуальных машин 32a-b, выполняемых на хостовой системе 10 и открытых гипервизором 30, согласно некоторым вариантам осуществления настоящего изобретения. Виртуальные машины (VM) широко известны в данной области техники как эмуляции программного обеспечения реальных физических машин/компьютерных систем, каждая из которых выполнена с возможностью выполнять ее собственную операционную систему и программное обеспечение независимо от других виртуальных машин. Гипервизор 30 содержит программное обеспечение, обеспечивающее возможность мультиплексирования (обмена) несколькими виртуальными машинами ресурсов аппаратного обеспечения хостовой системы 10, таких как операции процессора, устройства памяти, хранения, ввода/вывода и сетевые устройства. В некоторых вариантах осуществления гипервизор 30 позволяет нескольким виртуальным машинам и/или операционным системам (OS) выполняться одновременно на хостовой системе 10 с различными степенями изоляции. Для обеспечения возможности таких конфигураций программное обеспечение, образующее часть гипервизора 30, может создавать множество виртуализированных, т.е. эмулированных посредством программного обеспечения, устройств, при этом каждое виртуализированное устройство среди прочего эмулирует физическое аппаратное устройство системы 10, такое как процессор 12 и память 14. Гипервизор 30 может дополнительно назначать набор виртуальных устройств каждой VM, работающей на хостовой системе 10. Таким образом, каждая VM 32a-b работает, как будто она обладает ее собственным набором физических устройств, то есть как более или менее полная компьютерная система. Примеры популярных гипервизоров включают в себя, среди прочего, VMware vSphere™ от VMware Inc. и гипервизор Xen с открытым исходным кодом.
[0025] В некоторых вариантах осуществления гипервизор 30 включает в себя движок 40 интроспекции памяти, конфигурированный с возможностью выполнять антивредоносные операции, как описано ниже, и модуль 46 подготовки защиты, соединенный с движком 40 интроспекции памяти. Движок 40 и модуль 46 могут быть включены в гипервизор 30 или могут поставляться как программные компоненты отдельно и независимо от гипервизора 30, однако при этом выполняться по существу на том же уровне привилегий процессора, что гипервизор 30. Один движок 40 может быть конфигурирован с возможностью защищать от вредоносных программ несколько виртуальных машин, выполняемых на хостовой системе 10.
[0026] Хотя фиг. 2 показывает для простоты только две VM 32a-b, хостовая система 10 может оперировать большим количеством, например сотнями, VM, причем количество таких VM может изменяться в течение работы хостовой системы 10. В некоторых вариантах осуществления каждая VM 32a-b выполняет гостевую операционную систему 34a-b и/или набор программных приложений 42a-b и 42c-d, соответственно, параллельно и независимо от других виртуальных машин, выполняемых на хостовой системе 10. Каждая OS 34a-b содержит программное обеспечение, которое обеспечивает интерфейс для (виртуализированного) аппаратного обеспечения соответствующей VM 32a-b, и действует в качестве хоста для вычислительных приложений 42a-b и 42c-d, соответственно, выполняемых в соответствующей OS. Операционные системы 34a-b могут включать в себя любую широко распространенную операционную систему, такую как, среди прочего, Windows, MacOS, Linux, iOS или Android™. Приложения 42a-d могут включать в себя, среди прочего, обработку текстов, обработку изображений, базу данных, браузер, приложения электронных коммуникаций и антивредоносные приложения.
[0027] Фиг. 3 иллюстрирует иерархию программных объектов, выполняемых на хостовой системе 10, согласно некоторым вариантам осуществления настоящего изобретения. Фиг. 3 представлена с точки зрения уровней привилегий процессора, которые также известны в данной области техники как слои или кольца защиты. В некоторых вариантах осуществления гипервизор 30 берет на себя управление процессором 12 на наиболее привилегированном уровне (обычно известен как режим суперпользователя или как VMXroot на платформах Intel), создавая, таким образом, платформу аппаратной виртуализации, представленную как виртуальная машина 32 для другого программного обеспечения, выполняемого на хостовой системе 10. Операционная система 34, такая как OS 34a-b на фиг. 2, выполняется в виртуальной среде VM 32, причем OS 34 имеет более низкие привилегии процессора (например, режим ядра или кольцо 0 на платформах Intel), чем гипервизор 30. OS 34 может дополнительно включать в себя защищенный объект 36а OS, выполняемый на уровне привилегий OS. В некоторых вариантах осуществления защищенный объект 36а OS включает в себя структуру данных, выбранную для защиты от вредоносных программ, такую как объект драйвера, как показано ниже. Набор приложений 42e-f, например, приложения 42a-d на фиг. 2, выполняются на более низком уровне привилегий процессора (например, режим пользователя на платформах Intel), чем уровень привилегий OS 34.
[0028] В некоторых вариантах осуществления антивредоносное приложение 44 выполняется на OS 34, как правило на том же уровне привилегий процессора, что приложения 42e-f. Примерные антивредоносные приложения 44 включают в себя антивирусные программы или большие программные пакеты, содержащие антивирус, антишпионскую программу и другие приложения компьютерной безопасности. В некоторых вариантах осуществления антивредоносный драйвер 36b выполняется на уровне процессора, сходном с уровнем OS 34. Драйвер 36b обеспечивает функциональность для вредоносного приложения 44, например, для сканирования памяти на наличие вредоносных сигнатур и/или для детектирования поведения, характерного для вредоносных программ, программных объектов, выполняющихся на OS 34.
[0029] В некоторых вариантах осуществления движок 40 интроспекции выполняется по существу на том же уровне привилегий, что гипервизор 30, и конфигурирован с возможностью выполнять интроспекцию виртуальных машин, таких как VM 32. Интроспекция VM или программного объекта, выполняемого на соответствующей VM, может включать в себя, среди прочего, анализ поведения программного объекта, определение и/или доступ к адресам памяти этих программных объектов, ограничение доступа определенных процессов к содержимому памяти, расположенному на этих адресах, и анализ этого содержимого. В некоторых вариантах осуществления программные объекты, являющиеся целью движка 40 интроспекции, содержат, среди прочего, процессы, потоки команд, регистры и структуры данных, такие как таблицы страниц и объекты драйверов.
[0030] В качестве примерной работы движок 40 интроспекции памяти может устанавливать защищенную область 38, содержащую программные объекты, защищенные от вредоносных программ. Защита этих объектов может включать в себя ограничение доступа к области памяти, хранящей данные, принадлежащие к соответствующим объектам. Поскольку гипервизор 30 имеет контроль над пространством памяти VM 32, защита определенных областей памяти, используемой OS 34, может быть достигнута, например, посредством установки гипервизором 30 соответствующих прав доступа к соответствующим областям памяти. В некоторых вариантах осуществления защищенная область 38 включает в себя защищенный объект 36а OS и антивредоносный драйвер 36b. Когда OS 34 является операционной системой Linux, примерные защищенные объекты 36а OS включают в себя, среди прочего: ядро (код и/или данные только для чтения, такие как sys_call_table), регистры управления sysenter/syscall и адреса int 0×80 (syscall) и/или int 0×01. Примеры защищенных объектов OS Windows, включают в себя: ядро (код и/или данные только для чтения, в том числе таблица диспетчеризации системных сервисов), различные таблицы дескрипторов (например, прерываний, глобальные и/или локальные), регистры управления sysenter/syscall и/или другие регистры, такие как регистр дескрипторов таблицы прерываний (IDTR), регистр глобальной таблицы дескрипторов (GDTR), и регистр локальной таблицы дескрипторов (LDTR). В некоторых вариантах осуществления защищенный объект 36а OS может также включать в себя, среди прочего, конкретные объекты драйверов и таблицы диспетчеризации быстрого ввода/вывода (I/O) (например, disk, atapi, clfs, fltmgr, ntfs, fastfat, iastor, iastorv). Другие защищенные объекты 36a OS могут включать в себя определенные модельно зависимые регистры (MSR), такие как ia32_systenter_eip, ia32_sysenter_esp, ia32_efer, ia32_star, ia32_lstar и ia32_gs_base. в некоторых вариантах осуществления движок 40 интроспекции также защищает таблицы страниц для предотвращения несанкционированного изменение маршрута к адресам, содержащим вредоносный код.
[0031] Виртуальные машины, как правило, работают с виртуализированной физической памятью, то есть с виртуальным представлением фактической физической памяти 14 хостовой системы 10. Виртуализованная физическая память содержит непрерывное пространство виртуализированных адресов, специфичное для каждой хостовой VM 32a-b, причем части указанного пространства отображены на адреса в физической памяти 14 и/или физических устройствах 20 хранения. В системах, конфигурированных с возможностью поддерживать виртуализацию, такое отображение, как правило, достигается посредством специальных структур данных, управляемых процессором 12, таких как расширенные таблицы страниц (EPT) или вложенные таблицы страниц (NPT). В таких системах виртуализированная физическая память может быть разделена на единицы, известные в данной области техники как страницы, причем страница представляет собой наименьшую единицу виртуализированной физической памяти, индивидуально отображаемой на физическую память при помощи таких механизмов, как EPT и/или NPT, т.е. отображение между физической и виртуализированной физической памятью выполняется при помощи разбиения на страницы. Все страницы, как правило, имеют заданный размер, например, 4 килобайта, 2 мегабайта и т.д. Разделение виртуализированной физической памяти, как правило, конфигурировано гипервизором 30. В некоторых вариантах осуществления гипервизор 30 также конфигурирует EPT/NPT и, таким образом, отображение между физической памятью и виртуализированной физической памятью. Некоторые конфигурации аппаратного обеспечения позволяют гипервизору 30 выборочно управлять доступом к данным, хранящимся в каждой странице, например, путем установления прав доступа на чтение и запись для соответствующей страницы. Такие права могут быть установлены, например, путем модифицирования ввода соответствующей страницы в ЕРТ или NPT. Гипервизор 30 может, таким образом, выбирать, какой программный объект может получать доступ к данным, хранящимся по адресам в каждой странице, и может указывать, какие операции разрешены в отношении соответствующих данных, например, чтение, запись и т.д. Попытка программного объекта выполнить операцию, такую как чтение данных из страницы или запись данных на странице, в отношении которой объект не имеет соответствующее право, может вызывать выходное событие виртуальной машины (например, событие VMExit на платформах Intel). В некоторых вариантах осуществления выходные события виртуальной машины передают управления процессором от VM, выполняющей соответствующий программный объект, к гипервизору 30, что, таким образом, предотвращает несанкционированные попытки чтения/записи.
[0032] В некоторых вариантах осуществления OS 34 конфигурирует пространство виртуальной памяти (которое также называется логическим адресным пространством) и открывает указанное пространство виртуальной памяти для приложения, такого как приложения 42e-f и 44 на фиг. 3 и/или для другого программного объекта, такого как защищенные объекты 36a-b. В этих системах OS 34 конфигурирует и поддерживает отображение между указанным пространством виртуальной памяти и виртуализированной физической памятью VM 32, например, с использованием механизма таблицы страниц. В некоторых вариантах осуществления указанное пространство виртуальной памяти также разделено на страницы, причем эти страницы, представляют собой наименьшую единицу виртуальной памяти, индивидуально отображаемой на виртуализированную физическую память при помощи OS 34 (отображение от виртуальной на виртуализированную физическую память выполняется при помощи гранулярности страниц).
[0033] Фиг. 4 иллюстрирует примерное отображение адресов памяти в варианте осуществления, показанном на фиг. 2. Программному объекту, например, приложению 42а или гостевой OS 34а, присваивается виртуальное адресное пространство 214а при помощи гостевой OS 34а. Когда соответствующий программный объект пытается получить доступ к примерный адресу 50а памяти, адрес 50а переводится виртуализированным процессором гостевой VM 32а, согласно таблицам страниц, конфигурированным и управляемым гостевой OS 34а, в адрес 50b в пространстве 114а виртуализированной физической памяти виртуальной машины 32а. Адрес 50b также известен в данной области техники как гостевой физический адрес. Гипервизор 30, который конфигурирует и управляет физической виртуализированной памятью 114а, затем отображает адрес 50b в адрес 50 с в физической памяти 14 хостовой системы 10, например, с использованием средств ЕРТ или NPT, как описано выше.
[0034] Сходным образом пространство 214b виртуальной памяти устанавливается гостевой OS 34b для приложений (например, 42c) или других программных объектов, выполняемых на гостевой VM 32b. Примерный виртуальный адрес 50d в пространстве 214b переводится посредством виртуализированного процессора гостевой VM 32b, согласно таблицам перевода, конфигурируемым и управляемым гостевой OS 34b, в адрес 50е в пространстве 114b виртуализированной физической памяти гостевой VM 32b. Адрес 50е дополнительно преобразуется гипервизором 30 в адрес 50f в физической памяти 14.
[0035] В некоторых вариантах осуществления гипервизор 30 устанавливает его собственное пространство 214 с виртуальной памяти, содержащее представление физической памяти 14, и использует механизм перевода (например, таблицы страниц) для отображения адресов в пространстве 214c в адреса в физической памяти 14. На фиг. 4 такое примерное отображение переводит адрес 50g в адрес 50h. Аналогично, адреса, такие как 50c и 50f в физической памяти 14, соответствуют адресам 50k и 50m, соответственно, в пространстве 214с виртуальной памяти гипервизора 30.
[0036] Важной задачей OS 34a-b является динамическое выделение секций памяти программным объектам, выполняемым на соответствующей VM 32a-b, и освобождение таких секций для повторного использования, когда они больше не нужны соответствующему процессу. Это выделение памяти может выполняться на уровне виртуальной памяти 214a-b или на уровне виртуализированной физической памяти 114a-b соответствующей виртуальной машины. Выделение и освобождение памяти, как правило, выполняются специальными функциями управления памятью OS, такими как KeAllocatePoolWithTag и KeFreePoolWithTag в Windows.
[0037] Благодаря вышеописанным механизмам отображения памяти выделение памяти целевому объекту всегда приводит к выделению секции виртуализированной физической памяти соответствующей VM целевому объекту. Размер соответствующей секции может быть только частью страницы или больше одной страницы согласно размеру страницы и требованиям к памяти соответствующего программного объекта. Ниже говорится, что секция охватывает набор страниц, когда каждая страница этого набора страниц содержит часть соответствующей секции. Нескольким объектам может быть выделены различные секции той же самой страницы. Фиг. 5 показывает примерную область виртуализированной физической памяти, разделенной на множество страниц 26a-d, а также примерное выделение памяти, в котором две секции 52 и 54, каждая из которых выделена отдельному программному объекту, охватывают ту же самую страницу 26b. Другая примерная секция 56 охватывает две страницы 26c-d.
[0038] В отличие от этого фиг. 6 показывает примерное выделение памяти согласно некоторым вариантам осуществления настоящего изобретения. Как подробно показано ниже, когда целевому объекту требуется защита от вредоносных программ, например, когда целевой объект представляет собой объект драйвера или другой объект, принадлежащий защищенной области 38, некоторые варианты осуществления модуля 46 подготовки защиты модифицируют выделение памяти целевому объекту, так что каждая страница, содержащая часть целевого объекта, резервируется для этого целевого объекта.
[0039] Специалисту в данной области техники понятно, что резервирование набора страниц для целевого объекта может быть достигнуто несколькими способами. В некоторых вариантах осуществления резервирование страницы включает в себя выделение всей страницы целевому объекту, как показано в примере на фиг. 6, в котором секция 58 занимает всю страницу 26f. Такое исключающее выделение может быть достигнуто, например, путем изменения размера секции, выделенной соответствующему объекту, с получением нового размера, равного целому кратному размеру страницы, как показано более подробно ниже. В противоположность этому в том же примере на фиг. 6, незащищенному программному объекту выделяется секция 60, содержащая только часть другой страницы 26g. В других вариантах осуществления резервирование набора страниц для целевого объекта не обязательно включает в себя изменение размера целевого объекта или выделение всего набора страниц целевому объекту, при этом, однако, оно может быть достигнуто путем обеспечения другим способом того, что никакому объекту, за исключением целевого объекта, не выделяется пространство памяти в соответствующем наборе страниц. Например, резервирование страницы для целевого объекта может включать в себя исключение набора пустых страниц, например, при инициализации OS 34, и выделение (или перемещение) этого объекта в соответствующий набор пустых страниц, как показано более подробно ниже.
[0040] Фиг. 7 иллюстрирует примерную последовательность этапов, выполняемых движком 40 интроспекции памяти согласно некоторым вариантам осуществления настоящего изобретения. Движок 40 может быть конфигурирован для проверки и/или защиты множества виртуальных машин, выполняемых одновременно на хостовой системе 10. Этапы, показанные на фиг. 7, могут быть повторены для каждой такой виртуальной машины. На этапе 102 движок 40 детектирует инициализацию OS 34. В некоторых вариантах осуществления этап 102 включает в себя перехват, из уровня гипервизора 30, событий процессора, характерных для инициализации OS. Инструкции процессора, которые выполняют операции инициализации OS, как правило, требуют привилегии процессора ядра, например, кольцо 0 на платформах Intel. При выполнении из уровня привилегии OS 34, такие инструкции могут вызывать выходное событие виртуальной машины, такое как событие VMExit на платформах Intel, которое передает управление процессором 12 от OS 34 к гипервизору 30. Выходные события виртуальной машины могут, таким образом, анализироваться гипервизором 30 и/или движком 40 интроспекции. Примеры событий и/или инструкций процессора, характеризующих инициализацию OS, включают в себя инициализацию таблицы дескрипторов прерывания и глобальной таблицы дескрипторов, которые выполняются в начале инициализации OS Windows, с использованием привилегированных инструкций, таких как LIDT и/или LGDT. Другие примеры событий/инструкции, характеризующих инициализацию OS, включают в себя запись в модельно зависимые регистры SYSENTER и/или SYSCALL с использованием машинной инструкции WRMSR, что выполняется сразу после того, как образ ядра OS был загружен в память. Другие примеры включают в себя инициализацию других модельно зависимых регистров, программируемых OS 34, таких как, среди прочего, регистры конфигурации контроля машины и базовые регистры FS/GS. В некоторых вариантах осуществления детектирование таких событий/инструкции указывает на то, что OS 34 была инициализирована.
[0041] На этапе 104 в некоторых вариантах осуществления движка 40 интроспекции памяти детектируется тип операционной системы, которая выполняется в данный момент или инициализируется на соответствующей гостевой VM. Примерные типы OS включают в себя, среди прочего, Windows, Linux, MacOS и Android. Тип OS может содержать, среди прочего, индикатор имени, например Windows, и индикатор версии, например 7, домашняя (Home) или корпоративная (Enterprise). В некоторых вариантах осуществления этап 104 включает в себя идентификацию типа OS согласно содержанию модельно зависимого регистра (MSR) соответствующей гостевой VM или согласно содержанию секции памяти, на которую указывает соответствующий MSR. В некоторых вариантах осуществления движок 40 может определять имя OS согласно данным, записываемым в эти MSR инструкциями, перехваченными на этапе 102. Например, движок 40 может перехватывать инструкции для записи в SYSENTER или в SYSCALL MSR и определять тип OS, выполняемой в данный момент или инициализируемой в данный момент, согласно параметру этой инструкции записи. Другие примерные регистры, которые могут обеспечивать информацию об имени OS, включают в себя, среди прочего, регистры управления, таблицу дескрипторов прерывания (ЮТ) и глобальную таблицу дескрипторов (GDT). Для идентификации типа OS согласно записям MSR движок 40 интроспекции может дополнительно использовать сопоставление с образцом предварительно заданной библиотеки обработчиков быстрых системных вызовов, специфичных для каждой OS (например, системные вызовы, обрабатываемые согласно содержанию SYSCALL или SYSENTER MSR). Такие библиотеки быстрых системных вызовов могут быть оснащены движком 40 интроспекции и могут обновляться при помощи периодических обновлений программного обеспечения или обновлений по требованию.
[0042] В некоторых вариантах осуществления индикатор версии (например, имя выпуска, номер сборки и т.д.), может быть получен путем синтаксического анализа определенных структур данных ядра, специфичных для соответствующего типа OS. Примерными структурами данных, позволяющими идентифицировать версию OS, являются, среди прочего, определенные экспортные символы ядра Linux или определенные экспортируемые символы ядра Windows, такие как NtBuildNumber.
[0043] На этапе 106 движок 40 интроспекции памяти может вызывать выполнение модулем 46 подготовки защиты операций по подготовке памяти, при подготовке движка 40 для применения защиты целостности. В некоторых вариантах осуществления такие операции по подготовке памяти включают в себя модифицирование выделения целевого объекта, выбранного для защиты от вредоносных программ, так что все страницы, содержащие части целевого объекта, резервируются для соответствующего целевого объекта. В некоторых вариантах осуществления этап 106 может включать в себя установление зарезервированного пула невыделенных страниц памяти для выделения позже исключительно объектам, выбранным для защиты от вредоносных программ. Для создания этого зарезервированного пула модуль 46 подготовки защиты может вызывать встроенную функцию выделения памяти OS для выделения соответствующего пула фиктивному программному объекту заданного размера (например, 20 Мб). Модуль 46 может, таким образом, гарантировать, что соответствующий пул памяти не будет использоваться при дальнейших выделениях, выполняемых встроенными функциями управления памятью OS. Функциональность модуля 46 дополнительно описана ниже со ссылками на фиг. 8-10.
[0044] На этапе 108 движок 40 интроспекции памяти выбирает целевой объект для защиты. В некоторых вариантах осуществления этап 108 включает в себя идентификацию программных объектов, требующих защиты от вредоносных программ (см. защищенную область 38 на фиг. 3), согласно типу OS, определенному на этапах 102-104. Примерные объекты, являющиеся целевыми для защиты, представляют собой, среди прочего, объекты драйверов OS и антивредоносный драйвер 36b. Для идентификации таких объектов движок 40 интроспекции памяти может поддерживать список специфических для OS объектов, требующих защиты от вредоносных программ, при этом список может обновляться посредством периодических и/или по требованию обновлений программного обеспечения. В некоторых вариантах осуществления движок 40 может перехватывать каждую попытку OS 34 загрузить драйвер, а также выполнять набор проверок целостности и/или подписи соответствующего драйвера. Такие проверки могут включать в себя сравнение хэша части соответствующего драйвера с библиотекой хэшей, определенных для известных драйверов, и может позволять идентифицировать антивредоносный драйвер 36b среди множества драйверов, которые OS 34 использует и/или пытается загрузить в данный момент. После идентификации драйвер 36b может быть защищен наряду с другими компонентами OS, как показано более подробно ниже.
[0045] Этап 110 ожидает до тех пор, пока целевой объект не будет инициализирован. Например, когда драйвер инициализирован, OS 34 выполняет ряд законных записей конфигурации в область памяти, выделенную соответствующему драйверу или другим программным объектам, выбранным согласно соответствующему драйверу или согласно устройству, для управления которого конфигурирован соответствующий драйвер, при этом движок 40 может обеспечивать возможность выполнения этих законных записей в качестве части этапа 110. Для определения того, был ли инициализирован целевой объект, некоторые варианты осуществления движка 40 могут перехватывать события и/или инструкции процессора, характеризующие инициализацию драйвера. Примеры таких событий включают в себя, среди прочего, модифицирования в определенных областях соответствующего объекта.
[0046] На этапе 112 движок 40 защищает соответствующий целевой объект от нежелательного модифицирования, например, вредоносным программным обеспечением, пытающимся подвергнуть опасности OS 34. Несколько таких механизмов защиты памяти известно из данной области техники. В некоторых вариантах осуществления защита целевого объекта включает в себя защиту от записи пространства памяти, которое выделено OS 34 соответствующему целевому объекту. Эта защита от записи может быть реализована гипервизором 30 на запрос движку 40 интроспекции памяти с использованием структур данных, таких как ЕРТ или NPT. Например, гипервизор 30 может установить страницы памяти, выделенные целевому объекту, как только для чтения путем модифицирования битов с правами на доступ EPT/NPT соответствующих страниц. Альтернативно гипервизор 30 может перехватывать любую попытку записи в страницах памяти, выделенных целевому объекту, и перенаправлять соответствующую попытку на движок 40 интроспекции памяти для анализа. После анализа этой попытки записи движок 40 интроспекции памяти может решить, следует ли разрешить или запретить (сбросить) соответствующую операцию записи. Этапы 108-112 могут повторяться для всех целевых объектов, требующих защиты от вредоносных программ.
[0047] В некоторых вариантах осуществления операции по подготовке памяти, выполняемые модулем 46 подготовки защиты, включают в себя модифицирование выделения памяти целевого программного объекта, который выбран для защиты от вредоносных программ, причем указанное модифицирование происходит до того, как движок 40 применяет защиту целостности соответствующего программного объекта, как показано выше (фиг. 7, этапы 108-112). В некоторых вариантах осуществления модуль 46 модифицирует выделение памяти, так что страницы памяти, содержащие части целевого объекта, резервируются для соответствующего целевого объекта. Модифицирование указанного выделения памяти может содержать модифицирование результата выполнения функции управления памятью, встроенной в OS 34, и/или модифицирование самой соответствующей функции управления памятью. Встроенные функции управления памятью включают в себя программные объекты, предусмотренные изготовителем OS 34, причем встроенные функции выполняют операции выделения и освобождения памяти. Примерами таких функций являются KeAllocatePoolWithTag и KeFreePoolWithTag, которые являются встроенными для Windows OS.
[0048] В некоторых вариантах осуществления модуль 46 подготовки защиты идентифицирует набор встроенных функций управления памятью согласно типу OS, определенному движком интроспекции на этапе 104, например, путем определения адресов памяти, на которых эти функции находятся в памяти соответствующей гостевой виртуальной машины 32. Для определения этих адресов памяти модуль 46 может получить доступ к определенным структурам данных, таким как таблицы экспортируемых функций бинарных изображений ядра (например, формат загружаемого кода в Windows, формат выполняемых и компонуемых модулей в Linux).
[0049] После идентификации встроенных функций управления памятью, некоторые варианты осуществления модуля 46 могут продолжать выполнять модифицирование указанных функций путем обеспечения дополнительной функциональности. Эти модифицирования могут быть достигнуты с использованием любого способа перехватывания, известного из данной области техники. Например, модуль 46 может применять патч перенаправления, такой как инструкция VMCall или инструкция JMP, переписанного или добавленного к соответствующей встроенной функции. Другие варианты осуществления могут модифицировать запись ЕРТ соответствующей функции управления памятью с целью указания на новый адрес. В некоторых вариантах осуществления эффект от таких патчей и/или перехватов ЕРТ заключается в том, чтобы перенаправить выполнение встроенной функции на фрагмент кода, обеспеченного модулем 46 подготовки защиты; примерная функциональность такого кода приведена ниже. После перехватывания, когда OS 34 пытается выделить память целевому объекту или освободить память от целевого объекта, фрагмент кода может быть выполнен до или вместо кода соответствующей встроенной функции OS управления памятью.
[0050] Фиг. 8 показывает примерную последовательность этапов, включающих в себя модифицирование встроенной функции OS выделения памяти, такой как KeAllocatePoolWithTag в Windows, согласно некоторым вариантам осуществления настоящего изобретения. Эта последовательность может образовывать часть модуля 46 подготовки защиты и может выполняться в результате перенаправления, выполненного патчем/перехватом, примененными к соответствующей функции выделения памяти. Этап 122 применяет критерий выбора для определения, может ли объект, запрашивающий выделения памяти, претендовать на защиту от вредоносных программ. Эти определения могут быть осуществлены, например, согласно параметрам и/или аргументам вызова соответствующей функции. Примерный критерий выбора включает в себя выбор объектов согласно их типу, например объектов драйверов. В варианте осуществления, выполняющем OS 34 из семейства Windows, тип выделяемого объекта может быть определен согласно тегу выделения встроенной функции выделения памяти KeAllocatePoolWithTag. Например, тег "Driv" указывает на объект драйвера. Альтернативный критерий выбора содержит определение, находится ли запрашивающий выделение объект в списке объектов, предназначенных для защиты от вредоносных программ. Такой список может включать в себя элементы защищенной области 38 (фиг. 3). В некоторых вариантах осуществления дополнительный критерий выбора включает в себя определение, может ли выделение памяти соответствующего объекта быть безопасно модифицировано описанными ниже способами.
[0051] Этап 124 определяет, удовлетворяет ли целевой объект критерию выбора для защиты от вредоносных программ. Если нет, этап 128 возвращает управление выполнением встроенной функции выделения памяти соответствующей OS. Когда целевой объект выбран для защиты, на этапе 126, некоторые варианты осуществления модуля 46 подготовки защиты изменяют размер целевого объекта на новый размер объекта, равный целому кратному размера страницы. Изменение размера объекта этим способом может эффективно заставить программу выделения памяти выделить набор целых страниц соответствующему целевому объекту вместо фактического количества памяти, требуемой для размещения объекта. В некоторых вариантах осуществления размер целевого объекта округляется до следующего ближайшего целого кратного размера страницы. Например, целевому объекту размером 320 байт может быть выделена целая страница с размером 4 кбайт, объекту с размером 6 Кбайт могут быть выделены две целые страны с размером 4 кбайт и т.д. В некоторых вариантах осуществления, например, виртуальная машина, выполняющая Windows OS и выделяющая секцию памяти, равную по размеру по меньшей мере одной странице, автоматически выравнивает выделенную секцию к границе страницы (например, страница 58 на фиг. 6). В других вариантах осуществления этап 126 может включать в себя в явном виде выравнивание выделенной секции к границе страницы, так что все страницы, покрытые секцией, выделены исключительно целевому объекту. Специалисту в данной области понятно, что может иметься множество способов для достижения выравнивания секции к границе страницы. Например, этап 126 может включать в себя увеличение размера целевого объекта до размера одной страницы и изменение указателя на полученную выделенную секцию памяти. После завершения этапа 126 управление выполнением возвращается к встроенной функции OS управления памятью.
[0052] Фиг. 9 показывает примерную последовательность этапов, иллюстрирующую альтернативный способ, в котором модуль 46 подготовки защиты может обеспечивать выделение памяти, при котором все страницы, покрываемые секцией, выделенной защищенному программному объекту, зарезервированы для соответствующего объекта. Показанная на фиг. 9 последовательность включает в себя модифицирование функциональности встроенной функции OS выделения памяти, например, KeAllocatePoolWithTag в Windows, и может выполняться в ответ на патч/перехват, примененные к соответствующей функции выделения памяти. Последовательность этапов 132-134 проверяет, удовлетворяет ли целевой объект критерию защиты от вредоносных программ; этапы 132-134 могут выполняться способом, аналогичным способу этапов 122-124, описанных выше. Когда целевой объект не выбран для защиты, этап 138 возвращает управление процессором соответствующей встроенной функции выделения памяти. Когда целевой объект выбран для защиты от вредоносных программ, этап 136 обходит встроенную функцию выделения и непосредственно выделяет секцию, расположенную в области памяти, зарезервированной для защищенных объектов. В некоторых вариантах осуществления этап 136 включает в себя определение указателя выделения, который указывает на адрес, расположенный в зарезервированном пуле памяти, установленном модулем 46 при инициализации OS 34 (см. выше в связи с фиг. 7, этап 106). В некоторых вариантах осуществления модуль 46 может также определять указатель выделения, так что выделенная секция выравнивается к границе страницы. Затем этап 140 возвращает указатель выделения, определенный на этапе 136.
[0053] В некоторых вариантах осуществления модуль 46 подготовки защиты может также модифицировать процесс освобождения путем изменения результата выполнения встроенной функции OS освобождения памяти или путем модифицирования самой соответствующей функции. Такие модифицирования могут быть достигнуты, например, путем перехватывания встроенной функции OS освобождения памяти, например KeFreePoolWithTag, для включения дополнительной функциональности. Фиг. 10 показывает примерную последовательность этапов, включающих в себя это модифицирование функции освобождения памяти, согласно некоторым вариантам осуществления настоящего изобретения. Последовательность этапов 142-144 определяет, защищен ли от записи адрес освобождаемого объекта движком 40 интроспекции и/или гипервизором 30 (см. выше). Когда соответствующие адрес/страница не имеют такой защиты, этап 148 возвращает управление выполнением к встроенной функции OS освобождения. Когда соответствующие адрес/страница защищены от записи движком 40 и/или гипервизором 30, на этапе 146 движок 40 интроспекции памяти и/или компонент гипервизора 30 могут снять защиту, прежде чем приступить к этапу 148. В некоторых вариантах осуществления снятие защиты от соответствующего объекта включает в себя выполнение изменения в ЕРТ или NPT с указанием на то, что страница, содержащая адрес соответствующего объекта, больше не защищена от записи, например, является страницей только для чтения.
[0054] Вышеописанные примерные системы и способы обеспечивают защиту хостовой системы, такой как компьютерная система, от вредоносных программ, таких как вирусы и руткиты. В стандартных системах руткит может получить управление компьютерной системой посредством работы на уровне привилегий процессора, которой по существу сходен с уровнем операционной системы. В противоположность этому в некоторых вариантах осуществления настоящего изобретения гипервизор выполняется на компьютерной системе на самом высоком уровне привилегий, перемещая операционную систему в виртуальную машину. В некоторых вариантах осуществления движок интроспекции памяти выполняется на том же уровне привилегий процессора, что и гипервизор. Антивредоносные операции, таким образом, могут быть выполнены на более высоком уровне привилегий процессора, чем уровень операционной системы. В некоторых вариантах осуществления один движок интроспекции памяти может защищать множество виртуальных машин, выполняющихся параллельно на соответствующих компьютерных системах.
[0055] В некоторых вариантах осуществления защита соответствующей системы от вредоносных программ включает в себя, среди прочего, выбор набора критических программных объектов, таких как некоторые драйвера, регистры и таблицы страниц, и предотвращение вредоносных изменений в этих объектах. Чтобы защитить целевой объект, некоторые варианты осуществления могут предотвращать такие вредоносные изменения путем перехватывания попыток записи в пространство памяти, выделенное соответствующему объекту. Такие перехваты могут быть выполнены на уровне гипервизора.
[0056] Другие варианты осуществления могут защищать целевой объект путем маркировки пространства памяти, выделенного соответствующему объекту как только для чтения. В типичных конфигурациях аппаратного обеспечения и программного обеспечения память разделена на отдельные блоки смежных адресов, известные как страницы. Права доступа, например, разрешения на чтение и запись, как правило, устанавливаются посредством гранулярности страниц, т.е. все адреса внутри страницы имеют одинаковые права доступа. Таким образом, защита пространства памяти целевого объекта может быть достигнута, например, путем маркировки набора страниц, содержащих данные, принадлежащие соответствующему объекту, как только для чтения. Разрешения на доступ на уровне страницы управляются гипервизором, например, с использованием специализированных структур данных, таких как расширенные таблицы страниц (ЕРТ) на платформах Intel.
[0057] В традиционных системах, когда OS выделяет память программным объектам, выполняемым на соответствующей системе, множество программных объектов могут быть распределены на той же самой странице, например, когда соответствующие объекты имеют небольшие объемы требуемой памяти. В некоторых ситуациях один из соответствующих объектов может быть критичным для OS и, следовательно, требовать защиты от вредоносных программ, в то время как другому объекту на той же странице может требоваться частая и законная повторная запись. Поскольку разрешения на доступ задаются посредством гранулярности страниц, защита критического объекта может привести к отказу в доступе на запись всем объектам, находящимся на той же странице, что и критический объект. Каждая попытка записи в адрес памяти, находящийся на защищенной странице, как правило, приводит к ошибке, за которой следует передача выходным событием виртуальной машины управления процессором от OS соответствующей виртуальной машины к гипервизору. Такие события могут включать в себя загрузку и/или разгрузку состояния соответствующей виртуальной машины на процессор или из процессора, что дополнительно увеличивает вычислительные расходы. Даже законные попытки записи в страницы, содержащие, среди прочего, защищенный объект, могут, таким образом, привести к значительному торможению компьютерной системы.
[0058] В противоположность этому в некоторых вариантах осуществления настоящего изобретения модифицируется способ, посредством которого память выделяется программному объекту, требующему защиты от вредоносных программ, так что каждая страница памяти, содержащая часть соответствующего объекта, резервируется для соответствующего объекта. Это модифицирование выполняется перед применением защиты целостности к соответствующему программному объекту. Посредством обеспечения того, что никакой другой объект не использует совместно страницу памяти с целевым объектом, некоторые варианты осуществления настоящего изобретения обеспечивают защиту целостности посредством гранулярности страницы, предотвращая при этом вычислительные расходы, вызываемые перехватом законных попыток записи.
[0059] В некоторых вариантах осуществления модифицирование способа выделения, встроенного в соответствующую OS, включает в себя идентификацию функций OS выделения и освобождения памяти и перехватывание соответствующих функций для перенаправления их выполнения к набору инструкций, выполняемых на уровне привилегий процессора гипервизора. Альтернативно указанное модифицирование перенаправляет соответствующие функции на набор инструкций, выполняемых внутри виртуальной машины, выполняющей соответствующую OS, причем набор инструкций вводится в память соответствующей VM на уровне гипервизора. В некоторых вариантах осуществления функция выделения памяти модифицирована для обеспечения выделения целых страниц памяти программным объектам, требующим защиты, причем выделенная секция выравнивается к границе страницы. Таким образом, требующий защиты объект может больше не выделяться той же самой странице памяти, что и объект, который не требует защиты.
[0060] Альтернативный вариант осуществления обеспечивает то, что каждая страница, выделенная целевому объекту, зарезервирована для этого целевого объекта путем отложения зарезервированного пула памяти, например при инициализации OS. Когда операционная система запрашивает выделение памяти целевому объекту, некоторые варианты осуществления могут перенаправлять указатель выделения на адрес в зарезервированном пуле, эффективно перемещая, таким образом, этот целевой объект в зарезервированный набор страниц.
[0061] Стандартные антивредоносные технические решения, как правило, предназначены для одной операционной системы. Переключение между одной операционной системой и другой может потребовать загрузки другой версии антивредоносного программного обеспечения. В противоположность этому в некоторых вариантах осуществления настоящего изобретения тот же самый движок интроспекции памяти может обеспечивать защиту соответствующей компьютерной системы от вредоносных программ независимо от типа и версии операционной системы, работающей в данный момент. Посредством выполнения движка интроспекции памяти на уровне гипервизора и перемещения операционной системы на виртуальную машину некоторые варианты осуществления могут одновременно работать и защищать несколько операционных систем. В некоторых вариантах осуществления движок интроспекции памяти может динамически идентифицировать каждую операционную систему, например, при загрузке и может дополнительно защищать зависящие от операционной системы программные объекты и структуры данных.
[0062] Специалисту в данной области техники очевидно, что вышеупомянутые варианты осуществления могут быть изменены многими способами без отхода от объема настоящего изобретения. Соответственно, объем изобретения должен определяться прилагаемой формулой изобретения и ее допустимыми в правовом отношении эквивалентами.