патент
№ RU 2634175
МПК G06F21/56

Способ выполнения антивирусных проверок

Авторы:
Левченко Вячеслав Иванович
Номер заявки
2015154378
Дата подачи заявки
18.12.2015
Опубликовано
24.10.2017
Страна
RU
Как управлять
интеллектуальной собственностью
Чертежи 
3
Реферат

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

Формула изобретения

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

а) определяют с помощью антивирусного приложения операцию открытия файла приложением пользователя для записи данных;

б) выполняют антивирусную проверку упомянутого файла на наличие вредоносного кода после закрытия упомянутого файла;

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

количество выполненных антивирусных проверок упомянутого файла;

пороговое значение, равное максимальному количеству антивирусных проверок упомянутого файла;

г) увеличивают количество выполненных антивирусных проверок на единицу в антивирусной таблице для упомянутого файла;

д) выполняют этапы а) - г) до тех пор, пока увеличенное количество выполненных антивирусных проверок не превысит упомянутое пороговое значение;

е) когда увеличенное количество выполненных антивирусных проверок превысило упомянутое пороговое значение, прекращают выполнение антивирусных проверок файла.

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

сигнатурный анализ;

эвристический анализ;

эмуляцию;

анализ с использованием облачного сервиса.

3. Способ по п. 2, в котором сохраняют уровень антивирусной проверки в антивирусную таблицу.

4. Способ по п. 3, в котором уровень антивирусной проверки изменяют в зависимости от уровня по меньшей мере одной выполненной антивирусной проверки.

5. Способ по п. 1, в котором для упомянутого файла антивирусная таблица дополнительно содержит размер упомянутого файла после каждой выполненной антивирусной проверки.

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

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

8. Способ по п. 1, в котором на шаге б) выполняют асинхронную антивирусную проверку файла.

9. Способ по п. 1, в котором на шаге б)

выполняют синхронную антивирусную проверку файла;

после окончания проведения антивирусной проверки файла передают управление приложению.

Описание

[1]

Область техники

[2]

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

[3]

Уровень техники

[4]

Зачастую вредоносные и зараженные файлы имеют небольшой размер. В то же время среди больших файлов, размер которых варьируется от десятков мегабайт до нескольких гигабайт, также можно найти файлы, содержащие вредоносный код. Выполнение антивирусной проверки загружаемых или копируемых по сети файлов большого размера зачастую существенно сказывается на производительности компьютера и скорости загрузки файлов. Загрузка и копирование по сети файлов обычно осуществляются с использованием системного кэша файла (англ. system file cache), расположенного в оперативной памяти компьютера. Системный кэш имеет небольшой размер, однако доступ процессов пользователя к данным системного кэша намного быстрее, чем доступ к данным диска. При загрузке файлов, размер которых существенно превосходит размер системного кэша, содержимое системного кэша необходимо сбрасывать (англ. flushing the cache) при заполнении системного кэша. Сброс системного кэша включает операцию копирования содержимого кэша на диск и последующую очистку системного кэша.

[5]

Загрузка файлов также может осуществляться без использования системного файлового кэша, то есть с помощью так называемой «сквозной» записи, когда запись данных производится напрямую на диск. Однако при сквозной записи данные дополнительно дублируются в кэш. Кроме этого, загрузка файлов может осуществляться с использованием кэша приложения пользователя, осуществляющего запись. В этих случаях загрузка файлов осуществляется путем записи на диск блоков данных небольшого размера (обычно до 64 килобайт). Для защиты данных в случае сбоя системы после записи очередного блока данных файл закрывается для записи данных (например, запрос менеджера ввода-вывода, IRP_MJ_CLEANUP), после чего снова открывается для записи данных (запрос менеджера ввода-вывода, IRP_MJ_CREATE), и осуществляется запись следующего блока данных.

[6]

Частота сброса системного кэша также зависит от приложения, осуществляющего загрузку файла. Например, различные Интернет-браузеры, менеджеры загрузки файлов, torrent-клиенты имеют различные технологии загрузки файлов и, таким образом, могут иметь различную частоту сброса системного кэша на диск. Аналогично, если приложение при загрузке файлов не использует системный кэш, а осуществляет запись небольшими блоками данных, как во втором примере, то размер блока данных может быть различен для различных приложений.

[7]

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

[8]

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

[9]

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

[10]

Раскрытие изобретения

[11]

Настоящее изобретение относится к способам выполнения антивирусных проверок.

[12]

Технический результат заключается в уменьшении количества антивирусных проверок файлов во время записи упомянутых файлов на диск.

[13]

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

[14]

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

[15]

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

[16]

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

[17]

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

[18]

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

[19]

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

[20]

Согласно одному из частных вариантов реализации выполняют асинхронную антивирусную проверку файла.

[21]

Согласно другому частному варианту реализации: выполняют синхронную антивирусную проверку файла; после окончания проведения антивирусной проверки файла, передают управление приложению.

[22]

Краткое описание чертежей

[23]

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

[24]

На Фиг. 1 представлена система выполнения антивирусных проверок.

[25]

На Фиг. 2 представлен способ выполнения антивирусных проверок.

[26]

Фиг. 3 представляет пример компьютерной системы общего назначения.

[27]

Описание вариантов осуществления изобретения

[28]

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

[29]

На Фиг. 1 представлена система выполнения антивирусных проверок. Система содержит антивирусное приложение 101, связанное с антивирусной таблицей 103 и диском 110. Антивирусное приложение 101 предназначено для определения операции сброса системного кэша файла 102 на диск 110 (от англ. flushing the system file cache) в процессе записи приложением пользователя 104 файла 102 на диск 110. Файл 102 является любым файлом, подлежащим антивирусной проверке. Например, антивирусная проверка файла 102 будет производится антивирусным приложением 101 при его загрузке из сети или при копировании файла 102 с другого носителя информации на диск 110. Антивирусное приложение 101 также предназначено для определения операций открытия и закрытия файла 102 приложением пользователя 104.

[30]

При открытии файла 102 для записи данных приложение пользователя 104 вызывает функцию «CreateFile» с включенным параметром «FILE_SHARE_WRITE», означающей, что файл 102 открыт для записи данных. В операционной системе (ОС) Windows за работу с файлами отвечает менеджер ввода-вывода (англ. Input-Output manager, I/O Manager) и драйвер файловой системы (англ. file system driver). За открытие файла отвечает, например, запрос «IRP_MJ_CREATE», а за закрытие - «IRP_MJ_CLEANUP». Таким образом, антивирусное приложение 101 перехватывает вызов функции «CreateFile» и запрос «IRP_MJ_CREATE» для определения открытия файла 102 для записи данных. В частном примере реализации для определения операции закрытия файла 102, антивирусное приложение 101, например, перехватывает запрос «IRP_MJ_CLEANUP». В другом частном примере реализации, определение операции закрытия файла 102 может быть осуществлено с использованием различных структур для регистрации обработчиков файловых запросов.

[31]

Определение операции сброса системного кэша 102 осуществляется путем перехвата вызова функции «CcFlushCache», которая отвечает за сброс системного кэша на диск.

[32]

Антивирусное приложение 101 также предназначено для выполнения антивирусной проверки файла 102 на наличие вредоносного кода в файле 102, а также для определения количества ранее выполненных антивирусных проверок файла 102 путем считывания количества ранее выполненных антивирусных проверок в антивирусной таблице 103. При записи очередного блока данных файл 102 изменяется, и антивирусное приложение 101 заново выполняет антивирусную проверку файла 102 или измененной его части (последнего записанного блока данных). Подтверждение записи блока данных файла на диск осуществляется при сбросе системного кэша 102 на диск либо при операции закрытия файла (запрос «IRP_MJ_CLEANUP»). Кроме этого, антивирусное приложение 101 увеличивает количество выполненных антивирусных проверок на единицу в антивирусной таблице 103 для файла 102 и выполняет антивирусную проверку файла 102 до того момента, пока увеличенное количество выполненных проверок не превышает некоторое заранее заданное в антивирусной таблице 102 пороговое значение. Когда увеличенное количество выполненных антивирусных проверок равно пороговому значению, антивирусное приложение 101 прекращает выполнение антивирусных проверок файла 102.

[33]

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

[34]

На Фиг. 2 представлен способ выполнения антивирусных проверок. Шаги способа выполняются антивирусным приложением 101. На шаге 201 антивирусное приложение 101 определяет открытие файла 102 для записи данных в процессе записи файла 102 на диск 110. Запись файла 102 на диск 110 может происходить при его загрузке по сети или при копировании с другого носителя информации на диск 110.

[35]

На шаге 202 выполняется антивирусная проверка файла 102 на наличие вредоносного кода после закрытия файла 102. Антивирусная проверка может выполняться с использованием известных из уровня техники способов, например, с использованием сигнатурного, эвристического анализов, эмуляции, обработки данных в облачных сервисов, обнаружение с использованием хэш-сумм (например, MD5) и других известных способов обнаружения вредоносного кода (см., например, патент РФ 2477520). В частном варианте реализации антивирусная проверка выполняется для всего файла 102. В другом частном варианте реализации, проверяется лишь обновленная часть файла 102 (то есть последний записанный блок данных).

[36]

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

[37]

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

[38]

Если же вредоносный код не был выявлен в файле 102, на шаге 203 определяют количество ранее выполненных проверок файла 102, содержащееся в антивирусной таблице 103. Например, если запись данных в файл 102 была выполнена пять раз, и каждый раз при закрытии файла 102 выполнялась антивирусная проверка, то количество выполненных антивирусных проверок также равняется пяти. Стоит отметить, что первая антивирусная проверка файла 102 была выполнена при первом закрытии файла 102 после его создания на диске 110 и записи первого блока данных. Далее, на шаге 204, увеличивают количество антивирусных проверок на единицу и сохраняют новое количество антивирусных проверок в антивирусную таблицу 103. На шаге 205 проверяют, превысило ли увеличенное количество выполненных антивирусных проверок пороговое значение. Если количество выполненных антивирусных проверок не превысило пороговое значение, способ продолжается на шаге 201. В противном случае на шаге 206 антивирусное приложение прекращает выполнение антивирусных проверок файла 102 до момента окончания записи всего файла 102 на диск или до момента, пока файл 102 не будет открыт на исполнение.

[39]

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

[40]

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

[41]

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

[42]

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

[43]

Фиг. 3 представляет пример компьютерной системы общего назначения, персональный компьютер или сервер 20, содержащий центральный процессор 21, системную память 22 и системную шину 23, которая содержит разные системные компоненты, в том числе память, связанную с центральным процессором 21. Системная шина 23 реализована, как любая известная из уровня техники шинная структура, содержащая в свою очередь память шины или контроллер памяти шины, периферийную шину и локальную шину, которая способна взаимодействовать с любой другой шинной архитектурой. Системная память содержит постоянное запоминающее устройство (ПЗУ) 24, память с произвольным доступом (ОЗУ) 25. Основная система ввода/вывода (BIOS) 26, содержит основные процедуры, которые обеспечивают передачу информации между элементами персонального компьютера 20, например, в момент загрузки операционной системы с использованием ПЗУ 24.

[44]

Персональный компьютер 20, в свою очередь, содержит жесткий диск 27 для чтения и записи данных, привод магнитных дисков 28 для чтения и записи на сменные магнитные диски 29 и оптический привод 30 для чтения и записи на сменные оптические диски 31, такие как CD-ROM, DVD-ROM и иные оптические носители информации. Жесткий диск 27, привод магнитных дисков 28, оптический привод 30 соединены с системной шиной 23 через интерфейс жесткого диска 32, интерфейс магнитных дисков 33 и интерфейс оптического привода 34 соответственно. Приводы и соответствующие компьютерные носители информации представляют собой энергонезависимые средства хранения компьютерных инструкций, структур данных, программных модулей и прочих данных персонального компьютера 20.

[45]

Настоящее описание раскрывает реализацию системы, которая использует жесткий диск 27, сменный магнитный диск 29 и сменный оптический диск 31, но следует понимать, что возможно применение иных типов компьютерных носителей информации 56, которые способны хранить данные в доступной для чтения компьютером форме (твердотельные накопители, флеш карты памяти, цифровые диски, память с произвольным доступом (ОЗУ) и т.п.), которые подключены к системной шине 23 через контроллер 55.

[46]

Компьютер 20 имеет файловую систему 36, где хранится записанная операционная система 35, а также дополнительные программные приложения 37, другие программные модули 38 и данные программ 39. Пользователь имеет возможность вводить команды и информацию в персональный компьютер 20 посредством устройств ввода (клавиатуры 40, манипулятора «мышь» 42). Могут использоваться другие устройства ввода (не отображены): микрофон, джойстик, игровая консоль, сканер и т.п. Подобные устройства ввода по своему обычаю подключают к компьютерной системе 20 через последовательный порт 46, который в свою очередь подсоединен к системной шине, но могут быть подключены иным способом, например, при помощи параллельного порта, игрового порта или универсальной последовательной шины (USB). Монитор 47 или иной тип устройства отображения также подсоединен к системной шине 23 через интерфейс, такой как видеоадаптер 48. В дополнение к монитору 47, персональный компьютер может быть оснащен другими периферийными устройствами вывода (не отображены), например колонками, принтером и т.п.

[47]

Персональный компьютер 20 способен работать в сетевом окружении, при этом используется сетевое соединение с другим или несколькими удаленными компьютерами 49. Удаленный компьютер (или компьютеры) 49 являются такими же персональными компьютерами или серверами, которые имеют большинство или все упомянутые элементы, отмеченные ранее при описании существа персонального компьютера 20, представленного на Фиг. 3. В вычислительной сети могут присутствовать также и другие устройства, например маршрутизаторы, сетевые станции, пиринговые устройства или иные сетевые узлы.

[48]

Сетевые соединения могут образовывать локальную вычислительную сеть (LAN) 50 и глобальную вычислительную сеть (WAN). Такие сети применяются в корпоративных компьютерных сетях, внутренних сетях компаний и, как правило, имеют доступ к сети Интернет. В LAN- или WAN-сетях персональный компьютер 20 подключен к локальной сети 50 через сетевой адаптер или сетевой интерфейс 51. При использовании сетей персональный компьютер 20 может использовать модем 54 или иные средства обеспечения связи с глобальной вычислительной сетью, такой как Интернет. Модем 54, который является внутренним или внешним устройством, подключен к системной шине 23 посредством последовательного порта 46. Следует уточнить, что сетевые соединения являются лишь примерными и не обязаны отображать точную конфигурацию сети, т.е. в действительности существуют иные способы установления соединения техническими средствами связи одного компьютера с другим.

[49]

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

[50]

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

Как компенсировать расходы
на инновационную разработку
Похожие патенты