锘??xml version="1.0" encoding="utf-8" standalone="yes"?>国产欧美精品在线,国产亚洲精品久久久久动,国产农村妇女精品一区二区http://m.shnenglu.com/ay19880703/zh-cnSun, 26 Oct 2025 21:16:23 GMTSun, 26 Oct 2025 21:16:23 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

蹇樹簡鎿嶄綔緋葷粺浼氭牴鎹鐞嗗櫒鍨嬪彿鍔犺澆涓嶅悓鐗堟湰鍐呮牳浜?...
姝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箞緋葷粺浼氬姞杞絥toskrnla  鎵浠ヨ繕寰楃鐢≒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

瀹屼簡鍚庡氨浼氬姞杞絥toskrnl浜?鏁堟灉鍥?

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





__ay 2013-04-06 13:16 鍙戣〃璇勮
]]>
ATL鐨刼ffsetofclass涓?涓哄暐_ATL_PACKING鏄?鐨勮В閲?/title><link>http://m.shnenglu.com/ay19880703/archive/2012/01/12/164053.html</link><dc:creator>__ay</dc:creator><author>__ay</author><pubDate>Thu, 12 Jan 2012 05:52:00 GMT</pubDate><guid>http://m.shnenglu.com/ay19880703/archive/2012/01/12/164053.html</guid><wfw:comment>http://m.shnenglu.com/ay19880703/comments/164053.html</wfw:comment><comments>http://m.shnenglu.com/ay19880703/archive/2012/01/12/164053.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.shnenglu.com/ay19880703/comments/commentRss/164053.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/ay19880703/services/trackbacks/164053.html</trackback:ping><description><![CDATA[ <p>瑙g瓟鍑哄</p> <p> <a >http://stackoverflow.com/questions/5014061/whats-the-use-of-atl-packing-constant-when-computing-distance-from-the-start-o</a> </p> <p>聽</p> <p>C++鏍囧噯瑙勫畾:</p> <p>緙栬瘧鍣ㄧ殑綾葷殑綾誨瀷杞崲瀵圭┖鎸囬拡(NULL)鐗規畩澶勭悊,鍗充綘NULL榪涜寮哄埗綾誨瀷杞寲鐨勭粨鏋滆繕鏄疦ULL,鎵浠モ?</p> <pre> <code>static_cast綾誨瀷杞寲鐨勬椂鍊?_ATL_PACKING鐨勫煎緱鏄潪闆跺氨濂?/code> </pre> <pre> <code> </code>聽</pre> <p> <strong>C++ Standard 4.10/3 Pointer conversions [conv.ptr]:</strong> </p> <p>An rvalue of type 鈥減ointer to cv D,鈥?where D is a class type, can be converted to an rvalue of type 鈥減ointer to cv B,鈥?where B is a base class (clause 10) of D. If B is an inaccessible (clause 11) or ambiguous (10.2) base class of D, a program that necessitates this conversion is ill-formed. The result of the conversion is a pointer to the base class sub-object of the derived class object. <strong><font color="#ff0000">The null pointer value is converted to the null pointer value of the destination type.</font></strong></p> <img src ="http://m.shnenglu.com/ay19880703/aggbug/164053.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-12 13:52 <a href="http://m.shnenglu.com/ay19880703/archive/2012/01/12/164053.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>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">姝ゆ枃浼氭秹鍙婂埌涓浜涙櫘閫氬爢鐨勭煡璇嗭紝榪欎簺鍐呭鍙互鍙傝鎴戜箣鍓嶇殑鏂囩珷 </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潡鍐呭瓨緇欏啓瑕嗙洊浜嗐傝繖鍧楀唴瀛樺彲鑳芥槸浣犵▼搴忕殑鏁版嵁錛屼篃鍙兘鏄爢鐨勭鐞嗙粨鏋勩傞偅涔堣繖涓細瀵艱嚧鎬庢牱鐨勫悗鏋滃憿錛熷彲鑳界殑鎯呭喌鎴戜滑鏉y涓?/font></p> <ol> <li><font size="2">鎶婄▼搴忛噷鐨勮綆楃粨鏋滆鐩栦簡錛岃繖涔熻浼氳浣犻噸澶嶇湅浜哊嬈′唬鐮侊紝鏍¢獙浜哊嬈¤綆楅昏緫涔熸悶涓嶆槑鐧戒負浣曡綆楃粨鏋滆繕鏄湁闂 </font> <li><font size="2">鍫嗙鐞嗙粨鏋勮鐮村潖浜嗭紝new/delete錛屾垨鑰卪alloc/free鎿嶄綔澶辮觸 </font> <li><font size="2">絳夌瓑絳夌瓑~</font></li></ol> <p><font size="2">鍫嗙牬鍧忚緝涓虹悊鎯崇殑鎯呭喌鏄淇敼鐨勬暟鎹細椹笂瀵艱嚧紼嬪簭crash錛屾渶宸殑鎯呭喌鏄綘鐨勫爢鏁版嵁鑾悕鍏跺鍦ㄤ粖澶╄鏀逛簡錛屼絾鏄庡ぉ鎵峜rash銆傝繖涓椂鍊欏湪鍘誨垎鏋恈rash錛屽氨濡傛垜浠殑璀﹀療鍙斿彅鐜板湪鎺ユ墜涓妗?0騫村墠鐨勬瀛愪竴鑸?---鏃犱粠涓嬫墜銆傝佸縐頒箣涓篽eap corruption鏄緢璐村垏鐨勶紝鏈夋椂鍊欏挶鍫嗘暟鎹鎰忓綃℃敼鏄棤澹版棤鎭殑錛屼綘涔熻娌℃硶浠庣晫闈㈢敋鑷蟲棩蹇楁枃浠朵腑鐪嬪埌瀹冭綃℃敼鐨勪竴鐐硅抗璞★紝褰撳埌鏌愪竴涓椂鍒伙紝榪欑閿欒浼氭毚闇插嚭鏉ワ紝鐒惰岃繖涓椂鍊欐煡鐪嬪爢淇℃伅涔熻浼氭槸姣棤澶寸華銆傛墍浠ュ浜庡爢鐮村潖錛屽挶鐨勭瓥鐣ユ槸灝芥棭鍙戠幇鎴戜滑鐨勫爢琚鏀逛簡錛屾渶濂借兘澶熷湪鍫嗘暟鎹鎰忓綃℃敼鐨勯偅涓鏃跺埢璇卞彂涓涓紓甯告潵鎻愰啋鎴戜滑----鍏勫紵錛屼綘鐨勫爢琚厫铓浜嗐?/font></p> <p><font size="2">寰蔣鎻愪緵浜嗕竴浜涙柟妗堬紝鏉ュ府鍔╂垜浠瘖鏂爢鐮村潖銆備竴鑸潵璇達紝鍫嗙牬鍧忓線寰閮芥槸鍐欐暟鎹秺鐣岄犳垚鐨勶紙yy鐨勭浜岀鎯呭喌錛屽鏋滄槸絎竴縐嶆儏鍐靛叾瀹炶繕綆鍗曪紝涓嬩釜鍐呭瓨鏂偣灝卞ソ錛夛紝鎵浠ュ井杞湪鍫嗗垎閰嶄笂錛岀粰紼嬪簭鍛橀棬棰濆鎻愪緵浜?縐嶅爢鍒嗛厤妯″紡--瀹屽叏欏靛爢錛坒ull page heap錛夛紝鍑嗛〉鍫?normal page heap)錛岀敤鏉ユ嫻嬪爢琚啓瓚婄晫鐨勬儏鍐點?/font></p> <h1></h1> <h1>瀹屽叏欏靛爢錛坒ull page heap錛?/h1> <h2>媯嫻嬪師鐞?/h2> <p><font size="2">瀹屽叏欏靛爢鐨勬嫻嬪熀鏈濊礬鏄氳繃鍒嗛厤鐩擱偦鐨勪竴涓〉錛屽茍灝嗗叾璁句負涓嶅彲璁塊棶灞炴э紝鐒跺悗鐢ㄦ埛鏁版嵁鍧椾細琚垎閰嶅埌鍐呭瓨欏電殑鏈鏈錛屼粠鑰屽疄鐜拌秺鐣岃闂殑媯嫻嬨傚綋鎴戜滑瀵瑰爢涓垎閰嶇殑鍐呭瓨璇誨啓瓚婄晫鍚庝究浼氳闂埌閭d釜涓嶅彲璇葷殑欏碉紝緋葷粺鎹曡幏鍒版敼嬈″紓甯稿悗浼氳瘯鍥句腑鏂墽琛屽茍灝嗚寮傚父涓婃姤緇檇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緇撴瀯琚牬鍧忎簡錛岄偅涔堝湪閲婃斁鍐呭瓨鍧楃殑鏃跺欑郴緇熶細鎶ラ敊錛屽鏋滅紪紼嬭呭榪欏潡鍐呭瓨鍧楄鍐欒秺鐣屼簡錛屽綋鐒訛紝榪欓噷瓚婄晫鏈夊嚑縐嶆儏鍐碉細</font></p> <ol> <li><font size="2">璇昏秺鐣岋紝浣嗗彧鏄闂簡鍧楀熬濉厖閮ㄥ垎鏁版嵁錛岄偅涔堢郴緇熶笉浼氭姤閿?</font> <li><font size="2">鍐欒秺鐣岋紝浣嗗彧綃℃敼浜嗗浘涓潡灝懼~鍏呯殑閮ㄥ垎錛岄偅涔堝湪鍫嗗潡閲婃斁鐨勬椂鍊欎細鎶ラ敊 </font> <li><font size="2">璇昏秺鐣岋紝涓旇秴榪囦簡鍧楀熬濉厖鐨勯儴鍒嗭紝璁塊棶鍒頒簡鏍呮爮欏碉紝閭d箞緋葷粺浼氱珛鍗蟲姏鍑轟竴涓紓甯稿茍涓柇鎵ц </font> <li><font size="2">鍐欒秺鐣岋紝涓旇秴榪囦簡鍧楀熬濉厖閮ㄥ垎錛屽啓鍒頒簡鏍呮爮欏碉紝閭d箞緋葷粺浼氱珛鍗蟲姏鍑轟竴涓紓甯稿茍涓柇鎵ц</font></li></ol> <p><font size="3"><font size="2">榪欓噷闇瑕佹敞鎰忕殑榪樻槸<font color="#ff0000">鍧楀熬濉厖涓嶄竴瀹氬瓨鍦?/font>錛屽潡灝懼~鍏呮槸鍥犱負瑕佹弧瓚沖爢鍐呭瓨鐨勬渶灝忓垎閰嶇矑搴︼紝濡傛灉鏈韓鍐呭瓨鍧楃殑鍒嗛厤綺掑害灝卞凡緇忔槸鏈灝忓垎閰嶇矑搴︾殑鍊嶆暟浜嗭紝閭d箞鍧楀熬濉厖灝變笉瀛樺湪浜嗭紝姣斿鍫嗗唴瀛樺垎閰嶇矑搴︽槸鏄? bytes錛岄偅涔堝鏋滅敵璇蜂簡14 bytes鐨勮瘽浼氭湁2 bytes鐨勫ぇ寰愬皬鐨勫潡灝懼~鍏呭潡錛屽鏋滅敵璇蜂簡24bytes錛岄偅涔堝氨娌℃湁鍧楀熬濉厖浜嗭紝鍥犱負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錛岀洿鎺ヨ繍琛岋紝浼氬彂鐜版姤閿欏涓?/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鐨勫唴瀛樻椂鏄笉浼氭湁鍧楀熬濉厖閮ㄥ垎鐨勶級</font></p> <p><font size="2">閭f垜浠帴涓嬫潵鐪嬪彟澶栦竴孌典唬鐮?/font></p> <p><font color="#ff0000" size="2">鎴戜滑鎶婄10琛岀殑temp = buffer鏀規垚temp = buffer1</font></p> <p><font color="#000000" size="2">鍥犱負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">濡傛灉鎴戜滑鐨勪唬鐮佷腑瀵圭敵璇風殑鍫嗗唴瀛樺啓瓚婄晫浜嗭紝鍐欐暟鎹鐩栧潡灝懼~鍏呴儴鍒嗙殑鏃跺欏茍涓嶄細寮曞彂寮傚父錛?/font></font></p> <p><font size="2">浣嗘槸錛岃繖騫朵笉浠h〃鎴戜滑鐨勫啓瓚婄晫闂涓嶄細琚彂鐜般傚潡灝懼~鍏呴儴鍒嗘槸浼氳濉厖涓婂浐瀹氭暟鎹殑錛岀郴緇熷湪閫傚悎鐨勬椂鏈猴紙姣斿閿姣佸爢鐨勬椂鍊欙級浼氭牎楠屽潡灝懼~鍏呭潡錛屽鏋滃彂鐜板潡灝懼~鍏呭潡鏁版嵁鏈夊彉錛岄偅涔堜究浼氭姤涓涓獀erifier寮傚父錛屾瘮濡傛垜浠妸浠g爜涓殑for寰幆嬈℃暟鏀逛負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浼氫腑鏂湪絎?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">緇撹錛氬彧瑕佸啓瓚婄晫錛岀郴緇熼兘鑳藉媯嫻嬪嚭鏉ワ紝鍙笉榪囧鏋滃啓瓚婄晫鍐欏埌浜嗘爡鏍忛〉浼氱悊瑙hЕ鍙戝紓甯鎬腑鏂紝鑰屽啓瓚婄晫鍙啓浜嗗潡灝懼~鍏呴儴鍒嗭紝閭d箞緋葷粺鍦ㄩ傚綋鏃舵満錛堟瘮濡傚爢琚攢姣侊紝鎴栬呰繖鍧楀唴瀛樿閲嶆柊鍒嗛厤絳夋椂鏈猴級浼氬鍧楀熬濉厖閮ㄥ垎鍋氬畬鏁存ф嫻嬶紝濡傛灉鍙戠幇琚牬鍧忎簡錛屽氨浼氭姤閿欍傚綋鐒訛紝浣犲彲浠ユ牴鎹敊璇彿錛?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,涔熷氨鏄袱涓〉鐨勫ぇ灝?榪欏綋鐒舵槸鍥犱負欏靛爢鐨勫師鍥犲暒,鍏跺疄榪欎袱鍧楀唴瀛樺垎閰嶆槸鐩擱偦鐫鐨?铏氭嫙鍐呭瓨緇撴瀯濡備笅鍥炬墍紺?/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鍒嗛厤鐨勫ぇ灝忔槸涓鏍風殑錛坆uffer1鍔犱笂灝鵑儴濉厖鍧楀拰buffer鐨勫ぇ灝忕浉鍚岋級錛屾墍浠ヨ繖涓ゅ潡鍐呭瓨姝eソ鐩稿樊8K</font></p> <p><font size="2">鑰孌PH_BLOCK_INFORMATION灝卞湪鎴戜滑鐢寵鐨勫唴瀛樺潡鎸囬拡鐨勫墠0x20瀛楄妭澶勶紝鐢╠t鍛戒護鐪嬬殑緇撴灉濡備笅:</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>錛屼負浜嗘暟鎹粺涓錛屾垜榪樻槸鎷?x024a0000浣滀負鍫嗗彞鏌勬潵璁茶В銆傛垜浠殑DPH_HEAP_BLOCK鍏跺疄灝卞湪鍫嗗潡鑺傜偣姹犻噷杈癸紝鎴戜滑鍙互榪戜技鎶婅繖涓妭鐐規睜鐪嬫垚涓涓ぇ鍨嬬殑DPH_HEAP_BLOCK鏁扮粍錛屼絾鏈変釜鍦版柟鍦ㄨ蔣浠惰皟璇曚腑娌℃湁鎻愬埌錛屽氨鏄湪win7涓嬶紝榪愯鏃惰繖浜汥PH_HEAP_BLOCK緇撴瀯閮芥槸浠ヤ簩鍙夊鉤琛℃暟鐨勭粨鏋勬潵緇勭粐鐨勶紝榪欎釜鏍戠殑緇撴瀯鐨勫叆鍙f鏄湪TableLinks瀛楁鍐咃紝榪欎箞鍋氱殑鍘熷洜涔熷ぇ姒傛槸鍥犱負鑳藉鍦ㄥ垎閰嶆椂鏇村揩鐨勭儲銆傛垜浠啀鐪嬬湅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釜浜屽弶鏍戝叆鍙e叾瀹炲氨鏄繚瀛樺湪<font color="#0000ff">BusyNodesTable </font>瀛楁錛岃繖閲岄潰璁板綍浜嗘墍鏈夎鍒嗛厤浜嗙殑鍐呭瓨鍧楁墍瀵瑰簲鐨凞PH_BLOCK_INFORMATION銆傚綋鐒訛紝榪欓噷闈竴浜涗俊鎭蔣浠惰皟璇曢噷闈㈤兘鏈変粙緇嶏紝寰堝鐪嬪悕瀛椾篃鑳藉鐚滃埌澶ф鎰忔濓紝鐪嬪悕瀛楃寽涓嶅埌鍟ユ剰鎬濈殑瀛楁錛屽叾瀹炴垜涔熺寽涓嶅埌銆傘傘?_-|||鍦ㄥ垱寤洪〉鍫嗗悗錛屾墍鏈夊唴瀛樺垎閰嶉兘鍒嗛厤鍦ㄩ〉鍫嗕腑錛岄氳繃鍒嗛厤鐨勫湴鍧涔熻兘鐪嬪緱鍑烘潵錛堟垜浠垎閰嶇殑鍐呭瓨閮芥槸024a鎵撳ご錛夛紝鑰岄潪鏅氶〉鍫嗕腑錛屾櫘閫氶〉鍫嗕篃浠呬粎鍙槸淇濆瓨涓浜涚郴緇熷唴閮ㄤ嬌鐢ㄧ殑鏁版嵁銆備竴鑸潵璇達紝鍫嗗潡鑺傜偣姹犲姞涓奃PH_HEAP_ROOT緇撴瀯澶у皬姝eソ鏄?涓唴瀛橀〉錛屼篃灝辨槸16K銆?/font></p> <h2>浼樼己鐐?/h2> <h3>緙虹偣錛氭秷鑰楀ぇ閲忚櫄鎷熷唴瀛橈紝姣忓潡鍐呭瓨鐨勫垎閰嶇矑搴︽槸2涓〉錛?K錛夛紝</h3> <h3>浼樼偣錛氳兘澶熺珛鍗蟲崟鑾瘋秺鐣岃鍐欐搷浣滐紝閫氳繃璋冪敤鏍堝氨鍙互榪芥函鍒伴棶棰樻簮澶淬傝兘澶熷揩閫熷畾浣嶉棶棰樹唬鐮併?/h3> <h3>浣跨敤寤鴻錛?2浣嶄笅涓嶉傚疁璺戦厤緗枃浠剁粨鏋勬瘮杈冨鏉傜殑杞歡錛岃鎴戜滑鏉ュ亣璁句竴涓獂ml閰嶇疆鏂囦歡涓嬫湁3000涓妭鐐癸紝姣忎釜鑺傜偣鏈?涓瓧絎︿覆鎻忚堪灞炴э紝濡傛灉鎶婅繖浜涢厤緗枃浠朵俊鎭漿鍖栦負stl緇撴瀯鏉ヤ繚瀛橈紝閭d箞姣忎釜鑺傜偣鍒欓渶瑕佷負姝ゅ垎閰?*8K鐨勭┖闂達紝3000欏歸厤緗垯闇瑕?000*5*8K=117MB铏氭嫙鍐呭瓨錛屽鏋滄瘡涓妭鐐逛俊鎭啀澶氫竴浜涘憿錛熻繖鏍蜂細瀵艱嚧铏氭嫙鍐呭瓨鑰楀敖浠庤屽嚭鐜頒竴緋誨垪鍐呭瓨闂錛堟瘮濡傦紝new澶辮觸錛夈傚綋鐒?4浣嶅氨涓嶅瓨鍦ㄨ繖縐嶉棶棰樹簡7T鐨勮櫄鎷熷唴瀛樼┖闂達紝鐜板湪鐪嬫潵搴旇鏄鐢ㄤ簡銆?/h3> <p> </p> <p><font color="#ff0000">瀵逛簬璋冭瘯鍫嗙牬鍧忔潵璇達紝鍏跺疄鎴戜滑鍙浜嗚В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">鍏跺疄欏靛爢榪樺ソ錛屽畠鏈夎緝寮虹殑瀹炴椂鎬э紝鎵浠ュ茍涓嶉渶瑕佸お澶氭墜宸ヨ皟璇曠殑鎿嶄綔錛岃秺鐣岃鍐欓兘浼氱珛鍗寵Е鍙戝紓甯稿茍涓斾腑鏂紝鎵浠ヤ粠榪欑偣鐪嬫潵錛屽畠鏄竴浜涜蔣浠剁敤鏉ユ嫻嬪爢璧勬簮鏄惁姝g‘浣跨敤鐨勫繀澶囪壇鑽瘇 浣嗘槸鐩稿浜庨〉鍫嗭紝鍑嗛〉鍫嗙殑璋冭瘯鍒欓渶瑕佹洿濂界殑鍘諱簡瑙e噯欏靛爢宸ヤ綔鍘熺悊浜嗭紝鍥犱負瀹冩彁渚涚殑鍫嗗潡媯嫻嬩笉鏄疄鏃剁殑錛屾墍浠ュ彂鐜伴棶棰樺悗錛岄渶瑕佸挶鈥滅簿婀涚殑璋冭瘯鍐呭姛鈥滃幓鎵懼嚭婧愬ご錛屽叧浜庡噯欏靛爢鐨勪笢瑗匡紝涓嬪洖鍐嶈鍚э紝鏁鏈熷緟~</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>宸ヤ綔榪欏崐騫?/title><link>http://m.shnenglu.com/ay19880703/archive/2012/01/03/163490.html</link><dc:creator>__ay</dc:creator><author>__ay</author><pubDate>Tue, 03 Jan 2012 08:32:00 GMT</pubDate><guid>http://m.shnenglu.com/ay19880703/archive/2012/01/03/163490.html</guid><wfw:comment>http://m.shnenglu.com/ay19880703/comments/163490.html</wfw:comment><comments>http://m.shnenglu.com/ay19880703/archive/2012/01/03/163490.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/ay19880703/comments/commentRss/163490.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/ay19880703/services/trackbacks/163490.html</trackback:ping><description><![CDATA[<p>閬ユ兂涓婁竴嬈¤繖涔堟竻闈欎笅鏉ユ濊冭繕鏄湪鍘誨勾7鏈堝垵浜嗭紝褰撴椂榪樻槸綆楄糠鑼紝姣旇緝娉勬皵鐨勬槸娌¤兘鍘誨笇鏈涚殑閭d釜灝忕粍錛屼絾鍚庨潰鐪嬫潵騫朵笉綆楀潖浜嬶紝璧風爜鐜板湪榪欎釜灝忕粍鍦ㄦ垜鐪嬫潵鏄緢鐞嗘兂鐨勪竴涓姸鎬侊紝鍑濊仛鍔涳紝涓婅繘錛屽垎浜紝鏈夌褰撳垵鍑濊仛鐨勬劅瑙夛紝涓涓埧闂達紝涓涓洟闃燂紝澶╁ぉ瀣夌毊絎戣劯錛屽嵈涓嶅繕涓璧瘋拷瀵昏嚜宸辯殑姊︽兂銆傚ぇ鍗婂勾宸ヤ綔涓嬫潵錛屼篃鏄鍥為【涓嬭嚜宸卞崐騫寸殑宸ヤ綔</p> <p> </p> <ul> <li>閲忓寲浠g爜鐨勪綔鐢?/li></ul> <blockquote> <p>鍜屽ぇ瀛︽椂涓嶄竴鏍鳳紝鎴戠殑浠g爜騫朵笉浼氶┈椹檸铏庤刀瀹屽幓鍙傚姞姣旇禌鍚庡氨寮冧箣涓嶇悊浜嗭紝榪欏茍涓嶆槸涓嬈℃т唬鐮侊紝瀹冮渶瑕佺淮鎶わ紝鏇撮渶瑕佷綋鐜板叾浠峰箋備紭鍖栧畬浜嗕竴涓姛鑳斤紝鐢氳嚦涓嶈兘璇村嚭瀹冩瘮浠ュ墠濂藉湪鍝噷錛屼篃娌℃湁鏁版嵁鍙噺鍖栵紝鏇磋鍛界殑鏄垜灝辮繖涔堣榪欓」鐩繃鍘諱簡錛岃姳浜?涓湀鍋氬嚭鏉ョ殑涓滆タ錛屽茍娌℃湁浠諱綍浜虹煡閬擄紝涔熸病浠諱綍浜哄幓鍏蟲敞錛屾病鏈変換浣曟祴璇曟暟鎹潵璇存槑鎴戣榪欎釜鍔熻兘鏈変簡寰堝ぇ紼嬪害涓婄殑榪涘睍銆傚氨鍍忎互鍓嶅鍑濊仛鐨勫▋鍎夸滑璇寸殑錛屽啓鍑烘潵鐨勮蔣浠舵病浜虹敤錛屼笉綆$敤鍒扮殑鎶鏈啀綺炬箾錛屼篃鏄爢搴熶唬鐮併傚垏璁板垏璁幫紝涓嶈濡備綍錛岃閲忓寲鑷繁鐨勫伐浣滐紝鏈夋暟鎹殑瀵規瘮鍒漢鎵嶇煡閬撴槸榪涙銆?/p></blockquote> <ul> <li>娌熼氬ソ閲嶈</li></ul> <blockquote> <p>浠庢潵鍒板叕鍙稿埌鐜板湪錛岀粓浜庣煡閬撲粈涔堝彨瓚呭嚭鏈熸湜浜嗐俛s涓涓悎鏍肩▼搴忓憳錛屼綘寰楁寜鏃跺畬鎴愯佸ぇ甯冪疆鐨勪換鍔°備絾浜嬫儏榪滆繙涓嶆榪欎簺錛岃佸ぇ寰堝鏃跺欏彧鏄粰浣犳寚鏄庢柟鍚戯紝騫朵笉浼氬憡璇変綘姣忎竴姝ユ庝箞璧幫紝榪欐牱鍋氱殑濂藉鑳藉璁╀綘鑷敱鍙戞尌錛屽潖澶勬槸瀹規槗榪瘋尗銆傝繖涔熻鏄ソ澶氭柊浜鴻繃鏉ユ椂鍊欑殑閫氱梾錛岃媧炬寚浠誨姟鍚庢棤浠庝笅鎵嬨傝繖涓彲鏄釜娌熼氱殑媧伙紝棣栧厛蹇呴』瑕佺簿紜簡瑙h佸ぇ鐨勯鏈燂紝璁頒綇錛屾垜榪欓噷璇寸殑鏄簿紜簡瑙o紝褰撶劧鑰佸ぇ鐨勯鏈熷茍涓嶄竴瀹氬畬鍏ㄦ紜紝浣嗘槸錛屽湪浣犳病娉曡京椹崇敤鏁版嵁杈╅┏浠栦笉姝g‘鐨勬椂鍊欙紝浣犺鍋氱殑灝辨槸鏀墮泦璧勬枡錛岀劧鍚庡垎鏋愬彲琛屾э紝鍐嶇劧鍚庣粰鑰佸ぇ澶嶈堪浣犵殑璁″垝錛屽湪鎴戠湅鏉ワ紝鎴戝叾瀹炲茍涓嶅笇鏈涙垜鐨勮鍒掑拰鑰佸ぇ鐨勯鎯沖畬鍏ㄤ竴鑷達紝鏇村鐨勮璁烘墠浼氫駭鐢熶竴涓畬緹庣殑鏂規錛屽鏋滀綘浠呬粎鍙槸鎸夎佸ぇ璇寸殑鍘誨仛錛岄偅涔堝氨鏄偅涓猶ualified programmer錛屼竴瀹氫竴瀹氳璁頒綇錛屼綘鏈濂藉緱鏈夎嚜宸辯殑瑙傜偣錛岃鐐瑰繀欏誨緱紕版挒錛岀鎾炰腑鎵嶄細鍙嶆濆悇鏀捐鐐圭殑浼樺姡錛屼竴涓潈琛$殑瑙傜偣鎵嶄細鍑烘潵銆傚叾瀹為渶姹傜‘璁よ繖涓姝ュ彲鑳藉緢澶氫漢鐪嬫潵寰堝啑浣欙紝浣嗘槸鍦ㄦ垜鐪嬫潵寰堟槸蹇呴渶錛屽洜涓哄彛鍙g浉浼犵殑闇姹傚茍涓嶄細綺劇‘鍒板摢閲屽幓錛屾墍浠ラ渶瑕佺‘璁ょ‘璁ゅ啀紜錛岀渷鐨勫仛瀹屽悗鍙堝緱鎵撶炕閲嶅仛銆?/p></blockquote> <ul> <li>鎶鏈殑浜嬶紝涓嶅彲緋婃秱</li></ul> <blockquote> <p>鎶鏈殑浜嬫儏錛屽崈涓囧埆緋婃秱錛屼綘鐨勭▼搴廲rash浜嗭紝浣犲緱鐭ラ亾涓哄暐錛屼綘鐨刵ew澶辮觸浜嗭紝浣犱篃寰楃煡閬撲負鍟ワ紝鍥犱負闅忕潃紼嬪簭瓚婃潵瓚婂ぇ錛屼綘debug鐨勯毦搴︿細瓚婃潵瓚婇珮錛屾湁闂錛屾棭瑙e喅錛岃屼笖瀵規墍鏈夐棶棰橈紝浣犲繀欏葷煡鍏舵墍浠ョ劧銆傚綋鐒訛紝閭d簺鎭跺績鐨勬病鏈夋枃妗h屼笖娉ㄩ噴鍙敞閲婁簡涓鍗婄殑絎笁鏂瑰簱闄ゅ錛岀敤榪欑搴撹繕涓嶅鑷繁閲嶆柊鍐欎竴涓幓錛屼竴鐩磋涓鴻繖縐嶆垚鍝佺殑瀛樺湪灝辨槸涓浮鑲嬨傜紪紼嬮噷闈㈡湁涓鍙ヨ瘽鍙玠onot repeat yourself錛屼綘寰楃鐞嗗ソ騫朵笖鎬葷粨浣犵殑浠g爜錛屾繪湁涓澶╋紝浣犳垨鑰呭埆浜鴻繕鑳界敤寰楀埌銆?/p></blockquote> <ul> <li>鍔ㄦ佹洿鏂頒紭鍏堢駭</li></ul> <blockquote> <p>榪欐槸鎴戞渶澶х殑涓涓瘺鐥呬簡鍚э紝鍏跺疄鏀懼湪浜掕仈緗戝叕鍙歌繖縐嶅偓榪涘害濂芥瘮鍌懡鑸殑澶х幆澧冧笅錛岃繖綆楁槸鍧忎範鎯紝鎴戝伐浣滄ā寮忎竴鑸槸涓茶鍖栦笖鍏充腑鏂ā寮忥紝涓浠朵簨蹇呴』寰楀厛鍋氬畬鎵嶅紑濮嬪仛涓嬩竴浠朵簨鎯咃紝涓棿瀹逛笉寰楁湁浠諱綍娉ㄦ剰鍔涚殑杞Щ銆備絾鏄線寰涓棿浼氭湁鏇村姞閲嶈鐨勪簨鎯呮彃鎾繘鏉ワ紝褰撶劧錛屽鏋滃嚭鐜拌繖縐嶆儏鍐甸偅鏄」鐩鐞嗕笂鐨勬偛鍝錛屼絾浜嬪疄濡傛錛岀瓑寰呯幇鐘舵敼鍙樿繕涓嶅鍘婚傚簲銆傛竻妤氱殑鐭ラ亾浼樺厛綰э紝榪欏叾瀹為潪甯擱噸瑕佺殑錛屽洜涓哄緢鏈夊彲鑳芥彃鎾繘鏉ョ殑浠誨姟鍏寵仈鍒板叾浠栧悓浜嬶紝澶勭悊涓嶅ソ錛屼細鍑虹幇欏圭洰鍙戝竷鍓峃涓漢絳変綘鐨勮繖縐嶇姸鍐碉紝璇撮毦鍚偣錛岃繖鏃跺欎綘灝辨垚浜嗗悗鑵匡紝閲嶇偣鏄埆浜烘庝箞鎷栦篃鎷栦笉鍔ㄣ?/p></blockquote> <ul> <li>閿葷偧鍟婇敾鐐?/li></ul> <blockquote> <p>璇村ソ鐨勬瘡鍛ㄤ竴嬈¤繍鍔ㄥ湪宸ヤ綔涓変釜鏈堝悗灝辯儫娑堜簯鏁d簡錛屾垜鏄偅縐嶅仛浜嬫儏鐨勬椂鍊欏鏄撹蛋鐏叆欖旂殑紼嬪簭鍛橈紝浜嬫儏娌¤В鍐充箣鍓嶈剳瀛愰噷鍏ㄩ儴閮芥槸鐩稿叧鐨勪簨鎯咃紝浣嗗線寰榪欐牱鏄渶娌℃湁鏁堢巼鐨勶紝鍙嶅掑幓榪愬姩榪愬姩錛屽緟絎簩澶╄剳琚嬫竻鏅頒簡鍙嶅掑氨鏈夌粨鏋滀簡錛岃佸ぉ鍠冦傘傘傛垜鍏充腑鏂殑鎬濈淮妯″紡浣曟椂鑳借漿榪囨潵銆傘傘傜▼搴忓憳搴旇綆楁槸鏈鏈闇瑕侀敾鐐肩殑緹や綋浜嗗惂錛屼竴澶╁潗10涓皬鏃惰繕涓嶅甫涓婂帟鎵鐨勶紝鍙互閬囪濂藉浜哄湪鍑犲勾鍚庨兘浼氳剨妞庣瓑鍦版柟寮濮嬪嚭姣涚梾錛屼絾榪欐槸鎴戜滑鍙互閬囪寰楀埌鐨勫晩銆傘傘傜珶鐒墮兘鐭ラ亾浜嗭紝涓轟綍涓嶅幓闃繪鍏跺彂鐢熷憿錛熶笉涓哄埆浜猴紝鍗曟槸涓轟簡鐜板湪鎴栬呮湭鏉ョ殑瀹朵漢錛屽ソ濂界埍鎶よ嚜宸辯殑韜綋姣斾換浣曚簨鎯呴兘閲嶈錛屾湡寰呮湁涓涓漢錛岋紝錛岋紝鑳藉湪鎴戣蛋鐏叆欖斾箣闄呮妸鎴戞媺鍑烘潵鍘繪墦涓鍦虹悆錛屼互鍓嶆湁灝忓錛屾湁鐣柉錛屾湁钁¤悇鍝ワ紝鑰岀幇鍦ㄥ憿錛熸病鏈変綘浠殑鍩庡競閲屾垜涔熻鍋ュ悍鐨勬椿鐫錛屼笉涓哄埆鐨勶紝鍙負鐣欑潃鍙f皵鎶婅禋鏉ョ殑閽卞ソ濂界殑鑺卞嚭鍘?nbsp; -_-#錛屾寚涓嶅畾鍝ぉ鎴戞毚姣欎簡閾惰閲岃繕鏈夊ソ鍑犵櫨涓囷紝榪欎斧鐨勪笉浜忓ぇ浜嗐?/p></blockquote> <p>鏆傛椂灝辮繖涔堝鍚э紝甯屾湜榪欎簺鑳藉湪鎴戜粖鍚庡崐騫存湁鎵鏀瑰杽錛屼篃璁稿湪鎴戠湅鏉ワ紝鎶鏈凡緇忎笉鍐嶆槸鍏ㄩ儴錛屽仛浜嬫儏鐨勬柟寮忔墠鏄垜浠婂悗鎯沖悇鍓嶈緢瀛︿範鐨勫湴鏂廣?/p><img src ="http://m.shnenglu.com/ay19880703/aggbug/163490.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 16:32 <a href="http://m.shnenglu.com/ay19880703/archive/2012/01/03/163490.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>鏁翠釜鍛戒護鐨勬剰鎬濆氨鏄璋冭瘯鍣ㄥ湪緋葷粺鍐欏叆鍐呭瓨85c16018-85c1601b榪欎釜鍦板潃鑼冨洿鐨勬椂鍊欎腑鏂?</p> <p>OK,鍛戒護涓嬪畬,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#Feedback0http://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銆傚湪寰搴曞眰璧頒竴鐐瑰憿錛岃繖涓や釜鍑芥暟閮戒細璋冪敤HeapAlloc錛圧tlAllocateHeap錛夈傚悓鏍風殑鐩稿叧鍑芥暟榪樻湁HeapFree鐢ㄦ潵閲婃斁鍫嗭紝HeapCreate鐢ㄦ潵鍒涘緩鑷繁鐨勭鏈夊爢銆備笅闈㈡槸榪欎簺鍑芥暟鐨勮皟鐢ㄩ摼錛?/p>

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

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

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

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

濡備綍鎵懼埌鎴戜滑鐨凥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鍛戒護鏌ョ湅鍙互鐪嬪埌絎簲涓爢灝辨槸鎴戜滑鍒涘緩鐨勫爢鍙ユ焺浜嗐?/p>

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

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

鎴戜滑鍙互杈撳叆濡備笅鍛戒護鏉ユ煡鐪嬬幇鏈夌殑鍫嗗彞鏌?/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鍛戒護鐨勮緭鍑虹粨鏋滄槸涓鏍風殑

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

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

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

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

HeapCreate鍑芥暟榪斿洖鐨勫爢鍙ユ焺鍏跺疄灝辨槸涓涓寚鍚戝爢綆$悊緇撴瀯鐨勬寚閽堬紝姣忎釜鍫嗛兘浼氭秹鍙婂埌榪欐牱涓変釜緇撴瀯錛欻EAP,HEAP_SEGMENT,HEAP_ENTRY

HEAP_ENTRY緇撴瀯錛?/p>

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

HEAP_ENTRY錛? bytes錛?/p>

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

鍥哄畾濉厖絀洪棿

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

HEAP_SEGMENT緇撴瀯錛?/p>

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

HEAP_ENTRY錛? bytes錛?/p>

HEAP_SEGMENT

HEAP_ENTRY錛? bytes錛?/p>

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

