1. 程式人生 > >ie外掛的簡單總結 --- 發文於2013-12-13

ie外掛的簡單總結 --- 發文於2013-12-13

主要關注對hao123推量影響大的因素,比如競品。

tp://msdn.microsoft.com/en-us/library/jj206442(v=vs.85).aspx   IWebBrowser2介面  各種介面

html->解析(詞法,句法分析)為dom tree ->解析為Render Tree->遍歷渲染樹繪製每一個節點。

一.ie體系

webbrowser host(重用webbrowser控制元件的程式,例如ie)

|

shdocvw.dll(包含了webbrowser control),提供各種文件的瀏覽能力給上層宿主。

|

mshtml.dll(active 文件伺服器,但是卻可以作為其他控制元件的容器)

|

activex control, active script engine, java applet, plug-in ,html

二.瀏覽器修改三種方式:瀏覽器擴充套件(Shortcut menu extensions\ Custom toolbars\Explorer Bars\BHO),Active X控制元件,自己寫應用程式(比如自己寫瀏覽器)

三.webbrowser有四個介面:

IwebBrowser,IwebBrowserApp(方法和屬性典型地允許你控制瀏覽器視窗的使用者介面,比如顯示隱藏某個工具),IWebBrowser2.

他們的Document屬性返回活動文件的自動化實現 (IDispatch)。如果 HTML 當前顯示在WebBrowser, Document 屬性給出你存取 DHTML 物件模型的途徑.GetDocument 返回指向代表文件IDispatch 介面的指標.iwebbrowser2的ExecWB方法允許WebBrowser 開發者增加新的功能而不用建立新的引數。

四.通過ie匯出藉口修改ie行為的兩種方式。

1.invoke訊息迴圈 2.事件通知

開啟網頁呼叫順序 

    OnBeforeNavigate2 

    OnDownloadBegin 

    OnDownloadComplete

    OnNavigateComplete 

    OnNavigateProgress           

    OnDocumentComplete 

ie支援的事件在DISPID_DOWNLOADBEGIN,轉到定義 ExDispid.h中定義

五。匯出方法介紹

1.SetSite()方法

bho物件初始化,執行僅僅發生一次的任務。比如取得IWebBrowser2介面指標。 只調用此方法兩次,一次用於建立連線,另一次則是在瀏覽器退出時。

STDMETHODIMP CWipeImgBHO::SetSite(IUnknown* pUnkSite)

{

if (pUnkSite != NULL)

{

 // 快取指向 IWebBrowser2 的指標。   

HRESULT hr = pUnkSite->QueryInterface(IID_IWebBrowser2, (void **)&m_WebBrowser);

if(SUCCEEDED(hr))

{

//Regist Event from DWebBrowserEvents2

// 註冊以從 DWebBrowserEvents2 中彙集事件。    

hr = DispEventAdvise(m_WebBrowser);

if (SUCCEEDED(hr))

{

m_Advised = TRUE;

}

}

}

else

{

if(m_Advised)

{

//Unregist event.

DispEventUnadvise(m_WebBrowser);

m_Advised = FALSE;

}

m_WebBrowser.Release();

}

return IObjectWithSiteImpl::SetSite(pUnkSite);

}

2.DownloadComplete事件 

文件全部下載結束時觸發。

3.connect

截獲瀏覽器發出的事件,通過IConnectionPoint介面連線到瀏覽器上 並且實現傳遞介面IDispatch指標以處理各種事件.

一個COM 物件為了通客戶通訊, 物件自身必須支援一個或者多個外引介面.一個 COM 物件支援的外引介面是作為可連線物件引用. 要成為一個可連線物件,

COM物件必須實現IConnectionPointContainer 介面。通過此介面,客戶可認識到那些外引介面被伺服器支援. 外引介面實際通過連線點由客戶掛接入COM實現。

實現外引介面的客戶部分眾所周知是通過事件接收槽(event sink)實現的.

HRESULT CViewSource::Connect(void)

