Files
Tavis Ormandy aa445174ce initial commit
2017-05-23 14:36:59 -07:00

114 lines
4.3 KiB
C

#ifndef __STREAMBUFFER_H
#define __STREAMBUFFER_H
#pragma once
#pragma pack(push, 1)
enum {
STREAM_ATTRIBUTE_INVALID = 0,
STREAM_ATTRIBUTE_SKIPBMNOTIFICATION = 1,
STREAM_ATTRIBUTE_BMDATA = 2,
STREAM_ATTRIBUTE_FILECOPYPERFHINT = 3,
STREAM_ATTRIBUTE_FILECOPYSOURCEPATH = 4,
STREAM_ATTRIBUTE_FILECHANGEPERFHINT = 5,
STREAM_ATTRIBUTE_FILEOPPROCESSID = 6,
STREAM_ATTRIBUTE_FILEBACKUPWRITEPERFHINT = 7,
STREAM_ATTRIBUTE_DONOTCACHESCANRESULT = 8,
STREAM_ATTRIBUTE_SCANREASON = 9,
STREAM_ATTRIBUTE_FILEID = 10,
STREAM_ATTRIBUTE_FILEVOLUMESERIALNUMBER = 11,
STREAM_ATTRIBUTE_FILEUSN = 12,
STREAM_ATTRIBUTE_SCRIPTTYPE = 13,
STREAM_ATTRIBUTE_PRIVATE = 14,
STREAM_ATTRIBUTE_URL = 15,
STREAM_ATTRIBUTE_REFERRALURL = 16,
STREAM_ATTRIBUTE_SCRIPTID = 17,
STREAM_ATTRIBUTE_HOSTAPPVERSION = 18,
STREAM_ATTRIBUTE_THREAT_ID = 19,
STREAM_ATTRIBUTE_THREAT_STATUS = 21,
STREAM_ATTRIBUTE_LOFI = 22,
STREAM_ATTRIBUTE_THREAT_RESOURCES = 25,
STREAM_ATTRIBUTE_LOFI_RESOURCES = 26,
STREAM_ATTRIBUTE_VOLATILE = 29,
STREAM_ATTRIBUTE_REFERRERURL = 30,
STREAM_ATTRIBUTE_REQUESTORMODE = 31,
STREAM_ATTRIBUTE_CI_EA = 33,
STREAM_ATTRIBUTE_CURRENT_FILEUSN = 34,
STREAM_ATTRIBUTE_AVAILABLE_DSS_THREADS = 35,
STREAM_ATTRIBUTE_IO_STATUS_BLOCK_FOR_NEW_FILE = 36,
STREAM_ATTRIBUTE_DESIRED_ACCESS = 37,
STREAM_ATTRIBUTE_FILEOPPROCESSNAME = 38,
STREAM_ATTRIBUTE_DETAILED_SCAN_NEEDED = 39,
STREAM_ATTRIBUTE_URL_HAS_GOOD_REPUTATION = 40,
STREAM_ATTRIBUTE_SITE_HAS_GOOD_REPUTATION = 41,
STREAM_ATTRIBUTE_URL_ZONE = 42,
STREAM_ATTRIBUTE_CONTROL_GUID = 43,
STREAM_ATTRIBUTE_CONTROL_VERSION = 44,
STREAM_ATTRIBUTE_CONTROL_PATH = 45,
STREAM_ATTRIBUTE_CONTROL_HTML = 46,
STREAM_ATTRIBUTE_PAGE_CONTEXT = 47,
STREAM_ATTRIBUTE_FRAME_URL = 48,
STREAM_ATTRIBUTE_FRAME_HTML = 49,
STREAM_ATTRIBUTE_ACTION_IE_BLOCK_PAGE = 50,
STREAM_ATTRIBUTE_ACTION_IE_BLOCK_CONTROL = 51,
STREAM_ATTRIBUTE_SHARE_ACCESS = 52,
STREAM_ATTRIBUTE_OPEN_OPTIONS = 53,
STREAM_ATTRIBUTE_DEVICE_CHARACTERISTICS = 54,
STREAM_ATTRIBUTE_FILE_ATTRIBUTES = 55,
STREAM_ATTRIBUTE_HAS_MOTW_ADS = 56,
STREAM_ATTRIBUTE_SE_SIGNING_LEVEL = 57,
STREAM_ATTRIBUTE_SESSION_ID = 58,
STREAM_ATTRIBUTE_AMSI_APP_ID = 59,
STREAM_ATTRIBUTE_AMSI_SESSION_ID = 60,
STREAM_ATTRIBUTE_FILE_OPERATION_PPID = 61,
STREAM_ATTRIBUTE_SECTOR_NUMBER = 62,
STREAM_ATTRIBUTE_AMSI_CONTENT_NAME = 63,
STREAM_ATTRIBUTE_AMSI_UAC_REQUEST_CONTEXT = 64,
STREAM_ATTRIBUTE_RESOURCE_CONTEXT = 65,
STREAM_ATTRIBUTE_OPEN_CREATEPROCESS_HINT = 66,
STREAM_ATTRIBUTE_GENSTREAM_APP_NAME = 67,
STREAM_ATTRIBUTE_GENSTREAM_SESSION_ID = 68,
STREAM_ATTRIBUTE_GENSTREAM_CONTENT_NAME = 69,
STREAM_ATTRIBUTE_OPEN_ACCESS_STATE_FLAGS = 70,
STREAM_ATTRIBUTE_GENSTREAM_EXTERN_GUID = 71,
STREAM_ATTRIBUTE_IS_CONTAINER_FILE = 72,
STREAM_ATTRIBUTE_AMSI_REDIRECT_CHAIN = 75,
};
enum {
SCANREASON_UNKNOWN = 0,
SCANREASON_ONMOUNT = 1,
SCANREASON_ONOPEN = 2,
SCANREASON_ONFIRSTREAD = 3,
SCANREASON_ONWRITE = 4,
SCANREASON_ONMODIFIEDHANDLECLOSE = 5,
SCANREASON_INMEMORY = 8,
SCANREASON_VALIDATION_PRESCAN = 9,
SCANREASON_VALIDATION_CONTENTSCAN = 0x0A,
SCANREASON_ONVOLUMECLEANUP = 0x0B,
SCANREASON_AMSI = 0x0C,
SCANREASON_AMSI_UAC = 0x0D,
SCANREASON_GENERICSTREAM = 0x0E,
SCANREASON_IOAVSTREAM = 0x0F,
};
typedef struct _STREAMBUFFER_DESCRIPTOR {
PVOID UserPtr;
DWORD (* Read)(PVOID this, uint64_t Offset, PVOID Buffer, DWORD Size, PDWORD SizeRead);
DWORD (* Write)(PVOID this, uint64_t Offset, PVOID Buffer, DWORD Size, PDWORD TotalWritten);
DWORD (* GetSize)(PVOID this, uint64_t *FileSize);
DWORD (* SetSize)(PVOID this, uint64_t *FileSize);
PWCHAR (* GetName)(PVOID this);
DWORD (* SetAttributes)(PVOID this, DWORD Attribute, PVOID Data, DWORD DataSize);
DWORD (* GetAttributes)(PVOID this, DWORD Attribute, PVOID Data, DWORD DataSize, PDWORD DataSizeWritten);
} STREAMBUFFER_DESCRIPTOR, *PSTREAMBUFFER_DESCRIPTOR;
typedef struct _SCANSTREAM_PARAMS {
PSTREAMBUFFER_DESCRIPTOR Descriptor;
PSCAN_REPLY ScanReply;
DWORD UnknownB;
DWORD UnknownC;
} SCANSTREAM_PARAMS, *PSCANSTREAM_PARAMS;
#pragma pack(pop)
#endif // __STREAMBUFFER_H