OK.
Zemana Anti-Malware 3.0/+ uses amsdk.sys (zam.sys and zam64.sys seem to be gone now?).
amsdk.sys follows the File System Mini-Filter model.
1. Integrates with the Filter Manager (fltMgr.sys) via FltRegisterFilter & FltStartFiltering.
2. The registration instructs the Filter Manager that they want notifications for IRP_MJ_CREATE (Post).
3. The IRP_MJ_CREATE (Post) callback routine performs an EICAR scan check.
The callback routine is named
ZmnMfPostCreateCallback (from a source file named MiniFilter.c according to logging info that is left in the code)
. It will call another routine to perform an EICAR scan - I have named this routine "ZamEicarScan" for the screenshot.
ZamEicarScan:
1. FltQueryInformationFile.
2. FltAllocatePoolAlignedWithTag.
3. FltReadFile -> into allocated pool memory.
4. memcmp - check for the EICAR signature ("X5O!P%@AP[4\\PZX54(P^)7CC)7")
5. Cleanup
Afterwards, if EICAR is to be blocked, FltCancelFileOpen is used to cancel the operation.
I haven't debugged it to ensure that the blocks are *always* coming from amsdk.sys so you can wait for Zemana to help you but this at-least confirms what I previously said about how they have EICAR hard-coded in their FS driver. However, I was wrong about it being done for IRP_MJ_WRITE so I did recall wrong - as we can see, it's post operation of IRP_MJ_CREATE.