【问题标题】:Windows Antimalware Scan Interface thread safetyWindows 反恶意软件扫描接口线程安全
【发布时间】:2019-06-30 13:47:15
【问题描述】:

Windows 反恶意软件扫描接口 (AMSI) 包含可用于调用 Windows 中当前活动的病毒扫描程序的抽象:

https://docs.microsoft.com/en-us/windows/desktop/amsi/antimalware-scan-interface-functions

初始化相关的方法有2个:

  • AmsiInitialize
  • AmsiUninitialize

AmsiInitialize 返回“HAMSICONTEXT 类型的句柄,必须将其传递给对 AMSI API 的所有后续调用。”。

初始化完成后,我可以使用 AmsiScanBuffer 扫描缓冲区中的恶意软件。

我的问题:

我可以在我的应用程序的多个线程中同时使用相同的上下文,还是需要为每个线程创建一个上下文来调用方法?

阅读有关 AsmiUnitialize 的文档,它告诉我 当应用完成 AMSI API 后,它必须调用 AmsiUninitialize。。这告诉我上下文可以用于许多调用,但它并没有告诉我有关线程安全或并发性的任何信息。

【问题讨论】:

    标签: windows winapi virus-scanning


    【解决方案1】:

    通常,未明确标记为线程安全的 API 调用不是(这通常适用于任何库)。最简单的解决方案是为每个线程打开一个 AMSI 句柄。

    (附注:据我测试,这仅适用于 Windows Defender)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-27
      • 2021-12-17
      • 2016-12-09
      相关资源
      最近更新 更多