锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久露脸国产精品,一本色道婷婷久久欧美,国产精品v片在线观看不卡http://m.shnenglu.com/ay19880703/category/18447.htmlzh-cnSat, 06 Apr 2013 05:29:09 GMTSat, 06 Apr 2013 05:29:09 GMT60璁﹛p鍔犺澆鎸囧畾鐨勫唴鏍哥増鏈?-鍒互涓簒p鍔犺澆鐨勫唴鏍告繪槸鏉ヨ嚜浜巒toskrnl.exe!!!http://m.shnenglu.com/ay19880703/archive/2013/04/06/199145.html__ay__aySat, 06 Apr 2013 05:16:00 GMThttp://m.shnenglu.com/ay19880703/archive/2013/04/06/199145.htmlhttp://m.shnenglu.com/ay19880703/comments/199145.htmlhttp://m.shnenglu.com/ay19880703/archive/2013/04/06/199145.html#Feedback0http://m.shnenglu.com/ay19880703/comments/commentRss/199145.htmlhttp://m.shnenglu.com/ay19880703/services/trackbacks/199145.html鎴慽da鏄痭toskrnl.exe ....  鑰寃indows涓姞杞界殑鐗堟湰鏄?span style="font-size: 14px;">ntkrpamp.exe

蹇樹簡鎿嶄綔緋葷粺浼?xì)鏍规嵁澶勭悊鍣ㄥ瀷鍙峰姞铦蹭笉鍚岀増鏈唴鏍镐?...
姝eソ鐪嬪埌楂樼璋冭瘯涓婃湁鍏充簬榪欎釜鐨勮璁? http://advdbg.org/forums/2142/ShowPost.aspx

浣嗘槸鎴戠殑鍒嗘瀽鏄熀浜巒toskrnl鐨勶紝娌″姙娉曪紝鍙ソ寮哄埗鎸囧畾緋葷粺鍔犺澆ntosknrl浜?寰楀仛浠ヤ笅鍑犱釜宸ヤ綔

1 鎶妚m鐨刾rocessor璋冩垚鍗曟牳鍗曞鐞嗗櫒
2 寮windows铏氭嫙鏈? 涓轟簡鍛婅瘔緋葷粺鐜板湪鏄崟鏍稿崟澶勭悊鍣ㄦā寮?寰楄窇涓涓嬭繖涓懡浠?nbsp;
rundll32.exe setupapi,InstallHinfSection ACPIAPIC_UP_HAL 131 %windir%\inf\hal.inf
鍙傝? 濡備綍淇敼Windows XP緋葷粺鐨勫唴鏍哥被鍨?nbsp; http://blog.sina.com.cn/s/blog_5918846401000bik.html
3 褰撶劧,榪欓噷榪樻病緇撴潫,濡傛灉澶勭悊鍣ㄦ敮鎸丳AE 閭d箞緋葷粺浼?xì)鍔犺浇ntoskrnla  鎵浠ヨ繕寰楃鐢≒AE. 鍒?span style="font-family: arial, 瀹嬩綋, sans-serif; font-size: 14px; line-height: 24px; text-indent: 30px; background-color: #ffffff;">BOOT.INI閲岄潰, 鍚姩璁劇疆涓鏋滄湁/noexecute=optin灝辨浛鎹㈡敼鎴?execute,娌℃湁鐨勮瘽灝卞姞涓?/span>/execute

瀹屼簡鍚庡氨浼?xì)鍔犺浇ntoskrnl浜?鏁堟灉鍥?

鎸囧畾鍏跺畠緋葷粺鏂規(guī)硶綾諱技,鍦ㄦ浠呮姏鐮栧紩鐜?nbsp;





