СПОСОБ УПРЕЖДАЮЩЕГО СКАНИРОВАНИЯ НА НАЛИЧИЕ ВРЕДОНОСНОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
METHOD OF PROACTIVE SCANNING FOR MALICIOUS SOFTWARE

Область техники, к которой относится изобретение
Настоящее изобретение относится к способу и устройству для выполнения сканирования на наличие вредоносного программного обеспечения. В частности, настоящее изобретение относится к способу и устройству для оптимизации производительности компьютерной системы, выполняющей сканирование группы файлов на наличие вредоносного программного обеспечения.
Уровень техники
«Вредоносное ПО» представляет собой сокращенное наименование вредоносных программных средств, используемое в качестве термина, относящегося к любым программам, предназначенным для проникновения или повреждения компьютерной системы без информированного согласия владельца. Вредоносное ПО может включать компьютерные вирусы, черви, «троянские кони», руткиты, рекламное и шпионское ПО, а также любые другие вредоносные или нежелательные программы.
Для обнаружения и возможного удаления вредоносного ПО многие конечные пользователи используют антивирусное программное обеспечение. Чтобы обнаружить вредоносный файл, антивирусное программное обеспечение должно иметь какой-либо способ, позволяющий идентифицировать его среди всех остальных файлов, присутствующих в устройстве. Как правило, для этого требуется, чтобы антивирусное программное обеспечение располагало базой данных, содержащей «сигнатуры» или «отпечатки» (fingerprints), которые являются характерными для отдельных файлов вредоносных программ. Когда поставщик антивирусного программного обеспечения выявляет угрозу нового вредоносного программного обеспечения, осуществляется анализ этой угрозы и генерация сигнатуры. После этого вредоносное программное обеспечение становится «известным», и его сигнатуру можно передавать конечным пользователям в качестве обновлений для их локальных баз данных антивирусного программного обеспечения.
Антивирусное программное обеспечение, как правило, обеспечивает сканирование файлов по требованию, при этом пользователь компьютерной системы определяет, когда следует сканировать файлы в компьютерной системе на наличие вредоносного ПО. При сканировании по требованию пользователь может активировать процесс сканирования вручную или настроить процесс сканирования на запуск при определенных обстоятельствах. Например, пользователь может настроить антивирусное программное обеспечение на еженедельное сканирование конкретных папок или директорий (эти термины будут использоваться здесь на равных основаниях) и сканировать все файлы в компьютерной системе раз в месяц. Кроме того, антивирусное программное обеспечение может также обеспечить защиту в режиме реального времени от вредоносного ПО путем выполнения сканирования по доступу.
В случае сканирования по доступу компьютерную систему контролируют на наличие вредоносного программного обеспечения, автоматически сканируя файлы в фоновом режиме по мере обнаружения доступа к файлам со стороны одного или нескольких приложений, выполняемых в компьютерной системе. Наиболее распространенным способом доступа к файлам является доступ с открытием файла только для чтения. Этот тип доступа является обычным для операций над несколькими файлами, например, поиска файлов/в файлах, запуска и выполнения приложения, копирования файлов из папки в папку (из директории в директорию), сжатия файлов и т.д. Следующие примеры дополнительно иллюстрируют некоторые из этих стандартных операций.
Пример 1, команда копирования:
С:\>сору source\*.*d:\dest
Эта команда (приложение) может быть представлена следующим псевдокодом:
для каждого файла в с:\source\*.*
открыть текущий файл только для чтения (с:\source\…)
прочитать данные из файла
закрыть файл
сохранить данные в d:\dest\
Команда копирования генерирует непрерывный последовательный доступ только для чтения ко всем исходным файлам.
Пример 2, приложение, выполняемое со многими файлами модулей. Предполагается, что данное приложение состоит из единственного исполняемого файла (.ЕХЕ) и набора модулей, таких как динамически подключаемые библиотеки (.DLL). Когда пользователь запускает приложение, последнее загружает необходимые библиотеки, а затем запускается. Эта операция может быть представлена следующим псевдокодом:
для файлов application.exe, module1.dll, module2.dll … moduleN.dll
открыть текущий файл только для чтения
загрузить данные из файла
Это приложение генерирует непрерывный последовательный доступ с открытием только для чтения к исходным файлам в директориях приложения и/или соответствующих модулей.
Аналогичные шаблоны непрерывного последовательного доступа с открытием только для чтения к нескольким файлам в данной директории встречаются в других командах или приложениях, напр., поиск шаблона в наборе файлов (grep.exe или findstr.exe), вычисление хэш-суммы файлов (md5.exe), упаковка файлов в контейнер (rar.exe или winzip.exe) и так далее.
На фиг. 1 изображено традиционное взаимодействие между приложением и антивирусным программным обеспечением, когда приложение выполняет доступ с открытием только для чтения к нескольким файлам. Во время этой операции антивирусное программное обеспечение начинает выполнять сканирование файлов по доступу только после того, как обнаружит событие доступа к файлам со стороны приложения.
В частности, когда приложение пытается открыть файл, запрос открытия перехватывается фильтром, генерирующим запрос на сканирование для использования антивирусным программным обеспечением и предотвращающим открытие и использование файла приложением. После приема запроса на сканирование антивирусное программное обеспечение сканирует файл и генерирует результат обычным способом. В зависимости от результата, доступ к файлу возвращается приложению для его использования, например, чтения, копирования или исполнения файла. Однако, если приложению необходим доступ к нескольким файлам, эта операция будет повторяться последовательно для доступа приложения к каждому последующему файлу, как показано на фиг. 1. Это очень медленный и трудоемкий процесс, влияющий на производительность приложения и компьютерной системы.
Большинство современных компьютерных систем в настоящее время оптимизированы для работы в многозадачном режиме. Типовой процессор (CPU) часто включает поддержку многоядерности (многопоточности), эффективно обеспечивающую возможность кажущегося одновременного выполнения задач приложения. Поток выполнения (поток) определяется как наименьшая единица обработки (например, задача или часть задачи), которая может быть спланирована операционной системой. Многопоточность относится к приложению, имеющему несколько потоков выполнения, в котором выполнение потоков планируется операционной системой на одно и то же время. В статье компании INTEL™ «Прогнозирование и измерение характеристик параллельного выполнения», 9 марта 2010 г., доступной по адресу http://software.intel.com/en-us/articles/predicting-and-measuring-parallel-performance/, раскрыта разработка распараллеленного программного обеспечения с использованием многопоточных приложений, чтобы позволить им обработать заданный набор данных за меньшее время, или обработать несколько наборов данных за фиксированное время.
Единственный процессор может выполнять многопоточную обработку за счет мультиплексирования по времени потоков выполнения (т.е. многозадачности) таким образом, чтобы процессор производил переключение контекста между различными потоками. Это переключение контекста происходит так часто, что пользователь воспринимает потоки или задачи как выполняющиеся одновременно или параллельно. В мультипроцессорной или многоядерной системе некоторые потоки или задачи фактически выполняются в одно и то же время (в зависимости от количества процессоров), при этом каждый процессор или ядро исполняет отдельный поток или задачу. Чтобы достичь максимальной производительности, приложения, выполняемые компьютерной системой, должны пытаться распараллеливать свои сложные уравнения или задачи.
Параллельное сканирование нескольких файлов антивирусным программным обеспечением на наличие вредоносного программного обеспечения может достигаться за счет одновременного планирования выполнения процесса сканирования каждого из файлов в одном или нескольких потоках. Как уже отмечалось, операционная система управляет выполнением потоков в многозадачной и/или многоядерной компьютерной системе. В целях увеличения производительности компьютерной системы параллельное сканирование может выполняться для нескольких файлов в очереди сканирования. Постановка в очередь файлов, к которым осуществляется доступ, в целях сканирования на наличие вредоносного программного обеспечения может использовать возможности параллельного сканирования. Такие сканирование может выполняться способами асинхронного сканирования по закрытию. Но даже при поддержке многоядерности параллельное сканирование по доступу нескольких файлов на наличие вредоносного программного обеспечения при доступе приложения с открытием только для чтения к нескольким файлам оказывается затруднительным. Постановка в очередь файлов для последующего параллельного или пакетного сканирования не является подходящим вариантом для приложений, требующих работы в режиме доступа с открытием только для чтения к файлам. Этот тип доступа к файлам требует немедленного синхронного отклика от антивирусного программного обеспечения, чтобы позволить приложению как можно быстрее продолжить работу. Запросы на сканирование от драйвера фильтра к антивирусному программному обеспечению нельзя поставить в очередь для будущей групповой обработки, поскольку антивирусное программное обеспечение не знает, какой следующий файл потребуется приложению.
Приложения могут генерировать произвольные множественные последовательные запросы на открытие файлов только для чтения, при этом типовая логика антивирусного сканирования требует, чтобы каждый запрос на открытие файла только для чтения инициировал событие или запрос сканирования этого файла. В связи с последовательным характером доступа к файлу логика сканирования не может определить, к каким файлам будет в дальнейшем осуществлять доступ приложение. Это не позволяет антивирусному программному обеспечению воспользоваться преимуществом пакетного или параллельного сканирования нескольких файлов в современных компьютерных системах. Из этого следует, что либо приложению перед запуском придется ожидать, пока не закончится сканирование на наличие вредоносного программного обеспечения по всем файлам, либо его выполнение будет прерываться при сканировании каждого файла, к которому необходимо получить доступ. Оба сценария существенно ухудшают производительность приложения и компьютерной системы.
Синхронный процесс сканирования по доступу блокирует запуск приложения или прерывает его выполнение, пока не будет завершено сканирование всех файлов или каждого файла на наличие вредоносного программного обеспечения. По этой причине антивирусное программное обеспечение препятствует работе приложения, замедляя скорость выполнения его задач. Это сказывается на производительности компьютерной системы.
Раскрытие изобретения
Целью настоящего изобретения является предложение способа выполнения сканирования на наличие вредоносного программного обеспечения, минимизирующего задержки, вызываемые сканированием при выполнении приложений в компьютерной системе, и, тем самым, оптимизирующего производительность компьютерной системы.
Согласно первому аспекту изобретения предлагается способ сканирования на наличие вредоносного программного обеспечения при выполнении приложения в компьютерной системе, включающий следующие шаги: обнаруживают события доступа приложения к файлам, содержащимся в общей директории, используют обнаруженные события доступа для идентификации одной или более групп файлов, содержащихся в указанной общей директории, доступ к которым приложение может захотеть получить в дальнейшем, и сканируют указанные одну или более групп файлов на наличие вредоносного программного обеспечения прежде, чем приложение попытается осуществить доступ к файлам группы или групп.
Варианты осуществления настоящего изобретения предусматривают, что антивирусное программное обеспечение может выполнять сканирование группы из множества файлов без необходимости полностью блокировать выполнение приложения до использования одного или более файлов в группе.
В качестве опции, способ включает также выбор группы или групп файлов на основе типов файлов, доступом к которым осуществляется приложением. Выбор файлов предпочтительно включает сопоставление типов файлов, доступом к которым осуществляется приложением, с типами файлов, содержащихся в общей директории. Файлы в группе или группах файлов предпочтительно являются файлами, требующими сканирования. В некоторых случаях способ дополнительно включает идентификацию одной или более групп файлов путем добавления текущего файла, для которого обнаружен доступ к нему приложения, к группе файлов для сканирования, когда текущий файл требует сканирования.
В некоторых случаях в способе использование обнаруженных событий доступа включает шаг определения количества обнаруженных событий доступа в общей директории и использования результатов для инициирования шага сканирования одной или более групп. Инициирование шага сканирования предпочтительно происходит, когда количество обнаруженных событий доступа достигает заданного порогового значения. В некоторых случаях использование обнаруженных событий доступа для идентификации одной или более групп файлов включает шаг добавления текущего файла, для которого обнаружен доступ к нему приложения, к группе файлов при инициировании шага сканирования. В некоторых случаях определение количества обнаруженных событий доступа включает шаг сброса количества обнаруженных событий доступа, когда истекает первый период времени, а шаг сканирования не был инициирован. В некоторых случаях способ включает шаг завершения сканирования группы или групп, когда истекает второй период времени после того, как был инициирован шаг сканирования.
В некоторых случаях в способе шаг использования обнаруженных событий доступа для идентификации одной или более групп файлов включает шаг ведения списка типов обнаруженных файлов, к которым осуществляется доступ, при этом шаг идентификации одной или более групп файлов включает шаг выбора файлов на основе списка типов файлов. Выбор файлов дополнительно включает сопоставление списка типов файлов, к которым осуществляется доступ приложения, с типами файлов, содержащихся в общей директории.
В качестве возможного варианта шаг обнаружения событий доступа приложения к файлам, содержащимся в общей директории, включает прием запроса на сканирование файла, к которому осуществляется доступ приложения, содержащегося в общей директории. В некоторых случаях шаг обнаружения событий доступа приложения к файлам, содержащимся в общей директории, включает обнаружение доступа приложения к файлу и генерацию запроса на сканирование файла, когда требуется сканирование.
Согласно второму аспекту настоящего изобретения предлагается компьютерная программа для сканирования на наличие вредоносного программного обеспечения при выполнении приложения в компьютерной системе, причем компьютерная программа содержит средства компьютерного программного кода, пригодные для реализации следующих шагов:
обнаружение события доступа приложения к файлам, содержащимся в общей директории;
использование обнаруженных событий доступа для идентификации одной или более групп файлов в указанной общей директории, доступ к которым приложение может захотеть осуществить в дальнейшем;
подача команды сканеру вредоносного программного обеспечения на выполнение сканирования указанных одной или более групп файлов на наличие вредоносного программного обеспечения прежде, чем приложение попытается осуществить доступ к файлам группы или групп.
Компьютерная программа может также содержать средства компьютерного программного кода, пригодные для выполнения сканирования указанной одной или более групп файлов на наличие вредоносного программного обеспечения.
Согласно третьему аспекту настоящего изобретения предлагается описанная выше компьютерная программа, сохраненная на машиночитаемом носителе информации.
Согласно четвертому аспекту изобретения предлагается компьютерная система, выполненная с возможностью сканирования файлов на наличие вредоносного программного обеспечения при выполнении приложения на процессоре, причем компьютерная система содержит модуль обнаружения, служащий для обнаружения событий доступа приложения к файлам в общей директории и использования обнаруженных событий доступа для идентификации одной или более групп файлов в указанной общей директории, доступом к которым приложение может захотеть осуществить в дальнейшем, а также подачи модулю сканирования команды сканировать указанные одну или более групп файлов на наличие вредоносного программного обеспечения прежде, чем приложение попытается осуществить доступ к файлам группы или групп. Компьютерная система может также содержать модуль сканирования для выполнения сканирования одной или более групп файлов.
Краткое описание чертежей
На фиг. 1 представлена диаграмма, иллюстрирующая относящийся к известному уровню техники процесс выполнения сканирования по доступу на наличие вредоносного программного обеспечения.
На фиг. 2 схематически изображена компьютерная система согласно одному из вариантов осуществления настоящего изобретения.
На фиг. 3 представлена диаграмма, иллюстрирующая процесс выполнения сканирования по доступу на наличие вредоносного программного обеспечения согласно одному из вариантов осуществления настоящего изобретения.
На фиг. 4 представлена диаграмма, иллюстрирующая процесс согласно одному из вариантов осуществления настоящего изобретения.
На фиг. 5 изображена таблица доступа к директориям для использования при обновлении и ведении директорий, к которым осуществляют доступ приложения согласно вариантам осуществления настоящего изобретения.
На фиг. 6 представлена диаграмма, иллюстрирующая процесс выполнения сканирования по доступу на наличие вредоносного программного обеспечения для приложения, осуществляющего доступ к файлам, согласно одному из вариантов осуществления настоящего изобретения.
На фиг. 7 представлена диаграмма, иллюстрирующая процесс выполнения сканирования по доступу на наличие вредоносного программного обеспечения для приложения, осуществляющего доступ к файлам, согласно другому варианту осуществления настоящего изобретения.
Осуществление изобретения
Чтобы по меньшей мере частично преодолеть описанные выше проблемы, в настоящей заявке предлагается повысить производительность компьютерной системы путем выполнения пакетного или параллельного сканирования по доступу нескольких файлов на наличие вредоносного программного обеспечения до использования приложением одного из нескольких файлов. Это означает, что выполнение приложения не блокируется полностью при последующих событиях доступа к файлам. Как описано выше, пакетное или параллельное сканирование представляет собой одновременное планирование сканирования группы файлов компьютерной системой. Например, одновременное планирование нескольких потоков сканирования, по одному потоку на каждый файл в группе, для выполнения в компьютерной системе.
Этот тип сканирования обеспечивается путем обнаружения событий доступа со стороны приложения к файлам, содержащимся в общей директории, использования обнаруженных событий доступа для идентификации одной или нескольких групп файлов, содержащихся в указанной общей директории, доступом к которым приложение может захотеть осуществить в дальнейшем, и сканирования указанных одной или более групп файлов на наличие вредоносного программного обеспечения прежде, чем приложение попытается осуществить доступ к файлам группы или групп. После сканирования группы файлов может быть идентифицирована и/или просканирована следующая группа файлов.
Благодаря выполнению пакетного или параллельного сканирования группы файлов, которые может использовать приложение, вероятность блокирования или постоянного прерывания работы приложения из-за сканирования на наличие вредоносного программного обеспечения сводится к минимуму. Это объясняется тем, что приложение может осуществить доступ и использовать просканированные файлы в группе, не требующие больше сканирования. По существу, если для каждого сканирования идентифицирована правильная группа файлов, задержка будет соответствовать сканированию только одного файла, после чего выполнение приложения не будет блокироваться какими-либо следующими циклами сканирования на наличие вредоносного программного обеспечения, когда приложение получает доступ к просканированным файлам. Этот тип пакетного или параллельного сканирования на наличие вредоносного программного обеспечения минимизирует задержку, вводимую сканированием по доступу на наличие вредоносного программного обеспечения, тем самым, оптимизируя производительность компьютерной системы.
На фиг. 2 схематически изображена компьютерная система 1 и удаленная компьютерная система 12 согласно вариантам осуществления настоящего изобретения. Компьютерная система 1 может быть реализована в виде комбинации компьютерного аппаратного и программного обеспечения. Компьютерная система 1 содержит память 2, кэш-память 3, процессор 4 и приемопередатчик 5. В памяти 2 хранятся все файлы, требующиеся компьютерной системе 1. Файлы, хранящиеся в памяти 2, содержат различные программы/исполняемые файлы, выполняемые процессором 4, а также какие-либо файлы 6 данных. Приложения/программы/исполняемые файлы, хранящиеся в памяти 2 и выполняемые процессором 4, содержат модуль 7 обнаружения и модуль 8 сканирования на наличие вредоносного программного обеспечения, каждый из которых может представлять собой подмодули антивирусного модуля 9, позволяющего выполнять антивирусные программы локально, а также файловую систему 10 и любые другие программы/приложения 11. Файлы 6 данных, хранящиеся в памяти 2, могут включать файлы данных приложений, таблицы доступа к директориям, как определено ниже, файлы данных с определениями вредоносного программного обеспечения, файлы, содержащие правила эвристического анализа, белые списки, черные списки и т.д. Кэш-память 3 обеспечивает модуль временного хранения для хранения данных, сканируемых модулем 8 сканирования на наличие вредоносного программного обеспечения. Приемопередатчик 5 может использоваться для осуществления связи по сети Интернет/локальной вычислительной сети ЛВС (LAN) или сети 13 с удаленной компьютерной системой 12. Удаленная компьютерная система 12 может обеспечивать хранение данных и службы приложений для компьютерной системы 1, например, удаленная компьютерная система 12 может представлять собой сервер приложений, обеспечивающий приложения программного обеспечения как сервиса (SaaS, Software as a Service) для пользователя компьютерной системы 1.
Управление удаленной компьютерной системой 12, как правило, осуществляет провайдер различных приложений, выполняемых в удаленной системе 12 и используемых дистанционно пользователем компьютерной системы 1. Удаленная компьютерная система 12 может быть реализована в виде комбинации компьютерного аппаратного и программного обеспечения, как и в случае компьютерной системы 1. Удаленная компьютерная система 12 содержит память 14, процессор 15 и приемопередатчик 16. Как и в случае компьютерной системы 1, в памяти 14 могут храниться файлы, включающие различные приложения/программы/исполняемые файлы, выполняемые процессором 15, а также какие-либо файлы данных. Приложения/программы/исполняемые файлы, хранящиеся в памяти 14 и выполняемые процессором 15, включают также модуль 18 обнаружения и модуль 19 сканирования на наличие вредоносного программного обеспечения, каждый из которых может представлять собой подмодули антивирусного модуля 20, позволяющего выполнять антивирусные программы локально в удаленной системе 12. Приемопередатчик 16 используется для осуществления связи с компьютерной системой 1 по сети 13.
Во время работы пользователь компьютерной системы 1 может выполнять приложения локально или в удаленной компьютерной системе 12. Модуль 8 сканирования на наличие вредоносного программного обеспечения компьютерной системы 1 может использоваться для сканирования на наличие вредоносного программного обеспечения в памяти 2, доступ к которой осуществляется локальными приложениями. Модуль 19 сканирования на наличие вредоносного программного обеспечения удаленной системы 12 может использоваться для сканирования файлов на наличие вредоносного программного обеспечения в памяти 14, доступ к которой осуществляется приложениями удаленной системы 12. Способы сканирования файлов в любой из этих систем могут основываться на способах, предлагаемых согласно настоящему изобретению. Следует понимать, что варианты осуществления изобретения согласно настоящему описанию могут быть реализованы в автономных или связанных в сеть компьютерных системах вплоть до распределенных компьютерных систем, где файлы и приложения хранятся и выполняются удаленно.
В частности, компьютерные системы 1 или 12 выполнены с возможностью сканирования файлов на наличие вредоносного программного обеспечения при выполнении приложения или приложений, исполняющихся на каком-либо из процессоров 4 или 15, соответственно. Компьютерные системы 1 или 12 содержат модули 7 или 18 обнаружения, соответственно, для обнаружения событий доступа приложения к файлам, содержащимся в общей директории, использования обнаруженных событий доступа для идентификации одной или более групп файлов, содержащихся в указанной общей директории, доступ к которым приложение может захотеть получить в дальнейшем, и подачи модулям 8 или 19 сканирования, соответственно, команды сканировать указанные одну или более групп файлов на наличие вредоносного программного обеспечения прежде, чем приложение попытается осуществить доступ к файлам группы или групп. Как показано на схеме, компьютерные системы 1 или 12 уже содержат модули 8 или 19 для сканирования указанных одной или более групп файлов в ответ на подачу команды модулями 7 или 18 обнаружения, соответственно. Следует понимать, что, хотя модули 8 или 19 сканирования реализованы в антивирусных модулях 9 и 20 соответственно, модули 8 или 19 сканирования можно также было бы реализовать на других компьютерных системах/серверах так, чтобы модуль 7 или 18 обнаружения передавал по сети 13 команды на сканирование одной или более групп файлов.
Следует понимать, что варианты осуществления изобретения можно использовать при облачных вычислениях или в распределенной компьютерной системе. Например, приложение может выполняться в удаленной компьютерной системе 12 и осуществлять доступ к файлам из удаленного центра обработки данных (не показан), причем обнаружение событий доступа к файлам производится в центре обработки данных, но сканирование на наличие вредоносного программного обеспечения выполняется в удаленной компьютерной системе 12. Удаленная компьютерная система 12 может выполнять «облачное» сканирование, что служит примером обеспечения возможности сканирования на наличие вредоносного программного обеспечения по сети или с помощью распределенной компьютерной системы. Чтобы минимизировать непроизводительные затраты ресурсов, связанные со сканированием файлов по сети, т.е. чтобы минимизировать объем передаваемых данных, сканирование можно ограничить проверкой метаданных, хранящихся в удаленном центре обработки данных (на удаленном сервере или базовом сервере). Метаданные могут создаваться для каждого файла на основе хэш-значения (напр., с помощью алгоритма SHA1), вычисленного по данным файла или конкретным частям данных файла. При обнаружении событий доступа к файлам, генерируемым пользовательским приложением, удаленная компьютерная система 12 загружает и сканирует только метаданные. Пользовательская главная компьютерная система 1 может обращаться к удаленной компьютерной системе 12 с запросом относительно данных сканируемого файла и принимать сведения о статусе на основе ограниченного проверочного сканирования (чистый, зараженный и название вредоносного программного обеспечения).
Варианты осуществления настоящего изобретения обеспечивают возможность параллельного сканирования (например, многопоточного сканирования) с помощью компьютерной системы 1 или удаленной компьютерной системы 14 для сканирования запросов, таких как запросы на сканирование по доступу файлов, открываемых только для чтения. Способы, раскрытые в настоящем документе, основаны на анализе поведения одного или более приложений в целях выявления зависимостей при генерации приложением последовательного доступа к нескольким файлам в текущей рабочей директории приложения или в общей директории. Термин «общая директория» относится к одному логическому местоположению в памяти (например, на дисковом накопителе), где хранится один или более файлов. Производительность оптимизируется благодаря тому, что приложения обычно осуществляют доступ ко многим файлам в одной и той же папке или директории. Если антивирусное программное обеспечение распознает эту схему поведения приложения, оно может выполнить упреждающее сканирование группы файлов, к которым в дальнейшем приложение может осуществить доступ или использовать эти файлы. После этого антивирусное программное обеспечение выполняет сканирование по доступу групп из нескольких файлов на наличие вредоносного программного обеспечения.
На фиг. 3 изображен процесс выполнения пакетного или параллельного сканирования по доступу на наличие вредоносного программного обеспечения в соответствии с одним из вариантов осуществления настоящего изобретения. Антивирусное программное обеспечение группирует вместе несколько файлов в зависимости от поведения приложений, осуществляющих доступ к файлам, и выполняет упреждающее сканирование по группам, состоящим из нескольких файлов. Результаты сканирований кэшируются, и, если приложение осуществляет доступ к файлу, просканированному подобным образом, оно получает от кэш-памяти ответ о том, что данный файл был просканирован, и что приложение может приступить к использованию файла.
На практике нормальное сканирование файлов осуществляется в пользовательском режиме, при этом антивирусное программное обеспечение перехватывает низкоуровневые события доступа к файлу со стороны приложения и посылает запрос на сканирование процессу пользовательского режима. Это дорогостоящая операция, требующая переключения контекста (из режима ядра в пользовательский режим и обратно). Следует понимать, что способы сканирования согласно настоящему описанию уменьшают количество обратных вызовов антивирусного программного обеспечения из приложения, что значительно повышает производительность. Например, в антивирусном программном обеспечении имеется драйвер-фильтр ядра, перехватывающий попытки приложения осуществить доступ или открыть файлы. Драйвер-фильтр ядра посылает запрос процессу пользовательского режима на выполнение задачи сканирования файла, к которому пытается осуществить доступ приложение. Служба сканирования, работающая в пользовательском режиме, выполняет фактическое сканирование файла на наличие вредоносного программного обеспечения и передает сведения о результатах и статусе сканирования обратно драйверу-фильтру ядра. Исходя из этих результатов, драйвер-фильтр ядра разрешает или запрещает приложению доступ к файлу.
Как показано на фиг. 3, когда приложение открывает файл, называемый file1, антивирусное программное обеспечение перехватывает запрос приложения на открытие файла file1. Определив по поведению приложения необходимость выполнения пакетного или параллельного сканирования, антивирусное программное обеспечение выполняет пакетное или параллельное сканирование группы файлов, которая может содержать запрашиваемый файл (например, file1, file2 и file3). После завершения сканирования файлов file1, file2 и file3 результаты кэшируются, и приложение может приступить к открытию и использованию файла file1 в обычном порядке. Поскольку файлы file2 и file3 также были просканированы, когда приложение открывает эти файлы, оно получает от кэш-памяти ответ, разрешающий приложению немедленно открыть и использовать файлы file2 и file3 (в зависимости от ответа). В этом примере пакетное или параллельное сканирование группы файлов разрешает приложению выполнение без дальнейших прерываний.
Хотя пакетное или параллельное сканирование группы файлов может существенно повысить общую производительность приложения или приложений, выполняемых компьютерной системой, производительность существенно улучшается, если группа сканируемых файлов содержит только файлы, требующиеся приложению (приложениям). Сканирование файлов, не используемых приложением, может повлиять на производительность, только если этот файл не будет использоваться другим приложением. Например, если антивирусное программное обеспечение сканирует упреждающим образом слишком много файлов, к которым не будет осуществляться доступ каким-либо приложением, оно лишь уменьшает общую производительность, поскольку ресурсы компьютеров при этом используются для сканирования ненужных файлов. Следующие варианты осуществления настоящего изобретения раскрывают способы минимизации количества сканирований файлов, максимально увеличивающие производительность приложения или приложений и компьютерной системы.
На фиг. 4 представлена схема, дополнительно иллюстрирующая процесс сканирования на наличие вредоносного программного обеспечения при выполнении одного или нескольких приложений компьютерной системой согласно одному из вариантов осуществления настоящего изобретения. Процессы, выполняемые модулем сканирования или антивирусным программным обеспечением для каждого приложения, осуществляющего доступ к файлам в общей директории, можно вкратце описать следующим образом.
А1. Обнаруживают события доступа со стороны приложения к файлам в общей директории.
А2. Используют обнаруженные события доступа для идентификации одной или более групп файлов в указанной общей директории, доступом к которым приложение может захотеть осуществить в дальнейшем.
A3. Сканируют указанные одну или более групп файлов на наличие вредоносного программного обеспечения прежде, чем приложение попытается осуществить доступ к файлам группы или групп.
На шаге А1 обнаружение событий доступа приложения к файлам, содержащимся в общей директории, включает прием запроса на сканирование файла, за доступом к которому обращается приложение (текущего файла, к которому осуществляется доступ), в общей директории. Обнаружение доступа со стороны приложения к файлу может, кроме того, включать перехват осуществления доступа к файлу, осуществляемого приложением, а также генерирование и передачу запроса на сканирование антивирусному программному обеспечению в целях выполнения сканирования, когда требуется сканирование.
На шаге А2 использование обнаруженных событий доступа для идентификации одной или более групп файлов может содержать шаг выбора группы или групп файлов на основе типов файлов для тех файлов, доступ к которым осуществляется приложением. При этом может выполняться выбор файлов, типы которых соответствуют типам файлов, за доступом к которым обращается приложение, содержащихся в общей директории. Кроме того, файлы в группе или группах файлов можно выбирать из числа файлов в общей директории, требующих сканирования. Текущий файл, к которому обнаружен доступ со стороны приложения, можно добавить к группе файлов для сканирования, если текущий файл требует сканирования.
Чтобы использовать обнаруженные события доступа и инициировать сканирование группы или групп файлов, шаг А2 может включать определение количества обнаруженных событий доступа в общей директории и использование результатов для инициирования шага сканирования одной или более групп. Инициирование сканирования может произойти, когда количество обнаруженных событий доступа достигает порогового значения N. Это пороговое значение может представлять собой заранее определенное пороговое значение или динамическое пороговое значение, определяемое антивирусным программным обеспечением на основе наблюдаемого поведения одного или более приложений, осуществляющих доступ к файлам в общей директории. Текущий обнаруженный файл, доступ к которому будет осуществлять одно или несколько приложений, можно добавить к группе файлов. Это может произойти до или при инициировании шага сканирования. Текущий файл, к которому осуществляется доступ, может соответствовать файлу, соответствующему принятому запросу на сканирование. После этого текущий файл добавляют к группе файлов для сканирования. Группа файлов сканируется, исходя из запроса на сканирование, принятого антивирусным программным обеспечением для текущего файла. Чтобы избежать ненужного сканирования, когда приложения нечасто обращаются за доступом к директории, шаг обнаружения количества событий доступа может содержать сброс количества обнаруженных событий доступа, когда истек первый период времени, а шаг сканирования не был инициирован.
Как объяснено ниже, использование обнаруженных событий доступа для идентификации одной или более групп файлов может включать шаг ведения списка типов файлов для обнаруженных файлов, к которым производится доступ, а шаг идентификации одной или более групп файлов включает шаг выбора файлов на основе списка типов файлов. Выбор файлов включает также сопоставление списка типов файлов, доступ к которым осуществляло приложение, с типами файлов, содержащихся в общей директории. Антивирусное программное обеспечение может вести список для каждой общей директории, содержащей файлы, к которым часто обращаются одно или более приложений.
На шаге A3 использование обнаруженных событий доступа для идентификации одной или более групп файлов может включать отслеживание количества обнаруженных событий доступа и инициирование шага A3 на основании результатов. Инициирование шага A3 может произойти, когда количество обнаруженных событий доступа достигает заданного порогового значения или порогового значения сканирования. Идентификация одной или более групп файлов для сканирования может включать выбор файлов в общей директории исходя из типов файлов, к которым осуществляло доступ раньше или осуществляет доступ в настоящий момент приложение. Альтернативно, выбор групп может определяться на основании сохраняемого списка типов или имен файлов, к которым осуществляли доступ различные приложения в общей директории. Кроме того, шаг A3 может включать прекращение сканирования после истечения заданного периода времени, например, если к директории часто осуществляется доступ, но не было обращений в течение периода времени достаточного, чтобы служить основанием для прекращения сканирования директории, сканирование одной или более групп файлов может быть прекращено, чтобы избежать ненужной обработки данных. Это может произойти, когда после того, как был инициирован шаг сканирования, истек второй период времени.
Отслеживание количества обнаруженных событий доступа (или число попаданий) к общей директории помогает определить, активно ли приложения осуществляют доступ к данной директории. Если директория имеет достаточно высокое «число срабатываний» вследствие осуществления доступа в течение короткого периода времени, то при последующих событиях доступа к файлам в директории антивирусное программное обеспечение может одновременно сканировать пакет файлов, выбранных по преобладающим типам сканируемых файлов, или по типу файла, к которому осуществляется доступ, и текущему файлу, к которому осуществляется доступ. Как упоминалось выше, одновременное сканирование может обеспечиваться одновременным планированием нескольких потоков сканирования в целях сканирования файлов, т.е. параллельным или пакетным сканированием. Сканирование инициируется после того, как количество обнаруженных событий доступа достигает порогового значения.
Сканирование группы файлов выполняется в том случае, если обнаружено, что текущий файл, к которому осуществляет доступ приложение, не был просканирован. В этом случае доступ к файлу обнаруживает или перехватывает драйвер-фильтр ядра, генерирующий запрос на сканирование, принимаемый антивирусным программным обеспечением для сканирования текущего файла, к которому осуществляется доступ. Вместо сканирования только того файла, который не был просканирован, антивирусное программное обеспечение не только сканирует файл, который не был просканирован и к которому осуществлялся доступ, но и загружает группу или группы файлов для сканирования. Антивирусное программное обеспечение выполняет сканирование текущего запроса на сканирование (запроса на сканирование для текущего файла, к которому осуществляется доступ) и одновременно планирует (или выполняет) сканирование для нескольких «захваченных с собой запросов на сканирование» файлов из загруженного списка. Загруженный список представляет собой генерируемый антивирусным программным обеспечение список файлов, к которым может осуществляться доступ, из директории, при этом он может содержать преобладающие типы файлов, к которым осуществляется доступ. Антивирусное программное обеспечение загружает выборку файлов из директории на основе загруженного списка.
Например, если директория (или папка) содержит файлы А, В, С, D, Е, то к моменту времени, когда файлы А и В были просканированы, может считаться, что к этой директории часто происходит доступ. Если файлы С, D и Е были включены в загруженный список, то, когда сканирование инициируется частыми событиями доступа, антивирусное программное обеспечение загружает файлы С, D, Е (файлы А, В пропускаются, поскольку они уже были просканированы). Если обнаружено, что приложение осуществляет доступ к файлу С, то запрос на сканирование файла С будет получен приложением, которое выполнит сканирование файла С вместе со сканированием файлов D и Е. Таким образом, когда впоследствии приложение будет осуществлять доступ к файлам D и Е, драйвером-фильтром не будут генерироваться запросы на сканирование этих файлов, поскольку они уже были просканированы.
Группа или группы файлов представляют собой файлы, выбранные из директории, доступ к которым приложение может захотеть осуществить в дальнейшем. Сканирование группы или групп «захватывает с собой» сканирование текущего файла, к которому осуществляется доступ, т.е. захватывает с собой запрос на сканирование текущего файла. Это предотвращает дальнейшую генерацию или направление запросов на сканирование для файлов группы.
Даже если приложение не осуществляет доступ к некоторым файлам, выбранным для сканирования как «захваченные с собой», потеря производительности в единственном «захваченном с собой» пакете пренебрежимо мала благодаря пакетному или параллельному сканированию. Когда приложение выполняет длительную обработку (например, копирование всей папки с данными), этот тип упреждающего сканирования значительно повышает общую производительность. Антивирусное программное обеспечение оценивает множество файлов, к которым может происходить доступ в директории, выбирая файлы, к которым наиболее часто осуществляют доступ приложения в директории за конкретный период времени. Это можно осуществить путем ведения динамической таблицы доступов к директории, зависящей от поведения различных выполняемых приложений.
На фиг. 5 изображена таблица доступа к директории, иллюстрирующая обновление и введение обнаруженных событий доступа со стороны приложений к файлам в одной или более директории согласно вариантам осуществления настоящего изобретения. Таблица доступа к директории может быть реализована в виде динамической таблицы поиска, хранящейся в памяти. Эту таблицу ведет антивирусное программное обеспечение для использования при определении количества событий осуществления доступа к файлам в директории.
Антивирусное программное обеспечение ведет динамическую таблицу доступа к директории (или таблицу доступа к директории), отслеживающую доступ к файлам со стороны приложений внутри директорий. В настоящем варианте осуществления таблица доступа к директории имеет следующие поля:
- путь к директории, содержащий имя или логическое местоположение директории, в которой осуществляется доступ к одному или более файлам;
- список расширений, к которым происходил доступ, содержащий список расширений файлов, к которым происходил доступ и которые были просканированы в директории;
- число срабатываний, показывающее количество событий доступа к файлам в данной директории; и
- состояние записи, определяющее цикл жизни записи директории.
В этом варианте осуществления поле Состояние записи имеет 3 логических состояния: Отмечено, Получено и Обработано. Состояние Отмечено (т.е. состояние до сканирования) указывает на то, что к файлу в директории осуществлялся доступ, но что число срабатываний в директории еще недостаточно, чтобы служить основанием для параллельного или пакетного сканирования. После того, как число срабатываний достигнет порогового значения, Состояние записи директории изменяется на состояние Получено (т.е. состояние сканирования). Состояние Получено означает, что какое-то приложение активно осуществляло или осуществляет доступ к директории, что служит основанием для параллельного или пакетного сканирования. Антивирусное программное обеспечение предварительно загружает группы файлов, имеющих расширения, перечисленные в Списке расширений, к которым происходил доступ, или расширения текущего файла, к которому происходит доступ, для параллельного или пакетного сканирования. Состояние Обработано означает, что упреждающее сканирование для данной директории уже выполнено, и файлы следует сканировать в нормальном режиме.
Каждое состояние имеет срок действия, после истечения которого запись директории удаляется из таблицы доступа, например, если в течение какого-то периода времени к файлам в директории не происходил доступу, считается, что срок действия записи истек. Состояние Отмечено имеет короткий срок действия и служит просто для распознавания директорий, доступ к которым может происходить часто. Состояния Получено и Обработано имеют более длительные сроки действия, чтобы учесть частоту событий доступа и избежать ненужного повторного сканирования файлов директории, к которым происходил доступ. Следует понимать, что эти сроки могут изменяться антивирусным программным обеспечением на основе любого временного масштаба.
Следует понимать, что поле Состояние записи используется для исключения перезагрузки и сканирования директории, если он лишь недавно был обработан (например, 10 минут назад). Другие варианты реализации таблицы доступа к директории могут исключать это поле и основываться на таймерах или других средствах предотвращения слишком частого сканирования директории, после того, как она была обработана.
На фиг. 6 представлена схема, дополнительно иллюстрирующая процесс использования таблицы, представленной на фиг. 5, при выполнении параллельного или пакетного сканирования по доступу на наличие вредоносного программного обеспечения согласно одному из вариантов осуществления настоящего изобретения. Шаги данного способа выполняются антивирусным программным обеспечением следующим образом.
B1. Для каждого файла, перехватываемого для сканирования на наличие вредоносного программного обеспечения, например, когда генерируется запрос на сканирование открываемого файла, перейти к шагу В2 для проверки таблицы доступа.
B2. Проверить, включена ли директория файла в таблицу доступа; если директория в таблице доступа отсутствует, перейти к шагу В3 для создания записи директории, в противном случае перейти к шагу В4.
B3. Создать запись таблицы доступа для директории файла и инициализировать Состояние записи директории, установив значение Отмечено, число срабатываний = 0, расширение файла добавляется к Списку расширений файла (или списку типов просканированных файлов), перейти для выполнения нормального сканирования на наличие вредоносного программного обеспечения файла, к которому осуществляется доступ.
B4. Проверить, находится ли Состояние записи директории в состоянии Отмечено; если Состояние записи соответствует значению Отмечено, перейти к шагу В5, в противном случае перейти к шагу В8.
B5. Увеличить на единицу Число срабатываний, представляющее собой количество событий доступа к файлам в данной директории со стороны различных приложений, и добавить расширение файла к Списку расширений, к которым происходил доступ.
B6. Проверить, достигает ли Число срабатываний (ЧС) порогового значения N (например, ЧС>=N, где N=5). Если Число срабатываний достигает порогового значения, перейти к шагу В7, в противном случае выполняется нормальное сканирование на наличие вредоносного программного обеспечения файла, к которому осуществляется доступ.
B7. Состояние записи директории изменяется на Получено, и процесс переходит к шагу В8, на котором антивирусное программное обеспечение загружает из директории группу файлов, содержащую файл, к которому осуществляется доступ, для параллельного или пакетного сканирования.
B8. Проверить, находится ли Состояние записи директории в состоянии Получено; если Состояние записи соответствует значению Получено, перейти к шагу В9, в противном случае перейти к шагу В10.
B9. Выполнить параллельное (или пакетное) сканирование на наличие вредоносного программного обеспечения группы или выборки файлов, которые не были просканированы, включающей текущий файл, в директории.
При выборе группы файлов для пакетного или параллельного сканирования можно использовать следующие правила:
- выбирать файлы с расширениями или типами файла, соответствующими файлу, к которому осуществляется доступ в данный момент; или
- выбирать файлы с расширениями или типами файлов, перечисленные в Списке расширений, к которым происходил доступ.
B10. Проверить, имеются ли в директории другие группы файлов. Файлы можно выбирать из загруженного списка. Если имеются другие группы файлов, выполнение способа переходит к шагу В11, в противном случае переходит к шагу В12.
B11. Из загруженного списка выбирают другую группу файлов, которые не были просканированы, выполняется пакетное или параллельное сканирование на наличие вредоносного программного обеспечения, затем выполнение способа переходит к шагу В10. Хотя антивирусное программное обеспечение должно избегать блокирования выполнения приложения, это может быть осуществлено, если поддержка многоядерности позволяет работать в многозадачном режиме, включающем приложение и антивирусное программное обеспечение. Таким образом, пакетное или параллельное сканирование других файлов, которые не были просканированы, из списка может выполняться в фоновом режиме, чтобы приложение могло продолжать работу.
B12. После того, как в директории не останется больше загруженных или файлов, которые не были просканированы, с расширениями, перечисленными в Списке расширений, к которым происходил доступ, Состояние записи директории изменяется на Обработано. Если директория находится в состоянии Обработано, процесс при необходимости выполняет нормальное сканирование файла на наличие вредоносного программного обеспечения.
Результаты сканирований на наличие вредоносного программного обеспечения добавляются в кэш-память сканирования и передаются приложению, когда оно осуществляет доступ к какому-либо просканированному файлу в директории, позволяя приложению немедленно использовать файл, к которому осуществляется доступ.
На фиг. 7 изображена альтернативная схема, иллюстрирующая пакетное или параллельное сканирование по доступу на наличие вредоносного программного обеспечения в соответствии с одним из вариантов осуществления настоящего изобретения. Шаги способа В1-В12, выполняемые антивирусным программным обеспечением, аналогичны представленным на фиг. 6, за исключением шагов В10 и В11 (шаг В11 удален). Шаг В10 описан следующим образом.
В10. Проверить, имеются ли в директории другие группы файлов. Файлы можно выбирать из загруженного списка. Если имеются другие группы файлов, способ переходит к нормальному сканированию на наличие вредоносного программного обеспечения до тех пор, пока приложение не осуществит доступ к другому файлу, требующему сканирования, при этом выполнение способа снова начинается на шаге В1.
Причина исключения перехода к дальнейшему выполнению параллельного сканирования других групп файлов заключается в том, что приложению требуется доступ лишь к ограниченному количеству файлов в директории, поэтому данный процесс препятствует выполнению антивирусным программным обеспечением фонового пакетного или параллельного сканирования всех файлов, включенных в Список расширений, к которым происходил доступ, до тех пор, пока в нем не возникнет абсолютная необходимость, когда какое-либо приложение осуществит доступ к другому файлу. Это также минимизирует количество прерываний сканирования на наличие вредоносного программного обеспечения при выполнении приложения.
Следующий пример иллюстрирует работу упомянутого выше способа при копировании множества файлов из общей директории. Приняты следующие допущения:
a) общая директория содержит набор файлов *.ехе и *.dll;
b) таблицу доступа ведет антивирусная программа;
c) в таблице доступа уже имеется запись директории, относящаяся к общей директории;
d) ведутся число срабатываний, представляющее собой количество событий доступа, и список расширений файлов, к которым происходил доступ.
Используется следующая логика выполнения.
1. Несколько первых файлов ехе, к которым был осуществлен доступ, сканируются нормально, пока директория не получит достаточное количество срабатываний, т.е. число срабатываний не достигнет порогового значения.
2. Как только число срабатываний достигает порогового значения, антивирусное программное обеспечение загружает файлы из директории.
3. Каждый следующий запрос на сканирование файла ехе в директории инициирует «захват с собой» сканирования других файлов ехе (группы файлов) из директории.
4. После окончания копирования срок действия записи истекает спустя некоторый период времени.
Более подробно, когда выполняется операция копирования копировать <из общей директории> *.ехе <в другую директорию>, команда копирования (приложение) будет последовательно осуществлять доступ к файлам ехе, чтобы прочитать и скопировать данные в другую директорию. При осуществлении доступа к первому файлу ехе из общей директории будет генерироваться запрос на сканирование для антивирусного программного обеспечения. Если в таблице доступа нет записи директории для данной общей директории, антивирусное программное обеспечение создаст и инициализирует запись директории для общей директории, при этом число срабатываний записи директории, представляющее собой количество событий доступа, инициализируется, и тип файла, в данном случае ехе, добавляется к списку расширений, относящемуся к данной записи директории. В противном случае число срабатываний записи директории увеличивается на единицу, и тип файла ехе добавляется к списку расширений, если он еще не внесен в список расширений.
После этого первый файл ехе, к которому осуществлен доступ, нормально сканируется на наличие вредоносного программного обеспечения и используется командой копирования. Происходит доступ к последующим файлам ехе, формируются запросы на сканирование и антивирусное программное обеспечение выполняет нормальное сканирование этих файлов, при этом число срабатываний для записи общей директории увеличивается на единицу при каждом доступе, пока запись директории, относящаяся к общей директории, не получит достаточное количество срабатываний. Как только число срабатываний достигает порогового значения, антивирусное программное обеспечение начинает загружать или определяет одну или более групп файлов ехе, которые не были просканированы, из общей директории. Каждый следующий запрос на сканирование файлов ехе, которые не были просканированы, инициирует выполнение параллельного сканирования (т.е. по существу одновременного сканирования) антивирусным программным обеспечением файлов ехе, которые не были просканированы, и одной из групп файлов, которые не были просканированы, из общей директории. Сканирование продолжается, пока не будут обработаны соответствующие файлы ехе в общей директории, или не закончится выполнение команды копирования. После окончания выполнения команды копирования действие записи директории в таблице доступа истекает в течение заданного интервала времени, и по его истечении эта запись удаляется из таблицы доступа.
Каждая из компьютерных систем, описанных в настоящем документе, может выполнять пакетное или параллельное сканирование группы файлов, выбранных из множества файлов из общей директории, к которым осуществляется доступ, на наличие вредоносного программного обеспечения. Процессоры таких систем выполнены с возможностью исполнения команд компьютерных программ на основе способов, раскрытых в настоящем описании, причем такие команды содержатся в машиночитаемом носителе информации, таком как память. Команды компьютерных программ могут считываться в память из другого машиночитаемого носителя или другого устройства через интерфейс связи. Содержащиеся в памяти команды обеспечивают выполнение процессором компьютерной системы процедур или способов согласно настоящему описанию. Однако, в качестве альтернативного варианта, аппаратные схемные средства могут использоваться вместо или в сочетании с командами компьютерной программы для реализации процессов, соответствующих настоящему изобретению. Таким образом, настоящее изобретение не ограничивается каким-либо конкретным сочетанием аппаратных схемных средств и/или программного обеспечения.
В частности, компьютерная программа, содержащая средства компьютерного программного кода, пригодные для выполнения шагов обнаружения событий доступа приложения к файлам, содержащимся в общей директории, использования обнаруженных событий доступа для идентификации одной или более групп файлов в указанной общей директории, доступ к которым приложение может захотеть осуществить в дальнейшем, и подачи команды на сканирование указанных одной или более групп файлов на наличие вредоносного программного обеспечения прежде, чем приложение попытается осуществить доступ к файлам группы или групп. Компьютерная программа может также содержать средства компьютерного программного кода, пригодные также для выполнения сканирования указанной одной или более групп файлов. Компьютерная программа может быть сохранена на машиночитаемом носителе информации.
Кроме того, раскрытые выше способы могут использовать мультипроцессорные, многозадачные, многопотоковые и гиперпотоковые возможности современных компьютерных систем (как описано в настоящем документе, а также в техническом руководстве пользователя «Гиперпотоковая технология lntel», январь 2003 г.) для дальнейшего повышения производительности компьютерной системы при реализации сканирования по доступу файлов, открываемых только для чтения, на наличие вредоносного программного обеспечения, путем предоставления возможности распараллеленного сканирования одной или более групп файлов.
Специалисту в данной области техники понятно, что описанные выше варианты осуществления могут подвергаться различным модификациям без выхода за рамки настоящего изобретения.