Защита ресурсов операционной системы

Изобретение относится к области защиты ресурсов операционной системы. Техническим результатом является повышение эффективности защиты ресурсов операционной системы. Раскрыты инструментальные средства, выполненные с возможностью предоставления агенту защиты способности определить, находясь в памяти, недоступной из режима с привилегиями операционной системы, были ли изменены один или более ресурсов операционной системы. В некоторых случаях эти инструментальные средства могут предоставить возможность агенту защиты находиться в пределах диспетчера виртуальных машин. В других случаях инструментальные средства могут предоставить возможность агенту защиты находиться в пределах отдельного виртуального раздела, предоставленного диспетчером виртуальных машин. Работая вне режима с привилегиями операционной системы, агент защиты может быть менее подвержен атакам со стороны объектов, работающих в режиме с привилегиями операционной системы. 3 н. и 7 з.п. ф-лы, 11 ил.

 

ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ

Процессоры в вычислительных устройствах часто включают в себя привилегированные и непривилегированные режимы работы. Программное обеспечение, исполняющееся в привилегированном режиме, как правило, способно исполнять любую инструкцию, поддерживаемую процессором. Обычно ядро операционной системы выполняется в привилегированном режиме, который иногда упоминается как "Режим 0-го кольца", "Режим Супервизора" или "Режим Ядра".

Напротив, некоторое программное обеспечение, исполняемое на вычислительном устройстве, может быть ограничено исполнением только в непривилегированном режиме. Этот режим, как правило, позволяет программному обеспечению исполнять подмножество инструкций процессора. Операционная система может, таким образом, использовать непривилегированный режим, чтобы ограничить действия программного обеспечения, исполняемого в этом режиме. Например, программное обеспечение могло бы ограничиваться конкретным подмножеством памяти вычислительного устройства. Этот непривилегированный режим иногда называется "Режим 3-го Кольца" или "Пользовательский Режим". В большинстве случаев пользовательские приложения для вычислительного устройства работают в этом непривилегированном режиме.

Если приложение работает в этом непривилегированном режиме, это приложение может запрашивать доступ к части памяти, которая не может быть доступна напрямую из непривилегированного режима. Приложение может, например, захотеть выполнить операцию в этой части памяти, такую как "создание нового файла". Этот запрос обычно направляется через шлюз вызова или другую инструкцию системного вызова, которая преобразует этот код непривилегированного режима в код привилегированного режима. Это преобразование гарантирует, что непривилегированный режим не имеет прямого доступа к памяти, которая определена как доступная только из привилегированного режима.

В соответствии с этими режимами автор вредоносного кода может получить доступ к привилегированному режиму и установить вредоносное программное обеспечение, которое изменяет поведение вычислительного устройства. Это вредоносное программное обеспечение может, например, менять размещение файлов, скрывать файлы, модифицировать файлы, изменять нажатия клавиш или тому подобное. Некоторое из этого вредоносного программного обеспечения может содержать "rootkit" (набор инструментов, позволяющих закрепиться на вычислительном устройстве и предотвратить свое обнаружение), который не только изменяет поведение вычислительного устройства, но также скрывает себя в памяти привилегированного режима. Антивирусные приложения, исполняющиеся на вычислительном устройстве, соответственно, могут быть не в состоянии обнаружить скрытый rootkit, таким образом, давая возможность вредоносному программному обеспечению продолжать свои вредоносные действия. Кроме того, такое вредоносное программное обеспечение может внести изменяющую вставку (патч) во встроенную систему защиты операционной системы, что обсуждается ниже.

Автор вредоносного программного обеспечения может получить доступ к привилегированному режиму и загрузить вредоносное программное обеспечение на вычислительное устройство разными способами, в том числе обманом заставляя пользователя вычислительного устройства невольно устанавливать вредоносное программное обеспечение на собственное пользовательское вычислительное устройство. В результате современные операционные системы часто применяют одну или более систем защиты, чтобы обнаружить такое вредоносное программное обеспечение. Эти системы защиты, как правило, отслеживают некоторые важные ресурсы операционной системы, чтобы обнаружить любые изменения этих ресурсов. Если такая система защиты обнаруживает такое изменение, то система защиты может решить, что конкретный ресурс был заражен вредоносным программным обеспечением. Эти системы защиты также могут предоставлять для антивирусного приложения пользователя список приложений, в текущее время находящихся в памяти непривилегированного режима. Конечно, если вредоносное программное обеспечение успешно укрылось, то оно не появится в предоставляемом списке. Кроме того, если вредоносное программное обеспечение успешно внесло изменяющую вставку в систему защиты, то система защиты не сможет работать или по другим причинам не сможет обнаружить какие-либо изменения важных ресурсов операционной системы.

Несмотря на то что эти системы защиты могут быть эффективными, они также могут страдать от некоторых недостатков. Во-первых, эти системы часто полагаются на незаметность и, следовательно, уязвимы при применении, если идентифицируются вредоносным программным обеспечением. То есть, если вредоносное программное обеспечение дешифрует идентификационную информацию и определит местоположение системы защиты, оно может вывести из строя саму систему защиты. Автор вредоносного программного обеспечения может также информировать других относительно того, как сделать то же самое. Кроме того, и это связано с первым, эти системы защиты, как правило, работают в той же защищенной области, что и операционная система (например, непосредственно в привилегированном режиме). Следовательно, система защиты сама подвергается атаке, если вредоносное программное обеспечение приобретает доступ к привилегированному режиму и способно демаскировать скрытую систему защиты. Наконец, эти системы защиты инициализируются одновременно с операционной системой или привилегированным режимом. Следовательно, если вредоносное программное обеспечение, или автор вредоносного программного обеспечения, захватывает контроль над вычислительным устройством до этой инициализации, это может препятствовать инициализации системы защиты.

РАСКРЫТИЕ ИЗОБРЕТЕНИЯ

Настоящий документ описывает инструментальные средства, способные предоставить возможность агенту защиты определить, находясь в памяти, недоступной из режима с привилегиями операционной системы, были ли модифицированы один или более ресурсов операционной системы. В некоторых вариантах осуществления эти инструментальные средства могут предоставить возможность агенту защиты находиться в диспетчере (управляющей программе) виртуальных машин. В других вариантах осуществления инструментальные средства могут предоставить возможность агенту защиты находиться в пределах особого виртуального раздела, предоставляемого диспетчером виртуальных машин. Действуя вне режима с привилегиями операционной системы, агент защиты может быть менее уязвимым для атак со стороны объектов, работающих в режиме с привилегиями операционной системы.

Данное раскрытие изобретения предусмотрено для представления в упрощенной форме набора концепций, которые дополнительно описываются ниже в подробном описании изобретения. Данное раскрытие изобретения не предназначено для установления ключевых или существенных признаков заявляемого изобретения, а также не предназначено для использования в качестве помощи при определении объема заявляемого изобретения. Термин "инструментальные средства", например, может относиться к системе(ам), способу(ам), машиночитаемым инструкциям и/или технологии(ям), что предполагается в вышеприведенном контексте и всюду в настоящем документе.

ПЕРЕЧЕНЬ ФИГУР ЧЕРТЕЖЕЙ

Фиг. 1 демонстрирует иллюстративное рабочее окружение, в котором могут работать различные варианты осуществления инструментальных средств.

Фиг. 2 показывает различные права на доступ к памяти вычислительного устройства со стороны модулей, продемонстрированных на Фиг. 1.

Фиг. 3 изображает различные блоки памяти вычислительного устройства, в которых находятся некоторые из модулей, продемонстрированных на Фиг. 1.

Фиг. 4 является блок-схемой последовательности операций способа, демонстрирующей иллюстративный способ, которым диспетчер виртуальных машин может защитить блок памяти, соотнесенный с агентом защиты, и установить счетчик времени для запуска агента.

Фиг. 5 демонстрирует иллюстративную архитектуру, имеющую диспетчера виртуальных машин, выполненную с возможностью виртуализации физических процессоров в виртуальные процессоры с множественными операционными системами и виртуальный процессор агента защиты.

Фиг. 6 демонстрирует, как производительность физических процессоров, изображенных на Фиг. 5, может распределяться среди различных виртуальных процессоров.

Фиг. 7 является иллюстративным процессом, демонстрирующим некоторые способы, которыми инструментальные средства могут активировать и запустить агент защиты, который находится в местоположении, которое недоступно из режима с привилегиями операционной системы.

Фиг. 8 является иллюстративным процессом, демонстрирующим некоторые способы, которыми инструментальные средства могут изменить диспетчера виртуальных машин, чтобы активировать и запустить агент защиты, который находится в местоположении, которое недоступно из режима с привилегиями операционной системы.

Фиг. 9 является иллюстративным процессом, демонстрирующим некоторые способы, которыми инструментальные средства могут создавать режим с привилегиями агента защиты, выполняя запрос к диспетчеру виртуальных машин.

Фиг. 10 является иллюстративным процессом, демонстрирующим некоторые способы, которыми инструментальные средства могут создавать режим с привилегиями агента защиты, виртуализируя реальный компьютерный процессор в виртуальные компьютерные процессоры, по меньшей мере один из которых должен запускать агента защиты.

Фиг. 11 является иллюстративным процессом, демонстрирующим некоторые способы, которыми инструментальные средства могут активировать режим с дополнительными привилегиями, не представленный на базовом физическом процессоре.

Одинаковые номера используются повсюду в раскрытии и на чертежах для ссылки на подобные компоненты и признаки.

ПОДРОБНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ

Общий обзор

Последующий документ описывает инструментальные средства, выполненные с возможностью эксплуатации агента защиты таким способом, который делает агента защиты устойчивым к изменениям или недоступным из режима с привилегиями операционной системы. Эти инструментальные средства, таким образом, предоставляют возможность защиты самого агента защиты, тем самым гарантируя способность агента защиты обнаруживать изменения важных ресурсов операционной системы. В дополнение, эти инструментальные средства могут завершить работу операционной системы или режима с привилегиями операционной системы в ответ на обнаружение изменений ресурсов или в ответ на попытку модификации самого агента защиты. Кроме того, эти инструментальные средства могут предоставить возможность агенту защиты обеспечивать неизменяемость ресурсов операционной системы без необходимости в дальнейшем обнаруживать модификацию ресурсов.

Окружение, в котором инструментальные средства могут предоставить возможность этих и других действий, излагается ниже, в параграфе, озаглавленном Иллюстративное Операционное Окружение. За ним следует параграф, озаглавленный Автономные Агенты Защиты, который включает в себя два подпараграфа. Первый подпараграф, озаглавленный Агенты Защиты в Диспетчере виртуальных машин, описывает один иллюстративный способ, при котором агент защиты может находиться и исполняться в пределах диспетчера виртуальных машин. За ним следует другой подпараграф, озаглавленный Агенты Защиты в Виртуальном Разделе, описывающий один иллюстративный способ, при котором агент защиты может существовать и исполняться в виртуальном разделе, обособленном от раздела операционной системы.

Далее следует другой параграф, озаглавленный Автономные Режимы с Привилегиями Агента Защиты, который также включает в себя два подпараграфа. Первый подпараграф описывает один иллюстративный способ, которым счетчик времени диспетчера виртуальных машин может добавить режим с привилегиями агента защиты для базового процессора, и озаглавлен Запросы на Защиту к Диспетчеру виртуальных машин. За ним следует подпараграф, озаглавленный Виртуальные Процессоры Агента Защиты, который описывает другой способ, которым может быть создан режим с привилегиями агента защиты, на этот раз с использованием множественных виртуальных процессоров, включающих в себя одно, выполненное с возможностью запуска агента защиты в режиме с привилегиями агента защиты. Далее следует параграф, озаглавленный Иллюстративное Использование Инструментальных Средств, который описывает пример ранее описанных инструментальных средств в действии. Наконец, параграф, озаглавленный Другие Варианты Осуществления Инструментальных Средств, описывает различные другие варианты осуществления и способы, которыми инструментальные средства могут функционировать. Настоящий общий обзор, включающий в себя эти заголовки и краткие изложения параграфов, предусмотрен для удобства читателя и не предназначен для ограничения объема, определяемого формулой изобретения, или названных параграфов.

Иллюстративное Рабочее Окружение

Перед подробным описанием инструментальных средств предоставляется нижеследующее рассмотрение иллюстративного рабочего окружения, чтобы помочь читателю в понимании некоторых способов, которыми могут применяться различные аспекты изобретения, касающиеся инструментальных средств. Окружение, описываемое ниже, представляет собой только один пример и не предполагает ограничения возможности применения инструментальных средств каким-либо конкретным рабочим окружением. Могут использоваться другие окружения без отступления от сущности и объема заявляемого изобретения. Например, в то время как последующие параграфы описывают варианты осуществления с единственным агентом защиты, также могут использоваться множественные агенты защиты. В некоторых случаях агенты защиты могут запускаться независимо и параллельно. В таких вариантах агенты защиты обычно имеют возможность осуществлять доступ только к памяти в пределах своего соответствующего раздела. Кроме того, технические приемы, описываемые ниже, могут использоваться одновременно. То есть разные агенты защиты могут использовать разные технические приемы в пределах одного и того же рабочего окружения.

Возвращаясь к текущему примеру, Фиг. 1 демонстрирует одно такое иллюстративное рабочее окружение 100 в целом. Это окружение включает в себя вычислительное устройство 102, которое само включает в себя один или более процессоров 104, а так же машиночитаемые носители 106. Машиночитаемые носители 106 включают в себя диспетчера 108 виртуальных машин (например, гипервизор), который может предоставить возможность виртуализации одного или более процессоров во множественные виртуальные процессоры. Диспетчер 108 виртуальных машин также может предоставить множественные виртуальные разделы. Один или более виртуальные процессоры могут соотноситься с каждым разделом, и эти виртуальные процессоры распределяются по доступным физическим процессорам. Как продемонстрировано в некоторых вариантах осуществления, диспетчер виртуальных машин может предоставить первый виртуальный раздел 110 и второй виртуальный раздел 112. Как подробно обсуждается ниже, эти разделы могут служить для отделения функций операционной системы от служб агента защиты.

Как тоже продемонстрировано, машиночитаемые носители 106 дополнительно включают в себя операционную систему (ОС) 114, а также одно или более пользовательских приложений 116. Операционная система 114 предоставляет службы (сервисы) 118 операционной системы пользовательским приложениям 116, таким образом, позволяя приложениям функционировать на вычислительном устройстве. В дополнение, операционной системе принадлежат один или более ресурсов 120 операционной системы. Иллюстративные ресурсы включают в себя таблицу диспетчеризации системных служб (SSDT), таблицу диспетчеризации прерываний (IDT), глобальную таблицу дескрипторов (GDT) и тому подобное. Как тоже продемонстрировано, операционная система может включать в себя вредоносное программное обеспечение 122 (т.е. злонамеренный код), который, возможно, был загружен на вычислительное устройство обсуждавшимся выше способом или иначе. Один или более агентов защиты, обсуждаемых ниже, могут обнаружить изменения, произведенные в ресурсах операционной системы вредоносным программным обеспечением, и, в ответ на обнаружение, предпринять защитное действие. Если агент производит такое определение, то этот агент защиты может завершить работу операционной системы и/или вычислительного устройства или может предпринять другое нейтрализующее действие.

Обсудив структуру вычислительного устройства, теперь обратим внимание на различные режимы привилегий, представленные на базовых одном или более физических процессорах 104. Режим 124 с привилегиями диспетчера виртуальных машин представляет собой самый привилегированный режим, продемонстрированный на Фиг. 1. Этот режим привилегий имеет доступ ко всем или почти ко всем ресурсам и памяти устройства. Находясь в режиме 124 с привилегиями диспетчера виртуальных машин, диспетчер виртуальных машин может планировать работу процессоров и разрешать доступ к областям памяти для каждого виртуального раздела. В то время как операционная система, запущенная в разделе, может полагать, что она управляет всеми ресурсами физического процессора, в действительности она управляет только частью, которая задается диспетчером виртуальных машин.

Менее привилегированный, чем режим с привилегиями диспетчера виртуальных машин, режим 126 с привилегиями операционной системы имеет доступ ко всем ресурсам 120 операционной системы и к большей части или ко всей памяти операционной системы. Этот режим привилегий, однако, не имеет доступа к каким-либо ресурсам или памяти, соотнесенным с другим разделом, например, со вторым виртуальным разделом 112. Тем не менее, поскольку этот режим привилегий, как правило, имеет доступ ко всей памяти операционной системы, он иногда упоминается как "Привилегированный Режим". Названия "Режим 0-го кольца", "Режим Супервизора" или "Режим Ядра" также могут описывать этот режим привилегий. Как обсуждалось выше, пользовательское приложение, работающее в режиме 126 с привилегиями операционной системы, как правило, способно исполнять большинство инструкций, предоставляемых процессором, за исключением тех инструкций, которые зарезервированы для режима диспетчера виртуальных машин.

Этот режим с привилегиями операционной системы противопоставляется режиму 128 с привилегиями пользователя, иногда упоминаемому как "Непривилегированный Режим", "Режим 3-го Кольца" или просто "Пользовательский Режим". Как тоже обсуждалось выше, пользовательское приложение не может иметь доступа к определенной памяти, соотнесенной с операционной системой, или изменять ее при работе в режиме 128 с привилегиями пользователя. В большинстве случаев пользовательские приложения вычислительного устройства работают в этом режиме с привилегиями пользователя при выполнении основных операций.

В дополнение к режимам, обсужденным выше, Фиг. 1 также демонстрирует режим 130 с привилегиями второго виртуального раздела и режим 132 с привилегиями агента защиты. Как подробно обсуждается ниже, режим 132 с привилегиями агента защиты может иметь доступ к блоку памяти, к которому не имеет доступа режим с привилегиями операционной системы, и в то же время, как правило, не имеет такого большого доступа к памяти, как режим с привилегиями диспетчера виртуальных машин. В силу этого этот режим привилегий может быть более привилегированным, чем режим с привилегиями операционной системы, но менее привилегированным, чем режим с привилегиями диспетчера виртуальных машин.

Как тоже подробно обсуждается ниже, режим с привилегиями второго виртуального раздела, как правило, имеет доступ к памяти, соотнесенной со вторым виртуальным разделом 112. В дополнение, этот режим может иметь доступ к первому виртуальному разделу. Такой дополнительный доступ может, например, позволить агенту защиты, находящемуся во втором виртуальном разделе, просматривать память, соотнесенную с первым виртуальным разделом и его соответствующей операционной системой. Этот режим, как правило, не имеет доступа к диспетчеру виртуальных машин, и, следовательно, является менее привилегированным, чем режим с привилегиями диспетчера виртуальных машин. Тем не менее, режим с привилегиями второго виртуального раздела имеет доступ еще к блоку памяти, к которому не имеет доступа режим с привилегиями операционной системы.

Тем временем, Фиг. 2 демонстрирует права 200 на доступ к памяти вычислительного устройства. Этот чертеж, таким образом, представляет объем памяти, доступный модулям, изображенным на Фиг.1. Как продемонстрировано, диспетчер 108 виртуальных машин, работающий в режиме 124 с привилегиями диспетчера виртуальных машин, имеет наибольшие права на доступ к памяти из числа всех продемонстрированных модулей. Фактически, диспетчер виртуальных машин находится в блоке 202 памяти, и единственный имеет к нему доступ. На втором месте, агент 204 защиты (например, какой-либо из агентов защиты, проиллюстрированных на Фиг. 1) работает в режиме 132 с привилегиями агента защиты и имеет доступ ко всей памяти, за исключением блока 202, соответствующего диспетчеру виртуальных машин. Агент защиты, однако, имеет доступ к блоку 206 памяти, который является блоком памяти, в котором находится сам агент защиты.

Операционная система 114, тем временем, работает в режиме 126 с привилегиями операционной системы и имеет доступ ко всей памяти, за исключением блока 202 и блока 206. Притом что операционная система не может осуществить доступ к блоку 206 памяти, соотнесенному с агентом защиты, операционная система и соотнесенный с ней режим привилегий имеет доступ к блоку 208 памяти. Этот блок 208 памяти иногда именуется как память ядра или компонент низшего уровня операционной системы и, как правило, содержит ресурсы, показанные на Фиг. 1. Даже если вредоносное программное обеспечение загружается и работает в блоке 208 памяти, тем не менее, вредоносное программное обеспечение не может осуществить доступ к блоку 206 памяти, соотнесенному с агентом защиты.

Наконец, Фиг. 2 демонстрирует, что пользовательские приложения 116 имеют доступ только к блоку 210 памяти. Эти пользовательские приложения и соответствующий режим с привилегиями пользователя не имеют доступа к блоку 208 памяти, соотнесенному с компонентом низшего уровня операционной системы. Имея в виду эту операционную среду, следующие четыре параграфа подробно описывают иллюстративные способы, которые могут сделать агента защиты устойчивым к изменениям или недоступным из режима с привилегиями операционной системы.

Автономные Агенты Защиты

Следующий параграф описывает инструментальные средства, выполненные с возможностью определения, находясь в памяти, недоступной со стороны объекта, работающего в режиме с привилегиями операционной системы, независимо от того, были ли модифицированы один или более ресурсов операционной системы. В этой связи инструментальные средства могут предусматривать, что агент защиты находится в местоположении, отличном от местоположения памяти самой операционной системы. Конкретнее, следующие подпараграфы описывают, как агенты защиты могут находиться или в пределах диспетчера виртуальных машин, или в пределах автономного виртуального раздела.

Агенты Защиты в Диспетчере виртуальных машин

Этот подпараграф описывает, как агент 134 защиты может находиться непосредственно в пределах диспетчера виртуальных машин, как демонстрирует Фиг.1. Поскольку режим с привилегиями операционной системы не может осуществить доступ к диспетчеру виртуальных машин, это местоположение защищает агента защиты от любого вредоносного программного обеспечения, размещенного в памяти операционной системы. Чтобы работать из этого местоположения, агент защиты принимает идентификационную информацию одного или более ресурсов 120 операционной системы, которые агент 134 защиты может отслеживать. Эта идентификационная информация может приниматься посредством идентификатора 136 ресурса. Как продемонстрировано, операционная система может предоставить эту информацию диспетчеру виртуальных машин через вызовы интерфейса прикладного программирования (API), или операционная система может предоставить информацию в форме манифеста (блока информации, описывающего системное окружение) 138. Как обсуждалось выше, эти ресурсы могут включать в себя SSDT, IDT и GDT.

После приема идентификационной информации ресурсов агент 134 защиты распространяет службы 140 агента защиты на операционную систему 114. Эти службы агента защиты, как правило, содержат определение того, был ли какой-либо из идентифицированных ресурсов изменен. Если производится такое определение, агент защиты или диспетчер виртуальных машин может, например, завершить работу операционной системы. Службы агента защиты также могут включать в себя обеспечение неизменяемости в отношении любых ресурсов, помеченных как не имеющие возможности изменяться (например, "только для чтения").

Применение такой архитектуры начинается с загрузки и инициализации диспетчера виртуальных машин, который способен поддерживать рабочую среду для одной или более операционных систем. В данном примере диспетчер виртуальных машин поддерживает рабочую среду для единственной операционной системы 114, которая сама инициализируется после того, как загрузится диспетчер виртуальных машин. В процессе инициализации операционной системы сначала загружается блок 208 памяти, соотнесенный с компонентом низшего уровня операционной системы (например, ядром). В этом блоке 208 памяти, как правило, размещаются некоторые или все ресурсы 120 операционной системы (например, SSDT, GDT, IDT).

Перед тем или в то время как инициализируется операционная система, агент 134 защиты может начать функционировать изнутри диспетчера виртуальных машин. Как обсуждалось выше, агент защиты, как правило, принимает идентификационную информацию набора из одного или более ресурсов операционной системы и определяет, были ли изменены один или более из этих идентифицированных ресурсов. Заметим, что всякий идентифицированный ресурс часто содержит множественные компоненты в различных местоположениях, каждый из которых агент защиты может отслеживать, чтобы полностью защитить весь ресурс. Например, если манифест идентифицирует SSDT как ресурс, который подлежит мониторингу и защите, агент защиты защищает не только таблицу как таковую, но также и другие компоненты SSDT. Например, агент защиты может также отслеживать и просматривать регистр, который указывает на местоположение таблицы. Кроме того, агент защиты может также отслеживать структуры данных трансляции памяти (например, таблицы страниц), которые переводят виртуальный адрес SSDT в физический адрес. Если агент защиты не сможет делать этого, то вредоносный код может создать другую таблицу с иными отображениями таблицы страниц (т.е. обойти непосредственно SSDT).

В дополнение к идентификационной информации, агент защиты также может принимать атрибут защиты, указывающий агенту защиты, как защищать соответствующий ресурс. Например, агент защиты может принимать идентификационную информацию ресурса SSDT, а также соответствующий атрибут защиты "только для чтения". Следовательно, агент защиты узнает, что SSDT должна оставаться только для чтения и, в силу этого, не должна быть изменена. "Инициализация, только для чтения" является другим возможным атрибутом защиты, который указывает агенту защиты, что в соответствующий ресурс может быть произведена запись один раз в процессе инициализации, но после этого ресурс должен оставаться только для чтения.

Агент защиты может принимать эту идентификационную информацию ресурсов и атрибуты защиты ресурсов множеством способов и явно, и пассивно. Например, операционная система может предоставить удостоверенный цифровой подписью манифест, который идентифицирует ресурсы, которые агент защиты может отслеживать. Этот удостоверенный цифровой подписью манифест может идентифицировать ресурсы различными способами, например по имени (к примеру, SSDT, IDT, GDT и т.д.) или по адресу, который отображает ресурсы на соответствующие местоположения в блоке 208 памяти. В последних случаях, манифест может идентифицировать гостевой физический адрес, гостевой виртуальный адрес или системный физический адрес ресурса. Заметим, что в некоторых случаях, гостевой физический адрес может отображаться на фактический системный физический адрес для обнаружения фактического физического местоположения соответствующего компонента ресурса.

После того как диспетчер виртуальных машин или агент защиты принимают манифест, эти компоненты могут определить, был ли манифест фальсифицирован или изменен. Если диспетчер виртуальных машин или агент защиты производят такое определение, диспетчер виртуальных машин или агент защиты могут предпочесть отменить запуск операционной системы. В дополнение, шифрование, связанное со списком ресурсов, может быть признано недействительным, таким образом, защищая его безопасность.

В дополнение или в качестве альтернативы манифесту, агент защиты может принимать идентификационную информацию ресурсов и атрибутов защиты через один или более вызовов интерфейса прикладного программирования (API) к диспетчеру виртуальных машин (например, "гипервызовы"). По мере того как операционная система инициализируется, операционная система (и, возможно, компонент 208 низшего уровня операционной системы) может осуществлять гипервызовы к диспетчеру виртуальных машин, информирующие агента защиты об определенных ресурсах, которые могут отслеживаться и защищаться. Эти гипервызовы могут идентифицировать релевантные ресурсы так же, как обсуждалось выше. Как тоже обсуждалось выше, эти гипервызовы также могут идентифицировать атрибуты защиты ресурсов.

В вариантах осуществления, использующих удостоверенный цифровой подписью манифест наряду с одним или более гипервызовами, агент защиты может сначала просматривать ресурсы, идентифицированные в манифесте, перед тем или в то время как операционная система выполняет начальную загрузку. После этого начального просмотра операционная система может осуществлять гипервызовы к диспетчеру виртуальных машин, предписывающие агенту защиты определить, были ли изменены идентифицированные гипервызовами страницы. Манифест, таким образом, идентифицирует ресурсы для просмотра при каждой начальной загрузке операционной системы, в то время как гипервызовы идентифицируют ресурсы для динамического просмотра после их соответствующей инициализации.

Идентифицируя ресурсы, которые должны отслеживаться, агент защиты затем определяет, были ли изменены ресурсы (например, все части SSDT, обсуждавшейся выше). Агент защиты также может обеспечить неизменяемость в отношении идентифицированных ресурсов. Например, агент защиты может гарантировать, что любой ресурс, помеченный "только для чтения", не изменяется на "доступный для записи".