__ay 2013-04-06 13:16 鍙戣〃璇勮
]]>
WINDBG鐨勫爢璋冭瘯&mdash;full page heap鐨勫爢鐮村潖媯嫻嬪師鐞?/title><link>http://m.shnenglu.com/ay19880703/archive/2012/01/05/163604.html</link><dc:creator>__ay</dc:creator><author>__ay</author><pubDate>Thu, 05 Jan 2012 01:17:00 GMT</pubDate><guid>http://m.shnenglu.com/ay19880703/archive/2012/01/05/163604.html</guid><wfw:comment>http://m.shnenglu.com/ay19880703/comments/163604.html</wfw:comment><comments>http://m.shnenglu.com/ay19880703/archive/2012/01/05/163604.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/ay19880703/comments/commentRss/163604.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/ay19880703/services/trackbacks/163604.html</trackback:ping><description><![CDATA[<p>@浣滆? ay @鏂囩珷鍑哄: <a >cnss-ay鐨勫崥瀹?/a>@Notice: <font color="#ff0000">杞澆璇鋒敞鏄庡嚭澶勶紒鑻ユ枃绔犳樉紺轟笉瀹屾暣錛屽彲浠ュ埌鏂囩珷鍑哄闃呰銆?/font></p> <p><font color="#ff0000"></font> </p> <p><font size="3">姝ゆ枃浼?xì)娑夊強(qiáng)鍒颁竴浜涙櫘閫氬爢鐨勭煡璇嗭紝榪欎簺鍐呭鍙互鍙傝鎴戜箣鍓嶇殑鏂囩珷 </font><a href="http://m.shnenglu.com/ay19880703/archive/2011/10/30/159364.html" target="_blank"><font size="3">WINDBG鐨勫爢璋冭瘯--浜嗚ВHEAP緇勭粐</font></a></p> <h1>鍫嗙牬鍧?/h1> <p><font size="2">鎵璋撶殑鍫嗙牬鍧忥紝鏄娌℃帶鍒跺ソ鑷繁鐨勬寚閽堬紝鎶婁笉灞炰簬浣犲垎閰嶇殑閭e潡鍐呭瓨緇欏啓瑕嗙洊浜嗐傝繖鍧楀唴瀛樺彲鑳芥槸浣犵▼搴忕殑鏁版嵁錛屼篃鍙兘鏄爢鐨勭鐞嗙粨鏋勩傞偅涔堣繖涓細(xì)瀵艱嚧鎬庢牱鐨勫悗鏋滃憿錛熷彲鑳界殑鎯呭喌鎴戜滑鏉y涓?/font></p> <ol> <li><font size="2">鎶婄▼搴忛噷鐨勮綆楃粨鏋滆鐩栦簡錛岃繖涔熻浼?xì)璁╀綘閲嶅鐪嬩簡N嬈′唬鐮侊紝鏍¢獙浜哊嬈¤綆楅昏緫涔熸悶涓嶆槑鐧戒負(fù)浣曡綆楃粨鏋滆繕鏄湁闂 </font> <li><font size="2">鍫嗙鐞嗙粨鏋勮鐮村潖浜嗭紝new/delete錛屾垨鑰卪alloc/free鎿嶄綔澶辮觸 </font> <li><font size="2">絳夌瓑絳夌瓑~</font></li></ol> <p><font size="2">鍫嗙牬鍧忚緝涓虹悊鎯崇殑鎯呭喌鏄淇敼鐨勬暟鎹細(xì)椹笂瀵艱嚧紼嬪簭crash錛屾渶宸殑鎯呭喌鏄綘鐨勫爢鏁版嵁鑾悕鍏跺鍦ㄤ粖澶╄鏀逛簡錛屼絾鏄庡ぉ鎵峜rash銆傝繖涓椂鍊欏湪鍘誨垎鏋恈rash錛屽氨濡傛垜浠殑璀﹀療鍙斿彅鐜板湪鎺ユ墜涓妗?0騫村墠鐨勬瀛愪竴鑸?---鏃犱粠涓嬫墜銆傝佸縐頒箣涓篽eap corruption鏄緢璐村垏鐨勶紝鏈夋椂鍊欏挶鍫嗘暟鎹鎰忓綃℃敼鏄棤澹版棤鎭殑錛屼綘涔熻娌℃硶浠庣晫闈㈢敋鑷蟲棩蹇楁枃浠朵腑鐪嬪埌瀹冭綃℃敼鐨勪竴鐐硅抗璞★紝褰撳埌鏌愪竴涓椂鍒伙紝榪欑閿欒浼?xì)鏆撮湶鍑烘潵锛岀劧鑰岃繖涓椂鍊欐煡鐪嬪爢淇℃伅涔熻浼?xì)鏄鏃犲ご缛A銆傛墍浠ュ浜庡爢鐮村潖錛屽挶鐨勭瓥鐣ユ槸灝芥棭鍙戠幇鎴戜滑鐨勫爢琚鏀逛簡錛屾渶濂借兘澶熷湪鍫嗘暟鎹鎰忓綃℃敼鐨勯偅涓鏃跺埢璇卞彂涓涓紓甯告潵鎻愰啋鎴戜滑----鍏勫紵錛屼綘鐨勫爢琚厫铓浜嗐?/font></p> <p><font size="2">寰蔣鎻愪緵浜嗕竴浜涙柟妗堬紝鏉ュ府鍔╂垜浠瘖鏂爢鐮村潖銆備竴鑸潵璇達(dá)紝鍫嗙牬鍧忓線寰閮芥槸鍐欐暟鎹秺鐣岄犳垚鐨勶紙yy鐨勭浜岀鎯呭喌錛屽鏋滄槸絎竴縐嶆儏鍐靛叾瀹炶繕綆鍗曪紝涓嬩釜鍐呭瓨鏂偣灝卞ソ錛夛紝鎵浠ュ井杞湪鍫嗗垎閰嶄笂錛岀粰紼嬪簭鍛橀棬棰濆鎻愪緵浜?縐嶅爢鍒嗛厤妯″紡--瀹屽叏欏靛爢錛坒ull page heap錛夛紝鍑嗛〉鍫?normal page heap)錛岀敤鏉ユ嫻嬪爢琚啓瓚婄晫鐨勬儏鍐點(diǎn)?/font></p> <h1></h1> <h1>瀹屽叏欏靛爢錛坒ull page heap錛?/h1> <h2>媯嫻嬪師鐞?/h2> <p><font size="2">瀹屽叏欏靛爢鐨勬嫻嬪熀鏈濊礬鏄氳繃鍒嗛厤鐩擱偦鐨勪竴涓〉錛屽茍灝嗗叾璁句負(fù)涓嶅彲璁塊棶灞炴э紝鐒跺悗鐢ㄦ埛鏁版嵁鍧椾細(xì)琚垎閰嶅埌鍐呭瓨欏電殑鏈鏈錛屼粠鑰屽疄鐜拌秺鐣岃闂殑媯嫻嬨傚綋鎴戜滑瀵瑰爢涓垎閰嶇殑鍐呭瓨璇誨啓瓚婄晫鍚庝究浼?xì)璁块棶鍒伴偅涓笉鍙潥剻宓锛尵p葷粺鎹曡幏鍒版敼嬈″紓甯稿悗浼?xì)璇曞浘涓柇鎵ц迤垶畣璇ュ紓甯镐笂鎶ゾl檇ebugger錛屾垨鑰呭穿婧冦傚叿浣撶殑鍐呭瓨緇勭粐緇撴瀯濡備笅鍥?/font></p> <p><a href="http://m.shnenglu.com/images/cppblog_com/ay19880703/Windows-Live-Writer/918bb68ffcd3_1405A/image_15.png"><font size="2"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://m.shnenglu.com/images/cppblog_com/ay19880703/Windows-Live-Writer/918bb68ffcd3_1405A/image_thumb_5.png" width="468" height="184"></font></a></p> <p><font size="2">鎽樿嚜銆婅蔣浠惰皟璇曘?/font></p> <p><font size="2"> </font></p> <p><font size="2">涓庢櫘閫氬爢涓嶅悓鐨勬槸錛屽唴瀛樺潡鍓嶉潰鐨凥EAP_ENTRY緇撴瀯琚獶PH_BLOCK_INFORMATION緇撴瀯鍙栦唬錛岃繖涓粨鏋勫唴閮ㄨ褰曚簡欏靛爢妯″紡涓嬭繖涓唴瀛樺潡鐨勪竴浜涘熀鏈俊鎭傚鏋滅敤鎴鋒暟鎹尯鍓嶉潰鐨勬暟鎹紝涔熷氨鏄疍PH_BLOCK_INFORMATION緇撴瀯琚牬鍧忎簡錛岄偅涔堝湪閲婃斁鍐呭瓨鍧楃殑鏃跺欑郴緇熶細(xì)鎶ラ敊錛屽鏋滅紪紼嬭呭榪欏潡鍐呭瓨鍧楄鍐欒秺鐣屼簡錛屽綋鐒訛紝榪欓噷瓚婄晫鏈夊嚑縐嶆儏鍐碉細(xì)</font></p> <ol> <li><font size="2">璇昏秺鐣岋紝浣嗗彧鏄闂簡鍧楀熬濉厖閮ㄥ垎鏁版嵁錛岄偅涔堢郴緇熶笉浼?xì)鎶ラ?</font> <li><font size="2">鍐欒秺鐣岋紝浣嗗彧綃℃敼浜嗗浘涓潡灝懼~鍏呯殑閮ㄥ垎錛岄偅涔堝湪鍫嗗潡閲婃斁鐨勬椂鍊欎細(xì)鎶ラ敊 </font> <li><font size="2">璇昏秺鐣岋紝涓旇秴榪囦簡鍧楀熬濉厖鐨勯儴鍒嗭紝璁塊棶鍒頒簡鏍呮爮欏碉紝閭d箞緋葷粺浼?xì)绔嬪嵪x姏鍑轟竴涓紓甯稿茍涓柇鎵ц </font> <li><font size="2">鍐欒秺鐣岋紝涓旇秴榪囦簡鍧楀熬濉厖閮ㄥ垎錛屽啓鍒頒簡鏍呮爮欏碉紝閭d箞緋葷粺浼?xì)绔嬪嵪x姏鍑轟竴涓紓甯稿茍涓柇鎵ц</font></li></ol> <p><font size="3"><font size="2">榪欓噷闇瑕佹敞鎰忕殑榪樻槸<font color="#ff0000">鍧楀熬濉厖涓嶄竴瀹氬瓨鍦?/font>錛屽潡灝懼~鍏呮槸鍥犱負(fù)瑕佹弧瓚沖爢鍐呭瓨鐨勬渶灝忓垎閰嶇矑搴︼紝濡傛灉鏈韓鍐呭瓨鍧楃殑鍒嗛厤綺掑害灝卞凡緇忔槸鏈灝忓垎閰嶇矑搴︾殑鍊嶆暟浜嗭紝閭d箞鍧楀熬濉厖灝變笉瀛樺湪浜嗭紝姣斿鍫嗗唴瀛樺垎閰嶇矑搴︽槸鏄? bytes錛岄偅涔堝鏋滅敵璇蜂簡14 bytes鐨勮瘽浼?xì)鏈? bytes鐨勫ぇ寰愬皬鐨勫潡灝懼~鍏呭潡錛屽鏋滅敵璇蜂簡24bytes錛岄偅涔堝氨娌℃湁鍧楀熬濉厖浜嗭紝鍥犱負(fù)24姝eソ鏄?鐨勫嶆暟</font>銆?/font></p> <p> </p> <h2>紺轟緥</h2> <p><font size="2">寮鍚叏欏靛爢錛堢敤windbg鐩綍涓嬬殑gflags鎴栬呰涓涓猘ppverifier閮藉彲浠ュ紑鍚級錛岄氳繃鑷繁鍐欑殑涓涓猦eap.exe鏉ョ湅涓涓嬪浣曚嬌鐢ㄥ叏欏靛爢媯嫻嬪爢鐮村潖鎯呭喌heap.exe浠g爜濡備笅錛?/font></p> <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:e8007c4f-f636-4682-8278-4037e4c00777" class="wlWriterSmartContent"><pre class="c" name="code">#include "windows.h" int main() { HANDLE heap_handle = HeapCreate( NULL , 1024 , 0 ) ; char *temp = NULL ; char *buffer = (char*)HeapAlloc(heap_handle , NULL , 128) ; char *buffer1 = (char*)HeapAlloc(heap_handle , NULL , 121) ; temp = buffer ; for( int i = 0 ; i < 138 ; ++i ) { *(temp++) = 'a' ; } HeapFree(heap_handle, 0 , buffer ) ; HeapFree(heap_handle, 0 , buffer1 ) ; HeapDestroy( heap_handle) ; return 0 ; }</pre></div> <p><font size="2">鍦ㄧ14琛屽悜buffer鍐欏叆138瀛楄妭錛岃繖鏄劇劧瓚婄晫浜嗭紝鐒跺悗鍦ㄧ敤windbg鍚姩heap.exe錛岀洿鎺ヨ繍琛岋紝浼?xì)鍙戠幇鎶ラ敊濡備?/font></p> <p><font size="2">0:000> g<br>(1f50.1f54): Access violation - code c0000005 (first chance)<br>First chance exceptions are reported before any exception handling.<br>This exception may be expected and handled.<br>eax=00000080 ebx=00000000 ecx=02596000 edx=02596000 esi=00000001 edi=00193374<br>eip=00191068 esp=0016fdc8 ebp=0016fddc iopl=0         nv up ei ng nz ac pe cy<br>cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00010297<br>heap!main+0x68:<br>00191068 c60161          mov     byte ptr [ecx],61h         ds:0023:02596000=??<br></font></p> <p><font size="2">鎶ヤ簡涓涓唴瀛樿闂敊璇紝鐒跺悗鐪嬩竴涓嬭皟鐢ㄥ爢鏍?/font></p> <p><font size="2">0:000> kb<br>ChildEBP RetAddr  Args to Child              <br>0016fddc 0019120f 00000001 023fbfd0 0239df48 heap!main+0x68 [d:\projects\heap\<font color="#ff0000">main.cpp @ 14</font>]<br>0016fe20 765b1114 7ffd3000 0016fe6c 778eb429 heap!__tmainCRTStartup+0x10f [f:\dd\vctools\crt_bld\self_x86\crt\src\crtexe.c @ 582]<br>0016fe2c 778eb429 7ffd3000 757369d8 00000000 kernel32!BaseThreadInitThunk+0xe<br>0016fe6c 778eb3fc 00191357 7ffd3000 00000000 ntdll!__RtlUserThreadStart+0x70<br>0016fe84 00000000 00191357 7ffd3000 00000000 ntdll!_RtlUserThreadStart+0x1b</font></p> <p><font size="2">鍙互鐪嬪埌鏄14琛屾姤鐨勯敊錛屼絾鏄?4琛岀殑浠g爜榪愯浜嗛偅涔堝嬈★紝鎴戜滑鍐嶇湅涓涓嬭繖涓椂鍊欏彉閲廼鐨勫兼槸澶氬皯</font></p> <p><font size="2">0:000> dv i<br>              i = 0n128</font></p> <p><font size="2">鏄劇劧錛屽湪濉厖絎?28瀛楄妭鐨勬椂鍊欙紝鎴戜滑鐨則emp鎸囬拡璁塊棶鍒頒簡鏍呮爮欏碉紝浠庤屾姤鍑轟簡涓涓唴瀛樿繚瑙勭殑寮傚父銆?/font></p> <p><font size="2">榪欓噷欏哄甫鐪嬩竴涓嬪鏋滄垜浠垎閰嶇殑鍐呭瓨涓嶆槸8 bytes鐨勬儏鍐碉紙涓鑸爢鍐呭瓨鍒嗛厤綺掑害鏄? bytes錛屾墍浠ョ敵璇?28 bytes鐨勫唴瀛樻椂鏄笉浼?xì)鏈夊潡灏惧~鍏呴儴鍒嗙殑锛?/font></p> <p><font size="2">閭f垜浠帴涓嬫潵鐪嬪彟澶栦竴孌典唬鐮?/font></p> <p><font color="#ff0000" size="2">鎴戜滑鎶婄10琛岀殑temp = buffer鏀規(guī)垚temp = buffer1</font></p> <p><font color="#000000" size="2">鍥犱負(fù)buffer1鐢寵浜?21 bytes錛屼篃灝辨槸璇村畠鏈? bytes鐨勫~鍏呭瓧鑺?/font></p> <p><font size="2">0:000> g<br>(1ba0.1ba4): Access violation - code c0000005 (first chance)<br>First chance exceptions are reported before any exception handling.<br>This exception may be expected and handled.<br>eax=00000080 ebx=00000000 ecx=024c8000 edx=024c8000 esi=00000001 edi=00033374<br>eip=00031068 esp=002cfb80 ebp=002cfb94 iopl=0         nv up ei ng nz ac pe cy<br>cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00010297<br>heap!main+0x68:<br>00031068 c60161          mov     byte ptr [ecx],61h         ds:0023:024c8000=??<br>0:000> dv i<br><font color="#ff0000">              i = 0n128</font></font></p> <p><font size="2">鍙互鐪嬪埌鍙橀噺i榪樻槸128錛屼篃灝辨槸璇存垜浠繕鏄湪璁塊棶鍒扮128瀛楄妭鍚庢墠寮曞彂璁塊棶寮傚父錛岃屼笉鏄垜浠湡鏈涚殑121瀛楄妭鍚庡氨寮曞彂寮傚父銆?/font></p> <p><font size="2">榪欓噷涔熷氨鏄<font color="#ff0000">濡傛灉鎴戜滑鐨勪唬鐮佷腑瀵圭敵璇風(fēng)殑鍫嗗唴瀛樺啓瓚婄晫浜嗭紝鍐欐暟鎹鐩栧潡灝懼~鍏呴儴鍒嗙殑鏃跺欏茍涓嶄細(xì)寮曞彂寮傚父錛?/font></font></p> <p><font size="2">浣嗘槸錛岃繖騫朵笉浠h〃鎴戜滑鐨勫啓瓚婄晫闂涓嶄細(xì)琚彂鐜般傚潡灝懼~鍏呴儴鍒嗘槸浼?xì)琚~鍏呬笂鍥哄畾鏁版嵁鐨勫Q岀郴緇熷湪閫傚悎鐨勬椂鏈猴紙姣斿閿姣佸爢鐨勬椂鍊欙級浼?xì)鏍¢獙鍧棡畱帧厖鍧楀Q屽鏋滃彂鐜板潡灝懼~鍏呭潡鏁版嵁鏈夊彉錛岄偅涔堜究浼?xì)鎶ヤ竴涓獀erifier寮傚父錛屾瘮濡傛垜浠妸浠g爜涓殑for寰幆嬈℃暟鏀逛負(fù)124</font></p> <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:14cc24bb-3177-401d-b544-0ea75212c964" class="wlWriterSmartContent"><pre class="c" name="code"> for( int i = 0 ; i < 124 ; ++i )</pre></div> <p><font size="2">閭d箞windbg浼?xì)涓柇鍦ńW?9琛?/font></p> <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:27622578-bab1-454b-bf14-dc22531576c3" class="wlWriterSmartContent"><pre class="c" name="code"> HeapDestroy( heap_handle) ;</pre></div> <p><font size="2">鎻愮ず鍐呭濡備笅<br>=======================================<br><font color="#0000ff">VERIFIER STOP 0000000F</font>: pid 0x1E3C: Corrupted suffix pattern for heap block. </font></p> <p><font size="2">    <font color="#ff0000">025A1000</font> : Heap handle used in the call.<br>    <font color="#ff0000">025A7F80</font> : Heap block involved in the operation.<br>    00000079 : Size of the heap block.<br>    <font color="#ff0000">025A7FF9</font> : Corruption address.</font></p> <p><br><font size="2">=======================================<br>This verifier stop is not continuable. Process will be terminated <br>when you use the `go' debugger command.</font></p> <p><font size="2">=======================================</font></p> <p><font size="2">(1e3c.143c): Break instruction exception - code 80000003 (first chance)<br>eax=6c75e994 ebx=6c75cf58 ecx=00000002 edx=002bf461 esi=00000000 edi=000001ff<br>eip=6c753c38 esp=002bf6b4 ebp=002bf8b8 iopl=0         nv up ei pl nz na po nc<br>cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000202<br>vrfcore!VerifierStopMessageEx+0x543:<br>6c753c38 cc              int     3</font></p> <p><font size="2">鎻愮ず璇寸殑寰堟竻妤氫簡錛宎ppverifier鎸囧嚭浜嗗爢鍜屽叿浣撶殑鍐呭瓨鍧楋紝鎴戜滑榪欎釜鏃跺欐煡鐪媌uffer1鐨勫兼槸<font color="#ff0000">0x025a7f80</font> 錛屾濂藉氨鏄嚭闂鐨勫爢鍧楋紝鍑洪棶棰樼殑鍦板潃鏄?x025a7ff79錛屾濂藉氨鏄痓uffer1鍐呭瓨鍧楃殑杈圭晫錛岄敊璇師鍥犳槸Corrupted suffix pattern for heap block錛屼篃灝辨槸璇村挶鍧楀熬濉厖閮ㄥ垎錛坰uffix pattern for heap block錛夎鐮村潖錛坈orrupted錛変簡</font></p> <p><font size="2">緇撹錛氬彧瑕佸啓瓚婄晫錛岀郴緇熼兘鑳藉媯嫻嬪嚭鏉ワ紝鍙笉榪囧鏋滃啓瓚婄晫鍐欏埌浜嗘爡鏍忛〉浼?xì)鐞嗚В瑙﹀彂寮傚告腑鏂紝鑰屽啓瓚婄晫鍙啓浜嗗潡灝懼~鍏呴儴鍒嗭紝閭d箞緋葷粺鍦ㄩ傚綋鏃舵満錛堟瘮濡傚爢琚攢姣侊紝鎴栬呰繖鍧楀唴瀛樿閲嶆柊鍒嗛厤絳夋椂鏈猴級浼?xì)瀵瑰潡灏惧~鍏呴儴鍒嗗仛瀹屾暣鎬ф嫻嬶紝濡傛灉鍙戠幇琚牬鍧忎簡錛屽氨浼?xì)鎶ラ敊銆傚綋鐒訛紝浣犲彲浠ユ牴鎹敊璇彿錛?font color="#0000ff">钃濊壊瀛椾綋閮ㄥ垎</font>錛変俊鎭幓appverifier鐨勫府鍔╂枃妗d腑鏌ユ壘鏇磋緇嗙殑閿欒璇存槑銆?/font></p> <h2>緇撴瀯璇﹁В</h2> <p><font size="2">榪欐鍜辨潵鍊掑彊錛屽厛浠庢渶鍩烘湰鐨勫唴瀛樺爢鍧楃粨鏋凞PH_BLOCK_INFORMATION寮濮嬩粙緇嶏紝DPH_BLOCK_INFORMATION緇撴瀯寰蔣涔熸湁瀵瑰簲鏂囨。浠嬬粛</font></p> <p><font size="2"><img alt="ms220938.Local_-1265171613_fphbs(en-US,VS.80).gif" src="http://i.msdn.microsoft.com/dynimg/IC171455.gif" width="505" height="190"></font></p> <h2><font size="2">錛堟憳鑷狹SDN錛?/font></h2> <p><font size="2"></font> </p> <p><font size="2">鍏朵腑prefix start magic鍜宲refix end magic鏄牎楠屽潡錛岀敤鏉ユ嫻婦PH_BLOCK_INFORMATION鏄惁琚牬鍧忥紝榪欎簺媯嫻嬮儴鍒嗗睘浜嶥PH_BLOCK_INFORMATION緇撴瀯銆傛垜浠厛鏉ョ敤windbg鎺㈢┒涓婦PH_BLOCK_INFORMATION榪欎釜鏈鍩烘湰鐨勭粨鏋?鍐嶄竴嬈?鎴戜滑鎵撳紑windbg璋冭瘯heap.exe.榪愯鍒扮10琛?榪欎釜鏃跺欏彉閲忕殑鍊兼槸</font></p> <p><font size="2">0:000> dv heap_handle<br>    heap_handle = <font color="#ff0000">0x024a0000</font><br>0:000> dv buffer<br>         buffer = <font color="#ff0000">0x024a5f80</font> "???"<br>0:000> dv buffer1<br>        buffer1 = <font color="#ff0000">0x024a7f80</font> "???"</font></p> <p><font size="2">榪欓噷鍙互鐪嬪埌涓涓緢鏈夎叮鐨勭幇璞?buffer1鍜宐uffer鐨勫湴鍧姝eソ鐩稿樊8K,涔熷氨鏄袱涓〉鐨勫ぇ灝?榪欏綋鐒舵槸鍥犱負(fù)欏靛爢鐨勫師鍥犲暒,鍏跺疄榪欎袱鍧楀唴瀛樺垎閰嶆槸鐩擱偦鐫鐨?铏氭嫙鍐呭瓨緇撴瀯濡備笅鍥炬墍紺?/font></p> <table border="1" cellspacing="0" cellpadding="2" width="801"> <tbody> <tr> <td valign="top" width="200"><font size="2">buffer鍐呭瓨鍧楋紙4K錛?/font></td> <td valign="top" width="200"><font size="2">鏍呮爮欏碉紙4K錛?/font></td> <td valign="top" width="200"><font size="2">buffer1鍐呭瓨鍧?4K)</font></td> <td valign="top" width="199"><font size="2">鏍呮爮欏?4K)</font></td></tr></tbody></table> <p><font size="2"></font> </p> <p><font size="2">鐢變簬buffer鍜宐uffer1鍒嗛厤鐨勫ぇ灝忔槸涓鏍風(fēng)殑錛坆uffer1鍔犱笂灝鵑儴濉厖鍧楀拰buffer鐨勫ぇ灝忕浉鍚岋級錛屾墍浠ヨ繖涓ゅ潡鍐呭瓨姝eソ鐩稿樊8K</font></p> <p><font size="2">鑰孌PH_BLOCK_INFORMATION灝卞湪鎴戜滑鐢寵鐨勫唴瀛樺潡鎸囬拡鐨勫墠0x20瀛楄妭澶勶紝鐢╠t鍛戒護(hù)鐪嬬殑緇撴灉濡備笅:</font></p> <p><font size="2">0:000> dt _DPH_BLOCK_INFORMATION 0x024a5f80-0x20<br>verifier!_DPH_BLOCK_INFORMATION<br>   +0x000 StartStamp       : 0xabcdbbbb<br>   +0x004 Heap             : 0x024a1000 Void<br>   +0x008 RequestedSize    : 0x80<br>   +0x00c ActualSize       : 0x1000<br>   +0x010 Internal         : _DPH_BLOCK_INTERNAL_INFORMATION<br>   +0x018 StackTrace       : 0x003d9854 Void<br>   +0x01c EndStamp         : 0xdcbabbbb</font></p> <p><font size="2"></font> </p> <p><font size="2">0x024a5f80-0x20灝辨槸DPH_BLOCK_INFORMATION緇撴瀯鐨勫湴鍧銆侱PH_BLOCK_INFORMATION緇撴瀯鍦ㄥ凡鍒嗛厤鍜屽凡閲婃斁鐨勭姸鎬佷笅錛孲tartStamp鍜孍ndStamp錛堜篃灝辨槸MSDN鍥句腑鐨刾refix start magic鍜宲refix end magic錛夋槸涓嶅悓鐨勶紝鏄劇劧dt杈撳嚭鐨勭粨鏋滅湅鏉ワ紝榪欎釜鍐呭瓨鍧楁槸宸插垎閰嶇姸鎬併係tackTrace璁板綍浜嗗垎閰嶈繖涓唴瀛樺潡鏃剁殑璋冪敤鏍堬紝鍙互鐢╠ds鏉ョ湅涓涓嬭繖涓唴瀛樺潡琚垎閰嶆椂鍊欑殑璋冪敤鏍?/font></p> <p><font size="2">0:000> dds 0x003d9854 <br>003d9854  00000000<br>003d9858  00004001<br>003d985c  00090000<br>003d9860  5b3b8e89 verifier!AVrfDebugPageHeapAllocate+0x229<br>003d9864  776d5c4e ntdll!RtlDebugAllocateHeap+0x30<br>003d9868  77697e5e ntdll!RtlpAllocateHeap+0xc4<br>003d986c  776634df ntdll!RtlAllocateHeap+0x23a<br>003d9870  003b1030 heap!main+0x30 [d:\projects\heap\main.cpp @ 8]<br>003d9874  003b120c heap!__tmainCRTStartup+0x10f [f:\dd\vctools\crt_bld\self_x86\crt\src\crtexe.c @ 582]<br>003d9878  76451114 kernel32!BaseThreadInitThunk+0xe<br>003d987c  7766b429 ntdll!__RtlUserThreadStart+0x70<br>003d9880  7766b3fc ntdll!_RtlUserThreadStart+0x1b</font></p> <p><font size="2">杈撳嚭緇撴灉鎴戜滑鍙互鐪嬪埌榪欎釜鍐呭瓨鍧楁槸鍦╩ain.cpp,涔熷氨鏄垜浠殑紺轟緥浠g爜鐨勭8琛屽垎閰嶇殑錛岀8琛屾槸char *buffer = (char*)HeapAlloc(heap_handle , NULL , 128) 姝eソ灝辨槸鍒嗛厤buffer鍐呭瓨鐨勯偅鏉¤鍙ャ傝繖涓粨鏋勭殑鍏跺畠瀛楁錛岄【鍚嶆濅箟錛孉ctualSize鎸囨槑浜嗗疄闄呭垎閰嶅瓧鑺傛暟錛?x1000 bytes涔熷氨鏄?K澶у皬錛孖nternal榪欎釜瀛楁淇濆瓨浜嗕釜鍐呴儴緇撴瀯錛岀敤windbg涔熺湅涓嶅嚭榪欎釜緇撴瀯淇℃伅銆?/font></p> <p><font size="2">褰撶劧涓轟簡闃叉鍐呭瓨鍧楀墠闈㈢殑鏁版嵁琚啿鍒鋒帀錛岄櫎浜咲PH_BLOCK_INFORMATION澶栵紝緋葷粺榪橀氳繃DPH_HEAP_BLOCK淇濆瓨浜嗘墍鍒嗛厤鍐呭瓨鍧楃殑淇℃伅錛?/font></p> <p><font size="2">閫氳繃!heap 鈥損 鈥揾 [address] 鍙互鏌ョ湅鍒伴〉鍫嗙殑淇℃伅</font></p> <p><font size="2">0:000> !heap -p -h <font color="#ff0000">0x024a0000                            //heap_handle鐨勫?/font><br>    _DPH_HEAP_ROOT @ 24a1000<br>    Freed and decommitted blocks<br>      DPH_HEAP_BLOCK : VirtAddr VirtSize<br>    Busy allocations<br>      DPH_HEAP_BLOCK : UserAddr  UserSize - VirtAddr VirtSize<br>        <font color="#0000ff">024a1f6c</font> : 024a5f80 00000080 - 024a5000 00002000<br>        024a1f38 : 024a7f80 00000079 - 024a7000 00002000<br></font></p> <p><br><font size="2">鍙互鐪嬪埌錛宐uffer鍐呭瓨鍧楀搴旂殑DPH_HEAP_BLOCK緇撴瀯鍦板潃鏄?font color="#0000ff">024a1f6c</font></font></p> <p><font size="2">0:000> dt _DPH_HEAP_BLOCK 024a1f6c<br>verifier!_DPH_HEAP_BLOCK<br>   +0x000 NextFullPageHeapDelayedNode : 0x024a1020 _DPH_HEAP_BLOCK<br>   +0x004 DelayQueueEntry  : _DPH_DELAY_FREE_QUEUE_ENTRY<br>   +0x000 LookasideEntry   : _LIST_ENTRY [ 0x24a1020 - 0x0 ]<br>   +0x000 UnusedListEntry  : _LIST_ENTRY [ 0x24a1020 - 0x0 ]<br>   +0x000 VirtualListEntry : _LIST_ENTRY [ 0x24a1020 - 0x0 ]<br>   +0x000 FreeListEntry    : _LIST_ENTRY [ 0x24a1020 - 0x0 ]<br>   +0x000 TableLinks       : _RTL_BALANCED_LINKS<br>   +0x010 pUserAllocation  : 0x024a5f80  "???"<br>   +0x014 pVirtualBlock    : 0x024a5000  "???"<br>   +0x018 nVirtualBlockSize : 0x2000<br>   +0x01c Flags            : _DPH_HEAP_BLOCK_FLAGS<br>   +0x020 nUserRequestedSize : 0x80<br>   +0x024 AdjacencyEntry   : _LIST_ENTRY [ 0x24a1f5c - 0x24a1fc4 ]<br>   +0x02c ThreadId         : 0x3f4<br>   +0x030 StackTrace       : 0x003d9854 Void</font></p> <p><font size="2">浠巇t鐨勬暟鎹湅鏉ワ紝榪欎釜緇撴瀯澶у皬涓?x34錛宐uffer鍜宐uffer1鐨凞PH_HEAP_BLOCK緇撴瀯棣栧湴鍧姝eソ涔熸槸鐩稿樊0x34錛岃鏄庤繖涓や釜緇撴瀯鏄揣鎸ㄧ潃鐨勶紝涓嬩竴姝ュ湪璁╂垜浠潵鐪嬬湅DPH_HEAP_BLOCK緇撴瀯鏄浣曠粍緇囩殑銆?/font></p> <p><a href="http://m.shnenglu.com/images/cppblog_com/ay19880703/Windows-Live-Writer/918bb68ffcd3_1405A/image_3.png"><font size="2"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://m.shnenglu.com/images/cppblog_com/ay19880703/Windows-Live-Writer/918bb68ffcd3_1405A/image_thumb.png" width="555" height="218"></font></a></p> <p><font size="2">鎽樿嚜銆婅蔣浠惰皟璇曘?/font></p> <p><font size="2"></font> </p> <p><font size="2">榪欎釜鏄暣涓殑欏靛爢緇撴瀯鍥撅紝鎴戜滑鍏堟潵璇磋DPH_HEAP_BLOCK鐨勭粍緇囧惂錛屽湪鍥句腑0x16d00000鏄〉鍫嗙殑棣栧湴鍧錛屼篃灝辨槸欏靛爢鐨勫彞鏌勶紝鎴戜滑璋冭瘯鍣ㄤ腑錛岄〉鍫嗛鍦板潃鍒欐槸<font color="#ff0000">0x024a0000</font>錛屼負(fù)浜嗘暟鎹粺涓錛屾垜榪樻槸鎷?x024a0000浣滀負(fù)鍫嗗彞鏌勬潵璁茶В銆傛垜浠殑DPH_HEAP_BLOCK鍏跺疄灝卞湪鍫嗗潡鑺傜偣姹犻噷杈癸紝鎴戜滑鍙互榪戜技鎶婅繖涓妭鐐規(guī)睜鐪嬫垚涓涓ぇ鍨嬬殑DPH_HEAP_BLOCK鏁扮粍錛屼絾鏈変釜鍦版柟鍦ㄨ蔣浠惰皟璇曚腑娌℃湁鎻愬埌錛屽氨鏄湪win7涓嬶紝榪愯鏃惰繖浜汥PH_HEAP_BLOCK緇撴瀯閮芥槸浠ヤ簩鍙夊鉤琛℃暟鐨勭粨鏋勬潵緇勭粐鐨勶紝榪欎釜鏍?wèi)鐨劸l撴瀯鐨勫叆鍙f鏄湪TableLinks瀛楁鍐咃紝榪欎箞鍋氱殑鍘熷洜涔熷ぇ姒傛槸鍥犱負(fù)鑳藉鍦ㄥ垎閰嶆椂鏇村揩鐨勭儲銆傛垜浠啀鐪嬬湅DPH_HEAP_ROOT緇撴瀯錛岃繖涓粨鏋勫偍瀛樹簡鏁翠釜欏靛爢鐨勫繀瑕佷俊鎭紝瀹冨氨鐩稿綋浜庢櫘閫氬爢鐨刜HEAP緇撴瀯銆?/font></p> <p><font size="2">0:000> dt _dph_heap_root 24a1000<br>verifier!_DPH_HEAP_ROOT<br>   +0x000 Signature        : 0xffeeddcc<br>   +0x004 HeapFlags        : 0x1002<br>   +0x008 HeapCritSect     : 0x024a16cc _RTL_CRITICAL_SECTION<br>   +0x00c NodesCount       : 0x2c<br>   +0x010 VirtualStorageList : _LIST_ENTRY [ 0x24a1fa0 - 0x24a1fa0 ]<br>   +0x018 VirtualStorageCount : 1<br>   +0x01c PoolReservedLimit : 0x024a5000 Void<br>   +0x020 <font color="#0000ff">BusyNodesTable</font>   : _RTL_AVL_TABLE<br>   +0x058 NodeToAllocate   : (null) <br>   +0x05c nBusyAllocations : 2<br>   +0x060 nBusyAllocationBytesCommitted : 0x4000<br>   +0x064 pFreeAllocationListHead : (null) <br>   +0x068 FullPageHeapDelayedListTail : (null) <br>   +0x06c DelayFreeQueueHead : (null) <br>   +0x070 DelayFreeQueueTail : (null) <br>   +0x074 DelayFreeCount   : 0<br>   +0x078 LookasideList    : _LIST_ENTRY [ 0x24a1078 - 0x24a1078 ]<br>   +0x080 LookasideCount   : 0<br>   +0x084 UnusedNodeList   : _LIST_ENTRY [ 0x24a1ed0 - 0x24a16e4 ]<br>   +0x08c UnusedNodeCount  : 0x28<br>   +0x090 nBusyAllocationBytesAccessible : 0x2000<br>   +0x094 GeneralizedFreeList : _LIST_ENTRY [ 0x24a1f04 - 0x24a1f04 ]<br>   +0x09c FreeCount        : 1<br>   +0x0a0 PoolCommitLimit  : 0x024a2000 Void<br>   +0x0a4 NextHeap         : _LIST_ENTRY [ 0x5b3e9a58 - 0x23a10a4 ]<br>   +0x0ac ExtraFlags       : 3<br>   +0x0b0 Seed             : 0xfed6f13a<br>   +0x0b4 NormalHeap       : 0x027d0000 Void<br>   +0x0b8 CreateStackTrace : 0x003d9824 _RTL_TRACE_BLOCK<br>   +0x0bc ThreadInHeap     : (null) <br>   +0x0c0 BusyListHead     : _LIST_ENTRY [ 0x24a10c0 - 0x24a10c0 ]<br>   +0x0c8 SpecializedFreeList : [64] _LIST_ENTRY [ 0x24a10c8 - 0x24a10c8 ]<br>   +0x2c8 DelayFreeListLookup : [257] (null) <br>   +0x6cc HeapCritSectionStorage : _RTL_CRITICAL_SECTION<br></p></font> <p><font size="2">榪欓噷杈圭淮鎶や簡寰堝榪愯鏃朵俊鎭紝姣斿璇碊PH_BLOCK_INFORMATION涓殑閭d釜浜屽弶鏍?wèi)鍏ュ彛鍏跺疄灏辨槸淇濆瓨鍦?font color="#0000ff">BusyNodesTable </font>瀛楁錛岃繖閲岄潰璁板綍浜嗘墍鏈夎鍒嗛厤浜嗙殑鍐呭瓨鍧楁墍瀵瑰簲鐨凞PH_BLOCK_INFORMATION銆傚綋鐒訛紝榪欓噷闈竴浜涗俊鎭蔣浠惰皟璇曢噷闈㈤兘鏈変粙緇嶏紝寰堝鐪嬪悕瀛椾篃鑳藉鐚滃埌澶ф鎰忔濓紝鐪嬪悕瀛楃寽涓嶅埌鍟ユ剰鎬濈殑瀛楁錛屽叾瀹炴垜涔熺寽涓嶅埌銆傘傘?_-|||鍦ㄥ垱寤洪〉鍫嗗悗錛屾墍鏈夊唴瀛樺垎閰嶉兘鍒嗛厤鍦ㄩ〉鍫嗕腑錛岄氳繃鍒嗛厤鐨勫湴鍧涔熻兘鐪嬪緱鍑烘潵錛堟垜浠垎閰嶇殑鍐呭瓨閮芥槸024a鎵撳ご錛夛紝鑰岄潪鏅氶〉鍫嗕腑錛屾櫘閫氶〉鍫嗕篃浠呬粎鍙槸淇濆瓨涓浜涚郴緇熷唴閮ㄤ嬌鐢ㄧ殑鏁版嵁銆備竴鑸潵璇達(dá)紝鍫嗗潡鑺傜偣姹犲姞涓奃PH_HEAP_ROOT緇撴瀯澶у皬姝eソ鏄?涓唴瀛橀〉錛屼篃灝辨槸16K銆?/font></p> <h2>浼樼己鐐?/h2> <h3>緙虹偣錛氭秷鑰楀ぇ閲忚櫄鎷熷唴瀛橈紝姣忓潡鍐呭瓨鐨勫垎閰嶇矑搴︽槸2涓〉錛?K錛夛紝</h3> <h3>浼樼偣錛氳兘澶熺珛鍗蟲崟鑾瘋秺鐣岃鍐欐搷浣滐紝閫氳繃璋冪敤鏍堝氨鍙互榪芥函鍒伴棶棰樻簮澶淬傝兘澶熷揩閫熷畾浣嶉棶棰樹唬鐮併?/h3> <h3>浣跨敤寤鴻錛?2浣嶄笅涓嶉傚疁璺戦厤緗枃浠剁粨鏋勬瘮杈冨鏉傜殑杞歡錛岃鎴戜滑鏉ュ亣璁句竴涓獂ml閰嶇疆鏂囦歡涓嬫湁3000涓妭鐐癸紝姣忎釜鑺傜偣鏈?涓瓧絎︿覆鎻忚堪灞炴э紝濡傛灉鎶婅繖浜涢厤緗枃浠朵俊鎭漿鍖栦負(fù)stl緇撴瀯鏉ヤ繚瀛橈紝閭d箞姣忎釜鑺傜偣鍒欓渶瑕佷負(fù)姝ゅ垎閰?*8K鐨勭┖闂達(dá)紝3000欏歸厤緗垯闇瑕?000*5*8K=117MB铏氭嫙鍐呭瓨錛屽鏋滄瘡涓妭鐐逛俊鎭啀澶氫竴浜涘憿錛熻繖鏍蜂細(xì)瀵艱嚧铏氭嫙鍐呭瓨鑰楀敖浠庤屽嚭鐜頒竴緋誨垪鍐呭瓨闂錛堟瘮濡傦紝new澶辮觸錛夈傚綋鐒?4浣嶅氨涓嶅瓨鍦ㄨ繖縐嶉棶棰樹簡7T鐨勮櫄鎷熷唴瀛樼┖闂達(dá)紝鐜板湪鐪嬫潵搴旇鏄鐢ㄤ簡銆?/h3> <p> </p> <p><font color="#ff0000">瀵逛簬璋冭瘯鍫嗙牬鍧忔潵璇達(dá)紝鍏跺疄鎴戜滑鍙浜嗚ВDPH_BLOCK_INFORMATION緇撴瀯鍜孌PH_HEAP_BLOCK涓殑鍩烘湰瀛楁灝卞樊涓嶅浜嗭紝榪欐牱鏇存柟渚挎垜浠畾浣嶅嚭閿欐簮澶淬傛瘮濡傚湪appverifier鎶ラ敊鍚庯紙鎴栬呬綘紼嬪簭鑷繁鑾悕鍏跺宕╂簝鎴栬呮暟鎹綃℃敼鍚庯紝瑕佺煡閬揳ppverifier騫朵笉鎬繪槸鍙俊鐨勶級錛屾垜浠彲浠ヨ嚜宸辨墜鍔ㄨ皟璇曞嚭閿欑殑鍫嗗潡緇撴瀯錛圖PH_BLOCK_INFORMATION錛孌PH_HEAP_BLOCK鍜孌PH_HEAP_ROOT錛夛紝媯嫻嬩互涓嬭繖浜涚偣錛?/font></p> <ol> <li><font color="#ff0000">媯嫻嬪爢鍧楃鐞嗙粨鏋勭殑鏍¢獙瀛楁鏄惁瀹屾暣</font> <li><font color="#ff0000">鏄惁鍧楀熬濉厖閮ㄥ垎鏈夎淇敼榪?/font> <li><font color="#ff0000">媯嫻嬪埌鏈噴鏀炬垨鑰呴噸澶嶉噴鏀懼爢璧勬簮鏃訛紝鏌ョ湅闂鐨勫爢鍧楄鍒嗛厤鏃剁殑璋冪敤鏍?/font></li></ol> <p><font color="#ff0000">鍏跺疄欏靛爢榪樺ソ錛屽畠鏈夎緝寮虹殑瀹炴椂鎬э紝鎵浠ュ茍涓嶉渶瑕佸お澶氭墜宸ヨ皟璇曠殑鎿嶄綔錛岃秺鐣岃鍐欓兘浼?xì)绔嬪崒櫑﹀彂寮傚父迤堜笖涓柇锛屾墍浠ヤ粠榪欑偣鐪嬫潵錛屽畠鏄竴浜涜蔣浠剁敤鏉ユ嫻嬪爢璧勬簮鏄惁姝g‘浣跨敤鐨勫繀澶囪壇鑽瘇 浣嗘槸鐩稿浜庨〉鍫嗭紝鍑嗛〉鍫嗙殑璋冭瘯鍒欓渶瑕佹洿濂界殑鍘諱簡瑙e噯欏靛爢宸ヤ綔鍘熺悊浜嗭紝鍥犱負(fù)瀹冩彁渚涚殑鍫嗗潡媯嫻嬩笉鏄疄鏃剁殑錛屾墍浠ュ彂鐜伴棶棰樺悗錛岄渶瑕佸挶鈥滅簿婀涚殑璋冭瘯鍐呭姛鈥滃幓鎵懼嚭婧愬ご錛屽叧浜庡噯欏靛爢鐨勪笢瑗匡紝涓嬪洖鍐嶈鍚э紝鏁鏈熷緟~</font></p><img src ="http://m.shnenglu.com/ay19880703/aggbug/163604.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/ay19880703/" target="_blank">__ay</a> 2012-01-05 09:17 <a href="http://m.shnenglu.com/ay19880703/archive/2012/01/05/163604.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>璋佸姩浜嗘垜鐨勬寚閽?--璁頒竴嬈indbg鍐呭瓨鏂偣鐨勪嬌鐢?/title><link>http://m.shnenglu.com/ay19880703/archive/2012/01/03/163486.html</link><dc:creator>__ay</dc:creator><author>__ay</author><pubDate>Tue, 03 Jan 2012 07:07:00 GMT</pubDate><guid>http://m.shnenglu.com/ay19880703/archive/2012/01/03/163486.html</guid><wfw:comment>http://m.shnenglu.com/ay19880703/comments/163486.html</wfw:comment><comments>http://m.shnenglu.com/ay19880703/archive/2012/01/03/163486.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://m.shnenglu.com/ay19880703/comments/commentRss/163486.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/ay19880703/services/trackbacks/163486.html</trackback:ping><description><![CDATA[<p> </p> <p>鍐欓┍鍔ㄧ殑鏃跺欐湁涓湴鏂硅佹槸钃濆睆,鐪嬩簡dump鍙戠幇鏁版嵁琚潪娉曠鏀逛簡.</p> <p>鏁版嵁鍒濆鍖栧涓?/p> <p> </p> <p>if(record_set_ptr != NULL )<br>{<br>    record_set_ptr->look_aside_pool_ptr = g_user_control_context.look_aside_pools[type] ;<br>    record_set_ptr->type = type ;<br>    record_set_ptr->buffer_size = notify_count * unit_size_of ;<br>    record_set_ptr->units_count = notify_count ;<br>    record_set_ptr->complete_count = 0 ;<br>}<br></p> <p>鐒跺悗鍦ㄨ皟鐢‥xFreeToNPagedLookasideList浼犲叆record_set_ptr->look_aside_pool_ptr 鐨勬椂鍊欐寕浜?鍙戠幇record_set_ptr->look_aside_pool_ptr宸茬粡琚敼浜?</p> <p> </p> <p>涓轟簡璺熻釜鏁版嵁鍦ㄥ摢閲岃淇敼浜?鍏堝湪鏁版嵁鍒濆鍖栫殑鍦版柟涓嬫柇,鐒跺悗璁頒笅record_set_ptr->look_aside_pool_ptr 鐨勫湴鍧:0x85c16018</p> <p>瀵硅繖涓唴瀛樹笅涓柇鐐?</p> <p>1: kd> ba w4 85c16018</p> <p>w琛ㄧず鍦ㄥ啓鍏ユ椂鏂笅,4琛ㄧず鐩戞帶鑼冨洿,鍗曚綅鏄瓧鑺?nbsp; </p> <p>鏁翠釜鍛戒護(hù)鐨勬剰鎬濆氨鏄璋冭瘯鍣ㄥ湪緋葷粺鍐欏叆鍐呭瓨85c16018-85c1601b榪欎釜鍦板潃鑼冨洿鐨勬椂鍊欎腑鏂?</p> <p>OK,鍛戒護(hù)涓嬪畬,F5涓涓嬪氨绔嬮┈鏂笅鏉ヤ簡</p> <p>1: kd> g<br>Breakpoint 3 hit<br>nt!memcpy+0x33:<br>8053b583 f3a5            rep movs dword ptr es:[edi],dword ptr [esi]</p> <p><br>姝ゆ椂edi鐨勫? <font color="#ff0000">0x85c16018</font></p> <p><font color="#000000"></font> </p> <p><font color="#000000">鏈鍚庣湅涓涓嬪嚱鏁板爢鏍?鍙戠幇鏄瓧絎︿覆鎷瘋礉瓚婄晫瑕嗙洊浜嗗悗闈㈢殑鏁版嵁....  </font></p> <p>鍚庨潰鍙堟兂鍒?鍑洪敊鏃秗ecord_set_ptr->look_aside_pool_ptr 鐨勫兼槸<font color="#ff0000">0x005c0065</font></p> <p><font color="#000000">榪欎箞鏄庢樉鐨勫瓧絎︿覆鐗瑰緛绔熺劧娌℃剰璇嗗埌....涓鐪嬪嚭閿欏煎氨搴旇鐭ラ亾鏄瓧絎︿覆瑕嗙洊閫犳垚鐨?....</font></p><img src ="http://m.shnenglu.com/ay19880703/aggbug/163486.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/ay19880703/" target="_blank">__ay</a> 2012-01-03 15:07 <a href="http://m.shnenglu.com/ay19880703/archive/2012/01/03/163486.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>WINDBG鐨勫爢璋冭瘯--浜嗚ВHEAP緇勭粐http://m.shnenglu.com/ay19880703/archive/2011/10/30/159364.html__ay__aySun, 30 Oct 2011 11:05:00 GMThttp://m.shnenglu.com/ay19880703/archive/2011/10/30/159364.htmlhttp://m.shnenglu.com/ay19880703/comments/159364.htmlhttp://m.shnenglu.com/ay19880703/archive/2011/10/30/159364.html#Feedback1http://m.shnenglu.com/ay19880703/comments/commentRss/159364.htmlhttp://m.shnenglu.com/ay19880703/services/trackbacks/159364.html@浣滆? ay @鏂囩珷鍑哄: cnss-ay鐨勫崥瀹?/a>@Notice: 杞澆璇鋒敞鏄庡嚭澶勶紒鑻ユ枃绔犳樉紺轟笉瀹屾暣錛屽彲浠ュ埌鏂囩珷鍑哄闃呰銆?/font>