鍥哄畾濉厖絀洪棿

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

} ;

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

HEAP_ENTRY錛? bytes錛?/p>

HEAP_SEGMENT

HEAP

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

鐢╓INDBG瑙傚療HEAP緇撴瀯

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

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淇濆瓨鐨勮繑鍥炲間負002c0590銆傛垜浠氳繃涓ょ閫斿緞鏉ヨ瀵熸垜浠敵璇風殑鍐呭瓨錛岄氳繃!heap鍛戒護瑙傚療鍜岄氳繃dt鍛戒護瑙傚療

閫氳繃!heap鍛戒護瑙傚療

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

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.

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

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

閫氳繃dt鍛戒護瑙傚療

鍚屾牱鐨勶紝宸茬煡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鍛戒護鏄劇ず鐨勪俊鎭腑鐨凣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涓虹矑搴﹀垎閰嶇殑錛屾墍浠ヤ負榪欏潡121 bytes鐨勫唴瀛樿嚜鍔ㄥ~鍏呬簡7涓瓧鑺傦紝鍙鐢寵121 bytes鍜岀敵璇?28 bytes鎵浣跨敤鐨勭┖闂存槸涓鏍風殑銆?/font>

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

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

鎵ц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鍐呴儴閮戒細璋冪敤HeapAlloc鏉ョ敵璇峰唴瀛橈紝浣嗘槸鍫嗗彞鏌勪粠鍝潵鍛紵瀹冧細媯嫻媉crtheap鍙橀噺鏄惁涓虹┖錛岃嫢涓嶄負絀哄垯鎷縚crtheap鍙橀噺鏉ヤ綔涓鴻嚜宸辯殑鍫嗗彞鏌勫幓璋冪敤HeapAlloc

鍙傝冿細

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

MSDN聽聽聽

React OS



__ay 2011-10-30 19:05 鍙戣〃璇勮
]]>tp-wn821n椹卞姩 for aircrack錛坲buntu錛?/title><link>http://m.shnenglu.com/ay19880703/archive/2011/10/23/158923.html</link><dc:creator>__ay</dc:creator><author>__ay</author><pubDate>Sun, 23 Oct 2011 07:23:00 GMT</pubDate><guid>http://m.shnenglu.com/ay19880703/archive/2011/10/23/158923.html</guid><wfw:comment>http://m.shnenglu.com/ay19880703/comments/158923.html</wfw:comment><comments>http://m.shnenglu.com/ay19880703/archive/2011/10/23/158923.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/ay19880703/comments/commentRss/158923.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/ay19880703/services/trackbacks/158923.html</trackback:ping><description><![CDATA[<p>@浣滆? ay @鏂囩珷鍑哄: <a target="_blank">cnss-ay鐨勫崥瀹?/a> <font color="#ff0000">@Notice: 杞澆璇鋒敞鏄庡嚭澶勶紒鑻ユ枃绔犳樉紺轟笉瀹屾暣錛屽彲浠ュ埌鏂囩珷鍑哄闃呰銆?/font></p> <p> </p> <p>鏄ㄥぉ鍦ㄤ含涓滀笂涔扮殑TP-LINK WN821N v3鏃犵嚎緗戝崱錛屼粖澶╁氨鍒版墜浜?鍙戣揣鐪熷揩~~鍑屾櫒緇欐垜鍙戞潵閭歡璇村凡閫佽揣錛屾敞鎰忔煡鏀躲傘傘傘傛睏~~</p> <p>榪欎釜鏃犵嚎緗戝崱鏄垜鐨勫紑鍙戠綉鍗★紝鑺變簡涓涓嬪崍鐮旂┒鎵嶇炕鍒扮殑涓涓猚ommview for wifi鍜宎ircrack閮借兘浣跨敤鐨勭綉鍗★紝鐢ㄧ殑atheros鐨勮姱鐗囷紝鍏蜂綋鍨嬪彿鍙互鍦?a >http://linuxwireless.org/en/users/Drivers/ath9k_htc/devices</a>榪欎釜緗戝潃涓婃煡鍒般?/p> <p>鍙儨鎴戠殑鏄痷buntu 10.04鐨勭増鏈紝媯嫻嬩笉鍒拌繖涓綉鍗★紝鍙兘鑷繁鍔ㄦ墜瑁呬簡</p> <p>鎴戣繖閲屽畨瑁呯殑鏄痑th9k_htc</p> <p>澶氫簭浜嗕笅闈㈣繖涓ょ瘒鏂囩珷錛岀綉鍗℃垚鍔熷湪ubuntu涓婇潰璺戣搗鏉ヤ簡</p> <p><a target="_blank">ath9k_htc錛氫竴浜沀SB鏃犵嚎緗戝崱鐨勫師鐢熼┍鍔?/a></p> <p><a target="_blank">ath9k_htc USB鏃犵嚎緗戝崱椹卞姩瀹夎</a></p> <p>涓嶈繃涓婇潰璇磋矊浼煎湪UBUNTU 11.04涓氨鍙互璇嗗埆鍑烘潵錛屾垜涔熶笉鏅撳緱 榪欎釜寰呴獙璇併?/p> <p>璇曚簡涓媋ircrack</p> <p>sudo aircmon start wlan%d 錛堣矊浼肩綉鍗″悕瑙f瀽鏈夐敊銆傘傘傘傜珶鐒剁粰鎴戣В鏋愭垚wlan%d錛佷笉榪囦篃鑳界敤錛屽皢灝卞惂~錛?/p> <p>鎵撳紑wireshark鐩戝惉mon0榪欎釜铏氭嫙緗戝崱錛岀粨鏋滃涓?/p> <p><a href="http://m.shnenglu.com/images/cppblog_com/ay19880703/Windows-Live-Writer/06eabf0f0437_B9AE/image_2.png"><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/06eabf0f0437_B9AE/image_thumb.png" width="592" height="284"></a></p> <p>鍢垮樋  鍙互浣跨敤錛岄偅鎺ヤ笅鏉ュ彲浠ョ戶緇瓀ireless fundamental緋誨垪鏂囩珷浜嗭紝noctilio榪欎釜寮婧愰」鐩篃寮濮嬫鍏ュ紑鍙戦樁孌典簡</p><img src ="http://m.shnenglu.com/ay19880703/aggbug/158923.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> 2011-10-23 15:23 <a href="http://m.shnenglu.com/ay19880703/archive/2011/10/23/158923.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鎶妛indows鐨刅IM閰嶇疆鏂囦歡鎼埌ubuntu涓?/title><link>http://m.shnenglu.com/ay19880703/archive/2011/10/23/158903.html</link><dc:creator>__ay</dc:creator><author>__ay</author><pubDate>Sat, 22 Oct 2011 16:34:00 GMT</pubDate><guid>http://m.shnenglu.com/ay19880703/archive/2011/10/23/158903.html</guid><wfw:comment>http://m.shnenglu.com/ay19880703/comments/158903.html</wfw:comment><comments>http://m.shnenglu.com/ay19880703/archive/2011/10/23/158903.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/ay19880703/comments/commentRss/158903.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/ay19880703/services/trackbacks/158903.html</trackback:ping><description><![CDATA[<p>@浣滆? ay @鏂囩珷鍑哄: cnss-ay.com <font color="#ff0000">@Notice: 杞澆璇鋒敞鏄庡嚭澶?/font></p> <p>涔嬪墠鍐欎簡涓綃囨枃绔? <a >VIM鈥撴寚瀹氳嚜宸辯殑VIM宸ヤ綔鐩綍</a></p> <p>浠婂ぉ鍑嗗鎶妛indows涓嬬殑vim閰嶇疆寮勫埌铏氭嫙鏈轟腑鐨剈buntu鏉?浜庢槸灝辨湁浜嗚繖綃囨枃绔?浠呰褰曚笅鏈熼棿閬囧埌鐨勯棶棰?/p> <p> </p> <p>1. 鎶妛indows鏂囦歡澶規槧灝勫埌ubuntu涓?/p> <p>鎴戣繖閲屾槸鐢ㄤ簡vmware tools鏉ユ悶瀹氱殑,鍏堝畨瑁卾mware tools,鐒跺悗鍦╡dit virtual mechine setting涓殑options閲岄潰鏈変釜shared floders,鎶婂畠璁句負always enable鐒跺悗鍦ㄤ笅闈㈡坊鍔犺嚜宸辮鍏變韓鐨勭洰褰曞氨鏄簡,鎴戝湪榪欓噷闈㈡妸鎴戜箣鍓嶇殑$MY_VIM_DIR榪欎釜鐜鍙橀噺鐨勭洰褰曟坊鍔犺繘鍘諱簡,鎴戠殑floder name涓簐im.鐒跺悗鍦ㄨ櫄鎷熸満鐨刄BUNTU涓嬮潰,鍒?mnt/hgfs/vim鐩綍涓嬪氨鍙互璁塊棶鎴戠殑vim閰嶇疆鏂囦歡浜?絎竴姝ユ悶瀹?娌′粈涔堝ぇ闂.</p> <p> </p> <p>2.鐒跺悗鍦ㄧ幆澧冨彉閲忎腑娣誨姞$MY_VIM_DIR(/mnt/hgfs/vim)鍜?VIMINIT(source $MY_VIM_DIR/_vimrc)鐜鍙橀噺,鎴戣繖閲屾煡浜嗕笅璧勬枡,鍦▇/.bashrc榪欎釜鏂囦歡涓姞涓婅繖涓ゅ彞璇濓細</p> <p>export MY_VIM_DIR=/mnt/hgfs/vim</p> <p>export VIMINIT="source $MY_VIM_DIR/_vimrc"</p> <p>鍦ㄦ瘡嬈″惎鍔╞ash鐨勬椂鍊欎細鎵ц~/.bashrc榪欎釜鏂囦歡錛屾垜浠殑鐜鍙橀噺灝辮嚜鍔ㄨ榪涘幓浜嗭紝浣嗘槸榪欎釜璁劇疆鍙褰撳墠鐢ㄦ埛鏈夋晥錛屾崲涓敤鎴鋒垜浠緗殑鐜鍙橀噺灝變笉璧蜂綔鐢ㄤ簡. 濡傛灉浣犲笇鏈涘鍏ㄥ眬鐢ㄦ埛閮芥湁鏁?閭d箞鍙互鍘諱慨鏀?etc/profile鏂囦歡,鍦ㄦ枃浠舵湯灝懼姞涓婅繖涓ゅ彞璇?</p> <p> </p> <p>3.濂戒簡,涓鍒囧氨緇?鍦ㄦ帶鍒跺彴鍚姩VIM, 澶辮觸! 鎻愮ず璇存嫻嬪埌鏈塣M, 鏃犳硶瑙f瀽.鏅?windows鏍煎紡緙栫爜闂....</p> <p>瑙e喅鏂規硶寰堢畝鍗?鍏堣窇鍘昏涓猼ofrodos,鍛戒護: sudo apt-get install tofrodos</p> <p>鐒跺悗鎵цsudo fromdos -p $MY_VIM_DIR/*/*.vim</p> <p>鎶婇厤緗枃浠剁洰褰曚笅鐨勬墍浠?vim鏂囦歡鐨勬崲琛岄兘杞垚unix鏍煎紡鐨?/p> <p>鐒跺悗鍦ㄦ垜浠殑_vimrc涓姞鍏ヤ竴鍙ヨ瘽: set fileformat=unix</p> <p>鍛婅瘔vim鎴戜滑鎹㈣絎︾敤unix鏍煎紡鐨?/p> <p>鍦╳indows涓? gvim鍙互璇嗗埆榪欑甯︽湁unix鎹㈣絎︾殑vimrc鏂囦歡</p> <p>OK,闂瑙e喅</p> <p> </p> <p>4.鎵цsudo vim, 鏅?... 绔熺劧娌℃湁鍔犺澆鎴戠殑_vimrc鏂囦歡,鑰屾槸杞屽姞杞戒簡榛樿鐨?vimrc鏂囦歡,涔熷氨鏄2涓緗殑鐜鍙橀噺涓嶈搗浣滅敤</p> <p>鐒跺悗鎯沖彲鑳芥槸sudo鐢ㄧ殑鏄痳oot,涓嶄細緇ф壙鎴戣繖涓敤鎴風殑鐜鍙橀噺,OK  鎴戝湪/etc/profile涓緗幆澧冨彉閲忔誨彲浠ヤ簡鍚?/p> <p>鐧誨嚭鍚庣櫥鍏?鐪嬫晥鏋?/p> <p>鏅?.. 榪樻槸涓嶈</p> <p>鐒跺悗鐧懼害浜嗕竴浜?鍘熸潵鍦╯udo鍛戒護鍑轟簬瀹夊叏鎬ц冭檻,鎵ц鏈熼棿浼氭妸鐜鍙橀噺reset,鐒跺悗淇濈暀鍙俊鐨勭幆澧冨彉閲?姣斿$PATH榪欑鍙橀噺</p> <p>閭d箞闂鎵懼埌灝卞ソ鍔炰簡,鏈夊嚑縐嶆柟娉?/p> <p>a. 浣跨敤sudo -s鍛戒護錛屾寚鍑簊udo緇ф壙shell鐜鍙橀噺</p> <p>b. 鎵цvisudo鍛戒護, 鎶奃efaults env_reset鏀規垚Defaults !env_reset銆?紱佹sudo瀵圭幆澧冨彉閲忛噸緗紝鍥犱負鎴戞槸鍦ㄨ櫄鎷熸満涓婁釜浜虹敤ubuntu鍋氬紑鍙?鎵浠ョ敤鐨勮繖縐嶆柟娉?鑻ュ湪澶氫漢鍏變韓浣跨敤鐨勬搷浣滅郴緇熶笂,榪樻槸鎺ㄨ崘浣跨敤a鏂規硶瀹夊叏浜?/p><img src ="http://m.shnenglu.com/ay19880703/aggbug/158903.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> 2011-10-23 00:34 <a href="http://m.shnenglu.com/ay19880703/archive/2011/10/23/158903.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鐢╲im緙栬緫moinhttp://m.shnenglu.com/ay19880703/archive/2011/10/23/158901.html__ay__aySat, 22 Oct 2011 16:32:00 GMThttp://m.shnenglu.com/ay19880703/archive/2011/10/23/158901.htmlhttp://m.shnenglu.com/ay19880703/comments/158901.htmlhttp://m.shnenglu.com/ay19880703/archive/2011/10/23/158901.html#Feedback0http://m.shnenglu.com/ay19880703/comments/commentRss/158901.htmlhttp://m.shnenglu.com/ay19880703/services/trackbacks/158901.html@浣滆? ay @鏂囩珷鍑哄: cnss-ay.com @Notice: 杞澆璇鋒敞鏄庡嚭澶?/font>

 