Чтобы отслеживать и защищать ресурсы этим способом, код, исполняющийся в пределах диспетчера виртуальных машин, может применять менеджер (средство управления) перехватов диспетчера виртуальных машин (например, менеджер 146, изображенный на Фиг. 1). Если это предписано, этот менеджер перехватов может регистрировать перехваты на различных компонентах идентифицированных ресурсов. Благодаря этой регистрации агент защиты в диспетчере виртуальных машин может теперь принимать перехваты, если делаются попытки осуществить доступ к этим идентифицированным ресурсам или модифицировать их. Собственно, агент защиты может проверять и просматривать различные компоненты идентифицированных ресурсов. Он также может активно блокировать попытки модифицировать эти ресурсы.

В некоторых вариантах осуществления агент защиты просматривает ресурсы и определяет исходное состояние ресурсов для использования при сравнении результатов будущих просмотров. В других вариантах осуществления агент защиты уже знает исходное состояние ресурсов для сравнения результатов будущих просмотров. В любом случае, агент защиты может вычислять значение хеш-функции или контрольной суммы этого исходного состояния. После этого вычисления агент защиты просматривает ресурсы перед тем, после того или в то время как операционная система выполняет начальную загрузку. После просмотра агент защиты вычисляет хеш-функцию или контрольную сумму результатов и сравнивает со значением хеш-функции или контрольной суммы исходного состояния. При равенстве агент защиты определяет, что соответствующие ресурсы не были изменены. Конечно, агент защиты может не принимать во внимание значения хеш-функции или контрольной суммы и вместо этого напрямую сравнивать исходное состояние с результатом просмотра.

Однако, если значения различаются, агент защиты и/или диспетчер виртуальных машин могут предпринять одно или более ответных действий. Во-первых, сам агент защиты может завершить работу операционной системы или режима с привилегиями операционной системы, или он может указать диспетчеру виртуальных машин сделать это. С другой стороны, поскольку агент защиты находится в диспетчере виртуальных машин и поскольку диспетчер виртуальных машин поддерживает рабочую среду для операционной системы, эти два компонента способны так завершить работу операционной системы. Кроме того, поскольку агент защиты находится в диспетчере виртуальных машин, в завершение работы операционной системы невозможно вмешаться даже из режима с привилегиями операционной системы.

В дополнение к завершению работы операционной системы, агент защиты и/или диспетчер виртуальных машин могут сначала предупредить операционную систему о предстоящем завершении работы. Канал связи между диспетчером виртуальных машин и операционной системой может предоставить возможность такого обмена информацией. В качестве альтернативы, агент защиты и/или диспетчер виртуальных машин могут записывать предупреждение в ячейку памяти или сообщать о событии, что отслеживается операционной системой.

Независимо от того, было ли подано предупреждение, завершение работы операционной системы может быть или резким или постепенным. В первом случае диспетчер виртуальных машин может просто отключить операционную систему сразу после получения сведений о несовпадении значений хеш-функции или контрольной суммы. В последнем случае диспетчер виртуальных машин может предоставить операционной системе некоторое время, чтобы аккуратно завершить свою работу. За это время операционная система может, например, закрыть какие-либо открытые файлы и сбросить на диск какие-либо соответствующие данные. Операционная система также может освободить назначенные ресурсы. Кроме того, завершение работы может использовать оба подхода. Например, если диспетчер виртуальных машин поддерживает рабочую среду для множественных разделов, она может немедленно завершить работу раздела с несовпадающими значениями хеш-функции или контрольной суммы, предоставляя другому разделу время для аккуратного завершения работы. В любом случае, способ завершения работы может менять конфигурацию в соответствии с политикой и может регулироваться.

В дополнение к завершению работы и соответствующему предупреждению, агент защиты и/или диспетчер виртуальных машин могут предпринять действия после начальной загрузки в ответ на недозволенное изменение идентифицированного ресурса. Например, диспетчер виртуальных машин и/или агент защиты после перезагрузки операционной системы могут уведомить операционную систему об изменении ресурса. В ответ операционная система может выполнить антивирусное обследование для выявления того, действительно ли находится какое-либо вредоносное программное обеспечение в памяти операционной системы, например, в блоке 208 (например, ядре). Кроме того, диспетчер виртуальных машин может выполнить начальную загрузку операционной системы в безопасном режиме или сама операционная система может избрать начальную загрузку в безопасном режиме. Также в ответ на уведомление операционная система может идентифицировать себя как атакованную и, в силу этого, может не разрешать себе получать доступ к какой-либо сети, с которой она связана.

Агенты Защиты в Виртуальном Разделе

Вместо того чтобы находиться непосредственно в диспетчере виртуальных машин, агент защиты (например, агент 142 защиты, изображенный на Фиг. 1) может находиться в отдельном виртуальном разделе (например, во втором виртуальном разделе 112, изображенном на Фиг. 1). В этих вариантах осуществления этот отдельный раздел выступает в роли доверенного представителя диспетчера виртуальных машин. Агент 142 защиты, таким образом, недоступен из режима с привилегиями операционной системы. Как обсуждалось выше, диспетчер 108 виртуальных машин обеспечивает такую виртуализацию вычислительного устройства 102. В то время как диспетчер виртуальных машин может виртуализировать вычислительное устройство в любое количество разделов, Фиг. 1 демонстрирует первый раздел, поддерживающий рабочую среду для операционной системы, и второй раздел, поддерживающий рабочую среду для агента защиты. Второй виртуальный раздел, в котором находится агент защиты, может быть, в некоторых случаях, выделенным разделом для обеспечения безопасности, основной или единственной функцией которого является запускать агента защиты. В других вариантах осуществления этот второй виртуальный раздел может выполнять дополнительные функции, такие как поддерживание рабочей среды для другой операционной системы.

Агент 142 защиты, находящийся во втором виртуальном разделе, способен выполнять большую часть или все те функции, которые описаны выше в отношении агента 134 защиты, находящегося в диспетчере виртуальных машин. То есть агент 142 защиты может явно или пассивно принимать идентификационную информацию одного или более ресурсов 120 операционной системы. В ответ на идентификационную информацию агент защиты может и в этом случае распространить службы 140 агента защиты, которые, как правило, содержат определение того, были ли изменены один или более идентифицированных ресурсов, и, если это так, совершение ответного действия. Эти службы также могут включать в себя обеспечение неизменяемости в отношении определенных ресурсов. Агент 142 защиты может выполнять эти функции посредством технических приемов, аналогичных описанным выше.

Как продемонстрировано, агент 142 защиты доступен из режима 130 с привилегиями второго виртуального раздела, но недоступен из режима 126 с привилегиями операционной системы. В силу этого полученная в результате архитектура предусматривает защиту самого агента защиты от какого-либо вредоносного программного обеспечения, размещенного в пределах операционной системы, даже если вредоносное программное обеспечение находится в блоке 208 памяти, соотнесенном с компонентом низшего уровня операционной системы.

Автономные Режимы с Привилегиями Агента Защиты

Этот параграф описывает инструментальные средства, выполненные с возможностью сделать блок памяти операционной системы, соотнесенный с агентом защиты, устойчивым к изменениям или недоступным из режима с привилегиями операционной системы, и все же позволяя этому блоку памяти физически находиться в физической области памяти операционной системы. Эти инструментальные средства, таким образом, создают автономный режим с привилегиями агента защиты, который имеет доступ к блоку памяти, соотнесенному с агентом защиты, а также к остальной части памяти, которая доступна в режиме с привилегиями операционной системы. Этот режим привилегий, таким образом, является более привилегированным, чем режим с привилегиями операционной системы.

Первый подпараграф описывает инструментальные средства, которые выполнены с возможностью создания режима с привилегиями агента защиты при помощи формирования запроса диспетчеру виртуальных машин на защиту блока памяти, соотнесенного с агентом защиты. Второй подпараграф, тем временем, описывает инструментальные средства, которые позволяют создавать режим с привилегиями агента защиты при помощи виртуализации физического процессора во множественные виртуальные процессоры, включающие в себя выделенный виртуальный процессор для запуска агента защиты.

Запросы на Защиту к Диспетчеру виртуальных машин

Этот подпараграф описывает, как агент защиты может запросить диспетчера виртуальных машин о защите памяти, соотнесенной с этим агентом защиты, и, в силу этого, самого агента защиты. Результатом этой защиты является то, что агент 144 защиты работает в режиме 132 с привилегиями агента защиты, как продемонстрировано на Фиг. 1. Как продемонстрировано, агент 144 защиты может первоначально находиться в режиме с привилегиями операционной системы, до перехода в режим с привилегиями агента защиты. При работе в этом последнем режиме привилегий агент защиты, как правило, невосприимчив к атакам со стороны объектов, работающих в режиме 126 с привилегиями операционной системы.

При работе в режиме 132 с привилегиями агента защиты объект имеет немного больше привилегий, чем при работе в режиме 126 с привилегиями операционной системы, но все же меньше привилегий, чем режим 124 с привилегиями диспетчера виртуальных машин. Как демонстрирует Фиг. 2, агент защиты, работающий в этом режиме привилегий, имеет доступ ко всей памяти, соотнесенной с операционной системой, в дополнение к блоку 206 памяти, соотнесенному с самим агентом защиты. Диспетчер 108 виртуальных машин обеспечивает дополнительную возможность доступа для агента защиты.