HEAP鐨勬蹇?/h1>

鍫嗘爤鍫嗘爤錛屽湪鎿嶄綔緋葷粺鍐呭瓨涓湁涓ょ瀛樺偍絀洪棿錛屼竴涓槸鍫嗭紝涓涓槸鏍堛傚爢涓昏鐢ㄤ簬瀛樺偍鐢ㄦ埛鍔ㄦ佸垎閰嶇殑鍙橀噺錛岃屾爤鍛紝鍒欐槸瀛樺偍鎴戜滑紼嬪簭榪囩▼涓殑涓存椂鍙橀噺銆傚綋鐒舵爤鐨勪綔鐢ㄨ繙涓嶆鐢ㄤ綔瀛樺偍鍙橀噺錛屼絾榪欎笉鏄垜浠繖綃囨枃绔犵殑璁ㄨ鍐呭銆?/p>

鍫嗭紙HEAP錛夌殑鍒嗛厤錛屼嬌鐢紝鍥炴敹閮芥槸閫氳繃寰蔣鐨凙PI鏉ョ鐞嗙殑錛屾渶甯歌鐨凙PI鏄痬alloc鍜宯ew銆傚湪寰搴曞眰璧頒竴鐐瑰憿錛岃繖涓や釜鍑芥暟閮戒細(xì)璋冪敤HeapAlloc錛圧tlAllocateHeap錛夈傚悓鏍風(fēng)殑鐩稿叧鍑芥暟榪樻湁HeapFree鐢ㄦ潵閲婃斁鍫嗭紝HeapCreate鐢ㄦ潵鍒涘緩鑷繁鐨勭鏈夊爢銆備笅闈㈡槸榪欎簺鍑芥暟鐨勮皟鐢ㄩ摼錛?/p>