{

HRESULT hr;

CComPtr spCP;

//為Web瀏覽器事件而接收(receive)連線點 

//呼叫IconnectionPointContainer 的方法 FindConnectionPoint 找出你想接收的事件

//m_spCPC = m_spWebBrowser2; 

hr = m_spCPC->FindConnectionPoint(DIID_DWebBrowserEvent2, &spCP);

if (FAILED(hr))

return hr;

      // 把事件處理器傳遞到容器。每次事件發生容器都將啟用我們實現的IDispatch介面上的相應的函式。

       hr = spCP->Advise( reinterpret_cast(this), &m_dwCookie);

  return hr;

}

4.invoke

BHO.IDispatch介面指標提供給瀏覽器。瀏覽器將回調IDispatch介面的Invoke() 方法,以事件的ID值作為第一引數:

HRESULT CViewSource::Invoke(DISPID dispidMember, REFIID riid,

LCID lcid, WORD wFlags, DISPPARAMS* pDispParams,

VARIANT* pvarResult, EXCEPINFO* pExcepInfo, UINT* puArgErr)

{

if (dispidMember == DISPID_DOCUMENTCOMPLETE) {

OnDocumentComplete();

m_bDocumentCompleted = true;

        }

}

pUnkSite->查詢IID_IWebBrowser2->IWebBrowser2 *->查詢IID_IConnectionPointContainer->IConnectionPointContainer*->

FindConnectionPoint(DIID_DWebBrowserEvents2,&pCP);->pCP->Advise((IUnknown*)&EventSink,&adviseCookie);->CEventSink::Invoke

所有的事件在win2k原始碼中搜索FireEvent

bu SHLWAPI!EnumInvokeCallback+0x3b 進入每一個bho

kd> g

Breakpoint 3 hit  

SHLWAPI!EnumInvokeCallback:

001b:77f6251b 8bff            mov     edi,edi

kd> kv 100

ChildEBP RetAddr  Args to Child              

0012705c 77f55e62 0016c53c 001270dc 001270dc SHLWAPI!EnumInvokeCallback (FPO: [Non-Fpo])   -----ok 通過IDispatch::Invoke呼叫一個bho的invoke

00127080 77f55dd6 0016c53c 001270b8 77f55df4 SHLWAPI!EnumConnectionPointSinks+0x6f (FPO: [Non-Fpo]) -----ok 通過IConnectionPoint::EnumConnections列舉連線點,呼叫對應的EnumProc

001270cc 77f55fcc 00162cfc 001270dc 00000003 SHLWAPI!IConnectionPoint_InvokeIndirect+0x7e (FPO: [Non-Fpo])  -----ok  直接呼叫EnumConnectionPointSinks

0012710c 7e56804b 00162cfc 000000fa 001271d0 SHLWAPI!IConnectionPoint_InvokeWithCancel+0x3a (FPO: [Non-Fpo]) -----ok 直接呼叫IConnectionPoint_InvokeIndirect

001271e4 7e57a931 02a79600 00162cfc 001272a8 SHDOCVW!DoInvokeParamHelper+0x47 (FPO: [Non-Fpo])              -----ok  根據引數多少呼叫不同的invoke,帶不帶cancel.

001272d0 7e5a09f6 02a79600 0008028c 02a79600 SHDOCVW!FireEvent_BeforeNavigate+0x1dc (FPO: [Non-Fpo])        -----ok 開始呼叫bho的事件

00127318 7e3246bb 00161884 02a793c0 02a79600 SHDOCVW!CBaseBrowser2::FireBeforeNavigate3+0x9f (FPO: [Non-Fpo])

001283d4 7e2af600 02a793b0 00128548 02a79d34 mshtml!CWebOCEvents::BeforeNavigate2+0x262 (FPO: [Non-Fpo])

