心寄笔端 附庸风雅

甘草的技术博客

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

1. Hook的实现参考

参考: http://github.com/Totto8492/VSAi/tree/master/Vendor/mhook-lib/

2. Detours

/Files/healerkx/detours.rar 

DetourTransactionBegin();
DetourUpdateThread(GetCurrentThread());
DetourSetIgnoreTooSmall(TRUE);

DetourAttach(a, b);

if (DetourTransactionCommit() != 0
{
    PVOID 
*ppbFailedPointer = NULL;
    DetourTransactionCommitEx(
&ppbFailedPointer);
}

以上是Detours使用的基本用法。

 

3. 浏览器控件更改HTTP Request Header的User-Agent

据可靠情报,加BeforeNavigate是没有用的,只能Hook。

IE6,Hook这个API,InternetOpenA,IE6以后的版本Hook InternetOpenW

我测试成功了。

4. 浏览器控件加载未注册的ActiveX控件

STDAPI _MyCoGetClassObjectFromURL( REFCLSID rCLASSID,
                               LPCWSTR szCODE, DWORD dwFileVersionMS, 
                               DWORD dwFileVersionLS, LPCWSTR szTYPE,
                               LPBINDCTX pBindCtx, DWORD dwClsContext,
                               LPVOID pvReserved, REFIID riid, LPVOID 
* ppv)
{
    
//
    HRESULT hRet = AxLoader::Instance()->MyGetClassObject(rCLASSID, 0, NULL, riid, ppv);
    
return hRet;
}

AxLoader code:

HRESULT AxLoader::MyGetClassObject(__in REFCLSID inRefClassId,
                                   __in DWORD dwClsContext,
                                   __in_opt LPVOID pvReserved,
                                   __in REFIID riid,
                                   __deref_out LPVOID FAR
* ppv)
{
    HRESULT hRet 
= S_OK;
    WCHAR szGuid[MAX_PATH] 
= {};
    StringFromGUID2(inRefClassId, szGuid, MAX_PATH);
    CString strAxPath;
    
if (!HasRegisterGUID(szGuid, strAxPath))
        
return S_FALSE;
    
//////////////////////////////////////////////////////////////////////////
    HMODULE hMod = LoadLibrary(strAxPath);
    
if (hMod)
    {
        PF_DllGetClassObject pDllGetClassObject 
= (PF_DllGetClassObject)GetProcAddress(hMod, "DllGetClassObject");
        
if (pDllGetClassObject)
        {
            CComPtr
<IClassFactory> pcf ;
            hRet 
= pDllGetClassObject(inRefClassId, IID_IClassFactory, (void**)&pcf);
            
*ppv = pcf.Detach();
            
return hRet;
        }
    }

    
return hRet;
}

OK

 

posted on 2010-10-11 04:01  甘草  阅读(607)  评论(0编辑  收藏  举报
Baidu
Google
心寄笔端
TEST
以后我会加上Power By的,先别介意