HeapCreate->RtlCreateHeap->ZwAllocateVirtualMemory聽 (榪欓噷浼?xì)鐩存帴鐢宠涓澶х墖鍐呭瓨,鑷充簬鐢寵澶氬ぇ鍐呭瓨,鐢辮繘紼婸EB緇撴瀯涓殑瀛楁瑙夊緱錛孒eapSegmentReserve瀛楁鎸囧嚭瑕佺敵璇峰澶х殑铏氭嫙鍐呭瓨錛孒eapSegmentCommit鎸囨槑瑕佹彁浜ゅ澶у唴瀛橈紝瀵硅櫄鎷熷唴瀛樼殑鐢寵鍜屾彁浜ゆ蹇典笉娓呮鐨勭闉嬶紝璇峰弬瑙亀indows鏍稿績緙栫▼鐩稿叧鍐呭~)

HeapAlloc->RtlAllocateHeap錛堣嚦浜庤繖閲岀敵璇風(fēng)殑鍐呭瓨錛岀敱浜嶩eapCreate宸茬粡鐢寵浜嗕竴澶х墖鍐呭瓨錛屽爢綆$悊鍣ㄨ繖鐗囧唴瀛樹腑鍒掑垎涓鍧楀嚭鏉ヤ互婊¤凍鐢寵鐨勯渶瑕併傝繖涓姝ョ敵璇鋒搷浣滄槸鍫嗙鐞嗗櫒鑷繁緇存姢鐨勶紝浠呭綋鐢寵鍐呭瓨涓嶅鐨勬椂鍊欐墠浼?xì)鍐崑啤璋冪敤ZwAllocateVirtualMemory 錛?/p>

