СИСТЕМА ОПТИМИЗАЦИИ ИСПОЛЬЗОВАНИЯ РЕСУРСОВ КОМПЬЮТЕРА ПРИ АНТИВИРУСНОЙ ПРОВЕРКЕ

Область техники
Полезная модель относится к системам оптимизации ресурсов компьютера и, более конкретно, к системам, применяющим кэширование файлов антивирусной базы данных для оптимизации использования объема оперативной памяти при антивирусной проверке.
Уровень техники
В настоящее время антивирусные базы содержат информацию, необходимую для работы антивирусных систем, которая должна регулярно пополняться определениями новых вирусов и другой информацией для противодействия новым видам угроз, в том числе исполняемым кодом, выполняющим разбор формата объектов данных, а также их распаковку и расшифровку.
Антивирусные базы имеют значительный размер (десятки мегабайт). Полное обновление посредством скачивания целиком новой версии базы непрактично. Поэтому для обновления используется инкрементальный способ, при котором антивирусный продукт загружает только обновления базы данных и объединяет их с ранее загруженным содержимым.
Обновления представлены в виде файлов, содержащих различные категории информации, такие как:
- сигнатуры вирусов и других угроз;
- исполняемый код алгоритмов распаковки и эвристического анализа данных;
- псевдокод (интерпретируемый байт-код) алгоритмов распаковки и эвристического анализа данных;
- информация для устранения найденных угроз и т.п.
В каждом файле базы данных могут находиться данные из разных категорий. Такая форма удобна для модификации базы данных, но не всегда удобна для работы модуля проверки объектов.
Как правило, для работы модуля проверки требуется, чтобы информации была сгруппирована по категориям (все сигнатуры - в одном месте, весь код - в другом месте и т.п.). Исходную информацию часто необходимо преобразовать в другой формат для более эффективной обработки модуля проверки, например, провести сортировку сигнатур для ускорения поиска.
Известные системы используют антивирусные базы данных, которые представляют собой множество индивидуально обновляемых файлов ограниченного размера. При обновлении осуществляется добавление новых файлов либо замена одного или нескольких файлов новым содержимым. При загрузке базы в оперативную память модуль проверки последовательно считывает файлы в память и осуществляет преобразования структуры данных во внутреннее представление удобное для работы. Это преобразование осуществляется в оперативной памяти. Подобная система для обновления баз описана в патенте US 7461373, а также в заявках ЕР 1655682 А2, US 20070277167 A1.
Использование данных систем обусловлено простотой поддержки базы данных, т.к. индивидуальные файлы легко модифицировать автономно.
Недостаток существующих систем заключается в том, что при каждом запуске модуля проверки происходит загрузка антивирусной базы в оперативную память компьютера, включающая перегруппировку данных по категориям. В частности такое преобразования заключается в том, что данные одного формата собираются в одну секцию. В результате образуется несколько секций, каждая из которых содержит данные, принадлежащие одной категории. Этот процесс потребляет дополнительные ресурсы системы и снижает скорость работы модуля проверки.
Другим недостатком существующих систем загрузки антивирусной базы данных является неэффективное использование памяти при использовании антивирусной базы данных в нескольких процессах. В таком случае для каждого процесса в оперативную память загружается копия файлов базы данных. Чем больше процессов и чем больше размер файлов базы данных, тем больше расходуется память системы.
Таким образом, можно выделить два существенных недостатка известных систем загрузки антивирусных баз данных:
1. Для преобразования одной формы представления антивирусной базы данных в другую при каждом запуске антивирусного приложения используется оперативная память компьютера, то есть происходит увеличение потребляемых ресурсов памяти компьютера при работе модуля проверки.
2. Трудности в обеспечении совместного использования одной антивирусной базы данных несколькими процессами.
Анализ предшествующего уровня техники и возможностей, которые появляются при комбинировании их в одной системе, позволяют получить новый результат, а именно систему антивирусной проверки с возможностью создания кэша антивирусной базы.
Сущность полезной модели
Технический результат настоящей полезной модели заключается в оптимизации использования оперативной памяти при антивирусной проверке за счет создания кэша из антивирусной базы, использующегося несколькими одновременно работающими процессами проверки.
Настоящая полезная модель представляет собой систему использования оперативной памяти компьютера при антивирусной проверке, содержащую: (а) антивирусное приложение, связанное с модулем обновления, модулем подготовки и модулем проверки, при этом антивирусное приложение предназначено для управления модулем проверки; (б) упомянутый модуль обновления, связанный с модулем хранения антивирусной базы данных, при этом упомянутый модуль обновления выполнен с возможностью запуска антивирусным приложением, также модуль обновления предназначен для выполнения проверки наличия новой антивирусной базы данных, а также для загрузки новой антивирусной базы данных в модуль хранения антивирусной базы данных в случае положительного результата проверки; (в) упомянутый модуль хранения антивирусной базы данных, который содержит обновляемые файлы антивирусной базы данных; (г) упомянутый модуль подготовки, связанный с модулем хранения антивирусной базы данных и модулем хранения кэша антивирусной базы, при этом упомянутый модуль подготовки выполнен с возможностью запуска антивирусным приложением и предназначен для формирования кэша антивирусной базы из антивирусной базы данных; (д) модуль хранения кэша антивирусной базы, связанный с модулем проверки и содержащий файлы кэша антивирусной базы в формате, позволяющем использовать их одновременно в нескольких процессах проверки; (е) упомянутый модуль проверки, выполненный с возможностью загрузки в каждый процесс проверки, при этом упомянутый модуль проверки предназначен для проведения поиска вредоносных данных в объектах проверки, используя кэш антивирусной базы;
В частном варианте исполнения антивирусное приложение упомянутой системы предназначено для запуска каждого процесса проверки для проведения антивирусной проверки одного или нескольких объектов проверки.
В частном варианте исполнения антивирусное приложение упомянутой системы предназначено для запуска нового процесса проверки для проведения антивирусной проверки нового объекта проверки.
В частном варианте исполнения упомянутая система с помощью модуля подготовки сформирует кэш антивирусной базы с применением механизма отображения файлов в память.
В частном варианте исполнения упомянутая система с помощью модуля подготовки изменит кэш антивирусной базы в модуле хранения кэша антивирусной базы при обновлении антивирусной базы.
Краткое описание чертежей
Дополнительные цели, признаки и преимущества настоящей полезной модели будут очевидны из прочтения последующего описания осуществления полезной модели со ссылкой на прилагаемые чертежи, на которых:
Фиг.1 иллюстрирует схему системы оптимизации ресурсов компьютера при антивирусной проверке.
Фиг.2 показывает алгоритм работы системы оптимизации ресурсов компьютера при антивирусной проверке.
Фиг.3 показывает структурную схему формирования кэша антивирусной базы.
Фиг.4 показывает схему использования кэша антивирусной базы несколькими процессами.
Описание вариантов осуществления полезной модели
Объекты и признаки настоящей полезной модели, способы для достижения этих объектов и признаков станут очевидными посредством отсылки к примерным вариантам осуществления. Однако настоящая полезная модель не ограничивается примерными вариантами осуществления, раскрытыми ниже, она может воплощаться в различных видах. Сущность, приведенная в описании, является ничем иным, как конкретными деталями для помощи специалисту в области техники в исчерпывающем понимании полезной модели, и настоящая полезная модель определяется только в объеме приложенной формулы.
На Фиг.1 изображена схема системы оптимизации ресурсов компьютера при антивирусной проверке.
Система оптимизации ресурсов компьютера в одном из вариантов реализации состоит из следующих модулей:
антивирусного приложения 106, которое управляет процессами проверки объектов проверки, а также запускает процесс обновления антивирусной базы данных и процесс подготовки кэша антивирусной базы;
модуля обновления 107, который запускается антивирусным приложением и выполняет проверку наличия новой антивирусной базы данных и загружает ее в случае положительного результата проверки;
модуля хранения антивирусной базы данных 101, в котором хранится антивирусная база, загружаемая модулем обновления с сервера обновлений;
модуля подготовки 102, который запускается антивирусным приложением и формирует кэш антивирусной базы;
модуля хранения кэша антивирусной базы 103, в котором хранится кэш антивирусной базы, использующийся модулем проверки;
модуля проверки 104, который производит проверку объектов проверки 105;
Исходные данные, из которых формируется кэш, находятся в модуле хранения антивирусной базе данных 101. Антивирусная база состоит из обновляемых файлов, каждый из которых содержит различные типы информации, например, сигнатуры угроз, исполняемый код и т.д. В таком представлении антивирусная база данных не используется модулем проверки напрямую, ее необходимо преобразовать во внутренний формат.
Для снижения объема памяти, занимаемой базой данных, содержащейся в модуле хранения антивирусной базы данных 101, необходимо создать кэш антивирусной базы в таком формате, чтобы он мог использоваться несколькими одновременно работающими процессами проверки, и при этом не создавалась копия кэша для каждого процесса в оперативной памяти. Поэтому при использовании кэша достигается оптимизация использования оперативной памяти.
Возможность использования одной и той же копии кэшируемых данных различными процессами обеспечивается выбором формата данных, не зависящего от адреса загрузки в память. Способ достижения данного результата основан на использовании в структурах данных относительных смещений вместо абсолютных адресов памяти.
В процессе обновления антивирусной базы антивирусное приложение запускает модуль обновления 107. Модуль обновления делает проверку наличия изменений в актуальной версии антивирусной базы данных, загружает недостающие и измененные файлы в случае положительного результата проверки.
Преобразование антивирусной базы данных в кэш антивирусной базы проводит модуль подготовки 102. Модуль подготовки запускается антивирусным приложением после каждого обновления базы в модуле 101 и осуществляет преобразование антивирусной базы данных в кэш. Подробности процесса формирования кэша антивирусной базы описываются далее при рассмотрении Фиг.3.
После того как кэш антивирусной базы сформирован, он сохраняется в модуле хранения кэша антивирусной базы 103 и используется в одном или нескольких процессах проверки.
Созданный кэш антивирусной базы будет изменен только при следующем обновлении антивирусной базы данных. При выгрузке и повторной загрузке антивирусного приложения кэш антивирусной базы может быть повторно использован без необходимости его преобразования, что ускоряет повторную загрузку антивирусной системы.
Фиг.2 иллюстрирует алгоритм работы системы оптимизации ресурсов компьютера при антивирусной проверке.
Вначале производится проверка соответствия хранимого кэша антивирусной базы актуальной антивирусной базе данных на шаге 201. Если версия кэша антивирусной базы не соответствует актуальной версии, то модуль обновления 107 осуществляет загрузку новой версии базы данных, по содержимому которой будет обновлен кэш с помощью модуля подготовки 102.
Если версия кэша соответствует актуальной версии антивирусной базы, хранящейся в модуле 101, то преобразование не производится и происходит запуск (перезапуск) модуля проверки на шаге 206.
Обновленная антивирусная база данных состоит из файлов, содержащих различные типы данных. Поскольку для работы модуля проверки требуется, чтобы информации была сгруппирована по секциям (все сигнатуры - в одном месте, весь код - в другом месте и т.п.), после закачки базы данных происходит процесс ее преобразования и создания секций на шаге 202. С помощью разделения на секции создается представление данных в форме, удобной для работы модуля проверки. В каждой секции хранятся данные одного типа, которые могут быть непосредственно использованы модулем проверки без дополнительных преобразований.
В процессе обработки базы модулем подготовки формируется кэш антивирусной базы: каждая секция записывается в файл кэша, отображенный в память, на шаге 203; из секции, содержащей исполняемый код, формируется динамическая библиотека на шаге 204. Далее все файлы, составляющие новый кэш антивирусной базы, сохраняются на шаге 205 так, чтобы они использовались вместо старой версии кэша антивирусной базы. Антивирусное приложение запускает процессы проверки на шаге 206 и модуль проверки загружает информацию из новой версии кэша антивирусной базы.
Отличительной особенностью данной системы является создание кэша антивирусной базы и сохранение кэша в модуле хранения кэша антивирусной базы 103. На Фиг.3 показана структурная схема формирования кэша антивирусной базы.
Кэш антивирусной базы формируется из файлов актуальной антивирусной базы данных 310, находящихся в модуле хранения антивирусной базы 101. База данных представляет собой набор файлов 311, каждый из которых может содержать в себе данные разного типа 312. На первой стадии формирования кэша происходит процесс перегруппировки содержимого файлов, находящихся в базе данных. Перегруппировка происходит по принципу создания секций, в которых будут содержаться данные одного типа. Таким образом, все сигнатуры угроз окажутся в одной секции, информация об угрозах - в другой, исполняемый код - в третьей и так далее. В итоге получатся несколько отдельных секций.
После завершения процесса перегруппировки данных и создания секций происходит сохранение секций в виде файлов кэша. Секции, содержащие данные, за исключением исполняемого кода, образуют файлы, отображаемые в память 321, 322. Из секции с исполняемым кодом формируется отдельная динамическая библиотека 323.
Механизм отображения файлов позволяет работать с содержимым файлов так, будто они загружены в память посредством чтения файла. Файлы, отображенные в память, имеют структуру, позволяющую модулю проверки использовать их содержимое без дополнительного преобразования одновременно несколькими приложениями. Это делает удобным их совместное использование сразу в нескольких процессах одновременно. Удобство заключается в том, что при отображении файлов в память не происходит копирования памяти для различных процессов. Следовательно, при работе нескольких процессов с такими файлами память системы используется более эффективно.
Однако механизм отображения файлов в память не позволяет эффективно работать с секциями, содержащими исполняемый код. После загрузки исполняемого кода выполняется процесс релокации: исполняемый код должен быть модифицирован с учетом его реального адреса загрузки. При этом производится модификация частей кода, содержащих абсолютные адреса. В результате отображения секции исполняемого кода в различные процессы адрес отображения может оказаться различным для каждого процесса, и релокацию кода для каждого процесса в общем случае нужно будет проводить отдельно. Таким образом, станет невозможным совместное использование секции кода, поскольку она должна будет модифицироваться индивидуальным образом для каждого использующего ее процесса.
Другим недостатком загрузки исполняемого кода в память является наличие ограничений, накладываемых операционной системой на исполнение такого кода. Например, операционная система Windows позволяет использовать инструкции Structured Exception Handling (SEH) только в коде, загруженном в виде динамической библиотеки, которая содержит специальную структуру данных - список безопасных SEH-обработчиков.
Для устранения описанных недостатков проводится преобразование секции исполняемого кода в формат динамической библиотеки 323, определяемый целевой операционной системой.
Динамически подключаемые библиотеки представляют собой модули, которые загружаются в ходе работы модуля проверки. Если динамическая библиотека загружена в адресное пространство, то единственная копия доступна для использования множеством работающих с ней процессов, что положительно сказывается на быстродействии. Загрузка динамических библиотек операционной системой осуществляется с учетом обеспечения возможности их совместного использования. Например, в операционной системе Windows библиотека загружается по адресу, выбранному системой таким образом, чтобы отобразить ее в различные процессы без проведения индивидуальной релокации. В операционных системах семейства UNIX для решения этой задачи применяется формат PIC (position-independent code). Так решается задача совместного использования секции исполняемого кода различными процессами.
Динамическая библиотека, сформированная данной системой, является одним из элементов кэша базы данных, используемого модулем проверки 104.
На Фиг.4 показана схема использования кэша антивирусной базы несколькими процессами. При проведении антивирусной проверки антивирусное приложение может создавать несколько процессов проверки и контролировать ход их выполнения. Каждый процесс проверки загружает модуль проверки 104, который использует кэш антивирусной базы, представленный в виде файлов, отображенных в память, и динамической библиотеки, сохраненных в постоянной памяти.
Кэш антивирусной базы, представленный в таком формате, позволяет загружать файлы кэша в оперативную память и использовать их одновременно несколькими процессами проверки. При этом не производятся дополнительные преобразования, поскольку необходимые преобразования были произведены на этапе формирования кэша из антивирусной базы данных модулем подготовки 102.
Участки памяти заполняются данными кэша (Секция 1 - Секция N), которые используются разными процессами (Процесс 1 - Процесс М). Файлы кэша (отображенные в память файлы и динамическая библиотека) позволяют работать с их содержимым как с областью памяти, что позволяет успешно использовать один и тот же файл всеми процессами одновременно, при этом в памяти системы содержится только одна копия данных.
В одном из вариантов описываемой системы все секции, содержащие данные (сигнатуры, информацию об угрозах и т.п.), могут быть также помещены в общую динамическую библиотеку в виде секции данных, доступных только для чтения. В этом случае динамическая библиотека должна заново формироваться при обновлении входящих в нее данных.
Сам модуль проверки 104 может также обновляться. Новая версия модуля проверки может использовать другое внутреннее представление базы данных. При этом должен быть обновлен и модуль подготовки, формирующий кэш базы данных. При загрузке обновленной базы новая версия модуля подготовки сформирует секции файлов кэша в новом формате.
Таким образом, система решает задачу оптимизации использования памяти благодаря использованию кэша антивирусной базы модулем проверки. При этом кэш антивирусной базы формируется модулем загрузки из антивирусной базы данных в формате, используемом модулем проверки.
В заключение следует отметить, что приведенные в описании сведения являются только примерами, которые не ограничивают объем настоящей полезной модели, определенной формулой. Специалисту в данной области становится понятным, что могут существовать и другие варианты осуществления настоящей полезной модели, согласующиеся с сущностью и объемом настоящей полезной модели.