0012a58c 7e2af202 0012a648 0012a630 02a79e90 mshtml!CDoc::DoNavigate+0xb00 (FPO: [Non-Fpo])               -----ok--此步事件不同,呼叫NavigateHere(處理#標籤,還是要滾動垂直滾動條).ie已經執行,傳送WM_BROWSER_OPENURL訊息

0012a64c 7e2d6ad8 0012c700 00000000 02ca2160 mshtml!CDoc::FollowHyperlink+0x5f0 (FPO: [Non-Fpo])          -----ok  如果是位址列輸入url,則此處處理.

0012e704 7e2d6d4a 00000000 0020003a 00000000 mshtml!CFrameSite::OnPropertyChange_Src+0x4a6 (FPO: [Non-Fpo]) -----ok 屬性頁變化時觸發

0012e780 7e2d6c02 7e2b06f5 02cfd6e0 001c5633 mshtml!CFrameSite::CreateObject+0x367 (FPO: [Non-Fpo])---此處向下360不同

0012e784 7e2b06f5 02cfd6e0 001c5633 00000000 mshtml!CHtmIframeParseCtx::Execute+0xb (FPO: [0,0,0])

0012e7d0 7e27cf47 02cfe890 02cfd6e0 7e2a4b87 mshtml!CHtmParse::Execute+0x41 (FPO: [Uses EBP] [1,15,0])---此處向上360不同

0012e7dc 7e2a4b87 7e2a4ba5 001c5633 02cfd6e0 mshtml!CHtmPost::Broadcast+0xd (FPO: [1,0,0])

0012e898 7e2b101a 001c5633 02cfd6e0 029402d0 mshtml!CHtmPost::Exec+0x32f (FPO: [Uses EBP] [1,41,0])

0012e8b0 7e294be4 001c5633 029402d0 02cfd6e0 mshtml!CHtmPost::Run+0x55 (FPO: [Uses EBP] [1,0,0])

0012e8c0 7e295023 029402d0 001c5633 02cfd6e0 mshtml!PostManExecute+0x51 (FPO: [3,0,0])

0012e8d8 7e294fa6 02cfd6e0 00000001 7e293ffc mshtml!PostManResume+0x71 (FPO: [2,0,0])

0012e8e4 7e293ffc 02cfdaa0 02cfd6e0 0012e928 mshtml!CHtmPost::OnDwnChanCallback+0xc (FPO: [2,0,0])

0012e8f4 7e27cb3b 02cfdaa0 00000000 00000000 mshtml!CDwnChan::OnMethodCall+0x19 (FPO: [Non-Fpo])   -----ok 

0012e928 7e278937 0012eac4 7e278852 00000000 mshtml!GlobalWndOnMethodCall+0x66 (FPO: [Non-Fpo])  -----ok for迴圈呼叫,處理匯出的延遲過程呼叫

0012ea5c 77d18734 000f024c 00008002 00000000 mshtml!GlobalWndProc+0x1e2 (FPO: [Non-Fpo])  -----ok  處理iehtml訊息,可以被匯出的事件用WM_METHODCALL.其他事件比如mousemove,buttondown自己處理.

0012ea88 77d18816 7e278852 000f024c 00008002 USER32!InternalCallWinProc+0x28

0012eaf0 77d189cd 00000000 7e278852 000f024c USER32!UserCallWinProcCheckWow+0x150 (FPO: [Non-Fpo])          ---- CShellBrowser2::WndProcBS,CShellBrowser2的主要視窗函式,分發dispatch訊息(呼叫webbrowse2的方法)

0012eb50 77d18a10 0012eb90 00000000 0012eb78 USER32!DispatchMessageWorker+0x306 (FPO: [Non-Fpo])                                    |

0012eb60 75f0d875 0012eb90 00000000 001571b0 USER32!DispatchMessageW+0xf (FPO: [Non-Fpo])                                           |

0012eb78 75f15218 0012eb90 0012ee98 00000000 BROWSEUI!TimedDispatchMessage+0x33 (FPO: [Non-Fpo]) -----ok 訊息迴圈                   |

0012edd8 75f15389 001570a8 0012ee98 001570a8 BROWSEUI!BrowserThreadProc+0x336 (FPO: [Non-Fpo]) -----ok  初始化ie視窗類,視窗過程IEFrameWndProc,主訊息迴圈。

0012ee6c 75f15655 001570a8 001570a8 00000000 BROWSEUI!BrowserProtectedThreadProc+0x50 (FPO: [Non-Fpo])  -----ok try中呼叫BrowserThreadProc

0012fef0 7e5d8d7a 001570a8 00000000 00000000 BROWSEUI!SHOpenFolderWindow+0x22c (FPO: [Non-Fpo])  -----ok處理select開關,檢查是否可以用已經有的ie視窗。開啟執行緒呼叫BrowserProtectedThreadProc

0012ff10 00402372 001423ba 00000001 00000000 SHDOCVW!IEWinMain+0x129 (FPO: [Non-Fpo])    -----ok  初始化收藏夾,廢除類工廠物件,設定一些ie選項。

0012ff60 00402444 00400000 00000000 001423ba iexplore!WinMainT+0x2de (FPO: [Non-Fpo])    -----ok 載入相關dll

0012ffc0 7c817067 00000000 00000001 7ffde000 iexplore!_ModuleEntry+0x99 (FPO: [Non-Fpo])  -----ok

0012fff0 00000000 00402451 00000000 78746341 kernel32!BaseProcessStart+0x23 (FPO: [Non-Fpo])

kd> g

Breakpoint 2 hit

SHDOCVW!CBaseBrowser2::FireDownloadBegin:

001b:7e57a7d6 8bff            mov     edi,edi

kd> kv 100

ChildEBP RetAddr  Args to Child              

001283d8 7e2d81ca 00161880 001ae89c 00000000 SHDOCVW!CBaseBrowser2::FireDownloadBegin (FPO: [Non-Fpo])

001283f0 7e2d8143 00000000 00000000 001ae3d0 mshtml!CWebOCEvents::FireDownloadEvents+0xdc (FPO: [Non-Fpo])

0012a58c 7e2af202 0012a648 0012a630 02a79e90 mshtml!CDoc::DoNavigate+0xb70 (FPO: [Non-Fpo])   -----ok--此步事件不同,呼叫NavigateHere.

0012a64c 7e2d6ad8 0012c700 00000000 02ca2160 mshtml!CDoc::FollowHyperlink+0x5f0 (FPO: [Non-Fpo])    -----

0012e704 7e2d6d4a 00000000 0020003a 00000000 mshtml!CFrameSite::OnPropertyChange_Src+0x4a6 (FPO: [Non-Fpo])

0012e780 7e2d6c02 7e2b06f5 02cfd6e0 001c5633 mshtml!CFrameSite::CreateObject+0x367 (FPO: [Non-Fpo])

0012e784 7e2b06f5 02cfd6e0 001c5633 00000000 mshtml!CHtmIframeParseCtx::Execute+0xb (FPO: [0,0,0])

0012e7d0 7e27cf47 02cfe890 02cfd6e0 7e2a4b87 mshtml!CHtmParse::Execute+0x41 (FPO: [Uses EBP] [1,15,0])

0012e7dc 7e2a4b87 7e2a4ba5 001c5633 02cfd6e0 mshtml!CHtmPost::Broadcast+0xd (FPO: [1,0,0])

0012e898 7e2b101a 001c5633 02cfd6e0 029402d0 mshtml!CHtmPost::Exec+0x32f (FPO: [Uses EBP] [1,41,0])

0012e8b0 7e294be4 001c5633 029402d0 02cfd6e0 mshtml!CHtmPost::Run+0x55 (FPO: [Uses EBP] [1,0,0])

0012e8c0 7e295023 029402d0 001c5633 02cfd6e0 mshtml!PostManExecute+0x51 (FPO: [3,0,0])

0012e8d8 7e294fa6 02cfd6e0 00000001 7e293ffc mshtml!PostManResume+0x71 (FPO: [2,0,0])

0012e8e4 7e293ffc 02cfdaa0 02cfd6e0 0012e928 mshtml!CHtmPost::OnDwnChanCallback+0xc (FPO: [2,0,0])

0012e8f4 7e27cb3b 02cfdaa0 00000000 00000000 mshtml!CDwnChan::OnMethodCall+0x19 (FPO: [Non-Fpo])

0012e928 7e278937 0012eac4 7e278852 00000000 mshtml!GlobalWndOnMethodCall+0x66 (FPO: [Non-Fpo])

0012ea5c 77d18734 000f024c 00008002 00000000 mshtml!GlobalWndProc+0x1e2 (FPO: [Non-Fpo])

0012ea88 77d18816 7e278852 000f024c 00008002 USER32!InternalCallWinProc+0x28

0012eaf0 77d189cd 00000000 7e278852 000f024c USER32!UserCallWinProcCheckWow+0x150 (FPO: [Non-Fpo])

0012eb50 77d18a10 0012eb90 00000000 0012eb78 USER32!DispatchMessageWorker+0x306 (FPO: [Non-Fpo])

0012eb60 75f0d875 0012eb90 00000000 001571b0 USER32!DispatchMessageW+0xf (FPO: [Non-Fpo])

0012eb78 75f15218 0012eb90 0012ee98 00000000 BROWSEUI!TimedDispatchMessage+0x33 (FPO: [Non-Fpo])

0012edd8 75f15389 001570a8 0012ee98 001570a8 BROWSEUI!BrowserThreadProc+0x336 (FPO: [Non-Fpo])

0012ee6c 75f15655 001570a8 001570a8 00000000 BROWSEUI!BrowserProtectedThreadProc+0x50 (FPO: [Non-Fpo])

0012fef0 7e5d8d7a 001570a8 00000000 00000000 BROWSEUI!SHOpenFolderWindow+0x22c (FPO: [Non-Fpo])

0012ff10 00402372 001423ba 00000001 00000000 SHDOCVW!IEWinMain+0x129 (FPO: [Non-Fpo])

0012ff60 00402444 00400000 00000000 001423ba iexplore!WinMainT+0x2de (FPO: [Non-Fpo])

0012ffc0 7c817067 00000000 00000001 7ffde000 iexplore!_ModuleEntry+0x99 (FPO: [Non-Fpo])

0012fff0 00000000 00402451 00000000 78746341 kernel32!BaseProcessStart+0x23 (FPO: [Non-Fpo])

win7 堆疊

BhoProtect.dll!CBavBho::Invoke(long dispidMember=250, const _GUID & riid={...}, unsigned long lcid=0, unsigned short wFlags=1, tagDISPPARAMS * pDispParams=0x0318ab38, tagVARIANT * pVariant=Empty, tagEXCEPINFO * pExcepinfo=0x00000000, unsigned int * puArgErr=0x00000000)  Line 86C++

 ieframe.dll!EnumInvokeCallback()  + 0x73f63 bytes

 ieframe.dll!EnumConnectionPointSinks()  + 0x73b91 bytes

 [email protected]()  + 0x88 bytes

 ieframe.dll!DoInvokeParamHelper()  + 0xc3 bytes

 [email protected]()  + 0x197 bytes

 ieframe.dll!CBaseBrowser2::_FireBeforeNavigateEventAndStartNavProgress()  + 0x88 bytes

 ieframe.dll!CBaseBrowser2::_FireBeforeNavigateEvent()  + 0x1b8 bytes

 ieframe.dll!CBaseBrowser2::v_NavigateToPidl()  + 0xc1 bytes

 ieframe.dll!CBaseBrowser2::_OnGoto()  + 0x213 bytes

 ieframe.dll!CBaseBrowser2::_OnAsyncOperation()  + 0x1e bytes

 ieframe.dll!CBaseBrowser2::v_WndProc()  + 0x1f2bb bytes

 ieframe.dll!CShellBrowser2::v_WndProc()  + 0x28f6 bytes

 ieframe.dll!CShellBrowser2::s_WndProc()  + 0x62 bytes

 [email protected]()  + 0x23 bytes

 [email protected]()  + 0xb3 bytes

 [email protected]()  + 0xe6 bytes

 [email protected]()  + 0xf bytes

 ieframe.dll!CTabWindow::_TabWindowThreadProc()  + 0x39b bytes

 ieframe.dll!LCIETab_ThreadProc()  + 0x2fd bytes

 iertutil.dll!CIsoScope::RegisterThread()  - 0x2b65 bytes

 ieframe.dll!Detour_DefWindowProcA()  + 0x66a96 bytes

 [email protected]@12()  + 0x12 bytes

 [email protected]()  + 0x27 bytes

 [email protected]()  + 0x1b bytes

查詢主頁堆疊

kd> g

Breakpoint 4 hit

SHDOCVW!URLSubRegQueryW:

*** ERROR: Symbol file could not be found.  Defaulted to export symbols for Safehmpg.dll - 

001b:7e606e01 e9cae7a091      jmp     Safehmpg!SafehmpgHelper+0x11430 (100155d0)

kd> kv 100

ChildEBP RetAddr  Args to Child              

0012b410 7e5a79d5 7e55ae50 7e55f894 00000001 SHDOCVW!URLSubRegQueryW (FPO: [Non-Fpo])

0012c490 7e5a7b9d 0012c4b4 00000824 0000010e SHDOCVW!_GetStdLocation+0x94 (FPO: [Non-Fpo])

0012d500 7e5c5f95 00130144 00000000 00000000 SHDOCVW!SHDGetPageLocation+0x6d (FPO: [Non-Fpo])

0012d528 7e5c5fd6 00000000 0012e674 75f33f45 SHDOCVW!CIEFrameAuto::_GoStdLocation+0x28 (FPO: [Non-Fpo])

0012d534 75f33f45 0016a3c4 03699df8 00176220 SHDOCVW!CIEFrameAuto::GoHome+0x12 (FPO: [Non-Fpo])

0012e674 75f33655 00176220 03699df8 00000122 BROWSEUI!CInternetToolbar::Exec+0x1a4 (FPO: [Non-Fpo])

0012e6b8 75f33c01 00176220 00120240 0012e780 BROWSEUI!CInternetToolbar::_OnCommand+0xb9 (FPO: [Non-Fpo])

0012e718 77d18734 000d0180 00000111 000003f8 BROWSEUI!CInternetToolbar::SizableWndProc+0x340 (FPO: [Non-Fpo])

0012e744 77d18816 75f338c0 000d0180 00000111 USER32!InternalCallWinProc+0x28

0012e7ac 77d2927b 00000000 75f338c0 000d0180 USER32!UserCallWinProcCheckWow+0x150 (FPO: [Non-Fpo])

0012e7e8 77d292e3 00626010 00625fa8 000003f8 USER32!SendMessageWorker+0x4a5 (FPO: [Non-Fpo])

0012e808 77205d13 000d0180 00000111 000003f8 USER32!SendMessageW+0x7f (FPO: [Non-Fpo])

0012e870 772068ca 00080164 00000111 000003f8 comctl32!CReBar::_WndProc+0x11d (FPO: [Non-Fpo])

0012e894 77d18734 00080164 00000111 000003f8 comctl32!CReBar::s_WndProc+0x2c (FPO: [Non-Fpo])

0012e8c0 77d18816 7720689e 00080164 00000111 USER32!InternalCallWinProc+0x28

0012e928 77d2927b 00167ff0 7720689e 00080164 USER32!UserCallWinProcCheckWow+0x150 (FPO: [Non-Fpo])

0012e964 77d292e3 006260c0 00602af8 000003f8 USER32!SendMessageWorker+0x4a5 (FPO: [Non-Fpo])

0012e984 771f48aa 00080164 00000111 000003f8 USER32!SendMessageW+0x7f (FPO: [Non-Fpo])

0012e9ac 771f571b 0018ca40 00120240 00000202 comctl32!TBOnLButtonUp+0x122 (FPO: [Non-Fpo])

0012ea5c 77d18734 00120240 00000202 00000000 comctl32!ToolbarWndProc+0xb30 (FPO: [Non-Fpo])

0012ea88 77d18816 771f4beb 00120240 00000202 USER32!InternalCallWinProc+0x28

0012eaf0 77d189cd 00167ff0 771f4beb 00120240 USER32!UserCallWinProcCheckWow+0x150 (FPO: [Non-Fpo])

0012eb50 77d18a10 0012eb90 00000000 0012eb78 USER32!DispatchMessageWorker+0x306 (FPO: [Non-Fpo])

0012eb60 75f0d875 0012eb90 00000000 00168b70 USER32!DispatchMessageW+0xf (FPO: [Non-Fpo])

0012eb78 75f15218 0012eb90 0012ee98 00000000 BROWSEUI!TimedDispatchMessage+0x33 (FPO: [Non-Fpo])

0012edd8 75f15389 00168880 0012ee98 00168880 BROWSEUI!BrowserThreadProc+0x336 (FPO: [Non-Fpo])

0012ee6c 75f15655 00168880 00168880 00000000 BROWSEUI!BrowserProtectedThreadProc+0x50 (FPO: [Non-Fpo])

0012fef0 7e5d8d7a 00168880 00000000 00000000 BROWSEUI!SHOpenFolderWindow+0x22c (FPO: [Non-Fpo])

0012ff10 00402372 001423ba 000206c0 43010000 SHDOCVW!IEWinMain+0x129 (FPO: [Non-Fpo])

0012ff60 00402444 00400000 00000000 001423ba iexplore!WinMainT+0x2de (FPO: [Non-Fpo])

0012ffc0 7c817067 43010000 00000000 7ffdf000 iexplore!_ModuleEntry+0x99 (FPO: [Non-Fpo])

0012fff0 00000000 00402451 00000000 78746341 kernel32!BaseProcessStart+0x23 (FPO: [Non-Fpo])

相關推薦

ie外掛簡單總結 --- 發文2013-12-13

主要關注對hao123推量影響大的因素,比如競品。 tp://msdn.microsoft.com/en-us/library/jj206442(v=vs.85).aspx   IWebBrowser2介面  各種介面 html-&

ndis協議驅動總結---發文2013-12-30

協議驅動用於嗅探器,比如wincap就是協議驅動,不用於防火牆。 1.DriverEntry中  填寫協議特徵NDIS_PROTOCOL_CHARACTERISTICS,就是協議的回撥函式列表。  呼叫NdisRegisterProtocol註冊為協議驅動。  建

【年度總結】2018年年度自我總結——寫2018.12.31

目錄 正文 開學後成功脫單還拿了獎 小程式開發? 從頭開始學習前端 後端也要學! 資料庫語言?? 大二開始了 危機感愈來愈強 與冠軍失之交臂 總結 這是我大學以來第一次寫年度總結(可能是受到一些大佬的影響吧)。 希望通過總結自己,取長補短,使自己更好地

bootstrap jquery 外掛 簡單總結

主要分為 Bootstrap 基本結構、Bootstrap CSS、Bootstrap 佈局元件和 Bootstrap 外掛幾個部分 下面是內建的jQuery外掛  通過data API 呼叫   因此不需要寫js 程式碼 也可以通過js執行,因此都會有一些外掛執行或完成後觸

Docker 1 12新功能探索(7) 服務編排三劍客簡單總結

box ask -o 新功能 tab pri thead csdn 更新 docker內置編排功能和目前成熟的編排工具相比可能還略顯弱勢,但是畢竟它是docker原生態的工具,占有地利的得天獨厚的優勢。同時目前內置swarm/node/service“三劍客”所組成的

Asp.Net頁面傳值的方法簡單總結【原創】

tid 周期 () 路徑 coo webp 方式 qpi 優點 1、QueryString 當頁面上form按照get的方式向頁面發送請求數據的時候,web server會將請求數據放入 一個QEURY_STRING的環境變量中,然後通過QeueryString方法

HTTP 簡單總結

查詢 tcp/ip 網絡傳輸 優點 臨時性 modified unix系統 因特網 判斷 1. 一次完整的HTTP事務是怎樣的一個過程? 基本流程:   a. 域名解析   b. 發起TCP的3次握手   c. 建立TCP連接後發起http請求   d. 服務器端響應htt

經典sql 語句總結,轉載http://www.iteye.com/topic/1117462

agent 作業 方案 插入 delet 連接參數 將不 彈出 mic 一、基礎1、說明:創建數據庫CREATE DATABASE database-name 2、說明:刪除數據庫drop database dbname3、說明:備份sql server--- 創建 備份數

集合——list簡單總結

style list 刪除 link 數據 排隊 http arr es2017 一.介紹list 1.什麽是list? list是一個有序的序列(collection),它是一個接口,繼承了collection,因此了除了包含父類的方法以外,還有專屬的方法。 list有三

Java數據類型簡單總結

引用數據類型 8bit 完全 class 取值 自定義類 ava als 地址傳遞 Java數據類型簡單總結 一:Java數據類型總的分為兩大類:基本數據類型和引用數據類型。 基本數據類型:byte、short、int、long、float、double、char、bool

shell簡單總結--符號

shell 符號 一、shell簡介 shell的作用是解釋執行用戶的命令,用戶輸入一條命令,shell就解釋一行【交互式】。另一種執行命令的方式是【批處理】,用戶事先寫一個shell腳本,其中有很多條命令,shell一次把這些命令執行完。shell程序從腳本中一行一行讀取並執行這些命令,相當於一個

java集合,泛型簡單總結

容易 對象 並且 集合 需要 api文檔 array object 類型轉換 1.set中裝的對象是沒順序不可以重復。重復的判斷:只要兩個對象equals相等就行了。(要理解的是,並非重復了就報錯,只是存儲時候只有一個,輸出的時候只會輸出一個。) 2.list中的數據對象有

vue.js的簡單總結

使用 pac number date 來源 生命周期 tee require 函數 這篇文章主要對vue的理解進行總結: 參考來源:http://blog.csdn.net/generon/article/details/72482844 vue.js是一套構建用戶界面的漸

js jquery 上傳文件格式大小判斷簡單總結

大小 .text 錯誤 script console class hint pat asc 大家好我是床前明月光,疑是地上霜 // html <a href="javascript:;" class="file">添加附件 <input type

自動化構建工具—gulp的用法簡單總結

修復 git func 文件夾 open lean 發生 遍歷 nod   把之前用到的gulp總結整理下,有時候說不出來的,就寫出來吧,做個筆記,以後也可以慢慢補充   cnpm i --save-dev gulp 把nodejs模塊寫到package.json配置文件中

django restframework 簡單總結

超鏈接 pre 寫法 users objects lin 查詢 添加 destroy 官方文檔:http://www.django-rest-framework.org/ model.py class Snippet(models.Model): created

HTML5 拖拽簡單總結

默認 scrip default wid red 圖形 sta lin start //感覺拖拽挺有意思,剛開始玩,簡單總結一下,有什麽不對的地方歡迎指正,謝謝 後續繼續更新<!DOCTYPE html><html lang="en"><hea

laravel 設計思想簡單總結

不同 模式 解決 clas 容器 markdown 配置 依賴關系 調用 服務容器 laravel框架中 服務容器是整個系統功能調度配置的核心,在系統運行過程中動態的為系統提供需要的服務 從而實現了解耦 控制反轉(IOC) 控制反轉是一種設計模式 主要解決了系統組件之間的相

類----簡單總結

closed 重寫 註意 person 簡單 table 實例化 containe line 類的構成 1 class 類名: 2 def __init__(self,參數1,參數2): 3 self.對象的屬性1 = 參數1 4

數據庫使用簡單總結

使用 select 插入數據 null 劃線 outer ast mes drop 創建一個表 create table user( id number(4), password char(4), name char(20), createTime dat