鏈榪戝湪灝濊瘯鐢╩oin wiki鏉ュ仛鍗忓悓寮鍙戯紝鐩存帴鐢╩oin鑷甫鐨勭紪杈戝櫒澶笉鐖戒簡錛屽瓧浣撻毦鐪嬩笉璇達紝榪樻病娉曠潃鑹詫紝鐪嬬潃涓嶈垝鏈嶃?/p>

鐒跺悗鍘繪悳绱簡涓媣im涓浉鍏砿oin鐨勬彃浠訛紝鎯充笉鍒拌繕鐪熸湁錛?/p>

 

棣栧厛鏄繖涓?a >editmoin錛岀敤python鍐欑殑錛屽彲浠ラ氳繃榪欎釜鎻掍歡鏉ョ洿鎺ユ搷浣渕oin鐨勯〉闈紝浣嗘槸鎴戣繖閲屾槸windows緋葷粺錛屽畠鑰佽涓嶅埌鎴戠殑閰嶇疆鏂囦歡銆傝繖涓柟娉昹inux涓嬬殑鐢ㄦ埛鍙互鐢紝鎴戝氨涓嶈鍜紝鎵浠ヤ綔緗紝閲嶆柊瀵繪壘鍏跺畠鏂規硶銆?/p>

 

鐒跺悗鍘籱oin涓婚〉涓婄湅錛屼笂闈㈡帹鑽愪簡涓涓猣irefox鐨勬彃浠訛紝鍙互浣跨敤鎸囧畾緙栬緫鍣ㄦ潵緙栬緫欏甸潰鍐呭錛佹彃浠跺湴鍧鍦ㄨ繖錛?a s All Text! 