HeapFree->RtlFreeHeap 錛堝浜庨噴鏀劇殑鍐呭瓨錛屽爢綆$悊鍣ㄥ彧鏄畝鍗曠殑鎶婅繖鍧楀唴瀛樻爣蹇椾綅宸查噴鏀捐鍚庡姞鍏ュ埌絀洪棽鍒楄〃涓紝浠呭綋絀洪棽鐨勫唴瀛樿揪鍒頒竴瀹氶榾鍊肩殑鏃跺欎細(xì)璋冪敤ZwFreeVirtualMeMory 錛?/p>

HeapDestroy->RtlDestroyHeap->ZwFreeVirtualMeMory聽聽 錛堥攢姣佹垜浠敵璇風(fēng)殑鍫嗭級

濡備綍鎵懼埌鎴戜滑鐨凥EAP淇℃伅錛?/h1>

WINDBG瑙傚療鍫?/p>

婧愮爜錛?/p>

#include "windows.h"

int main()
{
	HANDLE heap_handle = HeapCreate( NULL , 0x1000 , 0x2000 ) ;

	char *buffer = (char*)HeapAlloc(heap_handle , NULL , 128) ;

	char *buffer1 = (char*)HeapAlloc(heap_handle , NULL , 121) ;

	HeapFree(heap_handle, 0 , buffer ) ;
	HeapFree(heap_handle, 0 , buffer1 ) ;

	HeapDestroy( heap_handle) ;
	return 0 ;
}

璇ユ簮鐮佺敓鎴愮紪璇戠敓鎴恏eap.exe錛岀劧鍚庣敤windbg璋冭瘯榪欎釜紼嬪簭錛屽湪main鍑芥暟涓嬫柇錛岀揣鎺ョ潃鎵ц絎簲琛岃鍙ワ紝鎵ц緇撴灉濡備笅

0:000> p
eax=002e1ca0 ebx=00000000 ecx=6d29b6f0 edx=00000000 esi=00000001 edi=01033374
eip=01031012 esp=0022fe8c ebp=0022feac iopl=0聽聽聽聽聽聽聽聽 nv up ei pl nz na po nc
cs=001b聽 ss=0023聽 ds=0023聽 es=0023聽 fs=003b聽 gs=0000聽聽聽聽聽聽聽聽聽聽聽聽 efl=00000202
heap!main+0x12:
01031012 ff150c200301聽聽聽 call聽聽聽 dword ptr [heap!_imp__HeapCreate (0103200c)] ds:0023:0103200c={kernel32!HeapCreateStub (769a29d7)}

0:000> p
eax=002c0000 ebx=00000000 ecx=77429897 edx=77498500 esi=00000001 edi=01033374
eip=01031018 esp=0022fe98 ebp=0022feac iopl=0聽聽聽聽聽聽聽聽 nv up ei pl nz na pe nc
cs=001b聽 ss=0023聽 ds=0023聽 es=0023聽 fs=003b聽 gs=0000聽聽聽聽聽聽聽聽聽聽聽聽 efl=00000206
heap!main+0x18:
01031018 8945fc聽聽聽聽聽聽聽聽聽 mov聽聽聽聽 dword ptr [ebp-4],eax ss:0023:0022fea8=6d222201
0:000> !heap
Index聽聽 Address聽 Name聽聽聽聽聽 Debugging options enabled
聽 1:聽聽 00300000聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
聽 2:聽聽 00010000聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
聽 3:聽聽 00020000聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
聽 4:聽聽 002e0000聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
聽 5:聽聽 002c0000聽聽聽聽聽聽

HeapCreate鎵ц鐨勮繑鍥炲煎瓨鏀懼湪eax澶勶紝榪欎釜鍑芥暟榪斿洖浜嗕竴涓爢鍙ユ焺錛?x002c0000銆傜敤!heap鍛戒護(hù)鏌ョ湅鍙互鐪嬪埌絎簲涓爢灝辨槸鎴戜滑鍒涘緩鐨勫爢鍙ユ焺浜嗐?/p>

姣忎釜榪涚▼閮藉瓨鍦ㄥ涓爢錛屾垜浠篃鍙互閫氳繃PEB緇撴瀯鏉ュ緱鍒拌繘紼嬩腑瀛樺湪鐨勫爢錛岀粨鏋滃拰!heap鍛戒護(hù)鏄劇ず鐨勫唴瀹規(guī)槸涓鏍風(fēng)殑銆?/p>

heap!_PEB
聽聽 +0x018 ProcessHeap聽聽聽聽聽 : 0x00300000 Void聽聽聽聽聽聽聽聽 ; 榪涚▼鐨勯粯璁ゅ爢
聽聽 +0x068 NtGlobalFlag聽聽聽聽 : 0聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ; 榪欎釜鏍囧織浣嶈褰曚簡褰撳墠鍫嗚皟璇曟ā寮?0涓烘櫘閫氳皟璇曟ā寮?br />聽聽 +0x078 HeapSegmentReserve : 0x100000聽聽聽聽聽聽聽聽聽 ; 榪涚▼鍦ㄦ柊寤哄爢鐨勬椂鍊欓粯璁ょ敵璇風(fēng)殑铏氭嫙鍐呭瓨澶у皬
聽聽 +0x07c HeapSegmentCommit : 0x2000聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ; 榪涚▼鍦ㄦ瘡嬈$敵璇鋒彁浜ょ殑铏氭嫙鍐呭瓨澶у皬錛屽湪鎻愪氦鐨勫唴瀛樼敤瀹屽悗錛岃繘紼嬩細(xì)鍙堝湪涓嬈℃彁浜eapSegmentCommit涓寚瀹氱殑鍐呭瓨澶у皬
聽聽 +0x080 HeapDeCommitTotalFreeThreshold : 0x10000聽聽聽 ; 褰撻噴鏀劇殑鍐呭瓨澶у皬澶т簬榪欎釜闃鍊鹼紝灝辮繘琛屽唴瀛樿В闄ゆ彁浜ゆ搷浣?br />聽聽 +0x084 HeapDeCommitFreeBlockThreshold : 0x1000聽聽聽聽 ;聽 褰撲竴嬈℃ч噴鏀劇殑鍧楀ぇ灝忚秴榪囪繖涓榾鍊鹼紝灝辮繘琛屽唴瀛樿В闄ゆ彁浜ゆ搷浣滐紝鍙湁褰撴弧瓚寵繖涓や釜鏉′歡鏃舵墠浼?xì)璋冪敤ZwFreeVirtualMeMory 閲婃斁鐗╃悊鍐呭瓨
聽聽 +0x088 NumberOfHeaps聽聽聽 : 5聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ; 褰撳墠榪涚▼鐨勫爢鏁扮洰,榪欎釜鏁扮洰瀵瑰簲鐫!heap鍛戒護(hù)鐨勫爢鏄劇ず涓暟
聽聽 +0x08c MaximumNumberOfHeaps : 0x10聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ; 榪涚▼鎵鑳借繍琛岀殑鏈澶у爢鏁扮洰,鑻ュ爢鏁扮洰瓚呰繃榪欎釜鍊間及璁eapCreate灝卞け璐ヤ簡鍚?br />聽聽 +0x090 ProcessHeaps聽聽聽聽 : 0x77498500聽 -> 0x00300000 Void ;瀛樺偍鍫嗗彞鏌勭殑鏁扮粍,榪欓噷鎴戜滑鍙互寰楀埌榪涚▼鐨勬墍鏈夊爢鍙ユ焺

鎴戜滑鍙互杈撳叆濡備笅鍛戒護(hù)鏉ユ煡鐪嬬幇鏈夌殑鍫嗗彞鏌?/p>

0:000> dd 0x77498500聽
77498500聽 00300000 00010000 00020000 002e0000
77498510聽 002c0000 00000000 00000000 00000000
77498520聽 00000000 00000000 00000000 00000000
77498530聽 00000000 00000000 00000000 00000000
77498540聽 00000000 77498340 7749bb08 77498220
77498550聽 00000000 00000000 00000000 00000000
77498560聽 77498220 00317bd0 00000000 00000000
77498570聽 00000000 00000000 00000000 00000000

