Interface IAntimalwareProvider (amsi.h)

Representa o provedor do produto antimalware. Para obter um exemplo de código, consulte o exemplo de interface IAntimalwareProvider.

A interface IAntimalwareProvider herda da interface IUnknown.

Herança

A interface IAntimalwareProvider herda da interface IUnknown.

Métodos

A interface IAntimalwareProvider tem esses métodos.

 
IAntimalwareProvider::CloseSession

Fecha a sessão. (IAntimalwareProvider.CloseSession)
IAntimalwareProvider::D isplayName

O nome do provedor antimalware a ser exibido.
IAntimalwareProvider::Scan

Examinar um fluxo de conteúdo. (IAntimalwareProvider.Scan)

Comentários

Desde Windows 10, versão 1903, o Windows adicionou uma maneira de habilitar as verificações de assinatura do Authenticode para provedores. O recurso é desabilitado por padrão para processos de 32 bits e 64 bits. Se você estiver criando um provedor para fins de teste, poderá habilitar ou desabilitar as verificações de sinal definindo o seguinte valor do Registro do Windows adequadamente. O valor é um DWORD.

Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\AMSI\FeatureBits

Valor Comportamento
0x1 O marcar de assinatura está desabilitado. Esse é o comportamento padrão. Você também pode usar esse valor temporariamente durante o teste.
0x2 O marcar para assinatura do Authenticode está habilitado.

Excluir completamente o valor do Registro se comporta como se o valor 0x1 estivesse presente.

Observação

Como provedor, você deve usar a opção /ac (com o SignTool) para fazer o sinal cruzado com um certificado Authenticode. Depois de assinar o binário, você poderá verificá-lo usando o SignTool e a opção /kp . Se o SignTool não retornar nenhum erro, o binário será assinado corretamente.

Importante

Embora o valor do Registro do Windows não esteja protegido pelo sistema operacional, o provedor antivírus do computador pode proteger o valor, tornando-o protegido por gravação.

Para marcar se o provedor está carregando ou não, você pode exibir eventos de integridade de código. Habilite o log detalhado de eventos de diagnóstico de integridade de código. As IDs de evento a serem pesquisadas são 3040 e 3041. Aqui estão alguns exemplos.

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>

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 10 [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2016 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho amsi.h

Confira também

Exemplo de interface IAntimalwareProvider

SignTool

Como o AMSI ajuda