首先,先執行 Google Chrome,它是一個多進程架構的瀏覽器,適合作為這次的範例。
然後,在用命令列或GUI的方式 Attach 到主進程 Chrome.exe (1508)。
1) 用 .childdbg 1 命令 Windbg 中斷在子進程的建立。
0:013> .childdbg 1 Processes created by the current process will be debugged2) 用 g 命令 Windbg 繼續執行程式,並且去 Chrome 瀏覽個網頁讓它另外建立子進程。
3) 接下來會發現 Windbg 已經中斷在子進程當中,可以注意到提示字元已經從 0:013> 切換到 1:016> 。
0:013> g Symbol search path is: SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols;SRV*c:\GoogleSyms*http://build.chromium.org/buildbot/symsrv Executable search path is: ModLoad: 00400000 004d6000 chrome.exe eax=0044092a ebx=7ffde000 ecx=7c9363bb edx=7c99e178 esi=0012dc28 edi=00189318 eip=7c810705 esp=0012fffc ebp=00000000 iopl=0 nv up ei pl nz na po nc cs=001b ss=0023 ds=0023 es=0023 fs=0038 gs=0000 efl=00000200 7c810705 ?? ??? 1:016> | 0 id: 5e4 attach name: C:\Documents and Settings\Administrator\Local Settings\Application Data\Google\Chrome\Application\chrome.exe . 1 id: c40 child name: chrome.exe4) 此時只需要用 |0s 切換到原本的主進程,然後用 .detach 放掉主進程。
1:016> |0s eax=7c930250 ebx=00000000 ecx=000e1714 edx=00000c88 esi=7c99e420 edi=7c99e440 eip=7c92e514 esp=049eff70 ebp=049effb4 iopl=0 nv up ei ng nz na pe nc cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000286 ntdll!KiFastSystemCallRet: 7c92e514 c3 ret 0:015> .detach eax=0044092a ebx=7ffde000 ecx=7c9363bb edx=7c99e178 esi=0012dc28 edi=00189318 eip=7c810705 esp=0012fffc ebp=00000000 iopl=0 nv up ei pl nz na po nc cs=001b ss=0023 ds=0023 es=0023 fs=0038 gs=0000 efl=00000200 7c810705 ?? ??? Detached 1:016> | . 1 id: c40 child name: chrome.exe5) 此時就大功告成,接下來就可以開始對子進程除錯了。
No comments:
Post a Comment