鍙互鐪嬪緱鍒拌繖閲岄潰鐨勫唴瀹瑰拰!heap鍛戒護(hù)鐨勮緭鍑虹粨鏋滄槸涓鏍風(fēng)殑

鑰屽爢鍙ユ焺鐨勫瓨鏀捐寖鍥?浠嶮aximumNumberOfHeaps 涓婃潵鐪?灝辨槸77498500-77498540榪?x40涓瓧鑺傦紝鍥犱負(fù)姣忎釜鍫嗗彞鏌勫崰4涓瓧鑺傦紝0x10涓爢鍙ユ焺鐨勫瓨鏀劇┖闂村氨鏄?x40銆?/p>

HEAP鐨勭粍緇囩粨鏋?/h1>

鍫嗙殑綆$悊錛屾垜浠彲浠ョ悊瑙d負(fù)涓涓唴瀛樻睜錛屽畠鐢寵涓澶у潡絀洪棿錛岀劧鍚庤礋璐f帴綆″簲鐢ㄧ▼搴忕殑鐢寵閲婃斁絳夎姹傘傚彧鏈夊湪鍒涘緩鍫嗭紝閲婃斁鍫嗭紙娉ㄦ剰錛佹槸閲婃斁鍫嗭紝涓嶆槸鍫嗕腑鐨勭┖闂達(dá)紒錛夊湪榪欎箣鍓嶏紝鎴戜滑闇瑕佸鍫嗘湁鍏崇殑鏁版嵁緇撴瀯鍋氫竴浜涜В閲?/p>

鎴戣繖閲岃瀵熷埌鐨凥EAP緇撴瀯錛孒EAP_SEGMENT緇撴瀯鍜孒EAP_ENTRY緇撴瀯閮藉拰杞歡璋冭瘯閲岄潰鎻忚堪鐨勪笉涓鏍鳳紝褰撳勾濂庡摜鍐欒蔣浠惰皟璇曠殑鏃跺欎及璁¤繕娌$敤涓奧IN7鍚с傘傘傛垜鐨勬紨紺虹郴緇熸槸WIN7

HeapCreate鍑芥暟榪斿洖鐨勫爢鍙ユ焺鍏跺疄灝辨槸涓涓寚鍚戝爢綆$悊緇撴瀯鐨勬寚閽堬紝姣忎釜鍫嗛兘浼?xì)娑夊強(qiáng)鍒皹q欐牱涓変釜緇撴瀯錛欻EAP,HEAP_SEGMENT,HEAP_ENTRY

HEAP_ENTRY緇撴瀯錛?/p>

鍦ㄥ爢綆$悊涓紝姣忎竴鍧楃敵璇蜂笅鏉ョ殑鍐呭瓨閮戒細(xì)鏈変笅闈㈡墍紺虹殑鍥哄畾妯″紡錛?/p>

HEAP_ENTRY錛? bytes錛?/p>

鎴戜滑new鎴杕alloc鍒嗛厤鐨勭┖闂?/p>

鍥哄畾濉厖絀洪棿

榪欎釜緇撴瀯鐢ㄦ潵璁板綍鎵鍒嗛厤鐨勭┖闂寸殑淇℃伅錛屽寘鎷敤鎴風(fēng)敵璇風(fēng)殑絀洪棿錛屽~鍏呯殑絀洪棿錛屾墍鍦ㄧ殑孌靛彿絳夌瓑淇℃伅銆傛墍浠ユ垜浠琻ew鎴栬卪alloc鐨勫湴鍧鍑忓幓8灝辨寚鍚戣緇撴瀯銆傜涓夐儴鍒嗙殑鍥哄畾濉厖絀洪棿鏄負(fù)浜嗗唴瀛樺榻愯岀敓鎴愮殑錛屽綋鐒惰繖閮ㄥ垎絀洪棿榪樻湁涓閮ㄥ垎鏄敤鏉ラ澶栬褰曡繖鍧楀唴瀛樼殑鍏跺畠淇℃伅錛岃繖閲屽氨涓嶈緇嗗仛浠嬬粛浜嗐?/p>

HEAP_SEGMENT緇撴瀯錛?/p>

鎴戜滑鍙互榪欎箞璁や負(fù)錛屽爢鐢寵鍐呭瓨鐨勫ぇ灝忔槸浠ユ涓哄崟浣嶇殑錛屽綋鏂板緩涓涓爢鐨勬椂鍊欙紝緋葷粺浼?xì)榛樿湄?fù)榪欎釜鍫嗗垎閰嶄竴涓鍙?鍙鋒錛岄氳繃鍒氬紑濮嬬殑new鍜宮alloc鍒嗛厤鐨勭┖闂撮兘鏄湪榪欎釜孌典笂鍒嗛厤鐨勶紝褰撹繖涓鐢ㄥ畬鐨勬椂鍊欙紝濡傛灉褰撳垵鍒涘緩鍫嗙殑鏃跺欐寚鏄庝簡HEAP_GROWABLE榪欎釜鏍囧織錛岄偅涔堢郴緇熶細(xì)涓鴻繖涓爢鍦ㄥ啀鍒嗛厤涓涓錛岃繖涓椂鍊欐柊鍒嗛厤鐨勬灝辯О涓?鍙鋒浜嗭紝浠ヤ笅浠ユ綾繪帹銆傛瘡涓鐨勫紑濮嬪垵渚挎槸HEAP_SEGMENT緇撴瀯鐨勯鍦板潃錛岀敱浜庤繖涓粨鏋勪篃鏄敵璇風(fēng)殑涓鍧楀唴瀛橈紝鎵浠ュ畠鍓嶉潰涔熶細(xì)鏈変釜HEAP_ENTRY緇撴瀯錛?/p>

HEAP_ENTRY錛? bytes錛?/p>

HEAP_SEGMENT

HEAP_ENTRY錛? bytes錛?/p>

鎴戜滑new鎴杕alloc鍒嗛厤鐨勭┖闂?/p>

鍥哄畾濉厖絀洪棿

HEAP_SEGMENT緇撴瀯浼?xì)璁板綍娈电殑涓浜涘熀鏈俊鎭紝璇ユ鐢寵鐨勫ぇ灝忥紝宸茬粡鎻愪氦鍐呭瓨鐨勫ぇ灝忥紝絎竴涓狧EAP_ENTRY緇撴瀯鐨勫叆鍙g偣銆傦紙鎴戣瀵熺湅璨屼技孌電敵璇風(fēng)殑鍐呭瓨騫朵笉浼?xì)涓嬈℃у叏閮ㄦ彁浜わ紝鑰屾槸姣忔鎻愪氦涓涓〉鐨勫ぇ灝忥紝姣斿涓涓澶у皬2涓〉錛岄偅涔堝畠浼?xì)鍏堟彁浜や竴涓〉鍐呭瓨錛岃嫢鐢ㄥ畬浜嗗啀鎻愪氦涓涓〉鐨勫唴瀛橈紝鑻ュ唴瀛樿繕鐢ㄥ畬浜嗛偅灝辨柊寤轟竴涓錛岃繖涓柊寤虹殑孌典篃浼?xì)鏄厛鎻愪氦涓涓〉鍐呭瓨銆傦級浣嗘槸0鍙鋒寰堢壒鍒紝榪欎釜孌電殑璧峰鍦板潃灝辨槸鍫嗗彞鏌勬寚閽堟寚鍚戠殑鍊鹼紝涔熷氨鏄錛?/font>HeapCreate榪斿洖鐨勫爢鍙ユ焺鎬繪槸鎸囧悜0鍙鋒錛屼負(fù)浠涔堝憿錛熷洜涓篐EAP緇撴瀯鏄疕EAP_ENTRY,HEAP_SEGMENT鐨勫悎浣撳姞闀跨増~

HEAP緇撴瀯錛?/p>

HEAP緇撴瀯鍒欐槸璁板綍浜嗚繖涓爢鐨勪俊鎭紝榪欎釜緇撴瀯鍙互鎵懼埌HEAP_SEGMENT閾捐〃鍏ュ彛錛岀┖闂插唴瀛橀摼琛ㄧ殑鍏ュ彛錛屽唴瀛樺垎閰嶇矑搴︾瓑絳変俊鎭侶EAP鐨勯鍦板潃渚挎槸鍫嗗彞鏌勭殑鍊鹼紝浣嗘槸鍫嗗彞鏌勭殑鍊煎張鏄?鍙鋒鐨勯鍦板潃涔熸槸鍫嗗彞鏌勶紝浣曡В錛熷叾瀹炲緢綆鍗曪紝0鍙鋒鐨凥EAP_SEGMENT灝卞湪HEAP緇撴瀯閲岄潰錛孒EAP緇撴瀯綾誨畾涔夊榪欐牱錛?/p>

struct _HEAP

{

_HEAP_ENTRY Entry ; //HEAP_ENTRY緇撴瀯錛岀敤鏉ユ弿榪板瓨鍌℉EAP鍐呭瓨鍧楀ぇ灝忕瓑淇℃伅鐨?

_HEAP_SEGMENT Segment ;  //0鍙鋒鐨勯鍦板潃

鈥︹? //瀵逛簬璇EAP鐨勬弿榪頒俊鎭?

} ;

鍦ㄦ垜浠湅鏉ワ紝鍐呭瓨緇勭粐緇撴瀯搴旇濡備笅鎵紺猴細(xì)

HEAP_ENTRY錛? bytes錛?/p>

HEAP_SEGMENT

HEAP

鏇寸‘鍒囩殑璇達(dá)紝HEAP緇撴瀯涓湰韜氨鍖呭惈浜咹EAP_ENTRY鍜孒EAP_SEGMENT錛孒EAP_ENTRY緇撴瀯鏄疕EAP鐨勭涓涓暟鎹垚鍛橈紝HEAP_SEGMENT鏄畠絎簩涓暟鎹垚鍛樸傝屽浜嶩EAP_SEGMENT,瀹冪殑絎竴涓暟鎹垚鍛樹究鏄疕EAP_ENTRY銆傝繖閲屼負(fù)浜嗘柟渚跨悊瑙o紝鎵嶅湪鍐呭瓨緇勭粐緇撴瀯涓妸瀹冧滑鎷嗗紑灞曠ず銆傦紙娉細(xì)榪欓噷鏄痺in7鐨勬儏鍐碉紝鍜岃蔣浠惰皟璇曡繖鏈功涓墍鎻忚堪鐨勬湁涓浜涘樊寮傦紝涔熷睘姝e父鐜拌薄錛屾瘯绔熻繖閮ㄥ垎緇撴瀯寰蔣騫舵湭鍏紑錛?/p>

鐢╓INDBG瑙傚療HEAP緇撴瀯

鍦ㄤ箣鍓嶅凡緇忔紨紺轟簡濡備綍浠嶱EB緇撴瀯涓壘鍒版墍鏈夌殑鍫嗗彞鏌勶紝鍙互鐪嬪埌002c0000渚挎槸鎴戜滑鍒涘緩鐨勫彞鏌勩傜劧鍚庢垜浠墽紺轟緥紼嬪簭鐨勭7琛屼唬鐮併傛墽琛屽畬鍚庣粨鏋滃涓嬶細(xì)

0:000> p
eax=002c0000 ebx=00000000 ecx=77429897 edx=77498500 esi=00000001 edi=01033374
eip=01031026 esp=0022fe8c ebp=0022feac iopl=0聽聽聽聽聽聽聽聽 nv up ei pl nz na pe nc
cs=001b聽 ss=0023聽 ds=0023聽 es=0023聽 fs=003b聽 gs=0000聽聽聽聽聽聽聽聽聽聽聽聽 efl=00000206
heap!main+0x26:
01031026 ff1500200301聽聽聽 call聽聽聽 dword ptr [heap!_imp__HeapAlloc (01032000)] ds:0023:01032000={ntdll!RtlAllocateHeap (774120b5)}
0:000> p
eax=002c0590 ebx=00000000 ecx=774134b4 edx=002c0180 esi=00000001 edi=01033374
eip=0103102c esp=0022fe98 ebp=0022feac iopl=0聽聽聽聽聽聽聽聽 nv up ei pl zr na pe nc
cs=001b聽 ss=0023聽 ds=0023聽 es=0023聽 fs=003b聽 gs=0000聽聽聽聽聽聽聽聽聽聽聽聽 efl=00000246
heap!main+0x2c:
0103102c 8945f0聽聽聽聽聽聽聽聽聽 mov聽聽聽聽 dword ptr [ebp-10h],eax ss:0023:0022fe9c={heap!envp (0103301c)}

鍙互鐪嬪埌EAX淇濆瓨鐨勮繑鍥炲間負(fù)002c0590銆傛垜浠氳繃涓ょ閫斿緞鏉ヨ瀵熸垜浠敵璇風(fēng)殑鍐呭瓨錛岄氳繃!heap鍛戒護(hù)瑙傚療鍜岄氳繃dt鍛戒護(hù)瑙傚療

閫氳繃!heap鍛戒護(hù)瑙傚療

杈撳叆鍛戒護(hù)!heap 鈥揳 2c0590寰楀埌鐨勭粨鏋滃涓嬶細(xì)

