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 |