Фиг. 3 и 4 демонстрируют иллюстративный способ создания этого режима с привилегиями агента защиты. Фиг. 3 изображает всю или почти всю память 300 вычислительного устройства. Память 300 вычислительного устройства включает в себя блок 302 памяти, соотнесенный с режимом с привилегиями операционной системы (например, ядра), и блок 304 памяти, соотнесенный с режимом с привилегиями пользователя. Блок 302 памяти также включает в себя, как продемонстрировано, блок 306 памяти, соотнесенный с агентом 144 защиты, а также блок 308 памяти, в который загружаются программы управления.

Как демонстрирует Фиг. 4, технологический процесс 400 создания режима 132 с привилегиями агента защиты начинается на этапе 1 инициализацией блока 302 памяти (например, ядра). На этапе 2 блок 306 памяти или сам агент 144 защиты вызывает диспетчера 108 виртуальных машин для запроса диспетчеру виртуальных машин на защиту блока памяти, соотнесенного с агентом защиты. В таком запросе агент защиты или соответствующая память запрашивают, чтобы код, исполняющийся в режиме с привилегиями операционной системы, не имел возможности изменять или оказывать иное воздействие на этот блок 306 памяти. Агент защиты также может удостоверять себя (например, посредством цифровой подписи) для диспетчера 108 виртуальных машин. Этот блок памяти, или сам агент защиты, также может запрашивать, чтобы диспетчер виртуальных машин установил счетчик времени (таймер) и запустил агента защиты по истечении счетчика времени. Этап 3 представляет собой осуществление диспетчером виртуальных машин защиты этой памяти от объектов, работающих в режиме с привилегиями операционной системы, и установку счетчика времени в ответ на запрос. Заметим, что, поскольку этот блок 306 памяти, соотнесенный с агентом защиты, теперь является устойчивым к изменениям и/или недоступным из режима с привилегиями операционной системы, агент защиты теперь находится в режиме с привилегиями агента защиты.

На этапе 4 в блок 308 памяти загружаются драйверы. Заметим, что запрос, произведенный на этапе 2, и соответствующая защита, осуществленная на этапе 3, как правило, происходят до загрузки драйверов в память, поскольку вредоносное программное обеспечение может существовать в форме драйвера. Как обсуждается в параграфе "Иллюстративное Использование Инструментальных Средств" ниже, авторы вредоносного программного обеспечения часто обманом заставляют пользователя устанавливать злонамеренные драйверы на вычислительное устройство. Если один или более злонамеренных драйверов действительно загружаются в память до того, как блок 306 памяти будет защищен, то злонамеренные драйверы потенциально могут внести изменяющую вставку непосредственно в запрос о защите. Такое внесение изменяющей вставки тем самым препятствовало бы периодическому запуску агента защиты через диспетчера виртуальных машин и вследствие этого созданию режима с привилегиями агента защиты. Запрашивая, чтобы диспетчер виртуальных машин заблаговременно установил счетчик времени, однако данный технологический процесс гарантирует, что код в режиме с привилегиями операционной системы не сможет так блокировать периодический запуск агента защиты.

Этап 5, тем временем, по всей вероятности имеет место в какое-либо время после загрузки драйверов. Как продемонстрировано, этап 5 представляет собой истечение счетчика времени диспетчера виртуальных машин, а значит, запуск агента защиты. После запуска агент 144 защиты выполняет функции, аналогичные или идентичные тем, которые обсуждались в предыдущих параграфах. Как тоже обсуждалось выше, агент защиты может предпринять действия в ответ на определение того, что один или более идентифицированных ресурсов были изменены. Агент защиты также может предпринять такое действие в ответ на попытку осуществить доступ к или изменить агент защиты или соответствующую ему память, со стороны объектов, работающих в режиме с привилегиями операционной системы.

Этап 6 представляет собой уведомление со стороны агента защиты диспетчера виртуальных машин в случае окончания работы агента защиты. Наконец, этап 7 представляет собой повторение этапов 3, 5 и 6. Собственно, диспетчер виртуальных машин может сбрасывать свой счетчик времени и запускать агент защиты с периодическими интервалами, например, каждые 100 миллисекунд (мсек).

Устанавливая отказоустойчивый счетчик времени в диспетчере виртуальных машин, технологический процесс 400 тем самым устраняет возможность для кода операционной системы фальсифицировать блок памяти, соотнесенный с агентом защиты. Фактически, этот технологический процесс гарантирует, что агент защиты будет продолжать запускаться и в отношении него не будет внесено изменяющих вставок вредоносным программным обеспечением, работающим в режиме с привилегиями операционной системы. Вместо этого агент защиты будет работать в автономном режиме привилегий, все же находясь в физической памяти, выделенной операционной системе.

Виртуальные Процессоры Агента Защиты

Этот подпараграф описывает, как диспетчер виртуальных машин может создавать режим с привилегиями агента защиты, распределяя виртуальный процессор для запуска агента 144 защиты. Фиг. 5 демонстрирует архитектуру 500, которая включает в себя диспетчер 108 виртуальных машин, виртуализирующий вычислительное устройство 102 в два раздела, каждый из которых включает в себя операционную систему. Как продемонстрировано, вычислительное устройство в данном примере включает в себя два реальных процессора 104(a) и 104(b), на каждый из которых диспетчер виртуальных машин может распределять множественные виртуальные процессоры. Как тоже продемонстрировано, диспетчер виртуальных машин создает первый виртуальный раздел 502 и второй виртуальный раздел 504. Первый виртуальный раздел включает в себя первый виртуальный процессор 506 для запуска первой операционной системы. Аналогично, второй виртуальный раздел включает в себя второй виртуальный процессор 508 для запуска второй операционной системы. В этом случае, однако, диспетчер виртуальных машин также включает в себя виртуальный процессор 510 агента защиты для запуска агента защиты, такого как агент 144 защиты, изображенный на Фиг. 1.

Для создания архитектуры 500 сначала загружается и инициализируется диспетчер виртуальных машин. Как продемонстрировано на Фиг. 6, затем диспетчер виртуальных машин виртуализирует различные виртуальные процессоры и при выполнении этого выделяет производительность 600 реального процессора. Чтобы начать эти виртуализацию и выделение, диспетчер виртуальных машин виртуализирует первый виртуальный процессор на первом реальном процессоре. В данном примере эта виртуализация производится на основе взаимнооднозначного соответствия, как продемонстрировано на Фиг.6. То есть только этот единственный виртуальный процессор 506 соответствует реальному процессору 104(a) и, в этой связи, диспетчер виртуальных машин выделяет всю производительность реального процессора этому виртуальному процессору. Затем диспетчер виртуальных машин виртуализирует второй виртуальный процессор 508 на втором реальном процессоре 104(b). Вместо взаимнооднозначного соответствия, однако, диспетчер виртуальных машин удерживает некоторую часть производительности второго реального процессора. Затем диспетчер виртуальных машин виртуализирует виртуальный процессор 510 агента защиты на этой оставшейся производительности второго реального процессора 104(b), как тоже продемонстрировано на Фиг. 6.

Каждый виртуальный процессор, работающий на втором реальном процессоре, как правило, действует на основании квантования времени. То есть второй виртуальный процессор может работать на втором реальном процессоре некоторое время, до тех пор, пока работа второго виртуального процессора не будет приостановлена. В этот момент второй реальный процессор на некоторое время переключается на работу виртуального процессора агента защиты. Например, второй виртуальный процессор может работать на втором реальном процессоре в течение 90 мсек, в этот момент работа этого второго виртуального процессора приостанавливается и начинается работа виртуального процессора агента защиты в течение 10 мсек. Виртуальный процессор агента защиты, как правило, незаметен и для разделов операционной системы, и для первого и второго виртуальных процессоров. Собственно, обе операционные системы полагают, что их соответствующие виртуальные процессоры соответствуют соответственному реальному процессору.

В дополнение к распределению производительности реального процессора диспетчер виртуальных машин также управляет блоком памяти, к которому каждый виртуальный процессор может осуществлять доступ. В данном примере первый виртуальный процессор может осуществлять доступ ко всей памяти, соотнесенной с первой операционной системой. Второй виртуальный процессор, тем временем, может осуществлять доступ ко всей памяти, соотнесенной со второй операционной системой, за исключением блока памяти, соотнесенного с агентом защиты. Виртуальный процессор агента защиты единственный имеет доступ к блоку памяти, соотнесенному с агентом защиты, в дополнение к памяти, выделенной второй операционной системе.

Кроме того, первый и второй виртуальные процессоры имеют возможность изменять только соотнесенную с ними память. Собственно, ни один из виртуальных процессоров, обслуживающих свои соответствующие операционные системы, не может изменять блок памяти, соотнесенный с агентом защиты. Виртуальный процессор агента защиты, однако, может изменять память, соотнесенную с агентом защиты, а также, в некоторых вариантах осуществления, память, соотнесенную со вторым виртуальным процессором.

Благодаря своей программной сущности виртуальный процессор агента защиты будет периодически запускать агента защиты. В то время как в некоторых случаях виртуальный процессор агента защиты может запускать другие приложения, данный пример демонстрирует выделенный виртуальный процессор агента защиты. Собственно, этот виртуальный процессор вообще служит только для периодического запуска агента защиты. И в этом случае агент защиты может выполнять аналогичные или идентичные функции аналогичными или идентичными способами, как и агенты защиты, описанные выше.