榪欐鎻掍歡涓綘鎸囧畾vim涓虹紪杈戝櫒灝卞彲浠ヤ簡錛岀劧鍚庡湪緙栬緫鐨勬椂鍊欐縺媧昏鎻掍歡鍗沖彲錛屽畠浼氬府浣犳妸鍐呭澶嶅埗鍒皏im涓紝緙栬緫瀹屽叧闂悗浼氭妸淇敼搴旂敤鍒扮綉欏電紪杈戝櫒鍐咃紝寰堝ソ鐢ㄧ殑璇磣~鍝堝搱

 

姝ゅ錛屽湪moin瀹樼綉涓婃彁鍒扮殑vim鎻掍歡moin.vim鍙互瀵筸oin wiki璇硶榪涜楂樹寒鏄劇ず錛屼絾鏄敤鐨勬椂鍊欐敞鎰忥紝璇鋒妸moin.vim涓殑 hi clear  榪欎竴鍙ヨ瘽娉ㄩ噴鎺?鍚﹀垯vim涓厤緗殑涓婚浼氬け鏁?/p>

__ay 2011-10-23 00:32 鍙戣〃璇勮
]]>
VIM 鈥?鎸囧畾鑷繁鐨刅IM宸ヤ綔鐩綍http://m.shnenglu.com/ay19880703/archive/2011/10/07/157716.html__ay__ayFri, 07 Oct 2011 13:03:00 GMThttp://m.shnenglu.com/ay19880703/archive/2011/10/07/157716.htmlhttp://m.shnenglu.com/ay19880703/comments/157716.htmlhttp://m.shnenglu.com/ay19880703/archive/2011/10/07/157716.html#Feedback0http://m.shnenglu.com/ay19880703/comments/commentRss/157716.htmlhttp://m.shnenglu.com/ay19880703/services/trackbacks/157716.html