0:000> !heap -a 2c0000
Index聽聽 Address聽 Name聽聽聽聽聽 Debugging options enabled
聽 5:聽聽 002c0000
聽聽聽 Segment at 002c0000 to 002c2000 (00001000 bytes committed)
聽聽聽 Flags:聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 00001000
聽聽聽 ForceFlags:聽聽聽聽聽聽聽聽聽聽 00000000
聽聽聽 Granularity:聽聽聽聽聽聽聽聽聽 8 bytes
聽聽聽 Segment Reserve:聽聽聽聽聽 00100000
聽聽聽 Segment Commit:聽聽聽聽聽聽 00002000
聽聽聽 DeCommit Block Thres: 00000200
聽聽聽 DeCommit Total Thres: 00002000
聽聽聽 Total Free Size:聽聽聽聽聽 0000013a
聽聽聽 Max. Allocation Size: 7ffdefff
聽聽聽 Lock Variable at:聽聽聽聽 002c0138
聽聽聽 Next TagIndex:聽聽聽聽聽聽聽 0000
聽聽聽 Maximum TagIndex:聽聽聽聽 0000
聽聽聽 Tag Entries:聽聽聽聽聽聽聽聽聽 00000000
聽聽聽 PsuedoTag Entries:聽聽聽 00000000
聽聽聽 Virtual Alloc List:聽聽 002c00a0
聽聽聽 Uncommitted ranges:聽聽 002c0090
聽聽聽聽聽聽聽聽聽聽聽 002c1000: 00001000聽 (4096 bytes)
聽聽聽 FreeList[ 00 ] at 002c00c4: 002c0618 . 002c0618聽
聽聽聽聽聽聽聽 002c0610: 00088 . 009d0 [100] - free

聽聽聽 Segment00 at 002c0000:
聽聽聽聽聽聽聽 Flags:聽聽聽聽聽聽聽聽聽聽 00000000
聽聽聽聽聽聽聽 Base:聽聽聽聽聽聽聽聽聽聽聽 002c0000
聽聽聽聽聽聽聽 First Entry:聽聽聽聽 002c0588
聽聽聽聽聽聽聽 Last Entry:聽聽聽聽聽 002c2000
聽聽聽聽聽聽聽 Total Pages:聽聽聽聽 00000002
聽聽聽聽聽聽聽 Total UnCommit:聽 00000001
聽聽聽聽聽聽聽 Largest UnCommit:00000000
聽聽聽聽聽聽聽 UnCommitted Ranges: (1)

聽聽聽 Heap entries for Segment00 in Heap 002c0000
聽聽聽聽聽聽聽 002c0000: 00000 . 00588 [101] - busy (587)
聽聽聽聽聽聽聽 002c0588: 00588 . 00088 [101] - busy (80)
聽聽聽聽聽聽聽 002c0610: 00088 . 009d0 [100]
聽聽聽聽聽聽聽 002c0fe0: 009d0 . 00020 [111] - busy (1d)
聽聽聽聽聽聽聽 002c1000:聽聽聽聽聽 00001000聽聽聽聽聽 - uncommitted bytes.

榪欎釜鍛戒護(hù)鍒嗗埆鎻愮偧鍑轟簡HEAP錛堢豢鑹插尯鍩燂級,HEAP_SEGMENT錛堢孩鑹插尯鍩燂級鍜孒EAP_ENTRY錛堢伆鑹插尯鍩燂級緇撴瀯涓殑淇℃伅銆傝櫧鐒跺湪鐏拌壊鍖哄煙涓紝鎴戜滑鎵句笉鍒?c0590錛屼絾鏄壘鍒頒簡涓涓?c0588錛岃繖涓鏄?c0590-8鐨勭粨鏋滐紝涔熷氨鏄鏈鍙寵竟鐨勫湴鍧鏄瘡涓狧EAP_ENTRY鐨勯鍦板潃錛屾帴鐫00588榪欎釜瀛楁琛ㄧず浜嗗墠闈竴涓狧EAP_ENTRY鎵鍗犵敤鐨勫ぇ灝忥紝鍚庨潰鐨?088琛ㄧず榪欎釜鍐呭瓨鍧楃殑鎬誨ぇ灝忥紝鍗蟲垜浠敵璇風(fēng)殑鍐呭瓨+HEAP_ENTRY錛?28+8=0x80+0x8=0x88錛夛紝[101]鏄繖鍧楀唴瀛樼殑鏍囧織浣嶏紝鏈鍙寵竟涓浣嶄負(fù)1琛ㄧず璇ュ唴瀛樺潡琚崰鐢ㄣ傜劧鍚巄usy錛?0錛夊氨鏄В閲婅榪欏潡鍐呭瓨鏄鍗犵敤鐨勶紙闈炵┖闂茬殑錛夛紝瀹冪敵璇風(fēng)殑鍐呭瓨涓?x80錛岃漿鍖栨垚鍗佽繘鍒舵濂藉氨鏄垜浠敵璇風(fēng)殑128瀛楄妭澶у皬銆?/p>

浣嗘槸榪欓噷鐢╠t _HEAP_ENTRY 2c0588鍛戒護(hù)鍗存病鍔炴硶鏌ョ湅瀵瑰簲鐨勭粨鏋勪俊鎭紝鐪熸槸鎬搲錛屾湁綃囧崥鏂囦篃鎻愬埌win2008涓璈EAP鐩稿叧緇撴瀯涔熸湁鍙橈紝鐪嬫潵鍒癗T6鍚庯紝HEAP緇撴瀯鍙樺緱涓嶅皬錛岃搗鐮亀indbg涓洿鎺t HEAP_ENTRY鏄棤娉曞師濮嬫暟鎹殑浜嗭紝璨屼技瀵笻EAP_ENTRY鍋氫簡緙栫爜銆?/font>

閫氳繃dt鍛戒護(hù)瑙傚療

鍚屾牱鐨勶紝宸茬煡HEAP鐨勯鍦板潃錛岄偅涔堝厛浠嶩EAP涓嬫墜濂戒簡錛宒t _HEAP 002c0000鍙互鏄劇ずHEAP鐨勬暟鎹粨鏋?/p>

ntdll!_HEAP
聽聽 +0x000 Entry聽聽聽聽聽聽聽聽聽聽聽 : _HEAP_ENTRY
聽聽 +0x008 SegmentSignature : 0xffeeffee聽聽
聽聽 +0x00c SegmentFlags聽聽聽聽 : 0
聽聽 +0x010 SegmentListEntry : _LIST_ENTRY [ 0x2c00a8 - 0x2c00a8 ]
聽聽 +0x018 Heap聽聽聽聽聽聽聽聽聽聽聽聽 : 0x002c0000 _HEAP
聽聽 +0x01c BaseAddress聽聽聽聽聽 : 0x002c0000 Void
聽聽 +0x020 NumberOfPages聽聽聽 : 2
聽聽 +0x024 FirstEntry聽聽聽聽聽聽 : 0x002c0588 _HEAP_ENTRY
聽聽 +0x028 LastValidEntry聽聽 : 0x002c2000 _HEAP_ENTRY
聽聽 +0x02c NumberOfUnCommittedPages : 1
聽聽 +0x030 NumberOfUnCommittedRanges : 1
聽聽 +0x034 SegmentAllocatorBackTraceIndex : 0
聽聽 +0x036 Reserved聽聽聽聽聽聽聽聽 : 0
聽聽 +0x038 UCRSegmentList聽聽 : _LIST_ENTRY [ 0x2c0ff0 - 0x2c0ff0 ]

聽聽 +0x040 Flags聽聽聽聽聽聽聽聽聽聽聽 : 0x1000
聽聽 +0x044 ForceFlags聽聽聽聽聽聽 : 0
聽聽 +0x048 CompatibilityFlags : 0
聽聽 +0x04c EncodeFlagMask聽聽 : 0x100000
聽聽 +0x050 Encoding聽聽聽聽聽聽聽聽 : _HEAP_ENTRY
聽聽 +0x058 PointerKey聽聽聽聽聽聽 : 0x17c06e63
聽聽 +0x05c Interceptor聽聽聽聽聽 : 0
聽聽 +0x060 VirtualMemoryThreshold : 0xfe00
聽聽 +0x064 Signature聽聽聽聽聽聽聽 : 0xeeffeeff
聽聽 +0x068 SegmentReserve聽聽 : 0x100000
聽聽 +0x06c SegmentCommit聽聽聽 : 0x2000
聽聽 +0x070 DeCommitFreeBlockThreshold : 0x200
聽聽 +0x074 DeCommitTotalFreeThreshold : 0x2000
聽聽 +0x078 TotalFreeSize聽聽聽 : 0x13a
聽聽 +0x07c MaximumAllocationSize : 0x7ffdefff
聽聽 +0x080 ProcessHeapsListIndex : 5
聽聽 +0x082 HeaderValidateLength : 0x138
聽聽 +0x084 HeaderValidateCopy : (null)
聽聽 +0x088 NextAvailableTagIndex : 0
聽聽 +0x08a MaximumTagIndex聽 : 0
聽聽 +0x08c TagEntries聽聽聽聽聽聽 : (null)
聽聽 +0x090 UCRList聽聽聽聽聽聽聽聽聽 : _LIST_ENTRY [ 0x2c0fe8 - 0x2c0fe8 ]
聽聽 +0x098 AlignRound聽聽聽聽聽聽 : 0xf
聽聽 +0x09c AlignMask聽聽聽聽聽聽聽 : 0xfffffff8
聽聽 +0x0a0 VirtualAllocdBlocks : _LIST_ENTRY [ 0x2c00a0 - 0x2c00a0 ]
聽聽 +0x0a8 SegmentList聽聽聽聽聽 : _LIST_ENTRY [ 0x2c0010 - 0x2c0010 ]
聽聽 +0x0b0 AllocatorBackTraceIndex : 0
聽聽 +0x0b4 NonDedicatedListLength : 0
聽聽 +0x0b8 BlocksIndex聽聽聽聽聽 : 0x002c0150 Void
聽聽 +0x0bc UCRIndex聽聽聽聽聽聽聽聽 : (null)
聽聽 +0x0c0 PseudoTagEntries : (null)
聽聽 +0x0c4 FreeLists聽聽聽聽聽聽聽 : _LIST_ENTRY [ 0x2c0618 - 0x2c0618 ]
聽聽 +0x0cc LockVariable聽聽聽聽 : 0x002c0138 _HEAP_LOCK
聽聽 +0x0d0 CommitRoutine聽聽聽 : 0x17c06e63聽聽聽聽 long聽 +17c06e63
聽聽 +0x0d4 FrontEndHeap聽聽聽聽 : (null)
聽聽 +0x0d8 FrontHeapLockCount : 0
聽聽 +0x0da FrontEndHeapType : 0 ''
聽聽 +0x0dc Counters聽聽聽聽聽聽聽聽 : _HEAP_COUNTERS
聽聽 +0x130 TuningParameters : _HEAP_TUNING_PARAMETERS
灝卞鏈枃鍓嶉潰鎵榪扮殑錛岀涓涓瓧孌墊槸HEAP_ENTRY緇撴瀯錛屾帴鐫搴旇鏄疕EAP_SEGMENT錛岃繖閲屽彧涓嶈繃鎶奌EAP_SEGMENT緇撴瀯鐨勫瓧孌靛睍寮浜嗭紝鍙互dt _HEAP_SEGMENT鏉ヨ瀵熶笅榪欎釜緇撴瀯鐨勫瓧孌?/p>

0:000> dt _heap_segment
ntdll!_HEAP_SEGMENT
聽聽 +0x000 Entry聽聽聽聽聽聽聽聽聽聽聽 : _HEAP_ENTRY
聽聽 +0x008 SegmentSignature : Uint4B
聽聽 +0x00c SegmentFlags聽聽聽聽 : Uint4B
聽聽 +0x010 SegmentListEntry : _LIST_ENTRY
聽聽 +0x018 Heap聽聽聽聽聽聽聽聽聽聽聽聽 : Ptr32 _HEAP
聽聽 +0x01c BaseAddress聽聽聽聽聽 : Ptr32 Void
聽聽 +0x020 NumberOfPages聽聽聽 : Uint4B
聽聽 +0x024 FirstEntry聽聽聽聽聽聽 : Ptr32 _HEAP_ENTRY
聽聽 +0x028 LastValidEntry聽聽 : Ptr32 _HEAP_ENTRY
聽聽 +0x02c NumberOfUnCommittedPages : Uint4B
聽聽 +0x030 NumberOfUnCommittedRanges : Uint4B
聽聽 +0x034 SegmentAllocatorBackTraceIndex : Uint2B
聽聽 +0x036 Reserved聽聽聽聽聽聽聽聽 : Uint2B
聽聽 +0x038 UCRSegmentList聽聽 : _LIST_ENTRY

鍙互鐪嬪埌HEAP緇撴瀯涓伆鑹查儴鍒嗘槸鍜孒EAP_SEGMENT緇撴瀯涓殑瀛楁鏄噸澶嶇殑錛屼篃灝辨槸璇寸伆鑹查儴鍒嗗瓧孌典究鏄疕EAP_SEGMENT緇撴瀯銆傚湪HEAP_SEGMENT緇撴瀯涓紝鎴戜滑鍙互鎵懼埌FirstEntry瀛楁錛岃繖閲屾寚鐨勪究鏄垜浠殑鍒嗛厤鐨勫唴瀛橈紝涓嶈繃HEAP_ENTRY緇撴瀯鏃犳硶瑙傚療錛岃繖閲屼究娌″姙娉曟灇涓懼嚭鎵鏈夌殑HEAP_ENTRY緇撴瀯浜嗭紝浣嗘槸璇翠竴涓嬫濊礬錛?/p>