Благодаря планированию работы выделенного виртуального процессора агента защиты диспетчер виртуальных машин гарантирует, что агент защиты будет периодически запускаться под управлением этого процессора и в автономном режиме с привилегиями агента защиты. Кроме того, поскольку только этот виртуальный процессор агента защиты имеет доступ к блоку памяти, соотнесенному с агентом защиты, диспетчер виртуальных машин защищает эту память от кода в пределах операционной системы. Следовательно, вредоносное программное обеспечение, работающее в режиме с привилегиями операционной системы, не может внести изменяющую вставку в агент защиты и препятствовать запуску агента защиты. Собственно, этот технический прием фактически устраняет возможность операционной системы фальсифицировать агент защиты.

Иллюстративное Использование Инструментальных Средств

Имея в виду ранее описанные инструментальные средства, выполненные с возможностью обеспечения защиты агента защиты, следующий параграф описывает лишь один пример этих инструментальных средств в работе. Сначала представим себе, что пользователь компьютера осуществляет навигацию по сети Интернет и во время навигации по некоторому Web-сайту на пользовательском устройстве отображения возникает диалоговое окно со злым намерением. Диалоговое окно запрашивает у пользователя разрешение установить некоторое вредоносное программное обеспечение на компьютере пользователя. Хотя этот запрос может быть и прямым, представим, что диалоговое окно маскирует запрос, что обычно имеет место. Диалоговое окно может, например, лживо информировать пользователя, что он или она выиграли приз. Сообщая об этом, диалоговое окно злонамеренно предписывает пользователю нажать кнопку "OK" в диалоговом окне, чтобы получить приз. Представим, что пользователь действительно выбирает кнопку "OK" и что пользователь решает продолжить запрашиваемые действия, несмотря на одно или более предупреждений от программного обеспечения (например, антивирусного приложения), запущенного на вычислительном устройстве.

В этот момент вычислительное устройство начинает установку драйвера, который имеет в своем составе вредоносное программное обеспечение. Что в общем случае правильно в отношении драйверов, этот злонамеренный драйвер приобретает доступ к режиму с привилегиями операционной системы и загружается в память, соотнесенную с этим режимом привилегий (например, в ядро). После загрузки в ядро, злонамеренный драйвер и сопутствующее ему вредоносное программное обеспечение фактически имеют доступ к памяти компьютера и операционной системе с полной свободой действий. К несчастью для пользователя, представим, что это вредоносное программное обеспечение включает в себя программу для перехвата вводимой с клавиатуры информации, которая регистрирует нажатия клавиш пользователем. Теперь представим, что пользователь перемещается на Web-сайт своего банка и подписывается в своем банковском счете. Благодаря своей способности регистрировать нажатия клавиши программа для перехвата вводимой с клавиатуры информации узнает пароль для банковского счета пользователя и отсылает этот пароль по сети Интернет автору злонамеренной программы управления.

Чтобы усугубить ситуацию, представим, что вредоносное программное обеспечение представляет собой "rootkit" или вредоносное программное обеспечение, которое пытается активно скрываться от агента защиты и антивирусного программного обеспечения пользователя. В традиционных системах агент защиты находится в пределах ядра (т.е. в памяти, к которой злонамеренная программа управления имеет доступ). Следовательно, в этих традиционных системах вредоносное программное обеспечение имеет доступ к агенту защиты и может попытаться скрыть себя от агента защиты. В случае успеха агенту защиты будет казаться, что вредоносного программного обеспечения не существует в пределах ядра. Следовательно, когда антивирусное программное обеспечение пользователя вызывает агент защиты и запрашивает список всех приложений, присутствующих в памяти компьютера, вредоносное программное обеспечение будет отсутствовать в этом списке. Это отсутствие делает антивирусное программное обеспечение бессильным узнать о вредоносном программном обеспечении и удалить его. Кроме того, вредоносное программное обеспечение может внести изменяющую вставку в агент защиты, тем самым вообще препятствуя запуску агента защиты. В силу этого, агент защиты может быть не в состоянии заметить, изменило ли вредоносное программное обеспечение какие-либо ресурсы операционной системы.

Однако представим себе, что вместо того, чтобы находиться в пределах ядра, как в традиционных системах, агент защиты на вычислительном устройстве пользователя находится в памяти или запускается в режиме, которые недоступны из режима с привилегиями операционной системы. Следовательно, когда злонамеренная программа управления загружается в ядро, она не имеет доступа к памяти, в которой находится агент защиты, или к режиму, в котором агент защиты запускается. В результате, программа управления и сопутствующее ей вредоносное программное обеспечение не имеют доступа непосредственно к агенту защиты. Вредоносное программное обеспечение, таким образом, неспособно скрыть себя от агента защиты, а значит, и от антивирусного программного обеспечения тоже. Следовательно, когда антивирусное программное обеспечение затребует у агента защиты список всех приложений, присутствующих в памяти компьютера, возвращенный список будет включать в себя это вредоносное программное обеспечение. Тогда антивирусное программное обеспечение принимает этот код за вредоносное программное обеспечение и, соответственно, удаляет его из вычислительного устройства пользователя. Кроме того, агент защиты может самостоятельно заметить, если вредоносное программное обеспечение изменяет ресурсы операционной системы и в ответ может завершить работу вычислительного устройства пользователя.

Следовательно, находясь в памяти или запускаясь в режиме, которые недоступны из режима с привилегиями операционной системы, варианты осуществления, описываемые в настоящем документе, не позволяют вредоносному программному обеспечению скрыть себя от агента защиты или внести в него изменяющую вставку. В вышеприведенном примере вычислительное устройство пользователя, следовательно, имеет возможность удалить вредоносное программное обеспечение из машины или, в некоторых случаях, завершить работу системы, если вредоносное программное обеспечение изменяет важные ресурсы. В любом случае, эти варианты осуществления служат для снижения эффективности вредоносного программного обеспечения в его стремлении причинить ущерб.

Другие Варианты Осуществления Инструментальных Средств

Вышеизложенные параграфы описывают несколько конкретных примеров, когда агент защиты делается устойчивым к изменениям или недоступным из режима с привилегиями операционной системы. В данном параграфе описываются другие варианты осуществления инструментальных средств, такие как добавление для процессора режима привилегий, который не представлен на базовом процессоре.

Эти иллюстративные варианты осуществления описываются как часть технологических процессов 700-1100, изображенных на Фиг. 7-11. Эти технологические процессы, как и иллюстративные технологические процессы, описанные или продемонстрированные со ссылкой на Фиг. 1-6, могут быть реализованы в любом подходящем аппаратном обеспечении, программном обеспечении, программно-аппаратном обеспечении, либо их комбинации; в случае программного обеспечения и программно-аппаратного обеспечения эти технологические процессы представляют собой наборы операций, реализуемых в виде машиноисполняемых инструкций, хранящихся на машиночитаемых носителях и исполняемых одним или более процессорами. Эти варианты осуществления инструментальных средств, описываемые в данном параграфе, не предназначаются для ограничения объема инструментальных средств или формулы изобретения.

Согласно Фиг. 7 на этапе 702 принимают политику принудительной защиты, идентифицирующую один или более ресурсов операционной системы. Эта политика принудительной защиты, которая может содержать зашифрованные данные, может приниматься посредством удостоверенного цифровой подписью манифеста или при помощи предоставления интерфейса прикладного программирования (API) операционной системе (например, гипервызова). На этапе 704 идентифицируют из памяти, недоступной со стороны объекта, работающего в режиме с привилегиями операционной системы, один или более ресурсов операционной системы. Иллюстративные ресурсы включают в себя таблицу диспетчеризации системных служб (SSDT), таблицу диспетчеризации прерываний (IDT) и/или глобальную таблицу дескрипторов (GDT). Как описывалось выше, эта идентификация может происходить в диспетчере виртуальных машин (например, агентом 134 защиты, изображенным на Фиг. 1) или в отдельном виртуальном разделе (например, агентом 142 защиты, изображенным на Фиг. 1).

Этап 706, тем временем, представляет собой определение того, был ли изменен какой-либо из идентифицированных ресурсов. Опять же, это может происходить в диспетчере виртуальных машин или в отдельном разделе. Если на этапе 706 определяют, что один или более идентифицированных ресурсов действительно были изменены, то на этапе 708 прерывают работу операционной системы в ответ на это определение. Наконец, на этапе 710 после перезагрузки операционной системы уведомляют операционную систему о запрещенной операции.

Фиг. 8 демонстрирует технологический процесс 800 для предоставления возможности агенту защиты запускаться в пределах диспетчера виртуальных машин. На этапе 802 изменяют менеджер перехватов диспетчера виртуальных машин, давая возможность принимать указание того, что страница памяти или регистр, соотнесенные с ресурсом операционной системы, были изменены. Этот ресурс может представлять собой один из ресурсов, описанных со ссылкой на Фиг. 7, или может быть другим ресурсом операционной системы. В любом случае, на этапе 804 принимают политику принудительной защиты, идентифицирующую этот ресурс операционной системы и, возможно, один или более других ресурсов операционной системы. Опять же, эта идентификация может быть произведена посредством методик, обсужденных выше. Как описывалось выше, атрибут защиты (например, "только для чтения" или "Инициализация, только для чтения") ресурса может сопутствовать идентификационной информации ресурса. Этап 806, тем временем, представляет собой прием указания того, что страница памяти или регистр, соотнесенные с ресурсом операционной системы, действительно были изменены. В ответ на этапе 808 завершают работу режима с привилегиями операционной системы, в результате завершая работу операционной системы, соотнесенной с ресурсом операционной системы. В некоторых случаях диспетчер 108 виртуальных машин, изображенный на Фиг. 1, может осуществлять это завершение работы режима с привилегиями операционной системы.

Далее Фиг. 9 изображает иллюстративный технологический процесс 900 для создания режима с привилегиями агента защиты, такого как режим 132 с привилегиями агента защиты, продемонстрированный на Фиг. 1. На этапе 902 принимают запрос на то, чтобы сделать конкретную область памяти устойчивой к изменениям или недоступной из режима с привилегиями операционной системы. И в этом случае диспетчер виртуальных машин может принять этот запрос, который может происходить непосредственно из этой области памяти или от агента защиты, находящегося в этой области памяти. На этапе 904 защищают эту область памяти и устанавливают счетчик времени для периодического запуска агента защиты, находящегося в этой области памяти. Опять же, диспетчер виртуальных машин может установить такой счетчик времени, который может предписывать диспетчеру виртуальных машин запускать агент защиты через постоянные интервалы.

Между тем, на этапе 906 принимают политику принудительной защиты, описывающую ресурс операционной системы. И в этом случае политика принудительной защиты и описываемый ресурс могут быть аналогичны или идентичны обсужденным выше. На этапе 908 запускают агент защиты, что может выполняться диспетчером виртуальных машин. На этапе 910 ветвления исследуют, был ли изменен ресурс операционной системы. Агент защиты может произвести это определение, функционируя согласно способам, подробно описанным выше. Если на этапе 910 точно определяют, что произошло изменение, то на этапе 912 завершают работу операционной системы. Если, однако, такое определение не сделано, то на этапе 914 принимают уведомление, что агент защиты закончил выполнение. В некоторых случаях и как описано выше, сам агент защиты может уведомлять об этом диспетчера виртуальных машин. Этап 916, тем временем, представляет собой цикл между периодами, когда агент защиты выполняется и когда агент защиты не выполняется. Наконец, заметим, что, когда агент защиты не запущен, диспетчер виртуальных машин может завершить работу операционной системы в ответ на попытку осуществить доступ со стороны объекта, работающего в режиме с привилегиями операционной системы, к области памяти, соотнесенной с агентом защиты.

Фиг. 10 демонстрирует другой иллюстративный технологический процесс 1000 для создания режима с привилегиями агента защиты, такого как режим 132 с привилегиями агента защиты, продемонстрированный на Фиг. 1. На этапе 1002 виртуализируют реальный компьютерный процессор во множественные виртуальные компьютерные процессоры. Эти виртуальные процессоры могут содержать один или более процессоров операционных систем, каждый из которых обладает привилегией изменять свою собственную память операционной системы и использовать часть производительности по обработке данных реальных процессоров, как продемонстрировано на Фиг. 6. Виртуальные процессоры также могут включать в себя, по меньшей мере, один процессор агента защиты, обладающий привилегией изменять свою собственную память агента защиты и использовать другую часть производительности обработки данных реальных процессоров. Несмотря на то, что все виртуальные процессоры могут распределяться диспетчером виртуальных машин, виртуальный процессор агента защиты может быть незаметным для виртуальных процессоров операционных систем. В некоторых случаях виртуальные процессоры операционных систем не могут изменять память, назначенную виртуальному процессору агента защиты. Кроме того, виртуальный процессор агента защиты может быть выделенным процессором, основной или единственной целью которого является обеспечить исполнение агента защиты, как обсуждалось выше.

Далее на этапе 1004 осуществляют исполнение агента защиты виртуальным процессором агента защиты, что может привести к определению того, была ли изменена часть упомянутой памяти операционной системы. На этапе 1006, тем временем, принимают указание того, что часть памяти операционной системы была изменена. В ответ на этапе 1008 завершают работу соответствующей операционной системы.

Наконец, Фиг. 11 изображает технологический процесс 1100 для добавления режима привилегий для реального вычислительного процессора. Этап 1102 представляет собой определение, идентификацию или классификацию одного или более режимов привилегий, представленных на базовом физическом процессоре. Эти режимы привилегий, как правило, задаются самим базовым физическим процессором. Во всяком случае, на этапе 1104 добавляют режим привилегий, который не представлен на базовом физическом процессоре. В некоторых случаях добавленный режим привилегий способен изменять части памяти вычислительного устройства, которая отличается от части памяти, которая является изменяемой одним или более представленными режимами привилегий. Добавленный режим привилегий также может быть способен добавлять и исполнять инструкции, которые ранее не существовали или не были исполняемыми на базовом процессоре.

Кроме того, один или более режимов привилегий, представленные на базовом физическом процессоре, могут включать в себя режим с привилегиями пользователя и режим с привилегиями операционной системы. В этих вариантах осуществления добавленный режим привилегий может быть более привилегированным по сравнению и с режимом с привилегиями пользователя, и с режимом с привилегиями операционной системы, более привилегированным, чем режим с привилегиями пользователя, но менее привилегированным, чем режим с привилегиями операционной системы, или менее привилегированным, чем режимы с привилегиями и пользователя, и операционной системы. Наконец, заметим, что один вариант добавления режима привилегий может содержать добавление режима с привилегиями агента защиты (например, режима 132 с привилегиями агента защиты, продемонстрированного на Фиг. 1) множеством способов, обсужденных выше. Например, агент защиты или соотнесенная с ним область памяти могут запросить, чтобы эта область памяти была сделана недоступной со стороны объектов, работающих в режиме с привилегиями операционной системы. Диспетчер виртуальных машин также может создать этот режим привилегий при помощи распределения процессора агента защиты для запуска агента защиты.

Заключение

Описанные выше инструментальные средства выполнены с возможностью сделать агент защиты устойчивым к изменениям или недоступным из режима с привилегиями операционной системы, предоставляя возможность агенту защиты находиться в местоположении, которое недоступно из режима с привилегиями операционной системы, или создавая режим с привилегиями агента защиты. Несмотря на то, что инструментальные средства были описаны в терминах, предназначенных для структурных признаков и/или относящихся к методике действий, нужно понимать, что инструментальные средства, определяемые в прилагаемой формуле изобретения, не обязательно ограничиваются описанными конкретными признаками или действиями. Скорее, конкретные признаки и действия раскрываются как иллюстративные формы реализации инструментальных средств.

1. Машиночитаемый носитель, содержащий машиночитаемые инструкции, которые при их исполнении компьютерным устройством предписывают компьютерному устройству выполнять способ защиты ресурсов операционной системы, содержащий этапы, на которых:
предоставляют, по меньшей мере, первый раздел и второй раздел посредством диспетчера виртуальных машин;
принимают в памяти, которая недоступна со стороны объекта, работающего в режиме с привилегиями операционной системы, политику принудительной защиты, которая идентифицирует набор из одного или более ресурсов операционной системы, работающей в первом разделе, предоставляемом посредством диспетчера виртуальных машин;
идентифицируют, с использованием политики принудительной защиты и из памяти, недоступной со стороны объекта, работающего в режиме с привилегиями операционной системы, упомянутый набор из одного или более ресурсов операционной системы, работающей в первом разделе, предоставляемом посредством диспетчера виртуальных машин;
определяют из памяти, были ли изменены один или более из этого набора из одного или более ресурсов;
в ответ на определение того, что один или более из упомянутого набора из одного или более ресурсов были изменены, (i) завершают работу операционной системы или (ii) уведомляют операционную систему после перезагрузки о запрещенной операции,
при этом прием политики принудительной защиты, идентификация набора из одного или более ресурсов и определение того, были ли изменены один или более из набора из одного или более ресурсов, осуществляются в пределах (i) диспетчера виртуальных машин или (ii) второго раздела, предоставляемого посредством диспетчера виртуальных машин.

2. Носитель по п.1, в котором способ дополнительно содержит этапы, на которых предоставляют интерфейс прикладного программирования (API) операционной системе и принимают, посредством этого API, идентификационную информацию одного или более из упомянутого набора из одного или более ресурсов.

3. Носитель по п.1, в котором упомянутый набор из одного или более ресурсов включает в себя таблицу диспетчеризации системных служб (SSDT), таблицу диспетчеризации прерываний (IDT) или глобальную таблицу дескрипторов (GDT).

4. Компьютерно-реализуемый способ защиты ресурсов операционной системы, содержащий этапы, на которых:
изменяют менеджер перехватов диспетчера виртуальных машин, давая возможность принимать указание того, что страница памяти или регистр, соотнесенные с ресурсом операционной системы, были изменены, причем этот ресурс операционной системы находится в разделе, предоставляемом посредством диспетчера виртуальных машин;
принимают в диспетчере виртуальных машин политику принудительной защиты, которая идентифицирует упомянутый ресурс операционной системы и один или более дополнительных ресурсов операционной системы;
принимают посредством менеджера перехватов диспетчера виртуальных машин указание того, что упомянутые страница памяти или регистр, соотнесенные с упомянутым ресурсом операционной системы, были изменены; и
завершают работу режима с привилегиями операционной системы, в результате завершая работу операционной системы, соотнесенной с упомянутым ресурсом операционной системы, в ответ на прием этого указания.

5. Способ по п.4, в котором ресурс операционной системы представляет собой таблицу диспетчеризации прерываний (IDT) в странице памяти, а регистр, соотнесенный с ресурсом операционной системы, является регистром IDT.

6. Способ по п.4, в котором ресурс операционной системы представляет собой таблицу диспетчеризации системных служб (SSDT) или глобальную таблицу дескрипторов (GDT).

7. Способ по п.4, в котором этап, на котором завершают работу режима с привилегиями операционной системы, выполняется диспетчером виртуальных машин.

8. Способ по п.4, в котором политика принудительной защиты также описывает атрибут защиты, соотнесенный с каждым из идентифицированных ресурсов операционной системы, причем по меньшей мере один из атрибутов защиты описывает соответствующий ресурс как только для чтения.

9. Способ по п.8, который дополнительно содержит этап, на котором обеспечивают неизменяемость в отношении ресурса, соотнесенного с атрибутом защиты только для чтения.

10. Машиночитаемый носитель, содержащий машиночитаемые инструкции, которые при их исполнении компьютерным устройством предписывают компьютерному устройству выполнять способ защиты ресурсов операционной системы, содержащий этапы, на которых:
выполняют виртуализацию компьютерного устройства в, по меньшей мере, первый и второй разделы виртуальных машин посредством диспетчера виртуальных машин, при этом операционная система, соотнесенная с режимом с привилегиями операционной системы, находится в первом разделе виртуальной машины, а агент защиты находится во втором разделе виртуальной машины или диспетчере виртуальных машин;
идентифицируют посредством агента защиты один или более ресурсов операционной системы, находящихся в первом разделе виртуальной машины и предназначенных для работы в режиме с привилегиями операционной системы;
определяют посредством агента защиты, были ли изменены один или более из этих одного или более ресурсов операционной системы, находящихся в первом разделе виртуальной машины, при этом агент защиты, находящийся во втором разделе виртуальной машины или диспетчере виртуальных машин, не подвержен атакам изнутри режима с привилегиями операционной системы; и
в ответ на определение того, что один или более из упомянутых одного или более ресурсов операционной системы были изменены, завершают работу операционной системы, соотнесенной с режимом с привилегиями операционной системы, в первом разделе виртуальной машины.



 

Похожие патенты:

Изобретение относится к способу взаимодействия между приложением терминала интеллектуальных карт и приложением интеллектуальной карты на интеллектуальной карте, способу применения модели защиты интеллектуальной карты в терминале интеллектуальных карт и инфраструктуре терминала интеллектуальных карт для терминала интеллектуальных карт.

Изобретение относится к области управления транзакциями в системе с программной транзакционной памятью. .

Изобретение относится к области приема распределяемого содержимого. .

Изобретение относится к способам защиты загрузки данных в устройство обработки данных. .

Изобретение относится к автоматике и вычислительной технике, в частности к системам управления технологическими процессами , станками, роботами, автоматическими линиями и комплексами, в состав которых входят вышеперечисленные объекты.

Изобретение относится к вычислитель- .ной технике и может быть использовано для построения специализированных вычислительных систем реального масштаба времени . .

Изобретение относится к вычислительной технике, может быть использовано при построении микропроцессорных вычислительных систем с памятью, разделенной на блоки, и является усовершенствованием изобретения по авт.св.

Изобретение относится к вычислительной технике и может быть использовано для решения логических задач по временным булевым функциям в устройствах управления и автоматики .

Изобретение относится к области кэширования однокристальных мультипроцессоров, а в частности к аморфным кэшам для однокристальных мультипроцессоров

Изобретение относится к средствам обработки изменений в приложениях

Изобретение относится к области планирования задач процессов для исполнения в компьютерной системе. Техническим результатом является повышение надежности работы планировщика. Планировщик в процессе компьютерной системы обеспечивает возможность исполнения внешнего контекста исполнения в ресурсе обработки, выделяемом планировщику. Планировщик предоставляет управление ресурсом обработки внешнему контексту исполнения. Планировщик регистрируется на получение уведомления о событии завершения, ассоциированном с внешним контекстом исполнения. В ответ на прием уведомления о том, что произошло событие завершения, планировщик восстанавливает управление ресурсом обработки и обеспечивает выполнение задачи, ассоциированной с контекстом исполнения, управляемым планировщиком, с помощью ресурса обработки. 2 н. и 13 з.п. ф-лы, 8 ил.

Изобретение относится к стыковочным станциям портативных вычислительных устройств. Техническим результатом является обеспечение доступа к мощности и сохранение функциональных возможностей при уменьшении размеров PCD. Раскрывается способ управления ядрами процессора в портативном вычислительном устройстве (PCD), имеющем, по меньшей мере, три ядра процессора, при этом способ содержит этапы, на которых: определяют, пристыковано ли PCD к стыковочной станции PCD, когда PCD включено; подают питание на первое ядро процессора, когда PCD не пристыковано к стыковочной станции PCD; и подают питание на первое ядро процессора, второе ядро процессора и третье ядро процессора, когда PCD пристыковано к стыковочной станции PCD. 4 н. и 16 з.п. ф-лы, 34 ил.

Группа изобретений относится к области микроэлектроники и вычислительной технике и может быть использована для построения высокопроизводительных вычислительных систем для обработки потоков данных в режиме реального времени. Техническим результатом является повышение эффективности вычислений за счет распараллеливания прикладных вычислительных алгоритмов. Устройство содержит наборы внешних одноразрядных входов и выходов, регистр кода настройки, входной коммутатор, блок обработки данных и выходной коммутатор, управляемые соответствующими полями кода настройки, причем входной и выходной коммутаторы и блок обработки данных управляются парами альтернативных полей кода настройки, выбор одного из которых обеспечивается соответствующим многоразрядным мультиплексором, управляемым одноразрядным сигналом переменной условия. 2 н. и 5 з.п. ф-лы, 6 ил.

Группа изобретений относится к средствам увеличения функциональности измерительного устройства. Технический результат заключается в обеспечении конфигурирования измерительного устройства для конкретных измерительных операций. Для этого предложены средства для увеличения функциональности измерительного устройства. Измерительное устройство может содержать микроконтроллер (МК), содержащий отдельные блоки памяти для хранения различных типов данных. МК может хранить основной программный код в виде встроенной программы в одном блоке флэш-памяти, а также хранить виртуальную опциональную плату в виде встроенной программы в отдельном блоке флэш-памяти. Основной программный код может быть использован измерительным устройством для обеспечения базового уровня функциональности измерительного устройства. Виртуальная опциональная плата может быть использована измерительным устройством для реализации дополнительной функциональности. Добавленная посредством виртуальной опциональной платы функциональность может содержать измерительные операции для конкретного пользователя и/или измерительные операции для конкретного рынка. 2 н.п., 16 з.п.ф-лы, 10 ил.

Группа изобретений относится к расширяемой архитектуре и потоку данных, которые позволяют машине обновления диаграмм запускать модули пользовательского кода. Техническим результатом является снижение объема данных, хранимых на клиентском устройстве. Способ для выполнения, по меньшей мере, частично, в вычислительном устройстве для сервисов расширяемой визуализации диаграмм, основывающейся на web содержит этап, на котором, в ответ на прием запроса на диаграмму, включающего в себя ссылки на внешние источники данных, подают этот запрос в машину обновления для определения поддерживаемых источников данных и пользовательских модулей данных для извлечения данных из неподдерживаемых источников данных, реализующих заранее определенный абстрактный класс. Далее, согласно способу, принимают идентификатор пользовательского модуля данных от машины обновления. А также, активируют пользовательский модуль данных, указанный идентификатором, через этот заранее определенный абстрактный класс, и принимают либо данные, либо исключение от пользовательского модуля данных. В случае если приняты данные, перенаправляют эти данные в машину обновления. 3 н. и 17 з.п. ф-лы, 7 ил.

Изобретение относится к компьютерной технике, а именно к системам электронных записных книжек. Техническим результатом является автоматизация планирования для синхронизации новой работы посредством экземпляра клиента в зависимости от информации совместно используемой записной книжки, основанной на информации отслеживания. Предложена компьютерно-реализованная система планирования работ. Система включает в себя, по меньшей мере, один компьютер, исполняющий компонент отслеживания работ, связанный с совместно используемой электронной записной книжкой, для создания и обслуживания информации отслеживания для работ, обрабатываемых в отношении информации совместно используемой записной книжки. При этом в совместно используемой электронной записной книжке имеется корневая директория, содержащая совокупность файлов и директорий, причем разделы записной книжки соотнесены с файлами, а папки записной книжки соотнесены с директориями. Информация отслеживания хранится как файл работы в корневой директории совместно используемой электронной записной книжки и содержит свойства, относящиеся к выполненному пользователем изменению в отношении, по меньшей мере, части файла в совместно используемой электронной записной книжке. 3 н. и 11 з.п. ф-лы, 11 ил.

Изобретение относится к области устройств дистанционного управления, а именно к устройству дистанционного управления с сенсорным устройством ввода данных. Техническим результатом является обеспечение возможности непрерывного управления, что уменьшает вероятность неправильного ввода команд. Для этого устройство содержит панель дисплея, блок обнаружения управления, блок генерирования команды и блок передачи команды на электронное устройство. При этом блок генерирования команды нужен для нахождения первого направления на основе взаимного расположения начальной точки контакта и первой точки проведения, проведенной из начальной точки контакта, генерирования команды управления, обозначающей проведение в первом направлении, обнаружения второго направления на основе взаимного расположения начальной точки контакта и второй точки проведения, проведенной из первой точки проведения, и генерирования команды, обозначающей окончание проведения пальцем в первом направлении и начало проведения пальцем во втором направлении, если второе направление отличается от первого направления. Кроме того, блок генерирования команды находит первое расстояние между начальной точкой контакта и первой точкой проведения и второе расстояние между начальной точкой контакта и второй точкой проведения и генерирует команду управления, обозначающую остановку перемещения курсора в случае, если разница между первым и вторым расстоянием больше или равна заданному порогу. 4 н. и 5 з.п. ф-лы, 11 ил.
Наверх