Реферат: Перехват методов интерфейса Iunknown
return (*itc).second->GetCredentials();
}
В дальнейшем этот же метод вызывается из перехватчика QueryInterface:
Метод QueryInterfaceHook
//хук QueryInterface STDMETHODIMP HookEntry::QueryInterfaceHook(void* pItf, REFIID iid, void** ppvObject) { //добываемхелпер-объект HookEntry* pHook = HookFromItf(reinterpret_cast<IUnknown*>(pItf)); if (pHook == NULL) //хук уже кто-то снял :( return ((IUnknown*)pItf)->QueryInterface(iid, ppvObject); //IClientSecurity долженпроходитьмимо if (::InlineIsEqualGUID(iid, IID_IClientSecurity)) return pHook->m_oldQI(pItf, iid, ppvObject); //собственно QueryInterface CComPtr<IUnknown> spUnknown; HRESULT hr = pHook->m_oldQI(pItf, iid, (void**)&spUnknown.p); if (FAILED(hr)) return hr; //добываемпары «логин-пароль» CredentialsHolder::CredentialsPtr* pCredentials = CredentialsFromItf(reinterpret_cast<IUnknown*>(pItf)); if (pCredentials != NULL) { // устанавливаем хук на интерфейс RPC_AUTH_IDENTITY_HANDLE ident = HookInterface(spUnknown.p, *pCredentials); if (ident) { //и устанавливаем на интерфейс proxy blanket К-во Просмотров: 186
Бесплатно скачать Реферат: Перехват методов интерфейса Iunknown
|