пятница, 7 октября 2011 г.

efssvc.dll RPC interfaces

EFS Service
efsrpc DF1941C5-FE89-4E79-BF10-463657ACF44D version 1.0
0x15 methods:
  • EfsRpcOpenFileRaw
  • EfsRpcReadFileRaw
  • EfsRpcWriteFileRaw
  • EfsRpcCloseRaw
  • EfsRpcEncryptFileSrv
  • EfsRpcDecryptFileSrv
  • EfsRpcQueryUsersOnFile
  • EfsRpcQueryRecoveryAgents
  • EfsRpcRemoveUsersFromFile
  • EfsRpcAddUsersToFile
  • EfsRpcSetFileEncryptionKey
  • EfsRpcNotSupported
  • EfsRpcFileKeyInfo
  • EfsRpcDuplicateEncryptionInfoFile
  • EfsUsePinForEncryptedFiles
  • EfsRpcAddUsersToFileEx
  • EfsRpcFileKeyInfoEx
  • EfsRpcGenerateEfsStream
  • EfsRpcGetEncryptedFileMetadata
  • EfsRpcSetEncryptedFileMetadata
  • EfsRpcFlushEfsCache
efskrpc 04EEB297-CBF4-466B-8A2A-BFD6A2F10BBA version 1.0
4 methods
  • EfsKRpcEstablishRpcConnection
  • EfsKRpcDecryptFek
  • EfsKRpcGenerateKey
  • EfsKRpcGenerateDirEfs
вызывается через msrpc.sys из драйвера ntfs например

ida 6.2

вышла например
changelog впрочем не впечатляет

wininet.dll RPC interfaces

CAD784CB-4C1B-4D96-B8F7-4716B568B13C version 1.0
0x37 methods:
  • s_UrlCacheGetManagerInterface
  • s_UrlCachePingServer
  • s_UrlCacheOpenContainer
  • s_UrlCacheCloseContainer
  • s_UrlCacheAddUrl
  • s_UrlCacheLookupUrl
  • s_UrlCacheCheckUrlsExist
  • s_UrlCacheGetUrlBinaryBlob
  • s_UrlCacheAddUrlBinaryBlob
  • s_UrlCacheDeleteUrl
  • s_UrlCacheUnlockUrl
  • s_UrlCacheUpdateUrl
  • s_UrlCacheEntryEnum
  • s_UrlCacheEntryEnumClose
  • s_UrlCacheEntryEnumNext
  • s_UrlCacheCleanupUrls
  • s_UrlCacheGetSize
  • s_UrlCacheGetLimit
  • s_UrlCacheSetLimit
  • s_UrlCacheGetBloomFilter
  • s_UrlCacheGetNextDirectory
  • s_UrlCacheAddLeakFile
  • s_UrlCacheCreateGroup
  • s_UrlCacheDeleteGroup
  • s_UrlCacheGetGroupIds
  • s_UrlCacheGetGroup
  • s_UrlCacheUpdateGroup
  • s_UrlCacheSetUrlGroup
  • s_UrlCacheGetContentContainerDirectories
  • s_UrlCacheCreateExtensibleContainer
  • s_UrlCacheDeleteExtensibleContainer
  • s_UrlCacheGetExtensibleContainersList
  • s_UrlCacheRpcSetGlobalLimit
  • s_UrlCacheRpcGetGlobalLimit
  • s_AppCacheOpenContainer
  • s_AppCacheCloseContainer
  • s_AppCacheRpcCheckManifest
  • s_AppCacheRpcLookup
  • s_AppCacheRpcDeleteGroup
  • s_AppCacheRpcDeleteIeGroup
  • s_AppCacheRpcGetFallbackUrl
  • s_AppCacheRpcGetDownloadList
  • s_AppCacheRpcCloseHandle
  • s_AppCacheRpcGetInfo
  • s_AppCacheRpcGetGroupsList
  • s_AppCacheRpcGetIeGroupList
  • s_AppCacheRpcFreeIeSpace
  • s_AppCacheRpcRetrieveUrl
  • s_AppCacheRpcCommitUrl
  • s_AppCacheRpcFinalize
  • s_DependencyStoreOpenContainer
  • s_DependencyStoreCloseContainer
  • s_DependencyStoreUpdateUrl
  • s_DependencyStoreRetrieveUrl
  • s_DependencyStoreDeleteContainer