姣忎釜HEAP_ENTRY鍜屽畠瀵瑰簲鐨勫唴瀛樻垜浠彲浠ョО涓轟竴涓唴瀛樺潡錛岃綆椾笅涓涓唴瀛樺潡闇瑕佺敤鍒扮幇鏈夊唴瀛樺潡涓殑2涓瓧孌碉紝Size鍜孶nsedBytes錛孲ize鐨勫間箻涓婄矑搴︼紙灝辨槸0:000> !heap -a 2c0000鍛戒護(hù)鏄劇ず鐨勪俊鎭腑鐨凣ranularity: 8 bytes瀛楁錛岃繖閲屾槸8瀛楄妭錛夛紝涓嬩竴涓唴瀛樺潡鍦板潃灝辨槸 鏈唴瀛樺潡鍦板潃+Size*8+UnsedBytes銆傚綋鐒惰繖閲岀殑綺掑害鍙互閫氳繃HEAP瀛楁涓殑AlignMask 瀛楁綆楀嚭鏉ャ?/p>

HEAP鐨勫垎閰嶇矑搴?/h1>

鍦℉EAP緇撴瀯涓寚鏄庝簡鍒嗛厤綺掑害錛岃繖涓垎閰嶇矑搴︽槸璇存瘡嬈″爢鍒嗛厤鐨勬椂鍊欙紝閮戒互榪欎釜綺掑害涓烘渶灝忓崟浣嶏紝榪欓噷鐪嬪埌綺掑害涓?瀛楄妭銆傛墍浠ヨ繖閲屽氨鏈変簡絎簩嬈″垎閰嶅唴瀛樼殑瀹為獙錛屾垜浠紼嬪簭鎵ц絎?琛岋紝鐒跺悗鐢?heap -a 002c0000瑙傚療鍒嗛厤鎯呭喌

Heap entries for Segment00 in Heap 002c0000
聽聽聽 002c0000: 00000 . 00588 [101] - busy (587)
聽聽聽 002c0588: 00588 . 00088 [101] - busy (80)
聽聽聽 002c0610: 00088 . 00088 [101] - busy (79)
聽聽聽 002c0698: 00088 . 00948 [100]
聽聽聽 002c0fe0: 00948 . 00020 [111] - busy (1d)
聽聽聽 002c1000:聽聽聽聽聽 00001000聽聽聽聽聽 - uncommitted bytes.

榪欓噷鍙互鐪嬪嚭澶氬嚭浜嗕竴涓崰鐢ㄥ潡錛屽ぇ灝忔槸0x79錛?21錛?bytes錛屼絾鏄疄闄呭垎閰嶇殑澶у皬榪樻槸0x 88 錛?28錛塨ytes錛岃繖鏄洜涓虹郴緇熸槸浠? bytes涓虹矑搴﹀垎閰嶇殑錛屾墍浠ヤ負(fù)榪欏潡121 bytes鐨勫唴瀛樿嚜鍔ㄥ~鍏呬簡7涓瓧鑺傦紝鍙鐢寵121 bytes鍜岀敵璇?28 bytes鎵浣跨敤鐨勭┖闂存槸涓鏍風(fēng)殑銆?/font>

HEAP鐨勯噴鏀懼拰閿姣?/h1>

鎵ц浜?1琛屽拰12琛岀殑浠g爜鍚庯紝鍫嗕腑鐨勫唴瀹瑰垎鍒涓嬶細(xì)

鎵ц11琛屼唬鐮佺殑鍫嗘儏鍐?/strong>

FreeList[ 00 ] at 002c00c4: 002c06a0 . 002c0590聽
聽聽聽 002c0588: 00588 . 00088 [100] 鈥?free聽聽 錛涚┖闂插垪琛ㄤ腑澶氬嚭浜嗕竴鍧楀唴瀛?/font>
聽聽聽 002c0698: 00088 . 00948 [100] 鈥?free聽聽 錛涚┖闂插唴瀛橈紝絀洪棽絀洪棿涓?48

Heap entries for Segment00 in Heap 002c0000
002c0000: 00000 . 00588 [101] - busy (587)
002c0588: 00588 . 00088 [100]聽聽 錛涘師鍏堢殑榪欏潡鍐呭瓨閲婃斁鎺変簡
002c0610: 00088 . 00088 [101] - busy (79)
002c0698: 00088 . 00948 [100]聽聽聽 ; 絀洪棽鍐呭瓨
002c0fe0: 00948 . 00020 [111] - busy (1d)
002c1000: 00001000 - uncommitted bytes.

鎵ц12琛屼唬鐮佺殑鍫嗘儏鍐?/strong>

FreeList[ 00 ] at 005c00c4: 005c0590 . 005c0590聽
聽聽聽 005c0588: 00588 . 00a58 [100] 鈥?free 錛涘洖鏀朵簡buffer1鐨勫唴瀛樺悗錛岀敱浜庣敱浜庣┖闂插唴瀛樻槸榪炵畫鐨勶紝鎵浠ョ洿鎺ュ悎騫舵垚涓鍧楀唴瀛樸傚彲浠ョ湅鍒頒箣鍓嶅唴瀛榝ree絀洪棿鏄?48錛岀幇鍦ㄥ悎騫朵簡浠ュ悗渚挎槸948+88+88=a58,涔熷氨鏄綋鍓嶅唴瀛樺ぇ灝?/font>

Heap entries for Segment00 in Heap 005c0000
聽聽聽 005c0000: 00000 . 00588 [101] - busy (587)
聽聽聽 005c0588: 00588 . 00a58 [100]
聽聽聽 005c0fe0: 00a58 . 00020 [111] - busy (1d)
聽聽聽 005c1000:聽聽聽聽聽 00001000聽聽聽聽聽 - uncommitted bytes.

鏈鍚庢墽琛?4琛屼唬鐮?瀵瑰爢榪涜閲婃斁,閲婃斁鍚庢垜浠氳繃!heap涔熷彲浠ョ湅鍒板彧鏈?涓爢浜?鎴戜滑鐢寵鐨勫爢琚噴鏀句簡.

0:000> !heap
Index Address Name Debugging options enabled
1: 00300000
2: 00010000
3: 00020000
4: 002e0000

鑷充簬HEAP_ENTRY緇撴瀯鐨勯棶棰?鏈夋椂闂村湪璋冭瘯鐪嬬湅鏄庝箞鍥炰簨鍚鍙﹀錛岃繖閲岃鏄庝笅錛宯ew鍜宮alloc鍐呴儴閮戒細(xì)璋冪敤HeapAlloc鏉ョ敵璇峰唴瀛橈紝浣嗘槸鍫嗗彞鏌勪粠鍝潵鍛紵瀹冧細(xì)媯嫻媉crtheap鍙橀噺鏄惁涓虹┖錛岃嫢涓嶄負(fù)絀哄垯鎷縚crtheap鍙橀噺鏉ヤ綔涓鴻嚜宸辯殑鍫嗗彞鏌勫幓璋冪敤HeapAlloc

鍙傝冿細(xì)

杞歡璋冭瘯聽聽聽 寮犲閾?/p>

MSDN聽聽聽

React OS



__ay 2011-10-30 19:05 鍙戣〃璇勮
]]> 青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              亚洲精品综合精品自拍| 亚洲激情电影在线| 欧美日韩国产91| 久久综合伊人77777尤物| 久久久精品2019中文字幕神马| 亚洲一区二区三区在线观看视频 | 久久久久久网站| 葵司免费一区二区三区四区五区| 免费观看成人网| 亚洲国产一成人久久精品| 欧美国产欧美亚洲国产日韩mv天天看完整| 欧美激情一二区| 夜夜嗨一区二区| 久久精品久久99精品久久| 久久福利影视| 免费亚洲电影在线观看| 一本久久a久久精品亚洲| 欧美亚洲在线视频| 欧美国产日韩精品免费观看| 国产精品你懂的| 亚洲国产精品成人精品| 亚洲欧美一区二区三区极速播放| 久久综合中文字幕| 一本色道久久加勒比精品| 久久久综合网站| 国产精品人人做人人爽| 亚洲国产日韩欧美综合久久| 亚洲欧美文学| 亚洲精品国产欧美| 久久精品成人| 欧美日韩在线一区| 亚洲国产va精品久久久不卡综合| 亚洲调教视频在线观看| 欧美激情a∨在线视频播放| 亚洲综合精品一区二区| 欧美日韩视频免费播放| 最近中文字幕日韩精品| 久久综合久色欧美综合狠狠| 亚洲一区欧美二区| 欧美视频你懂的| 日韩午夜激情av| 美女91精品| 欧美专区在线播放| 国产日韩精品一区二区三区| 亚洲视频免费观看| 亚洲精品在线视频| 欧美国产激情二区三区| 1204国产成人精品视频| 久久综合婷婷| 久久免费视频观看| 国内视频一区| 久久在线免费| 久久久精品2019中文字幕神马| 国产免费观看久久| 亚洲欧美视频在线观看| 亚洲手机成人高清视频| 欧美日韩视频第一区| 99亚洲视频| 亚洲一区二区久久| 午夜精品久久久久久久99樱桃| 亚洲国产黄色片| 鲁大师影院一区二区三区| 在线观看亚洲精品| 欧美大片在线观看一区二区| 美女视频黄a大片欧美| 亚洲片在线资源| 亚洲精品女人| 久热国产精品| 亚洲毛片在线看| 日韩视频在线一区二区三区| 国产精品超碰97尤物18| 欧美一区视频在线| 久久久久久久波多野高潮日日 | 99国产精品| 国产精品久久久久久久久婷婷 | 久久久久久一区二区| 久久久久免费观看| 亚洲精品一区二区三区蜜桃久| 亚洲电影av在线| 欧美视频三区在线播放| 久久精品国产96久久久香蕉| 久久久国际精品| 一区二区三区精密机械公司| 一区二区三区四区在线| 国产视频一区二区三区在线观看| 免费国产自线拍一欧美视频| 欧美精品国产一区二区| 欧美一区亚洲| 欧美福利在线观看| 久久国产66| 欧美精品一二三| 久久精品一区二区三区四区| 欧美成年人视频网站欧美| 欧美一级免费视频| 欧美成人精品一区二区三区| 欧美一区二区三区免费看| 免费欧美电影| 小处雏高清一区二区三区| 老司机免费视频一区二区三区| 亚洲午夜久久久| 老色批av在线精品| 久久国产视频网| 欧美日韩免费| 欧美成人在线影院| 国产亚洲精品一区二555| 亚洲精品日韩在线| 亚洲福利视频三区| 国产精品99久久久久久久女警 | 在线高清一区| 亚洲一区二区三区在线播放| 亚洲美女电影在线| 久久免费黄色| 久久成人免费视频| 欧美国产综合| 欧美高清日韩| 亚洲欧美综合v| 欧美日韩视频一区二区| 亚洲人成绝费网站色www| 在线不卡亚洲| 欧美日韩裸体免费视频| 午夜在线观看欧美| 欧美激情一区二区三区高清视频| 亚洲国产一区二区在线| 国产精品久久久久77777| 久久久国产精品一区| 亚洲视频www| 久久精彩视频| 99精品99| 亚洲精品影视在线观看| 欧美精品一区在线| 亚洲天堂久久| 一本久久知道综合久久| 欧美午夜不卡视频| 欧美1区免费| 噜噜爱69成人精品| 久久久国产精品一区| 欧美一区二区在线看| 美女黄网久久| 亚洲欧美精品伊人久久| 久久国产主播| 欧美激情无毛| 亚洲国产cao| 亚洲久久视频| 亚洲伦理网站| 欧美精品在线免费| 亚洲精品乱码久久久久久| 亚洲精品小视频在线观看| 欧美11—12娇小xxxx| 亚洲黄色影院| 亚洲天天影视| 国产日韩在线亚洲字幕中文| 欧美中文字幕不卡| 久热精品视频在线观看| 亚洲国产欧美另类丝袜| 欧美日韩国产首页| 亚洲专区在线| 欧美va日韩va| 亚洲性xxxx| 黄色一区二区在线观看| 欧美1区2区3区| 国产欧美一区二区三区国产幕精品| 欧美二区在线观看| 艳妇臀荡乳欲伦亚洲一区| 欧美日韩精品| 亚洲欧美日本国产专区一区| 久久精品一区二区国产| 亚洲国产日韩一级| 欧美三级乱码| 久久久久se| 日韩亚洲欧美一区| 久久人人看视频| 中文一区在线| 在线播放豆国产99亚洲| 欧美视频成人| 久久一综合视频| 中国av一区| 欧美黄色免费网站| 久久精品国产亚洲aⅴ| 99精品视频网| 精品动漫3d一区二区三区免费| 欧美精品一区在线播放| 久久精品国产96久久久香蕉| 日韩亚洲视频在线| 欧美国产精品专区| 久久精品二区三区| 亚洲一区二区三区免费观看| 在线精品视频一区二区| 国产乱码精品一区二区三区不卡| 欧美大色视频| 久久久蜜桃一区二区人| 亚洲影视在线播放| 亚洲美女毛片| 91久久久在线| 欧美成年人网站| 久久免费精品视频| 午夜久久美女| 欧美激情一区二区三区蜜桃视频 | 亚洲高清在线观看一区| 久久久久久久一区二区| 亚洲在线成人精品|