@Author錛歛y聽聽聽聽聽聽聽聽@Date錛?011-10-07聽聽聽聽@鏂囩珷鍑哄錛?a >http://cnss-ay.com

@Notice錛氳漿杞借娉ㄦ槑浣滆呬俊鎭紒

聽 聽

鍦ㄤ嬌鐢╲im鐨勮繃紼嬩腑涓紝鎴戝彂鐜版垜鐨剉im閰嶇疆瑕佽漿縐誨埌windows涓婂緢楹葷儲錛屽洜涓烘垜鐨勬彃浠跺拰vim鎻掍歡鏀懼湪vim瀹夎鐩綍涓嬶紝鍜寁im鍘熼厤鐨勬彃浠舵販涓璧蜂簡銆傝屼笖vimrc鏂囦歡涔熻鎴戞敼鐨勫緢涔憋紝鏀懼埌windows涓婇潰鏈繀鑳藉鐩存帴浣跨敤銆傛墍浠ュ氨鏈変簡榪欑瘒鏂囩珷錛岃璁哄浣曟寚瀹氱殑涓涓嚜宸辯殑鏂囦歡澶癸紝vim浠庤繖鏂囦歡澶逛腑杞藉叆鎴戠殑鎻掍歡鍜岃澆鍏ュ垵濮嬪寲鏂囦歡vimrc銆?

聽 聽

鐢ㄨ繃vim鐨勯兘鏅撳緱錛寁im鍦ㄥ垵濮嬪寲涔嬪浼氳澆鍏imrc鏂囦歡錛屽湪windows涓嬭繖涓枃浠舵槸_vimrc錛屽湪linux涓嬫槸.vimrc錛屾垜浠彲浠ヤ慨鏀硅繖涓枃浠舵潵瀹氬埗鎴戜滑鐨勫垵濮嬪寲鎿嶄綔銆備絾鏄垜浠繀欏誨緱鎶婅繖涓獀imrc鏂囦歡鏀懼湪鎸囧畾鐨勪綅緗墠鍙互琚玽im媯嫻嬪埌錛岃繖浜涗釜璺緞鍒嗗埆鏄?VIM,$VIMRUNTIME,$HOME榪欎笁涓幆澧冨彉閲忎笅鎵鎸囩殑璺緞銆傝繖閲屾湁涓ょ鏂規硶錛?

1 淇敼$HOME鐨勮礬寰勶紝鎶婅繖涓幆澧冨彉閲忔寚鍚戞垜浠嚜宸卞畾涔夌殑璺緞錛?VIM鍜?VIMRUNTIME鎸囧悜鐨勮礬寰勫彲鑳絭im榪樻湁鍏跺畠鐢ㄩ旓紝鏈濂藉埆鏀廣備絾鏄慨鏀?HOME涔熶笉鏄緢濂斤紝鐗瑰埆鏄痩inux涓嬶紝寰堝紼嬪簭閮芥槸渚濊禆浜?HOME鐜鍙橀噺鐨勩?

聽 聽