7856FB07-7EFE-4029-A4CB-4848641C40FF version 1.0
0x1F methods:
  • s_IDBFactory_openDatabase
  • s_IDBFactory_deleteDatabase
  • s_IDBDatabase_createObjectStore
  • s_IDBDatabase_deleteObjectStore
  • s_IDBDatabase_setVersion
  • s_IDBDatabase_transaction
  • s_IDBDatabase_close
  • s_IDBTransaction_openObjectStore
  • s_IDBTransaction_abortAndClose
  • s_IDBTransaction_commitAndClose
  • s_IDBObjectStore_put
  • s_IDBObjectStore_add
  • s_IDBObjectStore_get
  • s_IDBObjectStore_getFromKeyRange
  • s_IDBObjectStore_delete
  • s_IDBObjectStore_clear
  • s_IDBObjectStore_openCursor
  • s_IDBObjectStore_createIndex
  • s_IDBObjectStore_openIndex
  • s_IDBObjectStore_deleteIndex
  • s_IDBObjectStore_close
  • s_IDBIndex_openCursor
  • s_IDBIndex_get
  • s_IDBIndex_getFromKeyRange
  • s_IDBIndex_getKey
  • s_IDBIndex_getKeyFromKeyRange
  • s_IDBIndex_close
  • s_IDBCursor_update
  • s_IDBCursor_continue
  • s_IDBCursor_delete
  • s_IDBCursor_close

четверг, 6 октября 2011 г.

appidsvc.dll RPC interface

Application Identity Service
8A7B5006-CC13-11DB-9705-005056C00008 version 1.0
2 methods:
  • AppIDRpcVerifyFile
  • AppIDRpcVerifyPackageMoniker
Регистрирует себя в epmapper с аннотацией AppIDSvc
Вызывается через msrpc из драйвера appid.sys

надо полагать

теперь в полночь все ваши айфоны превратятся в тыкву перейдут на windows 7 mobile, бгг

вторник, 4 октября 2011 г.

ViErrorDescriptions

и вот еще на сладкое - диагностические сообщения, которые driver verifier может выдать в ф-ции ViErrorDisplayDescription (в квадратных скобках внутренний код сообщения). По моему дают весьма наглядное представление о технологии

VerifierExt.sys

а вот например начиная с w8 driver verifier также содержит часть кода во внешнем драйвере VerifierExt.sys. Я понятия не имею зачем было так сделано - никакого механизма plugins в driver verifier по прежнему не предусмотрено и имя VerifierExt.sys жестко прошито в ntoskrnl.exe
Соотв-но интересен интерфейс сопряжения между этим драйвером и ядром
Например таблицы ф-ций driver verifierа в ядре имеют примерно такой формат:

struct THUNK_ITEM

{
  const char *func_name;
  PVOID verifier_thunk;
  PVOID unknown;
  ULONG index;
  PVOID *original_func;
};
Здесь интерес представляют три поля
  •  verifier_thunk - это собственно указатель на ф-цию, производящую разнообразные проверки параметров, уровень Irql и так далее
  • original_func - указатель на указатель на оригинальную ф-цию, перехват которой осуществлен driver verifier
  • index - просто некое уникальное число
 Драйвер VerifierExt.sys помимо всякого предоставляет экспортируемую ф-цию GetXdvDDIWrappers, которая возвращает примерно такую структуру:

struct ddi_wrappers

{
  DWORD version; // равен 4, что проверяется в ф-ции ViXdvBindXdvDDIWrappers
  DWORD tab_size;
  PVOID wrappers[tab_size];
};
Соотв-но связь между указателем на ф-цию верификации в wrappers и набором THUNK_ITEM в ядре происходит по полю THUNK_ITEM.index
Например ф-ция валидации ExCreateCallback лежит по индексу 24 в массиве wrappers. Она же имеет index 24 в VfXdvThunks
Список ф-ций из VerifierExt.sys: