Интерфейс IAntimalwareProvider (amsi.h)

Представляет поставщика антивредоносного продукта. Пример кода см. в примере интерфейса IAntimalwareProvider.

Интерфейс IAntimalwareProvider наследуется от интерфейса IUnknown.

Наследование

Интерфейс IAntimalwareProvider наследуется от интерфейса IUnknown.

Методы

Интерфейс IAntimalwareProvider содержит следующие методы.

 
IAntimalwareProvider::CloseSession

Закрывает сеанс. (IAntimalwareProvider.CloseSession)
IAntimalwareProvider::D isplayName

Имя отображаемого поставщика защиты от вредоносных программ.
IAntimalwareProvider::Scan

Сканирование потока содержимого. (IAntimalwareProvider.Scan)

Комментарии

Начиная с Windows 10 версии 1903, в Windows добавлен способ включения проверок подписывания Authenticode для поставщиков. Эта функция отключена по умолчанию для 32-разрядных и 64-разрядных процессов. Если вы создаете поставщик для тестирования, можно включить или отключить проверки подписей, задав соответствующее значение реестра Windows. Значением является DWORD.

Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\AMSI\FeatureBits

Значение Поведение
0x1 Проверка подписывания отключен. Это поведение по умолчанию. Это значение также можно использовать временно во время тестирования.
0x2 Включена проверка подписывания Authenticode.

Полное удаление значения реестра ведет себя так, как если бы значение 0x1 присутствовало.

Примечание

Поставщик должен использовать /ac параметр (с SignTool) для перекрестной подписи с помощью сертификата Authenticode. После подписания двоичного файла его можно проверить с помощью SignTool и /kp параметра . Если SignTool не возвращает ошибок, двоичный файл будет правильно подписан.

Важно!

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

Чтобы проверка, загружается ли поставщик, можно просмотреть события целостности кода. Обязательно включите подробное ведение журнала диагностических событий целостности кода. Идентификаторы событий для поиска: 3040 и 3041. Рассмотрим некоторые примеры.

Log Name:      Microsoft-Windows-CodeIntegrity/Verbose
Source:        Microsoft-Windows-CodeIntegrity
Date:          M/DD/YYYY H:MM:SS PM
Event ID:      3040
Task Category: (14)
Level:         Verbose
Keywords:      
User:          [DOMAIN_NAME]\Administrator
Computer:      [COMPUTER_NAME]
Description:
Code Integrity started retrieving the cached data of [PATH_AND_FILENAME] file.
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="Microsoft-Windows-CodeIntegrity" Guid="{4ee76bd8-3cf4-44a0-a0ac-3937643e37a3}" />
    <EventID>3040</EventID>
    <Version>0</Version>
    <Level>5</Level>
    <Task>14</Task>
    <Opcode>1</Opcode>
    <Keywords>0x4000000000000000</Keywords>
    <TimeCreated SystemTime="YYYY-MM-DDT02:26:48.875954700Z" />
    <EventRecordID>7</EventRecordID>
    <Correlation />
    <Execution ProcessID="4972" ThreadID="7752" ProcessorID="1" KernelTime="14" UserTime="2" />
    <Channel>Microsoft-Windows-CodeIntegrity/Verbose</Channel>
    <Computer>[COMPUTER_NAME]</Computer>
    <Security UserID="[USER_SID]" />
  </System>
  <EventData>
    <Data Name="FileNameLength">40</Data>
    <Data Name="FileNameBuffer">[PATH_AND_FILENAME]</Data>
  </EventData>
</Event>
Log Name:      Microsoft-Windows-CodeIntegrity/Verbose
Source:        Microsoft-Windows-CodeIntegrity
Date:          M/DD/YYYY H:MM:SS PM
Event ID:      3041
Task Category: (14)
Level:         Verbose
Keywords:      
User:          [DOMAIN_NAME]\Administrator
Computer:      [COMPUTER_NAME]
Description:
Code Integrity completed retrieval of file cache. Status 0xC0000225.
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="Microsoft-Windows-CodeIntegrity" Guid="{4ee76bd8-3cf4-44a0-a0ac-3937643e37a3}" />
    <EventID>3041</EventID>
    <Version>2</Version>
    <Level>5</Level>
    <Task>14</Task>
    <Opcode>2</Opcode>
    <Keywords>0x4000000000000000</Keywords>
    <TimeCreated SystemTime="YYYY-MM-DDT02:26:48.875964700Z" />
    <EventRecordID>8</EventRecordID>
    <Correlation />
    <Execution ProcessID="4972" ThreadID="7752" ProcessorID="1" KernelTime="14" UserTime="2" />
    <Channel>Microsoft-Windows-CodeIntegrity/Verbose</Channel>
    <Computer>[COMPUTER_NAME]</Computer>
    <Security UserID="[USER_SID]" />
  </System>
  <EventData>
    <Data Name="Status">0xc0000225</Data>
    <Data Name="CachedFlags">0x0</Data>
    <Data Name="CacheSource">0</Data>
    <Data Name="CachedPolicy">0</Data>
  </EventData>
</Event>

Требования

Требование Значение
Минимальная версия клиента Windows 10 [только классические приложения]
Минимальная версия сервера Windows Server 2016 [только классические приложения]
Целевая платформа Windows
Header amsi.h

См. также раздел

Пример интерфейса IAntimalwareProvider

SignTool

Как AMSI помогает