2鎸囧畾$VIMINIT錛屾垜鏄畾涔変簡涓涓?MY_VIM_PATH鐨勭幆澧冨彉閲忥紝榪欓噷闈㈠瓨浜嗘垜VIM閰嶇疆鏂囦歡鍜屾彃浠剁殑鐩綍鍦板潃錛岀劧鍚?VIMINIT涓殑鍐呭鏄細

source聽$MY_VIM_PATH/_vimrc

鍦╲im鍒濆鍖栦箣鍒濅細鏌ョ湅$VIMINIT鏈夋病鏈夎瀹氫箟錛岃嫢琚畾涔変簡灝辨斁寮冨悗闈㈣澆鍏imrc鐨勬搷浣滐紝杞屾墽琛?VIMINIT鍙橀噺鍐呯殑鎿嶄綔銆傚綋鐒朵篃鍙互璁劇疆$MYVIMRC鐨勭幆澧冨彉閲忎負$MY_VIM_PATH/_vimrc錛寁im鍚屾牱浼氬厛杞藉叆$MYVIMRC鍙橀噺涓寚瀹氱殑vimrc鏂囦歡銆傚彧鏈夊綋榪欎袱涓幆澧冨彉閲忛兘娌″畾涔夌殑鏃跺檝im鎵嶅洖鍘誨墿涓嬬殑鐩綍涓壘vimrc鏂囦歡銆?

娉細鍦╳indows涓病娉曞垱寤?vimrc鐨勬枃浠訛紝鎵浠ュ彧鑳界敤_vimrc浠f浛涔嬨?

聽 聽

鍏充簬濡備綍璁劇疆鎻掍歡錛屽府鍔╂枃妗g殑鏌ユ壘璺緞

鍦╲imrc涓姞鍏ュ涓嬭鍙ュ嵆鍙?

set runtimepath=$MY_VIM_PATH,$VIMRUNTIME

鍦╲im榪愯鏃訛紝浼氬湪runtimepath鍙橀噺涓褰曠殑璺緞涓幓鎵懼姞杞芥彃浠訛紝鑳屾櫙鑹茬瓑鍐呭銆?

聽 聽

聽 聽



鏂囩珷鏉ユ簮錛?a href=http://cnss-ay.com/?p=43>http://cnss-ay.com/?p=43

__ay 2011-10-07 21:03 鍙戣〃璇勮
]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
              久久国产精品久久久| 亚洲一区在线免费| 欧美日韩精品免费看 | 在线观看成人小视频| 欧美体内谢she精2性欧美| 欧美日本国产| 国产欧美日韩视频一区二区三区 | 亚洲黄色一区二区三区| 狂野欧美一区| 亚洲精品一线二线三线无人区| 亚洲精品乱码久久久久久按摩观 | 亚洲国产影院| 一本色道久久综合亚洲精品按摩| 99精品视频免费全部在线| 一区二区高清在线观看| 亚洲国产美国国产综合一区二区| 亚洲欧洲一区二区三区| 亚洲一级影院| 欧美大片在线看| 亚洲性色视频| 欧美va天堂| 伊人天天综合| 欧美影视一区| 亚洲人成艺术| 麻豆av一区二区三区| 国产精品久久毛片a| 夜夜嗨av一区二区三区免费区| 久久综合中文| 欧美一区成人| 国产亚洲成av人在线观看导航| 在线性视频日韩欧美| 欧美激情亚洲| 欧美激情精品久久久久久| 国产视频欧美视频| 亚洲欧美日韩综合| 一区二区欧美视频| 欧美日韩理论| 亚洲欧美综合国产精品一区| 亚洲人成在线影院| 欧美午夜免费电影| 亚洲欧美日韩精品久久亚洲区| 亚洲日韩欧美一区二区在线| 欧美激情第二页| 午夜精品三级视频福利| 午夜精品久久久久影视| 亚洲成色www久久网站| 蜜臀av性久久久久蜜臀aⅴ| 美女网站久久| 亚洲欧美视频在线观看视频| 亚洲欧美日韩综合国产aⅴ| 99re6这里只有精品视频在线观看| 欧美成人免费大片| 羞羞答答国产精品www一本| 欧美在线视频不卡| 99精品视频免费观看视频| 亚洲一区欧美激情| 在线 亚洲欧美在线综合一区| 亚洲韩国一区二区三区| 国产精品久久久久久久久久免费看| 欧美在线91| 欧美激情综合五月色丁香小说| 欧美在线视频日韩| 欧美精品不卡| 亚洲国产高清一区| 好吊成人免视频| 亚洲欧美成人一区二区三区| 夜夜嗨一区二区三区| 久久亚洲春色中文字幕久久久| 亚洲欧美另类国产| 欧美久久电影| 亚洲美洲欧洲综合国产一区| 亚洲国产高清一区| 久久女同精品一区二区| 久久久噜噜噜久久久| 欧美视频不卡| 亚洲欧美在线视频观看| 午夜亚洲性色福利视频| 国产精品国产自产拍高清av王其| 亚洲人成在线播放网站岛国| 99成人在线| 国产精品视频xxxx| 午夜精品久久99蜜桃的功能介绍| 亚洲综合99| 国产亚洲亚洲| 久久这里有精品视频| 亚洲国产精品成人综合| 日韩午夜黄色| 亚洲全部视频| 亚洲欧美久久久久一区二区三区| 国产精品久久波多野结衣| 亚洲欧美日韩人成在线播放| 久久艳片www.17c.com| 狠狠色2019综合网| 欧美韩日一区二区三区| 亚洲一区在线免费观看| 猫咪成人在线观看| 亚洲一区二区三区免费观看| 国产视频久久久久| 国产精品啊v在线| 久久综合图片| 亚洲在线国产日韩欧美| 美女网站久久| 欧美影视一区| 午夜精品视频网站| 宅男精品导航| 亚洲日本黄色| 在线看片成人| 在线高清一区| 伊甸园精品99久久久久久| 欧美视频中文字幕在线| 欧美国产一区二区在线观看 | 欧美在线观看一区| 亚洲一区中文| 亚洲午夜影视影院在线观看| 亚洲日本欧美在线| 亚洲精品欧美一区二区三区| 亚洲国产一区二区精品专区| 欧美电影电视剧在线观看| 免费成人av在线看| 欧美成人免费大片| 亚洲欧洲中文日韩久久av乱码| 欧美激情在线观看| 日韩午夜免费视频| 亚洲天堂激情| 在线一区观看| 久久av一区二区| 欧美成人有码| 一区二区精品在线| 久久精品色图| 欧美日韩123| 国产日韩欧美在线| 亚洲人成在线影院| 亚洲欧美日韩国产| 欧美顶级少妇做爰| 一区二区三区视频观看| 久久久久久9| 国产精品久久久久久久一区探花| 国产综合久久久久久| 一区二区三区久久精品| 久久精品国产99国产精品| 亚洲欧洲美洲综合色网| 久久久亚洲精品一区二区三区 | 国产精品第13页| 亚洲电影免费观看高清完整版| 一本久久知道综合久久| 老司机精品导航| 国产一区二区0| 性色av一区二区三区在线观看| 欧美激情中文字幕一区二区| 欧美一区二区三区免费观看视频| 欧美精品午夜| 99在线|亚洲一区二区| 亚洲第一页在线| 米奇777在线欧美播放| 黄网站色欧美视频| 久久亚洲精选| 美日韩精品视频| 亚洲第一搞黄网站| 男女精品视频| 欧美日本一区二区高清播放视频| 亚洲精品社区| a4yy欧美一区二区三区| 欧美午夜不卡视频| 久久福利精品| 欧美成人免费在线| 久久综合中文色婷婷| 亚洲国产精品第一区二区| 亚洲精品久久久久久久久久久 | 欧美在线一级va免费观看| 伊人久久综合| 亚洲视频二区| 亚洲激情视频在线| 亚洲尤物影院| 一本大道久久精品懂色aⅴ| 午夜视黄欧洲亚洲| 一区二区三区高清视频在线观看| 亚洲一区二区高清视频| 亚洲黄色片网站| 亚洲综合国产精品| 日韩视频在线免费观看| 午夜精品剧场| 一二三区精品| 欧美本精品男人aⅴ天堂| 欧美中文字幕视频| 国产精品成人一区二区艾草| 欧美二区在线观看| 黑人巨大精品欧美一区二区| 在线视频精品一区| 亚洲午夜成aⅴ人片| 欧美乱大交xxxxx| 欧美黄色免费网站| 亚洲人妖在线| 欧美肥婆在线| 亚洲国产精选| 中文日韩欧美| 国产精品精品视频| 午夜视频在线观看一区| 久久精品99无色码中文字幕 | 亚洲福利视频一区| 欧美高清视频一区二区三区在线观看|