锘??xml version="1.0" encoding="utf-8" standalone="yes"?>国产视频欧美视频,久久人人超碰,亚洲欧美国产制服动漫http://m.shnenglu.com/xingkongyun/鏄熺┖闄ㄧ殑紼嬪簭灝忕珯zh-cnMon, 29 Sep 2025 19:33:13 GMTMon, 29 Sep 2025 19:33:13 GMT60瀹夊叏瀵嗙爜妗嗙殑璁捐http://m.shnenglu.com/xingkongyun/archive/2009/12/22/103691.html鏉ㄥ漿褰?/dc:creator>鏉ㄥ漿褰?/author>Tue, 22 Dec 2009 05:56:00 GMThttp://m.shnenglu.com/xingkongyun/archive/2009/12/22/103691.htmlhttp://m.shnenglu.com/xingkongyun/comments/103691.htmlhttp://m.shnenglu.com/xingkongyun/archive/2009/12/22/103691.html#Feedback8http://m.shnenglu.com/xingkongyun/comments/commentRss/103691.htmlhttp://m.shnenglu.com/xingkongyun/services/trackbacks/103691.html濡傛灉澶у榪樻湁浠涔堥敭鐩樿褰曠殑鏂規硶鍜岄槻寰$殑鏂規硶涓瀹氫竴瀹氳鍛婅瘔灝忓紵鎴戝晩銆?br>
 /*****************************************************************************************/

閿洏浣滀負璁$畻鏈虹殑涓昏杈撳叆璁懼錛屾槸澶ч儴鍒嗚緭鍏ヤ俊鎭殑涓昏鏉ユ簮錛屼絾鏄垜浠瘡澶╀粠閿洏杈撳叆鐨勪俊鎭畨鍏ㄥ悧錛熼殢鐫浜掕仈緗戠殑鏅強錛屽悇縐嶇綉緇滃簲鐢ㄤ篃鏄眰鍑轟笉絀鳳紝鐢靛瓙璐墿錛岀綉涓婅亰澶╃瓑絳夌瓑絳夛紝姣忓ぉ鎴戜滑閮戒細鍦ㄥ悇縐嶇▼搴忎笂杈撳叆鍚勫紡鍚勬牱寰楀垎瀵嗙爜鍟婄敤鎴峰悕鍟婇摱琛屽崱鍙峰晩錛屼綘璁や負榪欎簺縐樺瘑瀹夊叏鍚楋紵閭d綅鍚屽瑕佽浜嗭細娌′簨鍟婏紝涓嶉兘鏄湁淇濇姢鎺柦鍚楋紝鍍忎粈涔?/span>QQ鐨勫彿縐版棤鎳堝彲鍑葷殑nprotect鎶鏈紝緗戦摱涔熸湁鍚勭瀹夊叏鎻掍歡錛屾病浜嬬殑錛?/span>” “鍛靛懙錛岀湡鐨勫儚浠栦滑璇寸殑閭f懇瀹夊叏鍚楋紝閭e彲涓嶄竴瀹氾紝娌℃湁浠涔堟槸緇濆鐨?/span>錛屼笅闈㈡垜浠氨鏉ョ湅鐪嬮敭鐩樼殑縐樺瘑錛岀湅鐪嬮粦瀹滑鏄浣曡褰曚綘鐨勯敭鐩樻搷浣滅殑錛屼互鍙婃垜浠濡備綍鎶靛盡榪欎簺鐚ョ悙鐨勬敾鍑繪柟寮忋?/span>

 

.閿洏鐨勭‖浠舵ā鍨?/span>

鍏跺疄閿洏搴旇綆楁槸璁$畻鏈轟腑鏈綆鍗曠殑璁懼浜嗭紝鍦ㄦ垜浠嬌鐢ㄧ殑鏅氱殑璁$畻鏈虹郴緇熶腑錛屼笌閿洏鏈夊叧鐨勭‖浠惰鐧戒簡涔熷氨鏄袱涓姱鐗囷紝i8048鍜?/span>i8042 銆?/span>i8042涔熷氨鏄?/span>intel8042,浣嶄簬涓繪澘涓?/span>,CPU閫氳繃IO绔彛涓?/span>i8042閫氫俊,i8042璐熻矗璇誨彇閿洏鎸夐敭鐨勬壂鎻忓悧鎴栨槸鍙戦佷釜涓敭鐩樺懡浠?/span>.i8048,瀹冩槸浣嶄簬閿洏涓殑,鏄皢閿洏涓婄殑鎸夐敭杞崲鎴愭墍璋撶殑鎵弿鐮佺殑錛岀劧鍚庝紶閫佺粰i8042銆傚懙鍛碉紝灝辨槸榪欐湯綆鍗曚釜涓滆タ銆備笂闈㈣鐨勯兘鏄瘮杈冭佺殑璁$畻鏈虹殑緇撴瀯浜嗭紝鐜板湪榪欎簺鑺墖閮介泦鎴愬埌鍗楁ˉ鑺墖緇勯噷闈㈠幓浜嗭紝涓嶈繃鍘熺悊榪樻槸榪欐牱鐨勩?/span>

褰撴垜浠寜涓嬩竴涓敭涓庢姮璧風殑鏃跺欓兘浼氳Е鍙戦敭鐩樼殑涓柇錛屽湪鑰佹棭鐨勮綆楁満涓兘鏄噰鐢ㄤ袱鐗?/span>i8259A鑺墖綰ц仈鏉ョ鐞嗕腑鏂殑錛岄敭鐩樻寕鍦ㄤ富鐗囩殑IRQ1寮曡剼涓婏紝褰撴湁鎸夐敭鎸変笅鎴栨姮璧鋒槸浼氬紩鍙戠‖浠朵腑鏂紝鐒跺悗浼氳皟鐢ㄧ浉搴旂殑涓柇澶勭悊紼嬪簭榪涜澶勭悊.

鍦ㄥ疄妯″紡涓庝繚鎶ゆā寮忎笅瀵逛簬涓柇鐨勫鐞嗘槸涓嶅悓鐨勩傚湪瀹炴ā寮忎笅鎴戝氨涓嶈浜嗭紝涔熻涓嶇殑浜嗭紝鑷繁鐪嬬湅寰満鍘熺悊銆傚湪淇濇姢妯″紡涓嬫槸閲囩敤IDT瀵逛腑鏂繘琛岀鐞嗙殑錛屽湪IDT涓槸鍚勭鍚勬牱鐨勯棬鍟婏紝鍟ヤ腑鏂棬錛岄櫡闃遍棬錛岃皟鐢ㄩ棬鍟婄瓑絳夌瓑絳夛紝瀵逛簬閿洏涓柇鍦?/span>XP涓嬪搴旂殑鏄?/span>0X31鍙蜂腑鏂湇鍔★紝浣嗕篃鏈夌殑XP瀵瑰簲鐨勪簨0x93錛屽師鍥犳垜涔熶笉澶槑鐧斤紝鍙嶆鍦ㄦ垜鐨勭郴緇熶笂鏄?/span>0x31鍙楓?/span>

濂戒簡鏃㈢劧閮藉凡緇忛兘璋冪敤涓柇澶勭悊紼嬪簭浜嗭紝閭d箞鍦ㄧ粡榪囦竴緋誨垪澶嶆潅鐨勫鐞嗘渶緇堟垜浠氨鍙互鍦ㄥ簲鐢ㄥ眰涓婅垝鑸掓湇鏈嶇殑鐢?/span>WORD鎵撳瓧浜嗐?/span>

濂戒簡錛岀‖浠惰繖鍧楀氨璇村埌榪欙紝涓嬮潰鐢ㄥ埌浜嗙浉鍏崇殑鎴戜滑鍦ㄨ銆?/span>

 

浜?/span>.鐚ョ悙鐨勯敭鐩樿褰曞櫒

瀵逛簬閭d簺鐩楀彿鐨勬墍璋撶殑榛戝鎴戞槸寰堜笉榻跨殑錛岃繖閲屾垜浠鎺㈣涓浜涚獌鍙栭敭鐩樹俊鎭殑鏂規硶騫朵笉鏄洿浜嗗啓涓敭鐩樿褰曠殑鐩楀彿紼嬪簭錛屾垜浠彧鏄珯鍦ㄦ敾闃插绔嬬粺涓鐨勮搴︽潵鐪嬪悇寮忕洍鍙鋒墜孌碉紝騫剁粰鍑虹浉鍏崇殑闃插盡鎺柦.

鎴戠煡閬撶殑涓浜涚洍鍙風殑鎵嬫涔熶笉澶氾紝鑰屼笖閮芥槸涓浜涙瘮杈冩櫘閬嶇殑鎵嬫硶錛屾湁浜涗篃閮芥槸鐖風埛杈堢殑鎶鏈簡錛屼笉榪囩幇鍦ㄨ繕鏄緢濂界敤錛屽ソ澶氱洍鍙風殑榪樻槸鐢ㄨ繖浜涘湡鏋湡鐐墦鎵撴墦鎵撳姭

WINDOWS緋葷粺鏄垎涓哄簲鐢ㄥ眰涓庡唴鏍稿眰鐨勶紝浠?/span>CPU鐨勮搴︾湅灝辨槸RING3涓?/span>RING0銆傚簲鐢ㄥ眰鏄彈綆″埗鐨勶紝涓嶅彲榪涜绔彛IO錛屼笉鍙墽琛岀壒鏉冩寚浠わ紝闄愬埗澶氬銆傚唴鏍稿氨涓嶈浜嗭紝鎯沖共鍢涘氨騫插惂銆?/span>

 

鎴戜篃鏄寜鐓у簲鐢ㄥ眰涓庡唴鏍鎬袱涓眰闈㈣繘琛岃璁虹殑銆傚ソ浜嗗簾璇濆お澶氫簡錛岃繘鍏ユ棰樺惂.

 

1.鐖風埛杈堢殑WM_GETTEXT娑堟伅鑾峰彇瀵嗙爜

 

鐢ㄨ繃MFC鐨勯兘鐭ラ亾瀵嗙爜妗嗗惂錛屽氨閭d釜******鐨勬瀛愶紝浠栧叾瀹炴槸涓枃鏈鍙笉榪囨槸鍔犱簡瀵嗙爜灞炴ц屽凡錛屾湰璐ㄤ笂榪樻槸鏂囨湰妗嗐傚浜庢枃鏈鎴戜滑灝卞彲浠ラ氳繃瀵瑰叾鍙戦侊擠錛伎錛э譏錛達即錛ワ幾錛存秷鎭潵鑾峰彇瀵嗙爜鐨勩備笉榪囪繕鏈夌偣闂錛屽湪WIN98緋誨垪涓繖鏍峰氨OK浜嗭紝浣嗘槸NT鍚庯紝浣犺灝辨槸瀵圭潃瀵嗙爜妗嗗ぇ鍠?/span>WM_GETTEXT鏄病鐢ㄧ殑錛屽瘑鐮佹浼氳:“浣犲張涓嶆槸鎴戜滑瀹墮噷鐨勶紝鎴戝嚟鍟ユ妸瀵嗙爜鍛婁綘鍟?#8220;.鍏跺疄榪欐槸璺熸搷浣滅郴緇熸湁鍏崇殑錛屽湪WIN98涓嬫墍鐢ㄧ殑榪涚▼鏄叡浜竴涓?/span>4GB鐨勮櫄鎷熷唴瀛樼殑錛岄偅涓氨娌′粈涔堜綘鐨勬垜鐨勪簡錛屾墍鏈夌殑閮芥槸澶у鍏辨湁鐨勶紝鎵浠ヤ竴涓繘紼嬪鍙︿竴涓繘紼嬪彂閫佷竴涓?/span>WM_GETEXT娑堟伅錛屽簲涓哄ぇ瀹墮兘鏄嚜宸變漢鎵浠ュ瘑鐮佸氨鍛婁綘浜嗐備絾鏄埌浜?/span>NT鍚庡悇涓繘紼嬪氨闂瑰垎瀹朵簡錛屾瘡涓繘紼嬬嫭浜?/span>4GB鐨勮櫄鎷熷唴瀛橈紝鍚勪釜榪涚▼涔嬮棿鏄簰鐩擱殧紱葷殑錛屾墍浠ュ氨娌′漢鐞嗕綘浜嗐?/span>

鎴戜滑瑕侀噰鐢ㄤ簺鐗規畩鐨勬墜孌墊墠鑳芥垚鍔熴備篃灝辨槸瑕佹妸浣犵殑閭f鍙戦?/span>WM_GETTEXT娑堟伅鐨勪唬鐮佺Щ鍒扮洰鏍囪繘紼嬩腑鍘繪墽琛岋紝鏂規硶榪樻槸鏈夌殑錛屾垜浣跨敤鐨勮繙紼嬬嚎紼嬫妧鏈紝涔熷氨鏄皢涓涓姛鑳芥ā鍧楄濡傚埌鐩爣榪涚▼涓劧鍚庢墽琛岋紝榪欐牱灝?/span>OK浜嗐傚浜庡浣曡繘琛岀嚎紼嬫敞鍏ワ紝鏂規硶寰堝錛?/span>google涓涓嬪氨鍙互浜嗐?/span>

鍘熺悊灝辨槸榪欐牱寰堢畝鍗曪紝闂灝卞湪鎬庢牱鍦ㄧ洰鏍囪繘紼嬩腑鍘繪墽琛屼唬鐮侊紝榪欑鏂規硶灝辮鍒拌繖鎶娿?/span>

 

 

2.灞犲か鐨勯挬瀛?/span>

 

鍛靛懙錛岀帺榪?/span>dota鍚楋紝瀵瑰氨鏄睜澶敤鐨勯挬瀛愶紝鍦?/span>windows涓悓鏍鋒湁閽╁瓙錛岃屼笖涔熸槸鐩稿綋鐨勭妧鍒┿?/span>

浣跨敤閽╁瓙鐩稿綋鐨勭畝鍗曪紝灝變竴涓?/span>API鍑芥暟 SetWindowsHookEx錛屼笉榪囧唴娑靛緢涓板瘜錛屽湪windows涓嬪瓨鍦ㄥ悇寮忓悇鏍風殑閽╁瓙錛屾秷鎭挬瀛愶紝榧犳爣閽╁瓙錛岄敭鐩橀挬瀛愶紝鏃ュ織閽╁瓙錛岀瓑絳夛紝鍏蜂綋鐨勭湅鐪?/span>MSDN錛岃繖浜涢挬瀛愬悇鏈夊悇鐨勭敤閫旓紝瀵逛簬榛戝浠潵璇翠富瑕佷細鐢ㄥ埌娑堟伅閽╁瓙錛岄敭鐩橀挬瀛愪笌鏃ュ織閽╁瓙錛岃繖浜涢挬瀛愰兘鍙互鐢ㄦ潵鐩戞帶閿洏錛屼笅闈㈠垎鍒潵璇?/span>.

 

(1)寰鏃ラ粍鑺?/span>鈥?/span>閿洏閽╁瓙

涓嶈榪鋒亱鍝ワ紝鍝ュ彧鏄釜浼犺銆?/span>

                                         ------涓鑴戞畫鍎跨璇?/span>

閿洏閽╁瓙鍦ㄥ綋騫村彲鏄浉褰撶殑杈夌厡錛屽湪閭d釜Rootkit榪樹笉鏄緢鐩涜鐨勫勾浠o紝鍚勭鐩楀彿杞歡

鍑犱箮鎬繪槸鍜屼粬鑱旂郴鍦ㄤ竴璧風殑錛屽彧涓嶈繃榪欏嚑騫寸敱浜庢墍璋撶殑涓誨姩闃插盡鏉杞殑鍑虹幇錛岃繖縐嶆妧鏈墠鎱㈡參鐨勬秷澶?/span>.

閿洏閽╁瓙鍒嗕負鍏ㄥ眬閽╁瓙涓庡眬閮ㄩ挬瀛愩傞敭鐩橀挬瀛愬畨瑁呬箣鍚庡彲浠ユ埅鑾鋒墍榪涚▼鐨勯敭鐩樹俊鎭傚眬閮ㄩ挬瀛愬彧鍙互鎴幏瀹夎綰跨▼鐨勯敭鐩樹俊鎭傛棦鐒惰鐩楀彿鍚楋紝褰撶劧鏄?/span>IC鍗★紝IQ鍗$粺緇熷憡璇夋垜瀵嗙爜錛岃澶ч潰縐拻緗戯紝灝辮瀹夎鍏ㄥ眬閽╁瓙銆?/span>

閿洏閽╁瓙涔熷垎涓轟袱縐嶏細鏅氱殑閿洏閽╁瓙涓庝綆綰ч敭鐩橀挬瀛愩傚浜庤繖涓ょ閽╁瓙鐨勫尯鍒垜鑷繁鍦ㄧ紪紼嬩腑鎬葷粨鐨勬槸錛氫綆綰ч敭鐩橀挬瀛愬彲浠ユ埅鑾蜂竴浜涚郴緇熸寜閿紝姣斿Windows鍋ワ紝浣嗘槸鏅氱殑灝變笉琛屼簡銆傛垜鏇劇粡鍐欎簡涓帺Dota鏃跺睆钄?/span>Windows鍋ョ殑鐢ㄧ殑鏄綆綰ч挬瀛愶紝鏅氱殑涓嶈.濡傛灉鍙槸鎷︽埅涓竴鑸殑鎸夐敭涓ょ閽╁瓙鏃犳墍璋撲簡.

鍏蜂綋鐨勭紪紼嬪緢綆鍗?/span>:璋冪敤SetWindwosHookEx鍑芥暟,鍙傛暟灝卞~鍏?/span> WH_KEYBORAD錛堟櫘閫氶挬瀛愶級鎴栬?/span>WH_KEYBOARD_LL錛堜綆綰ч挬瀛愶級錛岀劧鍚庡啓涓挬瀛愮殑鍥炶皟鍑芥暟錛屽湪鍥炶皟鍑芥暟閲岄潰灝卞彲浠ヨ幏鍙栨寜閿殑铏氭嫙閿爜浜嗭紝鍦ㄨ铏氭嫙閿爜緇忚繃澶勭悊灝卞緱鍒版垜浠兂瑕佺殑浜?/span>.

鍐嶆彁涓鐐瑰氨鏄叧浜?/span>SHIFT閿姸鎬佷笌Caps涓?/span>Num鐘舵佺殑媯嫻嬶紝鍙璋冪敤GetKeyState鍑芥暟灝卞彲浠ヤ簡錛屽叿浣撶殑涓嶈浜嗭紝鑷繁鐪?/span>MSDN鍚с?/span>

 

 

錛?/span>2錛夌鏋楄箠寰?/span>鈥?/span>鏃ュ織閽╁瓙

 

鏃ュ織閽╁瓙鏄敤鏉ユ嫤鎴緭鍏ュ埌緋葷粺娑堟伅闃熷垪涓殑杈撳叆娑堟伅鐨勯挬瀛愶紝閿洏娑堟伅鏃㈢劧灞炰簬杈撳叆娑堟伅錛岄偅灝卞嬀浣忓惂銆?/span>

鐢ㄦ硶涔熸槸so easy錛岃皟鐢?/span>SetWindwosHookEx鍑芥暟浼犻?/span>WH_JOURNALRECORD鍙傛暟緇欎粬,鍦ㄤ粬鐨勫洖璋冨嚱鏁伴噷闈㈡湁涓寚鍚?/span>EVENTMSG鐨勬寚閽堬紝緇撴瀯濡備笅錛?/span>

typedef struct {

    UINT message;

    UINT paramL;

    UINT paramH;

    DWORD time;

    HWND hwnd;

} EVENTMSG, *PEVENTMSG;

鎴戜滑鍙嫤鎴?/span>message ==WM_KEYDOWN鐨勬秷鎭紝灝辨槸鎸夐敭鎸変笅鐨勬秷鎭暒錛岀劧鍚?/span>paramL&0x000000FF鐨勫煎氨鏄櫄鎷熼敭鐮侊紝鍓╀笅鐨勫拰閿洏閽╁瓙灝變竴鏍蜂簡錛屼笉璇翠簡錛屼笅涓鑺傚惂銆?/span>

 

錛?/span>3錛夊畬緹庣殑涓栫晫---涓嫳鏂囪褰曠殑娑堟伅閽╁瓙

 

鍒扮洰鍓嶄負姝㈡垜浠褰曞埌寰楅兘鍙槸浜?/span> abc123榪欎簺鐨勫瓧姣嶆暟瀛楋紝閭d綅灝忔湅鍙嬭璇翠簡錛屾垜瑕佺煡閬撲粬鍦ㄧ綉涓婄殑鑱婂ぉ鍐呭錛岃鍚楋紵娑堟伅閽╁瓙灝辯珯鍑烘潵浜?/span>,”no problem,璁板綍涓枃淇烘嬁鎵嬪晩

娑堟伅閽╁瓙錛岃鍚嶇煡鎰忥紝鑲畾鏄敤鏉ヨ繃婊ゆ秷鎭殑銆傛垜浠厛鏉ヤ簡瑙d竴涓蹇?/span>”IME””.

IME 鏄緭鍏ユ硶緙栬緫鍣?/span>(Input Method Editor) 鐨勮嫳鏂囩緝鍐?/span>(IME)錛屽畠鏄竴縐嶄笓闂ㄧ殑搴旂敤紼嬪簭錛岀敤鏉ヨ緭鍏ヤ唬琛ㄤ笢浜氬湴鍖轟功闈㈣璦鏂囧瓧鐨勪笉鍚屽瓧絎︺?/span>

璇寸櫧浜?/span>,鎴戜滑騫蟲椂杈撳叆姹夊瓧鏃跺叾瀹為兘鏄窡榪欎釜IME鎵撲氦閬撶殑銆?/span>IME涔熸槸浼氬彂鍑哄緢澶氱殑娑堟伅鐨勶紝濡?/span>

WM_IME_CHAR                    WM_IME_COMPOSITION

WM_IME_COMPOSITIONFULL       WM_IME_CONTROL

WM_IME_ENDCOMPOSITION        WM_IME_KEYDOWN

WM_IME_KEYUP                   WM_IME_NOTIFY

WM_IME_REQUEST                 WM_IME_SELECT

WM_IME_SETCONTEXT             WM_IME_STARTCOMPOSITION

 

鎴戜滑鐜板湪涓昏鍏沖績涓涓秷鎭?/span>WM_IME_COMPOSITION錛屽氨鏄綋瑕佹嫾鍑轟竴涓瓧鐨勬椂鍊欎細鍙戝嚭榪欎釜娑堟伅.錛屽茍涓斿壇鍙傛暟涓?/span>GCS_RESULTSTR鐨勬椂鍊欙紝灝辮鏄庤緭鍏ュ畬浜嗭紝鍙互灝嗘嫾鍑虹殑鍙ュ瓙璇誨嚭鏉ヤ簡錛岃繖灝卞緱鍒頒簡姹夊瓧浜?/span>.,涓嬮潰涓哄弬鑰冧唬鐮?/span>:

 

/* this code from ZWELL 鑾峰緱杈撳叆娉曞鐞嗗悗鐨勫瓧絎︿覆 */

if(pmsg->message==WM_IME_COMPOSITION){

               DWORD dwSize;

               char lpstr[128];

               if(pmsg->lParam & GCS_RESULTSTR){

                      //鍏堣幏鍙栧綋鍓嶆鍦ㄨ緭鍏ョ殑紿楀彛鐨勮緭鍏ユ硶鍙ユ焺

                      hIMC = ImmGetContext(hWnd);

                      if(!hIMC) return 0;

                      // 鍏堝皢ImmGetCompositionString鐨勮幏鍙栭暱搴﹁涓?/span>0鏉ヨ幏鍙栧瓧絎︿覆澶у皬.

                      dwSize = ImmGetCompositionString(hIMC, GCS_RESULTSTR, NULL, 0);

                      // 緙撳啿鍖哄ぇ灝忚鍔犱笂瀛楃涓茬殑NULL緇撴潫絎﹀ぇ灝?/span>,

                      // 鑰冭檻鍒?/span>UNICODE

                      dwSize += sizeof(WCHAR);

                      memset(lpstr, 0, sizeof(lpstr));

                      // 鍐嶈皟鐢ㄤ竴嬈?/span>.ImmGetCompositionString鑾峰彇瀛楃涓?/span>

                      ImmGetCompositionString(hIMC, GCS_RESULTSTR, lpstr, dwSize);

                      //鐜板湪lpstr閲岄潰鍗蟲槸杈撳叆鐨勬眽瀛椾簡銆備綘鍙互澶勭悊lpstr,褰撶劧涔熷彲浠ヤ繚瀛樹負鏂囦歡...

                      //MessageBox(NULL, lpstr, lpstr, MB_OK);

 

 

鍏跺疄鍦ㄨ緭鍏ユ眽瀛楃殑鏃跺欎篃鏄細鍙戝嚭WM_CHAR涓?/span>WM_KEYDOWN榪欎簺娑堟伅鐨勶紝鍙笉榪?/span>WM_CHAR鐨勫弬鏁頒笌杈撳叆鑻辨枃鏄槸涓嶅悓鐨勩傛眽瀛楃殑杈撳叆瀹為檯涓婃槸涓や釜WM_CHAR錛岀敤鍐呯爜灝卞彲浠ュ垽鏂槸鍚﹁緭鍏ョ殑鏄惁鏄眽瀛楀瓧絎︺傚鏋滄槸錛屾眽瀛椾袱涓瓧鑺傜殑鏈楂樹綅閮芥槸1錛岃繛緇袱嬈″垽鏂氨鍙互鍋氬埌銆傚嵆姣忔鐨?/span>CHAR瀛楃鐨勬渶楂樹綅鏄惁鏄?/span>1錛屽鏋滄槸錛岃浣忚繖涓瓧絎︼紝鐒跺悗褰撲笅CHAR瀛楃鏉ュ埌鏄紝濡傛灉鏈楂樹綅榪樻槸1錛屽氨鍙互灝嗚繖涓や釜瀛楃鍚堟垚姹夊瓧銆傝繖鏍峰氨鍙互璁板綍涓涓眽瀛椾簡銆?/span>

鑷充簬WM_KEYDOWN鍙互鐢ㄦ潵璁板綍闈?/span>ASCII鐨勬寜閿紝鍍?/span>F1鈥擣12錛?/span>TAB錛?/span>ENTER絳夌瓑銆?/span>

榪欐牱灝辨槸涓嫳鏂囧畬緹庣殑閿洏璁板綍浜?/span>.

 

 

(4)鐢ㄦ償宸磋儭涓鍚?/span>.---搴旂敤灞傜殑鎶楀嚮

 

搴旂敤灞傞敭鐩樿褰曠殑灝忎紟淇╁氨璇磋繖鍑犵鍚э紙鍛靛懙錛屼亢涔熷氨浼氳繖鍑犵錛?/span>,鏃㈢劧瑕佹敾闃茬粺涓錛岄偅鎴戜滑灝辨潵璋堣皥濡備綍鏉ラ槻寰″惂銆傚湪搴旂敤灞傞槻寰′釜浜烘劅瑙夊緢鏄浮鑲嬬殑錛屽疄鐜頒篃寰堟槸楹葷儲錛屾晥鏋滀篃涓嶅ソ錛屼笉榪囪繕鏄璇村惂錛?/span>

棣栧厛璇磋鍏ㄥ眬閿洏閽╁瓙鍚э紝鍏ㄥ眬閿洏閽╁瓙鏄笉鑳界嫭绔嬪瓨鍦ㄧ殑錛屼粬蹇呴』闄勫姞涓涓姩鎬侀摼鎺ュ簱鏂囦歡錛屽洜涓哄叏灞閽╁瓙鏄鐩戞帶鎵鏈夌殑榪涚▼鐨勶紝鎵浠ヨ繖涓ā鍧楀氨瑕佹敞鍏ュ埌鍏朵粬鐨勮繘紼嬬殑鍦板潃絀洪棿涓幓錛屾墍浠ヨ鍐欎竴涓崟鐙殑妯″潡銆?/span>

鎴戜滑鐭ラ亾鍦?/span>Windows涓嬪姞杞戒竴涓ā鍧楁椂浣跨敤鐨?/span>API鏄?/span>LoadLibrary鍑芥暟錛岃繖涓嚱鏁板唴閮ㄥ張浼氳皟鐢?/span>LoadLibraryEx鍑芥暟錛?/span>windows搴曞眰鏄?/span>UINCODE鐨勶紝鎵浠ュ簲璇ヨ皟鐢ㄧ殑鏄?/span>LoadLibraryExW銆傚鏋滄垜浠啓鐨勬甯哥▼搴忥紝濡傛灉璋冪敤浜?/span>LoadLibrary閭f懇LoadLibraryExW鍑芥暟鐨勮繑鍥炲湴鍧搴旇浣嶄簬Kernel32.dll涓紝鎴栬呮垜浠氨鏄洿鎺ヨ皟鐢ㄤ簡LoadLibraryExW閭f懇榪斿洖鍦板潃搴旇浣嶄簬鎴戜滑鐨勭▼搴忎腑銆備絾鏄鏋滄槸琚浜嗛挬瀛愬悗錛屽綋浣犳寜涓嬩竴涓仴鍚庯紝緋葷粺浼氫笅鎸夐敭鐒︾偣紼嬪簭鐨勫湴鍧絀洪棿涓姞杞介粦瀹㈠啓鐨勯敭鐩樿褰曟ā鍧楋紝璋冪敤鐨勬槸LoadLibraryExW錛岄偅鎽╄繖涓嚱鏁扮殑榪斿洖鍦板潃灝變笉鏄互涓婄殑涓ょ鎯呭喌浜嗭紝緇忔垜鏄疄楠屾槸浣嶄簬user32.dll涓傚搱鍝堬紝鏍規嵁榪欎竴鐐規垜浠氨鍙互鍒ゆ柇涓涓ā鍧楁槸鍚︿負闈炴硶鍔犺澆妯″潡浜?/span>.

鍘熺悊灝辨槸榪欐牱鍟︺傚叿浣撶殑瀹炵幇瑕佺敤鍒?/span>APIHook鎶鏈簡銆傚湪銆?/span>Windwos鏍稿績緙栫▼銆嬩腑鏈夌畝緇嶇殑銆傚彲浠?/span>HOOKIAT涔熷彲浠?/span>InLineHook錛屾垜鐢ㄧ殑鏄?/span>InLineHokk錛屽湪鑷繁鍐欑殑HOOk鍑芥暟涓鍏堣幏鍙?/span>[ESP]鐨勫鹼紝榪欎釜灝辨槸榪斿洖鍊間簡錛屽叿浣撲負浠涔堝簲璇ラ兘鏄庣櫧鍚э紝涓嶆槑鐧藉氨鎵炬湰姹囩紪涔﹀ソ濂借ˉ琛ュ惂銆傞偅鎽╁氨鎷胯繖涓繑鍥炲煎幓姣旇緝灝卞彲浠ヤ簡銆傜畝鍗曞惂銆傘?/span>

褰撶劧瀵逛簬HOOKAPI浣犱篃鍙互鐢ㄥ井杞殑閭d釜Hook搴擄紝閭e氨鏇寸畝鍗曚簡銆?/span>

 

鍙兘媯嫻嬫槸涓嶅鐨勶紝澶鍔ㄤ簡錛屾垜浠簲璇ヤ富鍔ㄥ嚭鍑匯?/span>

Windows涓嬬殑閽╁瓙閫昏緫涓婃槸涓涓摼鐘剁殑錛屼竴涓郴緇熶腑鍙互瀹夎寰堝鐨勯挬瀛愶紝榪欎簺閽╁瓙浼氬艦鎴愪竴涓挬瀛愰摼錛屽厛瑁呯殑閽╁瓙鍦ㄦ渶鍓嶅ご錛屽墠闈㈢殑閽╁瓙閫氳繃璋冪敤CallNextHookEx鍑芥暟灝嗕俊鎭紶緇欏悗闈㈢殑閽╁瓙錛屽涓嶄笉璋冪敤榪欎釜鍑芥暟閭f懇閾懼瓙灝辨柇浜嗭紝鍚庨潰鐨勯挬瀛愭案榪滀簰鎯犺幏鍙栦俊鎭?/span>

濂戒簡錛岃仾鏄庣殑浣犱竴瀹氭兂鍒頒簡銆傚錛屾垜浠笉寰涓嬩紶閫掍俊鎭紝鎴戜滑鑷繁澶勭悊錛岃涓嬮潰鐨勯挬瀛愮灙鐫鐪肩潃鎬ュ幓鍚с?/span>

鍏蜂綋鍋氭硶涓猴細鎴戜滑鍦ㄦ垜浠殑紼嬪簭涓涓婂眬閮ㄩ挬瀛愶紝鍦ㄥ眬閮ㄩ挬瀛愮殑鍥炶皟鍑芥暟涓垜浠埅鑾鋒寜閿秷鎭紝鎴戜滑鑷繁瀛樿搗鏉ワ紝鐒跺悗鍐嶇粰瀵嗙爜妗嗗彂涓亣娑堟伅錛屾瘮濡傛寜涓嬩簡A鍋ワ紝鎴戜滑鐢ㄦ垜浠殑灞閮ㄩ挬瀛愭埅鑾蜂簡A鍋ユ秷鎭紝鎴戜滑淇濆瓨璧鋒潵錛岀劧鍚庢垜浠粰瀵嗙爜妗嗗彂涓亣娑堟伅錛岋紝灝辮鎴戜滑鎺ュ彈鍒頒簡涓?/span>B鍋ワ紝鐒跺悗璁╀笉璋冪敤閭d釜CallNextHookEx鍑芥暟錛岃屾槸鐩存帴榪斿洖1錛岃繖鏍蜂笅闈㈢殑閽╁瓙灝?/span>game over 浜?/span>.

 

濂戒簡錛屽簲鐢ㄥ眰鐨勯敭鐩樼洃鎺т笌鍙嶇洃鎺у氨璇磋繖浜涘惂錛岀敱浜庢潃姣掕蔣浠剁殑鍙戝睍錛岀壒鍒槸鎵璋撶殑鐗?/span>X涓誨姩闃插盡鐨勫嚭鐜幫紝榪欎簺閮藉凡榪涗簡鍘嗗彶鐨勫瀮鍦懼爢浜嗭紝鐜板湪鏄?/span>RootKit鐨勬椂浠o紝鎵撳姭涔熻璁蹭笌鏃朵勘榪涳紝涓嬮潰鎴戜滑灝辨潵鐪嬬湅ring0涓嬬殑閿洏璁板綍鐨勬墜孌靛惂銆?/span>

 

3.鏂扮殑鎴樺満錛屾柊鐨勬垬鏂?/span>鈥攔ootkit鐨勭柉鐙?/span>

 

浜洪兘鏄睘椹寸殑錛屼笉鎵撲笉閫兼槸涓嶄細璧扮殑.

                                 ----------淇虹殑涓浣嶈佸笀璇寸殑

鍦?/span>ring3涓嬬尌鐞愰粦瀹滑鐨勫畨閫歌琚潃杞墦鐮翠簡錛岀敓瀛樿繕鏄浜°傚綋鐒舵槸瑕佺敓瀛樹笅鍘諱簡錛屾庢病鍔烇紵”TMD,鍙嶄簡錛屾垜浠鍜屾潃杞鐫騫?/span>銆傛父鎴忚鍒欒鏀瑰彉浜嗐傘傞粦瀹㈣蔣浠朵笉鍦ㄦ槸鍙仛鑰侀紶琚潃杞繖鍙ぇ鐚埌澶勬挼榪欒窇錛岃侀紶瑕佸悆鐚暒銆?/span>

 

4.涓涓煩----閿洏榪囨護椹卞姩

 

鏃㈢劧鍒頒簡鍐呮牳鐨勯鍦幫紝閭f垜浠氨鏉ョ湅鐪嬪湪鍐呮牳涓槸濡備綍澶勭悊鎸夐敭娑堟伅鐨勶紝鎴戜滑浠庢寜涓嬩竴涓仴鍒版垜浠湪WORD鐪嬪埌榪欎釜瀛楁瘝錛岀┒绔熷彂鐢熶簡浠涔?/span>,涓嬮潰鏄綉涓婅鐨?/span>:

 

/*寮曠敤鑷?/span>: http://hi.baidu.com/buzztiger/blog/item/a851712b3739c924d52af170.html */

 

鍐欒繃windows紼嬪簭鐨勪漢閮界煡閬擄紝win32紼嬪簭鏄熀浜庢秷鎭┍鍔ㄧ殑錛屽叾涓氨鏈夐敭鐩樻秷鎭紝榪欎釜娑堟伅鍏跺疄鏄?/span>csrss.exe榪欎釜榪涚▼鍙戦佺粰搴旂敤紼嬪簭鐨勶紝鑰屽湪搴旂敤紼嬪簭涓垜浠彲浠ヤ嬌鐢?/span>setWindowsHook鐨勬柟娉曟潵鑾峰緱閿洏娑堟伅錛屼粠鑰屽疄鐜版敼閿晩錛屾崟鎹夌敤鎴鋒寜閿唴瀹廣傞偅涔?/span>csrss.exe榪欎釜榪涚▼鐨勯敭鐩樻秷鎭槸鎬庝箞鏉ョ殑鍛紵鍘熸潵csrss.exe涓湁涓?/span>win32!RawInputThread榪欎釜綰跨▼錛岃繖涓嚎紼嬮氳繃涓涓?/span>GUID錛屽嵆GUID_CLASS_KEYBOARD錛?/span>DEFINE_GUID(GUID_CLASS_KEYBOARD, 0x884b96c3, 0x56ef, 0x11d1, 0xbc, 0x8c, 0x00, 0xa0, 0xc9, 0x14, 0x05, 0xdd)鏉ヨ幏寰楅敭鐩樿澶囨爤涓?/span>PDO鐨勭鍙烽摼鎺ュ悕銆?/span>win32!RawInputThread鎵ц鍒?/span>win32k!openDevice錛岃皟鐢?/span>zwCreateFile鎵撳紑璁懼錛岀劧鍚庤皟鐢?/span>zwReadFile涓庨敭鐩橀┍鍔ㄩ氫俊浜嗐傚畠浼氬垱寤轟竴涓?/span>IRP_MJREAD鐨?/span>IRP鍙戦佺粰閿洏椹卞姩錛岃岄敭鐩橀┍鍔ㄩ氬父浣胯繖涓?/span>IRP Pending錛岃繖鏍峰畠灝變細涓鐩磋鏀懼湪閭i噷絳夊緟錛岀瓑鏉ユ潵鑷敭鐩樼殑鏁版嵁錛屽嵆win32!RawInputThread榪欎釜綰跨▼涔熶細涓鐩寸瓑寰咃紝絳夊緟榪欎釜璇繪搷浣滅殑瀹屾垚銆傚綋閿洏鏈夐敭鎸変笅鏃惰繖涓?/span>IRP灝嗕細瀹屾垚錛?/span>win32!RawInputThread灝嗗寰楀埌鐨勬暟鎹繘琛屽鐞嗭紝鍒嗗彂緇欏悎閫傜殑榪涚▼錛堥氬父鏄幏寰楃劍鐐圭殑榪涚▼錛夎繖鏃?/span>win32!RawInputThread鍙堜細绔嬪嵆鍐嶈皟鐢?/span>nt!ZwReadFile瑕佹眰璇誨叆鏁版嵁錛屽張寮濮嬩簡涓嬩竴涓瓑寰咃紝鍛ㄨ屽濮?/span>

 

/*寮曠敤緇撴潫*/

 

閿洏鐨勯┍鍔ㄦ爤浠庝笂鍒頒笅渚濇涓?/span>:kbdclass.sys---ài8042port.sys---àacpi.sys

鍏朵腑kbdclass.sys涓洪敭鐩樼殑綾婚┍鍔紝涓嶇鏄?/span>PS/2閿洏榪樻槸USB閿洏閮借閫氳繃榪欎竴灞傞┍鍔紝鎵浠ュ湪榪欎竴灞傝繘琛岃繃婊ゅ彲浠ユ湁鍜屽ソ鐨勫吋瀹規с?/span>

I8042port.sys涓?/span>PS/2閿洏鐨勭鍙i┍鍔紝榪欎釜鍙PS/2閿洏濂界敤錛?/span>USB閿洏浠栫涓嶄簡鐨勩?/span>

瀵逛簬閿洏鐨勮繃婊ら┍鍔紝鎴戦夋嫨鏄湪kbdclass.sys榪涜榪囨護.

鍏蜂綋鍋氭硶錛?/span>

1.浣跨敤ObReferenceObjectByName鑾峰彇”\\Driver\\Kbdclass”鎵瀵瑰簲鐨勯┍鍔ㄥ璞°?/span>

2.鏋氫婦榪欎釜椹卞姩瀵硅薄涓嬬殑鎵鏈夎澶囷紝騫跺垱寤轟竴涓繃婊よ澶囬檮鍔犱笂鍘?/span>.

3.涓昏澶勭悊IRP_MJ_READ榪欎釜IRP銆傞鍏堣緗竴涓畬鎴愬嚱鏁幫紝鐒跺悗鍚戜笅杞彂姝?/span>IRP銆?/span>

4.鍦ㄥ畬鎴愬嚱鏁頒腑灝卞彲浠ヨ幏鍙栨嬈$殑妗堜歡鐨勬壂鎻忕爜浜嗐?/span>

5.瀵逛簬IRP_MJ_POWER, IRP_MJ_PNP涔熻榪涜澶勭悊.

 

鍛靛懙錛屽緢綆鍗曞惂錛岄┍鍔ㄥ叆闂ㄧ駭鐨?/span>Hello Wolrd銆?/span>

 

5.涔懼潳澶ф尓縐?/span>----HOOKIDT涓庢搷綰?/span>APIC

 

鍦ㄥ墠闈㈡垜浠鍒板湪鎸変笅涓涓敭涓庢姮璧風殑鏃跺欎細瑙﹀彂涓涓‖浠朵腑鏂紝XP涓嬶紝鎿嶄綔緋葷粺鍥炲幓璋冪敤 0x31鎴?/span>0x93涓柇澶勭悊紼嬪簭鍖哄鐞嗐傞偅涔堟垜浠彲涓嶅彲浠ヨ嚜宸卞啓涓涓?/span>ISR鍘繪帴綆¢敭鐩樹腑鏂憿,錛熷綋鐒訛紝鍒繕浜嗭紝鎴戜滑鏄湪鍐呮牳涓幇鍦紝鎴戜滑鏃犳墍涓嶈兘 銆?/span>

鎴戜滑鐭ラ亾鍦ㄤ繚鎶ゆā寮忎笅鏄噰鐢?/span>IDT榪涜涓柇綆$悊鐨勶紝IDT鏄湁璁稿闂ㄧ粍鎴愮殑銆傛瘡涓椃寰楃粨鏋勫涓?/span>:

typedef struct IDTEntry

{

HB_U16 LowOffset ;//鍋忕Щ鐨勪綆16浣?/span>

HB_U16 Selector ;//閫夋嫨瀛?/span>

HB_U8 Count:5; //鍙傛暟鐨勫弻瀛楄鏁?/span>

HB_U8 Reserve:3 ;//淇濈暀涓?/span>0

HB_U8 Type:4 ;//綾誨瀷

HB_U8 DT0:1; //DT=0,緋葷粺孌墊弿榪扮

HB_U8 DPL:2; //DLP

HB_U8 P:1; //P浣?/span>

HB_U16 HightOffset;//鍋忕Щ鐨勯珮16浣?/span>

}IDTEntry,*PIDTEntry;

鍏朵腑Lowoffset涓?/span>HighOffset灝辨瀯鎴愪簡瀹為檯鐨勪腑鏂鐞嗙▼搴忕殑鍦板潃.銆傛垜浠鏋滆嚜宸卞啓涓涓腑鏂鐞嗙▼搴忥紝鐒跺悗淇敼Lowoffset涓?/span>HighOffset錛岃鍏舵寚鍚戞垜浠嚜宸辯殑鍐欑殑閭d釜鍑芥暟涓嶄箙鍙互浜嗗悧..

鍦ㄦ垜浠嚜宸辯殑閿洏涓柇澶勭悊鍑芥暟涓垜浠彲浠ョ洿鎺ュ皢鏁版嵁浠?/span>i8042鐨勭鍙h鍑猴紝瀛樺偍璧鋒潵錛岀劧鍚庡啀璋冪敤鍘熷厛鐨勭郴緇熼粯璁ょ殑鍑芥暟錛岃繖鏍峰氨紲炰笉鐭ラ涓嶈鐨勮揪鍒扮殑涓嶅彲鍛婁漢鐨勭洰鐨?/span>.

 

榪樻湁涓縐嶆柟娉曚嬌鐢ㄧ殑鎵嬫浜庢鐩鎬技錛屼篃鏄浛鎹紝涓嶈繃榪欐鏄皢閿洏鐨?/span>IRQ1涓柇鐨勫鐞嗗嚱鏁扮殑涓柇鍚戦噺鏇存敼錛屼笉鍦ㄦ槸鎸囧悜0x31鎴栨槸0x93浜嗭紝鑰屾槸鎸囧悜鍙︿竴涓悜閲?/span>.榪欎釜鍚戦噺鍖呭惈鎴戜滑鑷繁鐨勫鐞嗙▼搴?/span>.錛岃繖灝辨槸APIC鏈哄埗.銆備笉榪囨垜鐨勮繖涓牬絎旇鏈瘮杈冭佷簡錛屾病鏈夎繖涓満鍒訛紝

鎵浠ュ彧鑳界焊涓婅皥鍏典簡.,榪樻槸鍏堢畝緇嶄竴涓?/span>APIC鍚?/span>.

APIC鏄彲浠ョ敤浜庡涓牳蹇冪殑CPU鐨勬柊鍨嬩腑鏂帶鍒跺櫒,APIC鐨勪綔鐢ㄧ浉褰撲簬褰撲竴涓?/span>IRQ鍙戠敓鏃訛紝榪欎釜紜歡鍐沖畾灝?/span>IRQ鍙戜釜鍛釜CPU鏍稿績,浠ュ強涓浣曠褰㈠紡鍙戦佺瓑銆?/span>APIC鏄彲緙栫▼鐨勶紝涔熷彲浠ュ皢PS/2閿洏鐨勭‖浠朵腑鏂姹傚彂緇欐煇涓?/span>CPU鏍稿績錛岃璇ユ牳蹇冪殑IDT涓殑鏌愪釜涓柇鍙峰搴旂殑涓柇鏈嶅姟紼嬪簭鏉ュ鐞?/span>.

Windows灝?/span>APIC鐨勭郴鍒楀瘎瀛樺櫒鏄犲皠鍒頒簡鍦板潃0xFEC00000鍜?/span>0xFEC00010鐨勪綅緗?/span>

涔熷氨鏄鎴戜滑鍙互閫氳繃緙栫▼鏉ヨ繘琛屼腑鏂殑閲嶅畾浣嶏紝鍏蜂綋鎿嶄綔鐪嬬潃APIC鐨勮鏄庢坊娣繪暟鎹氨鍙互浜嗭紝鍏跺疄鍜?/span>HOOKIDT涓鏍風殑銆傚氨涓嶅璇翠簡.

 

 

6.榪旂挒褰掔湡鈥?/span>杞i8042

 

鏈夋椂鍊欏叾瀹炰竴涓棶棰樼殑瑙e喅鏂規硶騫朵笉鏄湀澶嶆潅灝辮秺寮烘倣錛屾湁鏃跺欑畝鍗曠殑鍦熺殑鎺夋福鐨勬妧鏈弽鑰屾槸鏈紼沖浐鐨?/span>

杞錛岃繖縐嶅彜鑰佺殑鎶鏈紝铏界劧鐢變簬鏁堢巼浣庝笅宸茬粡鏃╁凡琚窐姹幫紝浣嗘槸鎴戜滑闇瑕佺殑姝f槸榪欎釜銆?/span>

閿洏鏄彲浠ラ氳繃緙栫▼鍏抽棴涓柇鐨勶紝浣嗘槸褰撴垜浠寜涓嬩竴涓仴鐨勬椂鍊欙紝閿洏鐨勮緭鍑虹紦鍐插尯涓粛鐒朵細鏈夋壂鎻忕爜濉厖錛屽彧鏄腑鏂叧闂簡錛屾搷浣滅郴緇熷茍涓嶇煡閬撱?/span>

鎴戜滑鐨勫仛娉曟槸錛氶鍏堝叧闂敭鐩樼殑涓柇錛岀劧鍚庨氳繃杞鐨勬柟娉曡鍙栬緭鍑虹鍙g殑妗堜歡鎵弿鐮侊紝鑷繁榪涜涓浜涘鐞嗭紝鐒跺悗鎵撳紑閿洏涓柇錛屽啀灝嗘鎸夐敭閲嶆斁錛岃繖鏍鋒搷浣滅郴緇熶細鑾峰彇榪欎釜鎸夐敭錛岀劧鍚庡湪鍏抽棴涓柇錛屼竴鐩磋繖鏍峰驚鐜笅鍘匯?/span>

 

鍘熺悊灝辨槸榪欐牱錛岀畝鍗曚篃寰堝彲闈狅紝鎴戞渶緇堢殑瀵嗙爜淇濇姢灝辨槸閲囩敤榪欎釜鏂規鐨勩?/span>

 

鎴戠殑紼嬪簭鍒嗕簡涓変釜灞傛:

鍥犱負鍦?/span>Ring3涓嬫棤娉曡鍐欑鍙g殑錛屾墍浠ヨ嚜宸卞啓浜嗕釜椹卞姩錛岃礋璐h鍐欑鍙o紝RING3涓婅澆鍐欎釜DLL閫氳繃DeviceIoControl涓庡唴鏍歌繘琛岄氫俊錛屼紶閫掔鍙e湴鍧涓庤緗殑鍊肩瓑淇℃伅,騫跺涓婇潰鐨勫簲鐢ㄧ▼搴忔彁渚涚畝鍗曠殑濡?/span>READ_PORT(ULONG port),榪欐牱鐨勬帴鍙c?/span>

 

鍦ㄥ簲鐢ㄧ▼搴忎腑錛屽湪瑕佷繚鎶ょ殑瀵嗙爜妗嗚幏鍙栫劍鐐規椂(澶勭悊WM_SETFOCUS娑堟伅),鍒欏叧闂敭鐩樹腑鏂繘琛岃疆璇?/span>,鍦ㄥ競鍖虹劍鐐規椂鍒欐墦寮閿洏涓柇.鍦ㄨ幏鍙栨寜閿悗浣犲彲浠ュ湪紼嬪簭涓褰曚笅鏉ワ紝鍐嶅湪瀵嗙爜妗嗕腑濉厖涓亣鐨勫瘑鐮併?/span>

鐢變簬鏄笉闂存柇鐨勮疆璇㈡墍浠ヤ繚璇佸湪絎竴鏃墮棿鑾峰彇鎵弿鐮侊紝鍦ㄤ笂灞傜殑濡傝繃婊ら┍鍔紝HOOKIDT絳?/span>

榪樻湁搴旂敤灞傚緱鍒伴挬瀛愬暐鐨勶紝緇熺粺澶辨晥錛屽疄璺佃瘉鏄庤繕鏄緢鍙潬鐨勶紝鍙笉榪囪繕涓嶆槸寰堝畬鍠勶紝鐩墠鍙敮鎸?/span>PS/2閿洏錛?/span>USB鐨勮繕涓嶈.

 

 

7.鎴戜滑閮?/span>OUT浜?/span>----紜歡閿洏璁板綍鍣?/span>

 

鏃ラ槻澶滈槻錛屽璐奸毦闃插晩錛岃鏄‖浠朵笂鍋氫簡鎵嬭剼錛岄偅灝辮繖鑳?/span>55555555555……

鐪嬬湅榪欎釜鐚ョ悙鐨勫浼欏惂楂樼鎶鍝?/span>


 

 

濂戒簡錛岃緇撳熬浜嗭紝鍛靛懙錛岀幇鍦ㄤ綘榪樹俊浣犵殑閿洏鍚楋紵



]]>
SYSENTER鎸囦護鐩稿叧錛堝ぇ孌電殑杞澆-_-錛?/title><link>http://m.shnenglu.com/xingkongyun/archive/2009/09/04/95329.html</link><dc:creator>鏉ㄥ漿褰?/dc:creator><author>鏉ㄥ漿褰?/author><pubDate>Fri, 04 Sep 2009 11:40:00 GMT</pubDate><guid>http://m.shnenglu.com/xingkongyun/archive/2009/09/04/95329.html</guid><wfw:comment>http://m.shnenglu.com/xingkongyun/comments/95329.html</wfw:comment><comments>http://m.shnenglu.com/xingkongyun/archive/2009/09/04/95329.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/xingkongyun/comments/commentRss/95329.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/xingkongyun/services/trackbacks/95329.html</trackback:ping><description><![CDATA[<p>鍦?Intel 鐨勮蔣浠跺紑鍙戣呮墜鍐岀浜屻佷笁鍗鳳紙Vol.2B,Vol.3錛変腑錛?.8.7 鑺傛槸鍏充簬 sysenter/sysexit 鎸囦護鐨勮緇嗘弿榪般傛墜鍐屼腑璇存槑錛宻ysenter </p> <p>鎸囦護鍙敤浜庣壒鏉冪駭 3 鐨勭敤鎴蜂唬鐮佽皟鐢ㄧ壒鏉冪駭 0 鐨勭郴緇熷唴鏍鎬唬鐮侊紝鑰?SYSEXIT 鎸囦護鍒欑敤浜庣壒鏉冪駭 0 鐨勭郴緇熶唬鐮佽繑鍥炵敤鎴風┖闂翠腑銆俿ysenter 鎸?/p> <p>浠ゅ彲浠ュ湪 3錛?錛? 榪欎笁涓壒鏉冪駭鍒皟鐢紙Linux 涓彧鐢ㄥ埌浜嗙壒鏉冪駭 3錛夛紝鑰?SYSEXIT 鎸囦護鍙兘浠庣壒鏉冪駭 0 璋冪敤銆?/p> <p>鎵ц sysenter 鎸囦護鐨勭郴緇熷繀欏繪弧瓚充袱涓潯浠訛細1.鐩爣 Ring 0 浠g爜孌靛繀欏繪槸騫沖潶妯″紡錛團lat Mode錛夌殑 4GB 鐨勫彲璇誨彲鎵ц鐨勯潪涓鑷翠唬鐮佹銆?/p> <p>2.鐩爣 RING0 鍫嗘爤孌靛繀欏繪槸騫沖潶妯″紡錛團lat Mode錛夌殑 4GB 鐨勫彲璇誨彲鍐欏悜涓婃墿灞曠殑鏍堟銆?/p> <p>鍦?Intel 鐨勬墜鍐屼腑錛岃繕鎻愬埌浜?sysenter/sysexit 鍜?int n/iret 鎸囦護鐨勪竴涓尯鍒紝閭e氨鏄?sysenter/sysexit 鎸囦護騫朵笉鎴愬錛宻ysenter 鎸?/p> <p>浠ゅ茍涓嶄細鎶?SYSEXIT 鎵闇鐨勮繑鍥炲湴鍧鍘嬫爤錛宻ysexit 榪斿洖鐨勫湴鍧騫朵笉涓瀹氭槸 sysenter 鎸囦護鐨勪笅涓涓寚浠ゅ湴鍧銆傝皟鐢?sysenter/sysexit 鎸囦護</p> <p>鍦板潃鐨勮煩杞槸閫氳繃璁劇疆涓緇勭壒孌婂瘎瀛樺櫒瀹炵幇鐨勩傝繖浜涘瘎瀛樺櫒鍖呮嫭錛?/p> <p>SYSENTER_CS_MSR 錛?鐢ㄤ簬鎸囧畾瑕佹墽琛岀殑 Ring 0 浠g爜鐨勪唬鐮佹閫夋嫨絎︼紝鐢卞畠榪樿兘寰楀嚭鐩爣 Ring 0 鎵鐢ㄥ爢鏍堟鐨勬閫夋嫨絎︼紱</p> <p>SYSENTER_EIP_MSR 錛?鐢ㄤ簬鎸囧畾瑕佹墽琛岀殑 Ring 0 浠g爜鐨勮搗濮嬪湴鍧錛?/p> <p>SYSENTER_ESP_MSR錛嶇敤浜庢寚瀹氳鎵ц鐨凴ing 0浠g爜鎵浣跨敤鐨勬爤鎸囬拡</p> <p>榪欎簺瀵勫瓨鍣ㄥ彲浠ラ氳繃 wrmsr 鎸囦護鏉ヨ緗紝鎵ц wrmsr 鎸囦護鏃訛紝閫氳繃瀵勫瓨鍣?edx銆乪ax 鎸囧畾璁劇疆鐨勫鹼紝edx 鎸囧畾鍊肩殑楂?32 浣嶏紝eax 鎸囧畾鍊肩殑</p> <p>浣?32 浣嶏紝鍦ㄨ緗笂榪板瘎瀛樺櫒鏃訛紝edx 閮芥槸 0錛岄氳繃瀵勫瓨鍣?ecx 鎸囧畾濉厖鐨?MSR 瀵勫瓨鍣紝sysenter_CS_MSR銆乻ysenter_ESP_MSR銆?/p> <p>sysenter_EIP_MSR 瀵勫瓨鍣ㄥ垎鍒搴?0x174銆?x175銆?x176錛岄渶瑕佹敞鎰忕殑鏄紝wrmsr 鎸囦護鍙兘鍦?Ring 0 鎵ц銆?/p> <p>榪欓噷榪樿浠嬬粛涓涓壒鎬э紝灝辨槸 Ring0銆丷ing3 鐨勪唬鐮佹鎻忚堪絎﹀拰鍫嗘爤孌墊弿榪扮鍦ㄥ叏灞鎻忚堪絎﹁〃 GDT 涓槸欏哄簭鎺掑垪鐨勶紝榪欐牱鍙渶鐭ラ亾 </p> <p>SYSENTER_CS_MSR 涓寚瀹氱殑 Ring0 鐨勪唬鐮佹鎻忚堪絎︼紝灝卞彲浠ユ帹綆楀嚭 Ring0 鐨勫爢鏍堟鎻忚堪絎︿互鍙?Ring3 鐨勪唬鐮佹鎻忚堪絎﹀拰鍫嗘爤孌墊弿榪扮銆?/p> <p>鍦?Ring3 鐨勪唬鐮佽皟鐢ㄤ簡 sysenter 鎸囦護涔嬪悗錛孋PU 浼氬仛鍑哄涓嬬殑鎿嶄綔錛?/p> <p>1錛?灝?SYSENTER_CS_MSR 鐨勫艱杞藉埌 cs 瀵勫瓨鍣?/p> <p>2錛?灝?SYSENTER_EIP_MSR 鐨勫艱杞藉埌 eip 瀵勫瓨鍣?/p> <p>3錛?灝?SYSENTER_CS_MSR 鐨勫煎姞 8錛圧ing0 鐨勫爢鏍堟鎻忚堪絎︼級瑁呰澆鍒?ss 瀵勫瓨鍣ㄣ?/p> <p>4錛?灝?SYSENTER_ESP_MSR 鐨勫艱杞藉埌 esp 瀵勫瓨鍣?/p> <p>5錛?灝嗙壒鏉冪駭鍒囨崲鍒?Ring0</p> <p>6錛?濡傛灉 EFLAGS 瀵勫瓨鍣ㄧ殑 VM 鏍囧織琚疆浣嶏紝鍒欐竻闄よ鏍囧織</p> <p>7錛?寮濮嬫墽琛屾寚瀹氱殑 Ring0 浠g爜</p> <p>鍦?Ring0 浠g爜鎵ц瀹屾瘯錛岃皟鐢?SYSEXIT 鎸囦護閫鍥?Ring3 鏃訛紝CPU 浼氬仛鍑哄涓嬫搷浣滐細</p> <p>1錛?灝?SYSENTER_CS_MSR 鐨勫煎姞 16錛圧ing3 鐨勪唬鐮佹鎻忚堪絎︼級瑁呰澆鍒?cs 瀵勫瓨鍣?/p> <p>2錛?灝嗗瘎瀛樺櫒 edx 鐨勫艱杞藉埌 eip 瀵勫瓨鍣?/p> <p>3錛?灝?SYSENTER_CS_MSR 鐨勫煎姞 24錛圧ing3 鐨勫爢鏍堟鎻忚堪絎︼級瑁呰澆鍒?ss 瀵勫瓨鍣?/p> <p>4錛?灝嗗瘎瀛樺櫒 ecx 鐨勫艱杞藉埌 esp 瀵勫瓨鍣?/p> <p>5錛?灝嗙壒鏉冪駭鍒囨崲鍒?Ring3</p> <p>6錛?緇х畫鎵ц Ring3 鐨勪唬鐮?/p> <p>鐢辨鍙煡錛屽湪璋冪敤 SYSENTER 榪涘叆 Ring0 涔嬪墠錛屼竴瀹氶渶瑕侀氳繃 wrmsr 鎸囦護璁劇疆濂?Ring0 浠g爜鐨勭浉鍏充俊鎭紝鍦ㄨ皟鐢?SYSEXIT 涔嬪墠錛岃繕瑕佷繚璇?/p> <p>瀵勫瓨鍣╡dx銆乪cx 鐨勬紜с?/p> <p> </p> <p>鏍規嵁 Intel 鐨?CPU 鎵嬪唽錛屾垜浠彲浠ラ氳繃 CPUID 鎸囦護鏉ユ煡鐪?CPU 鏄惁鏀寔 sysenter/sysexit 鎸囦護錛屽仛娉曟槸灝?EAX 瀵勫瓨鍣ㄨ祴鍊?1錛岃皟鐢?</p> <p>CPUID 鎸囦護錛屽瘎瀛樺櫒 edx 涓 11 浣嶏紙榪欎竴浣嶅悕縐頒負 SEP錛夊氨琛ㄧず鏄惁鏀寔銆傚湪璋冪敤 CPUID 鎸囦護涔嬪悗錛岃繕闇瑕佹煡鐪?CPU 鐨?Family銆丮odel銆?/p> <p>Stepping 灞炴ф潵紜錛屽洜涓烘嵁縐?Pentium Pro 澶勭悊鍣ㄤ細鎶ュ憡 SEP 浣嗘槸鍗翠笉鏀寔 sysenter/sysexit 鎸囦護銆傚彧鏈?Family 澶т簬絳変簬 6錛孧odel </p> <p>澶т簬絳変簬 3錛孲tepping 澶т簬絳変簬 3 鐨勬椂鍊欙紝鎵嶈兘紜 CPU 鏀寔 sysenter/sysexit 鎸囦護銆?/p> <p> </p> <p>/=============================================================================<br>//鍦╓INDBG涓NTDLL.dll涓殑NtCreateFile鍑芥暟鐨勮皟璇曚俊鎭?br>ntdll!NtCreateFile:<br>7c92d682 b825000000      mov     eax,25h<br>7c92d687 ba0003fe7f      mov     edx,offset SharedUserData!SystemCallStub (7ffe0300)<br>7c92d68c ff12            call    dword ptr [edx]<br>7c92d68e c22c00          ret     2Ch</p> <p><br>lkd> dd 7ffe0300<br>7ffe0300  7c92eb8b 7c92eb94 00000000 00000000</p> <p><br>lkd> u 7c92eb8b<br>ntdll!KiFastSystemCall:<br>7c92eb8b 8bd4            mov     edx,esp<br>7c92eb8d 0f34            sysenter</p> <p>/**************************************************************/<br>  <br>SYSENTER綆浠嬪強鐩稿叧渚嬪瓙<br> <br> <br>鏂囩珷浣滆咃細wowocock1/CVC.GB</p> <p>;浼楁墍鍛ㄧ煡寰蔣鑷猉P鍚庡紩榪涗簡FASTCALL SYSENTER錛孲YSEXIT鏉ヤ唬鏇縒IN2K涓婭NT2E緋葷粺鏈嶅姟璋冪敤<br>;鍏朵紭鐐規槸蹇熻屼笖娌℃湁淇濈暀鍫嗘爤鐨勫紑閿錛屼負浜嗕究浜庡ぇ瀹剁悊瑙f垜鍐欎笅闈竴涓湪WIN98涓嬬殑渚嬪瓙<br>;鏉ヨ鏄庝竴涓嬭繖2鏉℃寚浠ょ殑鐢ㄦ硶銆侷TNEL鐨勬墜鍐屼笂鍏充簬浠栦滑浠嬬粛鐨勫緢璇︾粏錛屾垜綆瑕佽鏄庝竴涓?br>;SYSENTER鏄疘NTEL鑷狿2鍚庡紩榪涚殑蹇熶粠RING3~RING0鐨凢ASTCALL錛屼粠FAMILY 6錛孧ODEL 3錛?br>;STEP 3涔熷氨鏄粠PII300浠ュ悗寮曡繘鐨勶紝榪欎篃鏄負浠涔圵INXP闇瑕丳II300浠ヤ笂鐨勫師鍥犮傚湪浣跨敤SYSENTER<br>;涔嬪墠蹇呴』瀹氫箟濂絉ING0 CS EIP ESP錛岄氳繃璁劇疆鐩稿簲MSR瀵勫瓨鍣?鐢盬RMSR鎸囦護鏉ヨ瀹氾紙蹇呴』鍦≧ING0灞傛墽琛岋級;<br>;閫氳繃灝嗙浉搴旂殑瀵勫瓨鍣ㄥ湴鍧鍙鋒斁鍏CX涓紝WRMSR鍙互璁劇疆榪欎簺MSR瀵勫瓨鍣?瀵瑰簲鍏崇郴濡備笅<br>;SYSENTER_CS_MSR 174H SYSENTER_ESP_MSR 175H SYSENTER_EIP_MSR 176H<br>;鎵цSYSENTER鎸囦護鐨勭郴緇熷繀欏繪弧瓚?1錛氳漿鎹㈠悗鐨凴ING0浠g爜孌靛繀欏繪槸FLAT錛?GB鐨勫彲璇誨彲鎵ц<br>;鐨勯潪涓鑷翠唬鐮佹.2:杞崲鍚庣殑RING0鍫嗘爤孌靛繀欏繪槸FLAT錛?GB鐨勫彲璇誨彲鍐欏悜涓婃墿灞曠殑鏁版嵁孌?br>;鐢變簬FASTCALL涓嶄繚瀛樹換浣曡繑鍥炵殑鍦板潃錛屾墍浠ュ湪璋冪敤鍓嶄綘蹇呴』鑷繁璁懼畾濂斤紝RING0浠g爜孌礢ELECTOR<br>;RING0鍫嗘爤孌礢ELECTOR錛孯ING3浠g爜孌礢ELECTOR錛孯ING3鍫嗘爤孌礢ELECTOR錛屽繀欏誨湪GDT涓繛緇殑鎺掑垪<br>;鎵浠ュ湪XP涓嬬浉搴旂殑SELECTOR錛屽繀鐒舵槸8H錛?0H錛?BH錛?3H錛屽繀欏誨皢榪斿洖鑷砇ING3 EIP,ESP閫氳繃瀵勫瓨鍣?br>;浼犻掕繘RING0浠ヤ究SYSEXIT榪斿洖浣跨敤錛屽湪SYSEXIT榪斿洖涔嬪墠錛孍DX涓篟ING3 EIP錛孍CX涓篟ING3 ESP<br>;鑰岀浉搴旂殑CS錛孲S錛屽垯鐢盧ING0 CS鍔犱笂10H錛?8H鏉ヨ繑鍥?br>;RING3~RING0<br>;1. 瑁呰澆SYSENTER_CS_MSR 鍒癈S 瀵勫瓨鍣?<br>;2. 瑁呰澆SYSENTER_EIP_MSR鍒?EIP瀵勫瓨鍣ㄣ?<br>;3. SYSENTER_CS_MSR+8 瑁呰澆鍒癝S瀵勫瓨鍣?<br>;4.瑁呰澆SYSENTER_ESP_MSR 鍒癊SP瀵勫瓨鍣ㄣ?<br>;5. 鍒囨崲RING0.<br>;6. 娓呴櫎 EFLAGS鐨?VM鏍囧織<br>;7. 鎵цRING0渚嬬▼<br>;RING0~RING3<br>;1銆係YSENTER_CS_MSR+16瑁呰澆鍒?CS瀵勫瓨鍣?br>;2. 灝咵DX鐨勫奸佸叆EIP<br>;3. SYSENTER_CS_MSR+24 瑁呰澆鍒癝S瀵勫瓨鍣?<br>;4. 灝咵CX鐨勫奸佸叆ESP <br>;5.鍒囨崲鍥濺ING3<br>;6. 鎵цEIP澶勭殑RING3鎸囦護<br>;涓嬮潰鐨勪緥瀛愬湪紺鴻寖鐨勫熀紜涓婂姞浜嗕釜灝廡RICK錛屽氨鏄湪閫氳繃CALLGATE榪汻ING0璁劇疆MSR瀵勫瓨鍣ㄧ殑鍚屾椂<br>;鍏蟲帀浜嗕綘鏈哄櫒涓婄殑緙撳瓨錛岀劧鍚庝綘鍙互鐪嬬湅鍦ㄦ病鏈夌紦瀛樼殑鎯呭喌涓嬩綘鐨勬劅瑙夊浣曪紝鐒跺悗鐐瑰嚮涓涓?br>;瀵硅瘽妗嗭紝鍒欑粡鐢盨YSENTER鎸囦護榪涘叆RING0璁懼畾濂界殑鍦板潃澶勬仮澶嶄綘CPU緙撳瓨錛屾墍浠ュ埆鎷呭績錛岃繕鏈?br>;娌℃湁緙撳瓨鐨勬椂鍊欎綘鐨勫姩浣滄渶濂芥參涓鐐癸紝涓嶇劧浼氳浣犵瓑鐨勫彂鐤殑錛屽懙鍛點?br>.686p<br>.model flat,stdcall<br>option casemap:none</p> <p>include \masm32\include\windows.inc<br>include \masm32\include\kernel32.inc<br>include \masm32\include\user32.inc</p> <p>includelib \masm32\lib\kernel32.lib<br>includelib \masm32\lib\user32.lib</p> <p>sysenter macro<br>db 0fh,34h<br>endm</p> <p>sysexit macro<br>db 0fh,35h<br>endm</p> <p>CR0_CD EQU 040000000h ; Cache Disable bit of CR0<br>CR0_NW EQU 020000000h ; Not Write-through bit of CR0 <br>.data<br>Ring0Cs dw 0ffffh,0,09b00h,0cfh<br>Ring0Ss dw 0ffffh,0,09300h,0cfh<br>Ring3Cs dw 0ffffh,0,0fb00h,0cfh<br>Ring3Ss dw 0ffffh,0,0f300h,0cfh</p> <p>trR dw ?<br>tssRing0Esp dd ?<br>GdtLimit dw ?<br>GdtAddr dd ?</p> <p>Callgt dq 0 ;call gate’s selff<br>tmpCs dw ?<br>szTitle db "CPU info",0<br>msg db 100 dup (?)<br>Nightmare db "鍒囨崲鍒板叾浠栫獥鍙o紝灝濆皾娌ACHE鐨勬粙鍛?",0</p> <p>.code<br>Start:<br>mov ax,ds<br>test ax,4<br>jz Exit;winnt<br>xor eax,eax<br>cpuid<br>lea edi,msg<br>xchg eax,ebx<br>stosd<br>xchg eax,edx<br>stosd<br>xchg eax,ecx<br>stosd<br>invoke MessageBoxA,0,addr msg,addr szTitle,0<br>mov eax,1<br>cpuid<br>test edx,800h<br>jz Exit<br>mov eax,2<br>cpuid<br>SetSel:<br>sgdt GdtLimit<br>str word ptr trR ;瀛樺偍浠誨姟瀵勫瓨鍣?br>;----------------------- <br>; get the tr mes <br>;----------------------- <br>movzx esi,trR<br>add esi,GdtAddr   ;ESi鎸囧悜GDT涓璗SS鎻忚堪鍓?br>mov eax,[esi+2] <br>and eax,0ffffffh <br>mov ebx,[esi+4] <br>and ebx,0ff000000h <br>or eax,ebx    ;eax涓繚瀛楾SS鐨勫熀鍦板潃</p> <p>push dword ptr[eax+4]<br>pop dword ptr [tssRing0Esp] ;淇濆瓨RING0浣跨敤鐨勫爢鏍堝湴鍧</p> <p><br>movzx eax,GdtLimit ;鍦℅DT鐨勬渶鍚庨夊彇鍥涗釜琛ㄧ洰灝嗛璁劇殑4涓弿榪扮瀛樺叆<br>test al,1<br>jz @f<br>inc eax<br>@@:<br>sub eax,4*8<br>mov tmpCs,ax<br>add eax,GdtAddr<br>lea esi,Ring0Cs<br>mov edi,eax<br>mov ecx,4*8<br>rep movsb</p> <p>SetMsr:<br>;------------------------------------- <br>; 鍦℅DT涓鎵劇┖鐧借〃欏規潵鍒墮犺皟鐢ㄩ棬 <br>;------------------------------------- <br>mov esi,GdtAddr<br>movzx eax,GdtLimit <br>call Search_XDT <br>;esi==gdt Base <br>mov esi,dword ptr GdtAddr <br>push offset Ring0_SetMsr <br>pop word ptr [esi+eax+0] <br>pop word ptr [esi+eax+6] ;Offset </p> <p>mov word ptr [esi+eax+2],28h <br>mov word ptr [esi+eax+4],0EC00h ;sel=28h and attribute ->386 call gate! </p> <p>and dword ptr Callgt,0 </p> <p>mov word ptr [Callgt+4],ax <br>pushad<br>call fword ptr [Callgt] ;Ring0! <br>popad<br>mov dword ptr [esi+eax+0],0<br>mov dword ptr [esi+eax+4],0</p> <p>invoke MessageBoxA,0,addr Nightmare,addr Nightmare,0 <br>lea edx,Exit<br>mov ecx,esp<br>sysenter</p> <p>Exit: <br>push 00000000h ; Exit program<br>call ExitProcess</p> <p>;----------------------------------------------------------------------</p> <p>Ring0_SetMsr:<br>mov ecx,174h<br>movzx eax,tmpCs<br>wrmsr<br>inc ecx<br>mov eax,tssRing0Esp<br>wrmsr<br>inc ecx<br>lea eax,Ring0Ip<br>wrmsr</p> <p>mov eax,cr0 ; read CR0<br>or eax,CR0_CD ; set CD but not NW bit of CR0<br>mov cr0,eax ; cache is now disabled<br>wbinvd ; flush and invalidate cache</p> <p>; the cache is effectively disabled at this point, but memory<br>; consistency will be maintained. To completely disable cache,<br>; the following two lines may used as well:</p> <p>or eax,CR0_NW ; now set the NW bit<br>mov cr0,eax ; turn off the cache entirely</p> <p>retf</p> <p>;----------------------------------------------------------------------<br>Ring0Ip:<br>pushad</p> <p>pushf ; save the flags<br>cli ; disable interrupts while we do this<br>mov eax,cr0 ; read CR0<br>and eax,0dfffffffh ; now set the NW bit<br>mov cr0,eax ; turn on the cache entirely</p> <p>and eax,0bfffffffh ; set CD but not NW bit of CR0<br>mov cr0,eax ; cache is now Ensabled </p> <p>popf ; restore the flags</p> <p>mov eax,cr0<br>mov [esp+4*7],eax<br>popad<br>sysexit</p> <p>;----------------------------------------------------------------------</p> <p>Search_XDT proc near <br>;entry esi==Base of Ldt or GDT ;Eax==Limit </p> <p>pushad <br>mov ebx,eax <br>mov eax,8 ; skipping null selector <br>@@1: <br>cmp dword ptr [esi+eax+0],0 <br>jnz @@2 <br>cmp dword ptr [esi+eax+4],0 <br>jz @@3 <br>@@2: <br>add eax,8 <br>cmp eax,ebx <br>jb @@1 ;if we haven’t found any free GDT entry, <br>;lets use the last two entries <br>mov eax,ebx <br>sub eax,7 <br>@@3: <br>mov [esp+4*7],eax ; return off in eax <br>popad <br>ret <br>Search_XDT endp <br>end Start</p> <p><br>;=======================================================================================================<br>1   銆愬師鍒涖憆ootkit hook涔媅鍏璢 -- sysenter Hook     </p> <p>--------------------------------------------------------------------------------</p> <p>鏍?棰? 銆愬師鍒涖憆ootkit hook涔媅鍏璢 -- sysenter Hook<br>浣?鑰? combojiang<br>鏃?闂? 2008-02-26,12:25<br>閾?鎺? <a >http://bbs.pediy.com/showthread.php?t=60247</a></p> <p>鍛靛懙錛屼粖澶╄繖綃囧唴瀹瑰皯錛屾瘮杈冪畝鍗曘?/p> <p>SYSENETER鏄竴鏉℃眹緙栨寚浠わ紝瀹冩槸鍦≒entium? II 澶勭悊鍣ㄥ強浠ヤ笂澶勭悊鍣ㄤ腑鎻愪緵鐨勶紝鏄揩閫熺郴緇熻皟鐢ㄧ殑涓閮ㄥ垎銆係YSENTER/SYSEXIT榪欏鎸囦護涓撻棬鐢ㄤ簬瀹炵幇蹇熻皟鐢ㄣ傚湪榪欎箣鍓嶆槸閲囩敤INT 0x2E鏉ュ疄鐜扮殑銆侷NT 0x2E鍦ㄧ郴緇熻皟鐢ㄧ殑鏃跺欙紝闇瑕佽繘琛屾爤鍒囨崲鐨勫伐浣溿傜敱浜嶪nterrupt/Exception Handler鐨勮皟鐢ㄩ兘鏄氳繃 call/trap/task榪欎竴綾葷殑gate鏉ュ疄鐜扮殑錛岃繖縐嶆柟寮忎細榪涜鏍堝垏鎹紝騫朵笖緋葷粺鏍堢殑鍦板潃絳変俊鎭敱TSS鎻愪緵銆傝繖縐嶆柟寮忓彲鑳戒細寮曡搗澶氭鍐呭瓨璁塊棶 錛堟潵鑾峰彇榪欎簺鍒囨崲淇℃伅錛夛紝鍥犳錛屼粠PentiumII寮濮嬶紝IA-32寮曞叆浜嗘柊鎸囦護錛歋YSENTER/SYSEXIT銆?鏈変簡榪欎袱鏉℃寚浠わ紝<br>浠庣敤鎴風駭鍒扮壒鏉冪駭鐨勫爢鏍堜互鍙婃寚浠ゆ寚閽堢殑杞崲錛屽彲浠ラ氳繃榪欎竴鏉℃寚浠ゆ潵瀹炵幇錛屽茍涓旓紝闇瑕佸垏鎹㈠埌鐨勬柊鍫嗘爤鐨勫湴鍧錛屼互鍙婄浉搴旇繃紼嬬殑絎竴鏉℃寚浠ょ殑浣嶇疆錛岄兘鏈変竴緇勭壒孌婂瘎瀛樺櫒鏉ュ疄鐜幫紝榪欑被鐗規畩瀵勫瓨鍣ㄥ湪IA-32涓О涓篗SR(Model Specific Register)銆傝繖閲岀壍娑夊埌3涓壒孌婂瘎瀛樺櫒錛?<br>SYSENTER_CS_MSR: New code segment selector   0x174 <br>SYSENTER_ESP_MSR: New Stack Pointer                0x175 <br>SYSENTER_EIP_MSR: New Instruction Pointer        0x176 <br>榪欓噷鏍囧嚭鐨?涓?6榪涘埗鏁板垎鍒搴旇繖3涓瘎瀛樺櫒鐨勫湴鍧錛岃鍦板潃鐢ㄤ簬Kernel debug鏃訛紝閫氳繃rdmsr/wrmsr鎸囦護鏉ヨ/鍐欒繖3涓瘎瀛樺櫒銆傛楠ゅ涓嬶細<br>10.JPG<br>1. 瑁呰澆SYSENTER_CS_MSR 鍒癈S 瀵勫瓨鍣紝璁劇疆鐩爣浠g爜孌?br>2. 瑁呰澆SYSENTER_EIP_MSR鍒?EIP瀵勫瓨鍣紝璁劇疆鐩爣鎸囦護 <br>3. SYSENTER_CS_MSR+8 瑁呰澆鍒癝S瀵勫瓨鍣?錛岃緗爤孌?br>4. 瑁呰澆SYSENTER_ESP_MSR 鍒癊SP瀵勫瓨鍣紝璁劇疆鏍堝撫 <br>5. 鍒囨崲RING0. <br>6. 娓呴櫎 EFLAGS鐨?VM鏍囧織 <br>7. 鎵цRING0渚嬬▼ </p> <p>11.JPG<br>1. SYSENTER_CS_MSR+16瑁呰澆鍒?CS瀵勫瓨鍣?<br>2. 灝咵DX鐨勫奸佸叆EIP <br>3. SYSENTER_CS_MSR+24 瑁呰澆鍒癝S瀵勫瓨鍣?<br>4. 灝咵CX鐨勫奸佸叆ESP <br>5. 鍒囨崲鍥濺ING3 <br>6. 鎵цEIP澶勭殑RING3鎸囦護 </p> <p>鎴戜滑鍦╳indbg涓彲浠ョ湅鐪嬭繖涓笁涓瘎瀛樺櫒鐨勬儏鍐碉紝榪欎釜鏄垜鏈哄櫒閲岀殑鎯呭喌銆?br>lkd> rdmsr 176<br>msr[176] = 00000000`8053dad0<br>lkd> rdmsr 175<br>msr[175] = 00000000`ba4e0000<br>lkd> rdmsr 174<br>msr[174] = 00000000`00000008</p> <p>鍙互鐪嬪埌錛屾垜鐨勬満鍣ㄩ噷闈㈠綋鍓峉YSENTER_EIP_MSR錛孲YSENTER_ESP_MSR錛孲YSENTER_CS_MSR榪欎笁涓瘎瀛樺櫒鐨勫箋?/p> <p>鎴戜滑鍦ㄥ井杞叕寮鐨勫唴鏍竁RK涓彂鐜板叧浜庤繖涓変釜瀵勫瓨鍣ㄧ殑璁劇疆錛屽叾涓璖YSENTER_EIP_MSR璁劇疆鐨勫兼槸KiFastCallEntry銆?br>浠g爜濡備笅錛?br>VOID<br>KiLoadFastSyscallMachineSpecificRegisters(<br>    IN PLONG Context<br>    )</p> <p>/*++</p> <p>Routine Description:</p> <p>    Load MSRs used to support Fast Syscall/return.  This routine is<br>    run on all processors.</p> <p>Arguments:</p> <p>    None.</p> <p>Return Value:</p> <p>    None.</p> <p>--*/</p> <p>{<br>    PKPRCB Prcb;</p> <p>    UNREFERENCED_PARAMETER (Context);</p> <p>    if (KiFastSystemCallIsIA32) {</p> <p>        Prcb = KeGetCurrentPrcb();</p> <p>        //<br>        // Use Intel defined way of doing this.<br>        //</p> <p>        WRMSR(MSR_SYSENTER_CS,  KGDT_R0_CODE);<br>        WRMSR(MSR_SYSENTER_EIP, (ULONGLONG)(ULONG)KiFastCallEntry);<br>        WRMSR(MSR_SYSENTER_ESP, (ULONGLONG)(ULONG)Prcb->DpcStack);</p> <p>    }<br>}</p> <p>鐪嬬湅鎴戠數鑴戠殑鎯呭喌濡備笅錛?br>lkd> rdmsr 176<br>msr[176] = 00000000`8053dad0<br>lkd> u 8053dad0<br>nt!KiFastCallEntry:<br>8053dad0 b923000000      mov     ecx,23h<br>8053dad5 6a30            push    30h<br>8053dad7 0fa1            pop     fs<br>8053dad9 8ed9            mov     ds,cx<br>8053dadb 8ec1            mov     es,cx<br>8053dadd 8b0d40f0dfff    mov     ecx,dword ptr ds:[0FFDFF040h]<br>8053dae3 8b6104          mov     esp,dword ptr [ecx+4]<br>8053dae6 6a23            push    23h</p> <p>涓嬮潰鏄痳ootkit.com涓婄殑涓涓緥瀛愶紝榪欎釜渚嬪瓙鏈夌偣涓嶅帤閬擄紝鍦ㄤ綘鍗歌澆鐨勬椂鍊欎細bsod.鎴戠畝鍗曚慨鏀逛簡涓嬶紝璐翠唬鐮佸涓嬶細<br>#include "ntddk.h"</p> <p>ULONG d_origKiFastCallEntry; // Original value of ntoskrnl!KiFastCallEntry</p> <p>VOID OnUnload( IN PDRIVER_OBJECT DriverObject )<br>{<br>    _asm<br>    {<br>          mov ecx, 0x176<br>        xor edx,edx<br>        mov eax, d_origKiFastCallEntry     // Hook function address<br>        wrmsr                        // Write to the IA32_SYSENTER_EIP register<br>      }<br>}</p> <p>// Hook function<br>__declspec(naked) MyKiFastCallEntry()<br>{<br>  __asm {<br>    jmp [d_origKiFastCallEntry]<br>  }<br>}</p> <p>NTSTATUS DriverEntry( IN PDRIVER_OBJECT theDriverObject, IN PUNICODE_STRING theRegistryPath )<br>{<br>  theDriverObject->DriverUnload  = OnUnload; </p> <p>  __asm {<br>            mov ecx, 0x176<br>        rdmsr                 // read the value of the IA32_SYSENTER_EIP register<br>        mov d_origKiFastCallEntry, eax<br>        mov eax, MyKiFastCallEntry     // Hook function address<br>        wrmsr                        // Write to the IA32_SYSENTER_EIP register<br>  }</p> <p>  return STATUS_SUCCESS;<br>}</p> <p>娉ㄦ剰涓鐐癸紝澶у鐢╳indbg鐨勬椂鍊欙紝閰嶇疆symbol path,濡傚浘錛?br>9.JPG</p> <p>鍚庨潰璐翠笂涓綃囧爼钀藉ぉ鎵嶅啓鐨勬枃绔犻摼鎺ワ細<a >http://bbs.pediy.com/showthread.php?t=42705</a>錛?br>浠杋nline hook 浜咾iFastCallEntry錛岄噰鐢╠etour鏂瑰紡,鍐欏緱寰堜笉閿欍?</p> <p> </p> <p><br>涓婁紶鐨勯檮浠?SysEnterHook.rar (973 瀛楄妭, 743 嬈′笅杞?  <br>  <br>;=====================================================================================================================<br>   銆愬師鍒涖戝彟涓縐峴ysenter hook鏂規硶(緇曡繃緇濆ぇ澶氭暟鐨剅ootkit媯嫻嬪伐鍏風殑媯嫻?    </p> <p>--------------------------------------------------------------------------------</p> <p>鏍?棰? 銆愬師鍒涖戝彟涓縐峴ysenter hook鏂規硶(緇曡繃緇濆ぇ澶氭暟鐨剅ootkit媯嫻嬪伐鍏風殑媯嫻?<br>浣?鑰? 鍫曡惤澶╂墠<br>鏃?闂? 2007-04-14,11:09<br>閾?鎺? <a >http://bbs.pediy.com/showthread.php?t=42705</a></p> <p>*****************************************************************************<br>*鏍囬:銆愬師鍒涖戝彟涓縐峴ysenter hook鏂規硶(緇曡繃緇濆ぇ澶氭暟鐨剅ootkit媯嫻嬪伐鍏風殑媯嫻?  *<br>*浣滆?鍫曡惤澶╂墠                                                              *<br>*鏃ユ湡:2007騫?鏈?4鍙?nbsp;                                                        *<br>*****************************************************************************</p> <p>    鍏堝簾璇?褰撳垵鏄負浜嗙粫寮NP瀵箂ysenter淇濇姢鑰屾兂鍑烘潵鐨?鍚庢潵鍙戠幇榪濺ootkitUnhooker閮界粫浜?</p> <p>    浠涔堟槸sysenter hook鎴戜篃涓嶇綏鍞嗕簡,涓鑸殑鎷︽埅鏂規硶灝辨槸閫氳繃rdmsr wrmsr 涓や釜鎸囦護鎶婂師鏉ョ殑sysenter鍦板潃鏀規垚鑷繁鐨剆ysenter鍦板潃鏉ュ疄鐜扮殑.榪欑鏂規硶浣跨敤鏂逛究,浣嗘嫻嬩篃寰堝鏄?<br>    榪欓噷浠嬬粛鐨勫彟澶栦竴縐嶆柟娉曚笉鏀瑰彉sysenter鍦板潃,鑰屾槸閫氳繃鐩存帴鍦ㄥ師鏉ysenter鍦板潃閲岄潰鍐欒煩杞唬鐮佹潵瀹炵幇鐨?榪欏疄闄呬笂璺熶竴鑸殑鍑芥暟澶磇nline hook涓鏍?榪欐牱rootkit媯嫻嬪伐鍏峰氨涓嶄細璁や負sysenter宸茬粡鏀瑰彉(瀹為檯涓婁篃鏄病鍙?.<br>    涓鑸殑rootkit媯嫻嬪伐鍏鋒嫻嬪嚱鏁癷nline hook鏄氳繃媯嫻嬮暱璺寵漿鎸囦護0xE9鐨勬潵鍒ゆ柇璺寵漿璺濈鏄笉鏄秴鍑哄嚱鏁版墍鍦ㄧ殑妯″潡鑼冨洿鏉ョ‘瀹氱殑.浣嗘槸瀹炵幇璺寵漿鎴戜滑涔熷彲浠ュ熷姪瀵勫瓨鍣ㄦ垨鍙橀噺(鐢ㄥ彉閲忚煩杞渶瑕佹秹鍙婇噸瀹氫綅闂,楹葷儲.鎵浠ヤ竴鑸敤瀵勫瓨鍣?,榪欐牱璺寵漿鎸囦護灝變笉鏄?xE9浜嗚屾槸0xFF,榪欎釜緇濆ぇ澶氭暟rootkit媯嫻嬪伐鍏鋒槸媯嫻嬩笉鍒扮殑(鍖呮嫭钁楀悕鐨凴ootkitUnhooker,VICE).</p> <p>    鐢變簬鎴戜滑宸茬粡鏀瑰彉浜咾iFastCall鍑芥暟澶?鎵浠ユ垜浠彧鑳芥妸鍘熸潵鐨勫嚱鏁板ご浠g爜鏀懼埌鍙﹀涓涓湴鏂規墽琛?鍔ㄦ佸垎閰嶅唴瀛?褰撶劧濡傛灉涓嶈冭檻鍏煎鎬х‖緙栫爜涔熸病闂),鐒跺悗鍐嶈煩杞洖鏉?榪欓噷浣跨敤浜?涓夌駭璺?,澶ф鏄繖涓牱瀛?<br>    sysenter->KiFastCall<br>             JMP -> MyKiFastCall(榪欓噷榪涜鎷︽埅鎴栦粈涔堢殑)<br>                    JMP -> KiFastCall head code (榪欓噷鎵ц鍘熸潵KiFastCall鍑芥暟澶翠唬鐮?<br>                           JMP -> KiFastCall + N(宸茬粡鎵ц鎸囦護闀垮害)<br>///////////////////////////////////////////////////////////////////////////////////////////////////  <br>//鍫曡惤澶╂墠<br>//2007騫?鏈?4鏃?br>#include<ntddk.h><br>#include "OpCodeSize.h"</p> <p>ULONG uSysenter;           //sysenter鍦板潃<br>UCHAR uOrigSysenterHead[8];//淇濆瓨鍘熸潵鐨勫叓涓瓧鑺傚嚱鏁板ご<br>PUCHAR pMovedSysenterCode; //鎶婂師鏉ョ殑KiFastCall鍑芥暟澶翠繚瀛樺湪榪欓噷<br>ULONG i;                   //璁板綍鏈嶅姟ID<br>__declspec(naked) void MyKiFastCallEntry(void)<br>{<br>  __asm{<br>            pop  edi     //鍥犱負鐢ㄥ埌浜唀di鏉ヨ煩杞?榪欓噷鎭㈠<br>             mov  i, eax  //寰楀埌鏈嶅姟ID<br>  }<br>  __asm{  <br>           pushad<br>           push fs<br>             push 0x30<br>            pop fs<br>  }<br>  <br>  DbgPrint("sysenter was hooked! Get service ID:%X",i); //璇佹槑鑷繁瀛樺湪</p> <p>  __asm{<br>             pop fs<br>             popad    <br>    jmp pMovedSysenterCode //絎簩璺?璺寵漿鍒板師鏉ョ殑鍑芥暟澶翠唬鐮?<br>  }<br>  <br>}<br>//////////////////////////////////////////////////////<br>VOID OnUnload(IN PDRIVER_OBJECT DriverObject)<br>{    <br>  __asm{<br>    cli<br>             mov  eax,cr0<br>    and  eax,not 10000h<br>    mov  cr0,eax<br>  }</p> <p>  memcpy((PVOID)uSysenter,uOrigSysenterHead,8);//鎶婂師鏉ュ嚱鏁板ご鐨勫叓涓瓧鑺傛仮澶?/p> <p>  __asm{<br>    mov  eax,cr0<br>            or   eax,10000h<br>    mov  cr0,eax<br>    sti<br>  }<br>  ExFreePool(pMovedSysenterCode); // 閲婃斁鍒嗛厤鐨勫唴瀛?br>  DbgPrint("Unload sysenterHook");<br>}<br>////////////////////////////////////////////////////////</p> <p>VOID HookSysenter()<br>{<br>  UCHAR  cHookCode[8] = { 0x57,          //push edi       絎竴璺?浠嶬iFastCall璺沖埌MyKiFastCallEntry.騫剁粫榪噐ootkit媯嫻嬪伐鍏鋒嫻?br>                          0xBF,0,0,0,0,  //mov  edi,0000<br>                          0xFF,0xE7};    //jmp  edi</p> <p>  UCHAR  JmpCode[]={0xE9,0,0,0,0};       //jmp 0000 絎笁璺?浠嶬iFastCall鍑芥暟澶翠唬鐮佽煩杞埌鍘熸潵KiFastCall+N</p> <p>  int    nCopyLen = 0;<br>  int    nPos = 0;</p> <p>  __asm{<br>          mov ecx,0x176<br>            rdmsr<br>    mov uSysenter,eax  //寰楀埌KiFastCallEntry鍦板潃<br>  }<br>  DbgPrint("sysenter:0x%08X",uSysenter);</p> <p>  nPos = uSysenter;<br>   while(nCopyLen<8){ //鎴戜滑瑕佹敼鍐欑殑鍑芥暟澶磋嚦灝戦渶瑕?瀛楄妭 榪欓噷璁$畻瀹為檯闇瑕丆OPY鐨勪唬鐮侀暱搴?鍥犱負鎴戜滑涓嶈兘鎶婁竴鏉″畬鏁寸殑鎸囦護鎵撴柇<br>    nCopyLen += GetOpCodeSize((PVOID)nPos);  //鍙傝?<br>    nPos = uSysenter + nCopyLen;<br>  }<br>  <br>  DbgPrint("copy code lenght:%d",nCopyLen);</p> <p>  pMovedSysenterCode = ExAllocatePool(NonPagedPool,20);</p> <p>  memcpy(uOrigSysenterHead,(PVOID)uSysenter,8);//澶囦喚鍘熸潵8瀛楄妭浠g爜</p> <p>  *((ULONG*)(JmpCode+1)) = (uSysenter + nCopyLen) - ((ULONG)pMovedSysenterCode + nCopyLen)- 5;//璁$畻璺寵漿鍦板潃</p> <p>  memcpy(pMovedSysenterCode,(PVOID)uSysenter,nCopyLen); //鎶婂師鏉ョ殑鍑芥暟澶存斁鍒版柊鍒嗛厤鐨勫唴瀛?br>  memcpy((PVOID)(pMovedSysenterCode + nCopyLen),JmpCode,5); //鎶婅煩杞唬鐮丆OPY涓婂幓</p> <p>  *((ULONG*)(cHookCode+2)) = (ULONG)MyKiFastCallEntry; //HOOK鍦板潃<br>  <br>  DbgPrint("Saved sysenter code:0x%08X",pMovedSysenterCode);<br>  DbgPrint("MyKiFastCallEntry:0x%08X",MyKiFastCallEntry);</p> <p>  __asm{<br>    cli<br>            mov  eax,cr0<br>    and  eax,not 10000h<br>    mov  cr0,eax<br>  }</p> <p>  memcpy((PVOID)uSysenter,cHookCode,8);//鎶婃敼鍐欏師鏉ュ嚱鏁板ご</p> <p>  __asm{<br>    mov  eax,cr0<br>            or   eax,10000h<br>    mov  cr0,eax<br>    sti<br>  }</p> <p>}</p> <p>NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject,PUNICODE_STRING RegistryPath)<br>{</p> <p>  DbgPrint("Welcome to sysenterhook.sys");<br>  DriverObject->DriverUnload = OnUnload;<br>  HookSysenter();<br>  return STATUS_SUCCESS;<br>}    <br>/////////////////////////////////////////////////////////////////////////////////////////////////// <br>浠ヤ笂浠g爜鍦?XP SP2涓枃 + RootkitUnhooker涓嬫祴璇曢氳繃 </p> <p>鍚岀悊 IDT hook涔熷彲浠ョ敤榪欑鏂規硶瀹炵幇,HOOK鐨勫疄璐ㄦ槸鏀瑰彉紼嬪簭嫻佺▼,鏃犺鍦ㄥ摢閲屾敼鍙?br>*************************************************************************************************<br>鍙傝?, 嫻烽鏈堝獎,銆愬垎浜戣タ瑁ゅ摜鐨?Hook Api Lib 0.2 For C  </p> <p>;http://bbs.pediy.com/showthread.php?p=420864<br> <br> <br></p> <img src ="http://m.shnenglu.com/xingkongyun/aggbug/95329.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/xingkongyun/" target="_blank">鏉ㄥ漿褰?/a> 2009-09-04 19:40 <a href="http://m.shnenglu.com/xingkongyun/archive/2009/09/04/95329.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>NASM 涓?VC 娣峰悎緙栫▼鐨勫皬緇?/title><link>http://m.shnenglu.com/xingkongyun/archive/2009/04/07/79219.html</link><dc:creator>鏉ㄥ漿褰?/dc:creator><author>鏉ㄥ漿褰?/author><pubDate>Tue, 07 Apr 2009 14:53:00 GMT</pubDate><guid>http://m.shnenglu.com/xingkongyun/archive/2009/04/07/79219.html</guid><wfw:comment>http://m.shnenglu.com/xingkongyun/comments/79219.html</wfw:comment><comments>http://m.shnenglu.com/xingkongyun/archive/2009/04/07/79219.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.shnenglu.com/xingkongyun/comments/commentRss/79219.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/xingkongyun/services/trackbacks/79219.html</trackback:ping><description><![CDATA[<br><br> <div id="hvzpftn" class=Section0 style="LAYOUT-GRID: 15.6pt none"> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><font face=瀹嬩綋>鎬葷粨涓涓?</font></span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><font face=瀹嬩綋>瀵逛簬NASM涓嶸C娣峰悎緙栫▼</font></span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><font face=瀹嬩綋>鍦ˋSM鏂囦歡鐨勫紑澶磋緭鍏?/font></span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'">[bits 32]                      ;<font face=瀹嬩綋>浣跨敤32浣嶆ā寮忕殑澶勭悊鍣?/font></span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'">[section .text]                ;text<font face=瀹嬩綋>孌? 浠g爜孌?鍙騫跺彲鎵ц</font></span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><font face=瀹嬩綋>澹版槑浠g爜孌靛茍涓斾唬鐮佹鏄?2浣?搴斾負瀵逛簬VC鐢熸垚鐨凱E鏂囦歡錛屽叾浠g爜鏀懼湪.text鐨勪唬鐮佹鍐?/font></span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><font face=瀹嬩綋>錛屾暟鎹斁鍦?data鐨勬暟鎹鍐?鎵浠ュ鏋滆瀹氫箟鏁版嵁鐨勮瘽錛岃鍦?data孌靛唴</font></span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'">{<font face=瀹嬩綋>涓} 鍦–浠g爜涓皟鐢ㄦ眹緙栫▼搴?/font></span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'">1.</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'">.<font face=瀹嬩綋>濡傛灉閬靛畧C 璋冪敤綰﹀畾</font></span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><font face=瀹嬩綋>鎵撴瘮鏂規垜浠湪ASM涓疄鐜頒袱涓暟鐩稿姞鐨勫嚱鏁?</font></span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'">_myadd:</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'">push ebp</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'">mov ebp,esp</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'">mov eax,[ebp+8]  ;a</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'">mov ebx,[ebp+12]    ;b</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'">add eax,ebx</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'">add esp,4</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'">mov esp,ebp</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'">pop ebp</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'">ret </span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><font face=瀹嬩綋>鍦ˋSM鐨勫紑澶村啓涓奼lobal _myadd;</font></span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><font face=瀹嬩綋>鍦–鏂囦歡涓0鏄庡嚱鏁?nbsp;extern "C" int _cdecl myadd(int a,int b); </font></span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><font face=瀹嬩綋>鏈涓昏鐨勬槸瑕佸湪ASM鐨勫嚱鏁板悕縐扮殑鍓嶉潰鍔犱笂涓涓?nbsp;_(涓嬪垝綰? ,浣嗘槸鍦–鏂囦歡涓0鏄庣殑鍑芥暟涓嶇敤鍔犱笅鍒掔嚎,騫朵笖涓瀹氳鍔犱笂extern "C",騫朵笖鐢╛cdecl 澹版槑錛岃繖鏍蜂互鍚庡氨鍙互鍦–涓皟鐢ˋSM涓殑鍑芥暟浜嗐?/font></span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'">2.</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><font face=瀹嬩綋>濡傛灉閬靛畧stdcall 璋冪敤綰﹀畾</font></span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><font face=瀹嬩綋>榪樼敤涓婇潰鐨勯偅涓袱涓暟鐩稿姞鐨勪緥瀛?/font></span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'">_myaddstdcall@8</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'">:</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'">push ebp</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'">mov ebp,esp</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'">mov eax,[ebp+8]  ;a</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'">mov ebx,[ebp+12]    ;b</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'">add eax,ebx</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'">add esp,4</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'">mov esp,ebp</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'">pop ebp</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'">ret 8</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><font face=瀹嬩綋>鍦ˋSM鏂囦歡鐨勫紑澶村啓涓?nbsp;global </font></span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'">_myaddstdcall@8</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><font face=瀹嬩綋>鍦–鏂囦歡涓0鏄庡嚱鏁?nbsp;extern "C" int _stdcall myaddstdcall(int a,int b); </font></span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><font face=瀹嬩綋>榪欓噷瑕佹敞鎰忕殑鏄嚱鏁扮殑鍚嶇О闂,涓鑸槸_XXX@N ,涔熷氨鏄湪寮澶村姞涓婁竴涓笅鍒掔嚎,@N涓殑N璺熷弬鏁扮殑澶у皬鏈夊叧緋伙紝鐩墠鎴戠殑鐞嗚В鏄墍鏈夊弬鏁板湪鍫嗘爤涓崰鐢ㄧ殑鎬葷殑澶у皬.浣嗘槸涓嶇‘瀹氾紝鎴戝彧鏄帹嫻嬬殑錛屽鏋滈偅浣嶇煡閬撳叿浣撶殑瑙勫畾涓瀹氳鍛婃垜涓澹板晩銆?/font></span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'">{<font face=瀹嬩綋>浜寎 鍦ㄦ眹緙栦腑璋冪敤C涓殑鍑芥暟</font></span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'">1.</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><font face=瀹嬩綋>閬靛畧C璋冪敤綰﹀畾</font></span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><font face=瀹嬩綋>涓句釜渚嬪瓙:</font></span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'">extern "C" void _cdecl myprint(int a)</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'">{</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"></span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"></span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'">printf("myprint %d\n",a);</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"> </span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'">}</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><font face=瀹嬩綋>鍦ˋSM涓0鏄?nbsp;extern _myprint ,鐒跺悗灝卞彲浠ョ敤 push xxx 錛宑all myprint   , add esp ,4 璋冪敤浜?/font></span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><font face=瀹嬩綋>銆傝娉ㄦ剰鐨勬槸call 璋冪敤瀹屽悗錛屼竴瀹氳鍔犱笂add esp ,X 鏉ュ鉤琛″爢鏍?搴斾負C璋冪敤綰﹀畾瑙勫畾鏄皟鐢ㄨ呭鉤琛″爢鏍?</font></span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'">2.</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><font face=瀹嬩綋>閬靛畧stdcall 璋冪敤綰﹀畾</font></span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'">extern "C" void _stdcall  myprint</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'">stdcall</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'">(</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'">int a</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'">)</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'">{</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"></span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"></span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'">printf("myprintstdcall %</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'">d</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'">\n",a);</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'">}</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><font face=瀹嬩綋>鍦ˋSM涓0鏄巈xtern _myprintstdcall@4 ,鐒跺悗鐢╬ush xxx  ,call _myprintstdcall@4 璋冨姩錛岃繖閲屽氨涓嶇敤鍐嶅姞add esp錛孹浜嗭紝鏈夊嚱鏁版湰韜鉤琛″爢鏍?</font></span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> <p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><font face=瀹嬩綋>灝辮繖浜涗簡錛岄兘鏄釜浜烘葷粨錛岄毦鍏嶆湁涓嶈凍涓庨敊璇紝榪樿澶у鎸囨.</font></span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: '瀹嬩綋'; mso-spacerun: 'yes'"><o:p></o:p></span></p> </div> <!--endfragment--> <img src ="http://m.shnenglu.com/xingkongyun/aggbug/79219.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/xingkongyun/" target="_blank">鏉ㄥ漿褰?/a> 2009-04-07 22:53 <a href="http://m.shnenglu.com/xingkongyun/archive/2009/04/07/79219.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>VC++鍐呰仈姹囩紪(MSDN鐩稿叧鍐呭瀹屾暣緲昏瘧)http://m.shnenglu.com/xingkongyun/archive/2008/12/21/70003.html鏉ㄥ漿褰?/dc:creator>鏉ㄥ漿褰?/author>Sun, 21 Dec 2008 09:07:00 GMThttp://m.shnenglu.com/xingkongyun/archive/2008/12/21/70003.htmlhttp://m.shnenglu.com/xingkongyun/comments/70003.htmlhttp://m.shnenglu.com/xingkongyun/archive/2008/12/21/70003.html#Feedback1http://m.shnenglu.com/xingkongyun/comments/commentRss/70003.htmlhttp://m.shnenglu.com/xingkongyun/services/trackbacks/70003.htmlVC++鍐呰仈姹囩紪錛屽皢MSDN閲岄潰鍏充簬鍐呰仈姹囩紪鐨勫嚑涔庡叏緲昏瘧浜嗭紝涓涓婂崍鐨勬垚鏋滃晩錛屽摢緲昏瘧閿欎簡錛屽憡鎴戜竴澹板晩銆傘傘?/p>


銆愪竴銆?鍦?__asm block涓嬌鐢ㄦ眹緙栬璦

1.鍏抽敭瀛梍_asm璋冪敤鍐呰仈姹囩紪璇彞
鏈変笁縐嶆柟寮忓彲鐢?br>錛?錛塤_asm block 褰㈠紡
渚嬪瓙錛?br>// asm_overview.cpp
// processor: x86
void __declspec(naked) main()
{
    // Naked functions must provide their own prolog...
    __asm {
        push ebp
        mov ebp, esp
        sub esp, __LOCAL_SIZE
    }
   
    // ... and epilog
    __asm {
        pop ebp
        ret
    }
}

錛?錛夊皢__asm鏀懼湪姣忓彞姹囩紪鎸囦護鐨勫紑澶?br>渚嬪瓙錛?br>__asm push ebp
__asm mov  ebp, esp
__asm sub  esp, __LOCAL_SIZE

錛?錛夊簲涓篲_asm 涔熸槸涓涓鍙ュ垎闅旂錛屾墍浠ュ彲浠ュ皢姹囩紪鎸囦護鏀懼湪鍚屼竴琛屼笂
渚嬪瓙錛?br>__asm push ebp   __asm mov  ebp, esp   __asm sub  esp, __LOCAL_SIZE

 

2.鍐呰仈姹囩紪鎸囦護闆?br>VC++緙栬瘧鍣ㄦ敮鎸丳entium 4 鍜?AMD Athlon鐨勬墍鏈夋寚浠わ紝棰濆鐨勮鍏朵粬鐩爣澶勭悊鍣ㄦ敮鎸佺殑鎸囦護
鑳藉琚垱閫犵敤_emit 浼寚浠ゃ?br>闄勶細_emit 浼寚浠よ鏄?br>_emit浼寚浠ょ殑MASM鐨凞B鎸囦護鐩鎬技錛屼綘鑳藉浣跨敤_emit鍦ㄤ唬鐮佹錛坱ext segment錛夌殑褰撳墠浣嶇疆
鍘誨畾涔変竴涓瓧鑺傜殑绔嬪嵆鏁般俖emit 涓嬈″彧鑳藉畾涔変竴涓瓧鑺傦紝騫朵笖浠呬粎鑳藉鍐嶄唬鐮佹錛坱ext segment錛?br>鍐呭畾涔夈?/p>

渚嬪瓙錛?br>#define randasm __asm _emit 0x4A __asm _emit 0x43 __asm _emit 0x4B
 .
 .
 .
__asm {
     randasm
     }

3.鍐嶅唴鑱旀眹緙栦腑鐨凪ASM琛ㄨ揪寮?br>鍐呰仈姹囩紪鑳藉浣跨敤浠諱綍鐨凪ASM鐨勮〃杈懼紡錛岃兘澶熶嬌浠諱綍鎿嶄綔鏁板拰鎿嶄綔鐮佺殑緇勫悎銆?/p>

4.鍐呰仈姹囩紪涓殑鏁版嵁鎸囦護鍜屾搷浣?br>灝界__asm block鑳藉寮曠敤C/C++鐨勬暟鎹被鍨嬪拰瀵硅薄(object)錛屼絾鏄粬涓嶈兘瀹氫箟鏁版嵁瀵硅薄鐢∕ASM鐨勬寚浠ゅ拰鎿嶄綔,灝ゅ叾錛屼笉鑳戒嬌鐢?/p>

DB,DW,DD,DQ,DT,DF 鎴栬匘UP,THIS銆侻ASM涓粨鏋勪綋鍜岃褰曠被鍨嬩篃鏄笉鍙敤鐨勶紝鍐呰仈姹囩紪涓嶆帴鍙桽TRUC,RECORD,WIDTH,MASK鎿嶄綔.

5.EVEN 鍜?ALIGN 鎸囦護
灝界鍐呰仈姹囩紪涓嶆敮鎸佸ぇ澶氭暟MASM鐨勬寚浠わ紝浣嗘槸鏀寔EVEN 鍜?ALIGN 鎸囦護錛岃繖涓や釜鎸囦護濉厖NOP鍦ㄦ眹緙栦唬鐮佷腑鍘誨鍏舵暟鎹拰鎸囧畾鐨勮竟鐣?榪欐牱鑳藉

CUP鐨勬暟鎹闂洿鍔犻珮鏁?

6.鍐呰仈姹囩紪涓殑MASM瀹忔寚浠?br>鍐呰仈姹囩紪涓嶆敮鎸丮Asm涓殑瀹忔寚浠わ紙MACRO, REPT, IRC, IRP, ENDM錛夋垨鑰呭畯鎿嶄綔絎?<>, !, &, %, .TYPE)銆?/p>

7.鍐呰仈姹囩紪涓殑孌靛紩鐢?br>鍐嶅唴鑱旀眹緙栦腑鎸囧畾涓涓鍙兘閫氳繃瀵勫瓨鍣紝鑰屼笉鑳介氳繃鍚嶅瓧錛堜緥濡傦紝孌靛悕_TEXT鏄笉鍙敤鐨勶級錛屾瓚呰秺蹇呴』鏄懼紡鐨勪嬌鐢ㄥ瘎瀛樺櫒錛屽ES:[BX].

8.鍐呰仈姹囩紪涓殑綾誨瀷鍜屽彉閲忓昂瀵擱棶棰?br>LENGTH, SIZE 鍜?TYPE 鎿嶄綔絎︽湁涓涓檺瀹氱殑鎰忎箟鍐嶅唴鑱旀眹緙栦腑錛屼粬浠笉鑳借浣跨敤鍜孌UP涓璧?鍥犱負鍐嶅唴鑱旀眹緙栦腑涓嶈兘浣跨敤DUP鍛戒護),浣嗘槸鑳藉浣?/p>

鐢ㄤ粬浠幓寰楀埌C/C++鍙橀噺鐨勫昂瀵稿拰綾誨瀷.
*LENGTH 鎿嶄綔絎﹁繑鍥炰竴涓暟緇勭殑鍏冪礌鏁扮洰錛岄潪鏁扮粍鍙橀噺榪斿洖1.
*Size 鎿嶄綔絎﹁繑鍥濩/C++鍙橀噺鐨勫昂瀵革紝涓涓彉閲忕殑灝哄鏄疞ENGTH涓嶵YPE鐩鎬箻鐨勭粨鏋?
*TYPE 鎿嶄綔絎﹁繑鍥濩/C++綾誨瀷鎴栧彉閲忕殑灝哄錛屽鏋滄槸涓涓暟緇勫彉閲忚繑鍥炴暟緇勪腑鍗曚釜鍏冪礌鐨凾YPE.

渚嬪瓙錛?br>int arr[8];
__asm                   C                        Size 
LENGTH arr       sizeof(arr)/sizeof(arr[0])      8
SIZE arr         sizeof(arr)                    32
TYPE arr         sizeof(arr[0])                 4

9.鍐呰仈姹囩紪鐨勬敞閲婇棶棰?br>鍐峗_asm block 涓彲浠ヤ嬌鐢ㄦ眹緙栬璦鐨勬敞閲?br>渚嬪瓙錛?br>__asm mov ax, offset buff ; Load address of buff

銆愪簩銆?鍐峗_asm block 涓嬌鐢–/C++
姒傝堪錛氬簲涓哄唴鑱旀眹緙栬兘澶熶笌C/C++璇彞娣峰悎浣跨敤錛屼粬姊﹁兘澶熶嬌鐢–/C++鐨勫彉閲忛氳繃鍚嶅瓧,榪樻湁C/C++璇█鐨勫叾浠栧厓绱?
*絎﹀彿錛屽寘鎷爣鍙鳳紝鍙橀噺錛屽嚱鏁板悕.
*甯擱噺錛屽寘鎷鍙峰父閲忓拰鏋氫婦錛坋num錛?br>*瀹忥紝棰勫鐞嗗懡浠?br>*娉ㄩ噴錛堝寘鎷?/**/鍜?/錛?br>*綾誨瀷鍚嶇О
*typedef鍚嶇О錛屼竴鑸兘鍜孭TR鍜孴YPE涓璧蜂嬌鐢ㄦ垨鑰呭幓鎸囧畾緇撴瀯浣撴垨鑱斿悎鎴愬憳

1.鍦?__asm block 涓嬌鐢ㄦ搷浣滅
鍐?__asm block 涓笉鑳戒嬌鐢?C/C++鐗規湁鐨勬搷浣滅錛屼緥濡?lt;<銆侰/C++涓庢眹緙栧叡鐢ㄧ殑鎿嶄綔絎︼紝濡?錛屾槸琚В閲婁負姹囩紪鎿嶄綔絎︺?br>涓句釜渚嬪瓙鏉ヨ錛孾]鎿嶄綔絎﹀湪C璇█閲岃瑙i噴涓烘暟緇勭殑涓嬫爣錛?C鑳藉鑷姩鐨勮漿鎹㈡暟緇勫厓绱犵殑灝哄,瑙i噴涓洪鍦板潃+鍗曚釜鍏冪礌鐨勯暱搴?鏂規嫭鍙峰唴鐨勫?
浣嗘槸鍐峗_asm block涓紝浠栬鐪嬪仛 MASM绱㈠紩鎿嶄綔絎?index operator),瑙i噴涓洪鍦板潃+鏂規嫭鍙蜂腑鐨勫?
涓嬮潰鐨勫疄渚嬫樉紺轟簡浠栦滑鐨勪笉鍚屻?br>int array[10];

__asm mov array[6], bx ;  Store BX at array+6 (not scaled)

array[6] = 0;         /* Store 0 at array+24 (scaled) */

鑳藉浣跨敤TYPE鎿嶄綔絎﹀幓杈懼埌鍜孋鍚屾牱鐨勬晥鏋?br>__asm mov array[6 * TYPE int], 0 ; Store 0 at array + 24

array[6] = 0;                   /* Store 0 at array + 24 */

2.浣跨敤C/C++絎﹀彿鍦╛_asm block 涓?br>__asm鍧楄兘澶熷紩鐢?C/C++鍦ㄤ綔鐢ㄥ煙涓殑絎﹀彿錛堝寘鎷彉閲忓悕錛屽嚱鏁板悕錛屾爣鍙?涓嶈兘璋冪敤C++鐨勬垚鍛樺嚱鏁幫級

鍦ㄤ嬌鐢–/C++絎﹀彿鏃舵湁涓浜涢檺鍒?
*姣忔潯姹囩紪璇彞浠呬粎鑳藉鍖呭惈涓涓狢/C++鐨勭鍙楓傚湪LENGTH, TYPE, 鍜?SIZE琛ㄨ揪寮忎腑鍒欏彲浠ヤ嬌鐢ㄥ涓狢/C++絎﹀彿銆?br>*鍦╛_asm block涓嚱鏁板紩鐢ㄥ繀欏誨厛澹版槑銆傚惁鍒欑紪璇戝櫒涓嶈兘鍖哄埆鍦╛_asm block 涓殑鏍囧彿涓庡嚱鏁板悕.
*涓嶈兘浣跨敤涓嶮ASM淇濈暀瀛楃浉鍚岀殑絎﹀彿鍚嶇О錛堟棤璁哄ぇ灝忓啓錛夈?br>*緇撴瀯浣撳拰鑱斿悎綾誨瀷涓嶈兘鍒瘑鍒湪__asm block涓?

3.璁塊棶C/C++鏁版嵁鍦╛_asm block涓?br>鍦ㄥ唴鑱旀眹緙栦腑閫氳繃鍚嶇О璁塊棶C/C++鍙橀噺鏄崄鍒嗘柟渚跨殑銆傚湪__asm block涓兘璁塊棶浠諱綍鍦ㄤ綔鐢ㄥ煙涓鍙楓?br>渚嬪錛屽湪鍏朵綔鐢ㄥ煙涓湁涓涓狢鍙橀噺 var錛?__asm MOV EAX,var 瀛樺偍var鐨勫煎湪EAX涓?/p>

濡傛灉涓涓被錛岀粨鏋勪綋鎴栬呰仈鍚堢粨鏋勭殑鎴愬憳鏄敮涓鐨勶紝鍦╛_asm block涓紩鐢ㄤ粬浠呬粎浣跨敤鎴愬憳鍙橀噺鍚嶏紝
鑰屼笉鐢ㄤ嬌鐢ㄥ彉閲忓悕鎴栬卼ypedef鍚嶅湪.鎿嶄綔絎︿箣鍓嶃傚鏋滄垚鍛樺悕涓嶆槸鍞竴鐨勶紝鏃犺濡備綍錛屽繀欏繪斁緗彉閲忓悕鎴栬卼ypedef鍚嶅湪.鎿嶄綔絎︿箣鍓嶃?br>渚嬪瓙錛?br>// InlineAssembler_Accessing_C_asm_Blocks.cpp
// processor: x86
#include <stdio.h>
struct first_type
{
   char *weasel;
   int same_name;
};
struct second_type
{
   int wonton;
   long same_name;
};
int main()
{
   struct first_type hal;
   struct second_type oat;
   __asm
   {
      lea ebx, hal
      mov ecx, [ebx]hal.same_name ; Must use 'hal'
      mov esi, [ebx].weasel       ; Can omit 'hal'
   }
   return 0;
}

鍦?__asm block涓兘澶熻闂瓹++ 鐨勬暟鎹垚鍛樿屼笉鐢ㄥ幓閬靛畧璁塊棶闄愬埗錛屼絾鏄笉鑳借皟鐢–++鐨勬垚鍛樺嚱鏁?

4.浣跨敤鍐呰仈姹囩紪鍐欏嚱鏁?br>鐣ャ傛病鍟ュソ璁茬殑錛岀洿鎺ョ湅渚嬪瓙
int power2( int num, int power )
{
   __asm
   {
      mov eax, num    ; Get first argument
      mov ecx, power  ; Get second argument
      shl eax, cl     ; EAX = EAX * ( 2 to the power of CL )
   }
   // Return with result in EAX
}

5.浣跨敤鍜屼繚瀛樺瘎瀛樺櫒鍦ㄥ唴鑱旀眹緙栦腑
涓鑸潵璇達紝涓嶅簲璇ュ亣璁懼瘎瀛樺櫒灝嗕細鏈変竴涓寚瀹氱殑鍊煎湪__asm blok鍧楀紑濮嬫椂錛屽瘎瀛樺櫒鐨勫間笉淇濊瘉鍦ㄧ寮浜嗕竴涓猒_asm block鍚庤淇濆瓨,濡傛灉浣犵寮

浜嗕竴涓猘sm鍧楀茍寮濮嬩簡鍙︿竴涓猘sm鍧楋紝涓嶅簲璇ュ簲鐢ㄥ湪涓婁竴涓潡涓繚瀛樺瘎瀛樺櫒鐨勫箋侫n __asm block inherits whatever register values result

from the normal flow of control.
濡傛灉浣跨敤__fastcall璋冪敤綰﹀畾錛岀紪璇戝櫒浼犻掑弬鏁頒嬌鐢ㄥ瘎瀛樺櫒鑰屼笉鏄爢鏍堬紝榪欏彲鑳戒駭鐢熶竴涓棶棰樺湪搴旂敤浜哶_asm block鐨勫嚱鏁頒腑錛屽洜涓哄嚱鏁版棤娉曠煡

閬撻偅涓弬鏁版槸鍦ㄥ瘎瀛樺櫒涓傚鏋滀竴涓嚱鏁版帴鍙楀弬鏁板湪EAX涓紝浣嗘槸榪囧悗鍒珛鍒葷敤鏉ュ瓨鍌ㄥ叾浠栫殑鍊鹼紝閭f懇榪欎釜鍘熷鐨勫弬鏁板氨涓㈠け浜嗐傚茍涓旓紝鍦?/p>

__fastcall綰﹀畾涓紝蹇呴』淇濆瓨ECX瀵勫瓨鍣ㄧ殑鍊箋?br>鍘婚伩鍏嶅姝ょ殑瀵勫瓨鍣ㄥ啿紿侊紝涓嶈浣跨敤__fastcall璋冪敤綰﹀畾涓洪偅浜涘寘鍚玙_asm block鐨勫嚱鏁?濡傛灉浣跨敤/Gr緙栬瘧鍣ㄩ夐」鎸囧畾浜嗗叏灞鐨刜_fastcall綰﹀畾

錛岄偅鎽╁畾涔夋瘡涓寘鍚玙_asm block鐨勫嚱鏁扮敤_stdcall鎴朹_cdecl銆?br>褰撲嬌鐢╛_asm鍘誨啓姹囩紪璇彞鍦–/C++涓紝涓嶉渶瑕佸幓淇濆瓨EAX,EBX,ECX,EDX,ESI,EDI銆傚湪浣跨敤EBX,ESI,EDI鏃訛紝浣犲己榪紪璇戝櫒鍘諱繚瀛樺茍鍥炲榪欎簺瀵勫瓨

鍣ㄧ殑鍊煎湪鍑芥暟鐨勫簭璦涓庣粨灝懼.
涔熷簲璇ヤ繚瀛樹嬌鐢ㄧ殑鍏朵粬瀵勫瓨鍣紙濡侱S,SS,SP,BP,EFLAGS錛夊浜庤繖涓猒_asm block鐨勪綔鐢ㄥ煙.
涔熷簲璇ヤ繚瀛楨SP鍜孍BP闄ら潪浣犳湁鍏朵粬鐨勬敼鍙樹粬浠殑鍘熷洜銆傦紙渚嬪錛屽爢鏍堣漿鎹級

涓嬮潰榪欐涓嶅お濂界炕璇戯紝鑷繁鐪嬪惂錛?br>Some SSE types require eight-byte stack alignment, forcing the compiler to emit dynamic stack-alignment code. To be able to

access both the local variables and the function parameters after the alignment, the compiler maintains two frame pointers.

If the compiler performs frame pointer omission (FPO), it will use EBP and ESP. If the compiler does not perform FPO, it will

use EBX and EBP. To ensure code runs correctly, do not modify EBX in asm code if the function requires dynamic stack

alignment as it could modify the frame pointer. Either move the eight-byte aligned types out of the function, or avoid using

EBX.
娉ㄦ剰:濡傛灉鍦╛_asm block涓敼鍙樹簡鏂瑰悜鏍囧織錛岄氳繃STD,CLD錛岄偅鎽╁氨瑕佷繚瀛樿繖浜涙爣蹇楃殑鍘熷鍊?

6.鍦ㄥ唴鑱旀眹緙栦腑璺寵漿鍒版寚瀹氭爣鍙?br>鍍忎竴鑸殑 C/C++鏍囧彿錛屽湪__asm block鏈夊嚱鏁頒綔鐢ㄥ煙錛堝湪鏁翠釜鍑芥暟涓彲瑙侊紝鑰屼笉浠呬粎鏄湪瀹氫箟鐨刜_asm block涓級,姹囩紪鎸囦護涓巊oto璇彞閮借兘璺沖埌

鏍囧彿澶?
瀹氫箟鍦╛_asm block涓殑鏍囧彿涓嶆槸澶у皬鍐欐晱鎰熺殑錛実oto璇彞涓庢眹緙栨寚浠よ兘澶熷紩鐢ㄦ暣涓爣鍙瘋屼笉鐢ㄨ冭檻澶у皬鍐欍備絾鏄疌/C++浠g爜涓殑鏍囧彿鏄ぇ灝忓啓

鏁忔劅鐨勫綋浣跨敤goto璇彞鏃?浣跨敤姹囩紪璇彞涓嶇敤鑰冭檻澶у皬鍐欓棶棰?
渚嬪瓙錛?br>void func( void )
{
   goto C_Dest;  /* Legal: correct case   */
   goto c_dest;  /* Error: incorrect case */

   goto A_Dest;  /* Legal: correct case   */
   goto a_dest;  /* Legal: incorrect case */

   __asm
   {
      jmp C_Dest ; Legal: correct case
      jmp c_dest ; Legal: incorrect case

      jmp A_Dest ; Legal: correct case
      jmp a_dest ; Legal: incorrect case

      a_dest:    ; __asm label
   }

   C_Dest:       /* C label */
   return;
}
int main()
{
}

鍦╛_asm block涓笉瑕佷嬌鐢–搴撶殑鍑芥暟鍚嶄綔涓烘爣鍙峰悕縐般?br> BAD TECHNIQUE: using library function name as label
jne exit
   .
   .
   .
exit:
   ; More __asm code follows

鍦∕ASM涓紙$錛夌鍙蜂綔涓哄綋鍓嶇殑鍦板潃璁℃暟錛坈urrent location counter錛夈備粬鏄綋鍓嶆鍦ㄨ緙栬瘧鐨勬寚浠ょ殑鏍囧彿.鍦╛_asm block 涓粬鐨勪富瑕佷綔鐢?/p>

鏄幓浣滀負涓涓暱鐨勬潯浠惰煩杞?
jne $+5 ; next instruction is 5 bytes long
jmp farlabel
; $+5
   .
   .
   .
farlabel:

銆愪笁銆?鍦ㄥ唴鑱旀眹緙栦腑璋冪敤C鍑芥暟
涓涓猒_asm block鑳藉璋冪敤C鍑芥暟錛屽寘鎷珻搴撳嚱鏁般備笅闈㈡槸璋冪敤printf鐨勪緥瀛愶細
// InlineAssembler_Calling_C_Functions_in_Inline_Assembly.cpp
// processor: x86
#include <stdio.h>

char format[] = "%s %s\n";
char hello[] = "Hello";
char world[] = "world";
int main( void )
{
   __asm
   {
      mov  eax, offset world
      push eax
      mov  eax, offset hello
      push eax
      mov  eax, offset format
      push eax
      call printf
      //clean up the stack so that main can exit cleanly
      //use the unused register ebx to do the cleanup
      pop  ebx
      pop  ebx
      pop  ebx
   }
}

銆愬洓銆?瀹氫箟__asm block浣滀負瀹?br>C璇█鐨勫畯鎻愪緵浜嗕竴涓畝渚跨殑鏂瑰紡鍘繪彃姹囩紪浠g爜榪涘叆婧愪唬鐮併備絾鏄偅闇瑕侀澶栫殑灝忓績鍥犱負瀹忚鎵╁睍鍒頒竴涓崟鐙殑閫昏緫琛屼笂錛坅 single logical

line錛夛紝鍘誨垱寤烘棤閿欒鐨勫畯錛屽簲閬靛畧涓嬪垪瑙勫垯:
*鐢▄}鍖呭洿__asm block
*鏀綺_asm 鍏抽敭瀛楀湪姣忔潯姹囩紪鎸囦護鐨勫紑澶?br>*浣跨敤鑰佸紡鐨勬敞閲?/**/)浠f浛姹囩紪涓殑娉ㄩ噴(;)鍜屽崟琛屾敞閲?//).

渚嬪瓙:
#define PORTIO __asm      \
/* Port output */         \
{                         \
   __asm mov al, 2        \
   __asm mov dx, 0xD007   \
   __asm out dx, al       \
}

涓涓猒_asm block鍐欑殑瀹忚兘澶熷甫鍙傛暟錛屼絾鏄笉鑳借繑鍥炲鹼紝鍥犳涓嶈浣跨敤榪欐牱鐨勫畯鍦–/C++琛ㄨ揪寮忎腑.

銆愪簲銆?鍐呰仈姹囩紪鐨勪紭鍖栭棶棰?br>__asm block鐨勫瓨鍦ㄤ細瀵逛紭鍖栦駭鐢熶竴浜涘獎鍝嶃傞鍏堬紝緙栬瘧鍣ㄤ笉浼氬皾璇曞幓浼樺寲__asm block涓殑鎸囦護銆傜浜岋紝__asm block浼氬瀵勫瓨鍣ㄥ彉閲忕殑瀛樺偍浜?/p>

鐢熷獎鍝嶏紝緙栬瘧鍣ㄤ細閬垮厤鍘葷櫥璁扮┛瓚奯_asm block鐨勯偅浜涘瘎瀛樺櫒浼氳淇敼鐨勫彉閲?



]]>
閫氳繃铏氬嚱鏁拌〃璁塊棶縐佹湁铏氬嚱鏁?/title><link>http://m.shnenglu.com/xingkongyun/archive/2008/11/03/65881.html</link><dc:creator>鏉ㄥ漿褰?/dc:creator><author>鏉ㄥ漿褰?/author><pubDate>Mon, 03 Nov 2008 12:43:00 GMT</pubDate><guid>http://m.shnenglu.com/xingkongyun/archive/2008/11/03/65881.html</guid><wfw:comment>http://m.shnenglu.com/xingkongyun/comments/65881.html</wfw:comment><comments>http://m.shnenglu.com/xingkongyun/archive/2008/11/03/65881.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://m.shnenglu.com/xingkongyun/comments/commentRss/65881.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/xingkongyun/services/trackbacks/65881.html</trackback:ping><description><![CDATA[<p> </p> <p>浠婂ぉ鍦ㄧ綉涓婄湅浜嗕竴綃囧叧浜嶤++铏氬嚱鏁拌〃鐨勬枃绔狅紝璁╂垜瀵笴++鍙堟湁浜嗘洿娣變簡鐨勭悊瑙o紝鏂囩珷閾炬帴錛?a >http://www.51cto.com/art/200712/62673_2.htm</a></p> <p>鍦ㄨ繖綃囨枃绔犱腑璁插埌浜嗛氳繃铏氬嚱鏁拌〃璁塊棶縐佹湁鐨勮櫄鍑芥暟鐨勯棶棰橈紝闂灝卞嚭鍦–++鍦ㄨ櫄鍑芥暟琛ㄤ腑淇濆瓨浜嗚櫄鍑芥暟鐨勫湴鍧錛岃岃繖涓湴鍧鍙堝緢鏂逛究鏌ユ壘銆?br>鍦ㄦ瘡涓狢++瀵硅薄瀹炰緥鐨勫紑澶村瓨鍌ㄨ繖榪欎釜瀵硅薄鐨勮櫄鍑芥暟琛ㄧ殑鎸囬拡錛岄氳繃榪欎釜鎸囬拡鍙壘鍒拌櫄鍑芥暟琛紝鍦ㄨ櫄鍑芥暟琛ㄤ腑灝卞瓨鐫铏氬嚱鏁版寚閽堬紝榪欐牱鎴戜滑灝卞彲浠ラ獥榪囩紪璇戝櫒璁塊棶縐佹湁鐨勮櫄鍑芥暟浜嗐?br></p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080"> 1</span><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">base</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080"> 2</span><span style="COLOR: #000000"><img id=Codehighlighter1_11_65_Open_Image onclick="this.style.display='none'; Codehighlighter1_11_65_Open_Text.style.display='none'; Codehighlighter1_11_65_Closed_Image.style.display='inline'; Codehighlighter1_11_65_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_11_65_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_11_65_Closed_Text.style.display='none'; Codehighlighter1_11_65_Open_Image.style.display='inline'; Codehighlighter1_11_65_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_11_65_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_11_65_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080"> 3</span><span style="COLOR: #000000"><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">:<br></span><span style="COLOR: #008080"> 4</span><span style="COLOR: #000000"><img id=Codehighlighter1_39_63_Open_Image onclick="this.style.display='none'; Codehighlighter1_39_63_Open_Text.style.display='none'; Codehighlighter1_39_63_Closed_Image.style.display='inline'; Codehighlighter1_39_63_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_39_63_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_39_63_Closed_Text.style.display='none'; Codehighlighter1_39_63_Open_Image.style.display='inline'; Codehighlighter1_39_63_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>    </span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> f()</span><span id=Codehighlighter1_39_63_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_39_63_Open_Text><span style="COLOR: #000000">{cout</span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">base_f()</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000">endl;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080"> 5</span><span style="COLOR: #000000"><img src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080"> 6</span><span style="COLOR: #000000"><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> child:</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">base</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080"> 7</span><span style="COLOR: #000000"><img id=Codehighlighter1_92_188_Open_Image onclick="this.style.display='none'; Codehighlighter1_92_188_Open_Text.style.display='none'; Codehighlighter1_92_188_Closed_Image.style.display='inline'; Codehighlighter1_92_188_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_92_188_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_92_188_Closed_Text.style.display='none'; Codehighlighter1_92_188_Open_Image.style.display='inline'; Codehighlighter1_92_188_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_92_188_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_92_188_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080"> 8</span><span style="COLOR: #000000"><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">:<br></span><span style="COLOR: #008080"> 9</span><span style="COLOR: #000000"><img id=Codehighlighter1_120_145_Open_Image onclick="this.style.display='none'; Codehighlighter1_120_145_Open_Text.style.display='none'; Codehighlighter1_120_145_Closed_Image.style.display='inline'; Codehighlighter1_120_145_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_120_145_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_120_145_Closed_Text.style.display='none'; Codehighlighter1_120_145_Open_Image.style.display='inline'; Codehighlighter1_120_145_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>    </span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> f()</span><span id=Codehighlighter1_120_145_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_120_145_Open_Text><span style="COLOR: #000000">{cout</span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">child_f()</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000">endl;}</span></span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img id=Codehighlighter1_160_184_Open_Image onclick="this.style.display='none'; Codehighlighter1_160_184_Open_Text.style.display='none'; Codehighlighter1_160_184_Closed_Image.style.display='inline'; Codehighlighter1_160_184_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_160_184_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_160_184_Closed_Text.style.display='none'; Codehighlighter1_160_184_Open_Image.style.display='inline'; Codehighlighter1_160_184_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>    </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> g()</span><span id=Codehighlighter1_160_184_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_160_184_Open_Text><span style="COLOR: #000000">{cout</span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">base_g()</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000">endl;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    <br></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> main()<br></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img id=Codehighlighter1_203_297_Open_Image onclick="this.style.display='none'; Codehighlighter1_203_297_Open_Text.style.display='none'; Codehighlighter1_203_297_Closed_Image.style.display='inline'; Codehighlighter1_203_297_Closed_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_203_297_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_203_297_Closed_Text.style.display='none'; Codehighlighter1_203_297_Open_Image.style.display='inline'; Codehighlighter1_203_297_Open_Text.style.display='inline';" src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_203_297_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_203_297_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    typedef </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">Fun)(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    child b;<br></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    Fun pFun;<br></span><span style="COLOR: #008080">18</span><span style="COLOR: #000000"><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    pFun </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> (Fun)</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">((</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)(</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">b));<br></span><span style="COLOR: #008080">19</span><span style="COLOR: #000000"><img src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif" align=top>    pFun();<br></span><span style="COLOR: #008080">20</span><span style="COLOR: #000000"><img src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div> <br>杈撳嚭緇撴灉錛歝hild_f();<br><br>榪欐牱灝辮闂簡縐佹湁鐨勮櫄鍑芥暟浜嗐?br><br>浣嗘槸榪欐牱鍙兘璁塊棶縐佹湁鐨勮櫄鍑芥暟錛岄偅鎬庝箞鎵嶈兘璁塊棶浠繪剰鐨勭鏈夊嚱鏁板憿錛屽儚child綾葷殑g()鍑芥暟錛岃繕璇烽珮浜烘寚鐐廣? <img src ="http://m.shnenglu.com/xingkongyun/aggbug/65881.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/xingkongyun/" target="_blank">鏉ㄥ漿褰?/a> 2008-11-03 20:43 <a href="http://m.shnenglu.com/xingkongyun/archive/2008/11/03/65881.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>蹇冪洰涓殑緙栫▼楂樻墜http://m.shnenglu.com/xingkongyun/archive/2008/10/10/63710.html鏉ㄥ漿褰?/dc:creator>鏉ㄥ漿褰?/author>Fri, 10 Oct 2008 14:45:00 GMThttp://m.shnenglu.com/xingkongyun/archive/2008/10/10/63710.htmlhttp://m.shnenglu.com/xingkongyun/comments/63710.htmlhttp://m.shnenglu.com/xingkongyun/archive/2008/10/10/63710.html#Feedback0http://m.shnenglu.com/xingkongyun/comments/commentRss/63710.htmlhttp://m.shnenglu.com/xingkongyun/services/trackbacks/63710.html鍡▇~~錛屽彂鐐規枃瀛楋紝澶у鐪嬬湅錛屽氨褰撹嚜鍕夊惂銆傘傘傦紙鍔姏鐨勫涔犲惂錛岃拷璧跺惂錛屽鏃犳澧冨晩錛?br>
[杞澆]蹇冪洰涓殑緙栫▼楂樻墜

Bill Joy, 鍓嶄換Sun鐨勯甯瀛﹀錛屽綋騫村湪Berkeley鏃朵富鎸佸紑鍙戜簡鏈鏃╃増鏈殑BSD銆備粬榪樻槸vi鍜宑sh鐨勪綔鑰呫傚綋鐒訛紝Csh Programming Considered Harmful 鏄彟涓涓瘽棰樹箰銆傛嵁璇翠粬鎯崇湅鐪嬭嚜宸辮兘涓嶈兘鍐欎釜鎿嶄綔緋葷粺錛屽氨鍦ㄤ笁澶╅噷鍐欎簡涓嚜宸辯殑Unix, 涔熷氨鏄疊SD鐨勫墠韜傚綋鐒舵槸浼犺浜嗭紝浣嗚凍瑙佷粬鐨勫姛鍔涖傚彟涓涓紶璇存槸錛?980騫村垵鐨勬椂鍊欙紝DARPA璁〣BN鍦˙erkley Unix閲屽姞涓夿BN寮鍙戠殑TCP/IP浠g爜銆備絾褰撴椂榪樻槸鐮旂┒鐢熺殑B浼集鎬掍簡錛屾嫆緇濇妸BBNTCP/IP鍔犲叆BSD錛屽洜涓轟粬瑙夊緱BBN鐨凾CP/IP鍐欏緱 涓嶅ソ銆備簬鏄疊浼集鍑烘墜浜嗭紝绔殑鏄竴綆皝鍠夛紝寰堝揩灝卞啓鍑轟簡楂樻ц兘鐨勪集鍏嬪埄鐗圱CP/IP銆傚綋鏃禕BN鍜孌ARPA絳句簡宸ㄩ鍚堝悓寮鍙慣CP/IPStack錛?璋佺煡浠栦滑鐨勪唬鐮佽繕涓嶅涓涓爺絀剁敓鐨勫ソ銆備簬鏄粬浠紑浼氥傚彧瑙佸綋鏃禕浼集絀夸釜T-shirt鍑虹幇鍦ㄤ細璁(褰撴椂絀縏-shirt涓嶈薄鐜板湪錛岃繕鏄浉褰撴暎婕殑 鍝?銆傚彧瑙丅BN闂細浣犳庝箞鍐欏嚭鏉ョ殑錛熻孊浼集絳旓細綆鍗曪紝浣犺鍗忚錛岀劧鍚庣紪紼嬪氨琛屼簡銆傛渶浠ゅ伓鏅曞掔殑鏄紝B浼集紜曞+姣曚笟 鍚庡喅瀹氬埌宸ヤ笟鐣屽彂灞曪紝浜庢槸灝卞埌浜嗗綋鏃跺彧鏈変竴闂村姙鍏鐨凷un, 鐒跺悗浠栧氨鎶奡parc璁捐鍑?鏉ヤ箰銆傘傘傝薄榪欑杞‖閫氬悆鐨勭墰浜猴紝鎯充笉浣╂湇閮戒笉琛岀殑璇淬傛嵁Bill Joy鐨勫悓浜嬭錛屼竴鑸紑浼氱殑鏃跺橞浼集鎬繪槸鎷夸竴鍫嗘潅蹇楁極涓嶇粡蹇冨湴璇匯備絾寰寰鍦ㄥ叧閿箣澶勶紝B浼集鍙戣█錛岀洿鍒囪瀹籌紝鎻愬嚭 婕備寒鐨勬瀯鎯籌紝璁╁悓浜嬩滑褰誨簳宕╂簝銆傚浜嗭紝浠栬繕鏄疛ava Spec鍜孞INI鐨勪富瑕佷綔鑰呬箣涓銆?/p>


John Carmack John Carmack錛宨d Software鐨刦ounder鍜孡ead Programmer銆備笂涓湀鍜屼竴涓悶鍥懼艦鐨勫笀鍏勮亰澶╋紝浠栫珶鐒朵笉鐭ラ亾John Carmack, 涔熻鍋跺ぇ澶у湴鏅曚簡涓鎶娿備笉榪囦篃璁告悶鐮旂┒鐨勫拰鎼炲疄鎴樼殑澶氬皯鏈変簺闅斿惂銆傛兂蹇呭枩嬈㈢涓浜虹О灝勫嚮娓告垙鐨勯兘鐭ラ亾J鍝ュ摜銆?0騫翠唬鍒濆彧瑕佽兘鍦≒C涓婃悶涓皬鍔ㄧ敾閮借兘璁╀漢 鎯婂徆涓鐣殑鏃跺欙紝J鍝ュ摜灝辨帹鍑轟簡鐭崇牬澶╂儕鐨凜astle Wolfstein, 鐒跺悗鍐嶆帴鍐嶅姳錛宒oom, doomII, Quake...姣忔閮芥妸3-D鎶鏈帹鍒版瀬鑷淬侸鍝ュ摜鐨勭畝鍘嗕笂璇磋嚜宸辯殑涓撻暱鏄?Exhaust 3-D technology"錛岀湡鏄墰浜轟箣璦涓嶆垜嬈虹殑璇淬傚仛J鍝ュ摜榪欐牱鐨勪漢鏄緢騫哥鐨勶紝鍥犱負鍚勫ぇ鍥懼艦鍗″巶瀹朵竴鏈変簡鏂頒駭鍝佸氨瑕佸悜浠?#8220;榪涜礎” 錛屼笉鐒跺鏋滀粬鐨勬父鎴忎笉鏀寔鍝鍗★紝鍝鍗″熀鏈氨浼氬き鎶樹箰銆傚綋鍒滿S鐨凞irect3D涔熷緱鍚彇 浠栫殑鎰忚錛屼慨鏀逛簡涓嶅皯API銆傚綋鐒訛紝J鍝ュ摜鍦ㄧ粨濠氬墠鍗佹暟騫村涓鏃ュ湴姣忓ぉ緙栫▼14灝忔椂浠ヤ笂錛?涔熸槸鍋朵滑鍑′漢鏈涘皹鑾強鐨勩傚浜嗭紝J鍝ュ摜楂樹腑鑲嗕笟(錛?錛屽彲浠ヨ鏄嚜瀛︽垚鎵嶃備笉榪囧憿錛岃皝瑕佺敤榪欎釜渚嬪瓙鏉ヤ負鑷繁瀛︿範涓嶅ソ杈╂姢錛屽氨澶ч敊鐗歸敊浜嗐傞偅 Leonardo Da Vinci榪樻槸鑷鎴愭墠鍛?浜烘槸縐佺敓瀛愶紝涓嶈兘涓婂)銆傛櫘閫氫漢鍜屽ぉ鎵嶈繕鏄湁鍖哄埆鐨勩傚浜嗭紝鍏跺疄鍋朵滑鍙?#8220;杈懼垎濂?#8221;鏄浉褰撲笉瀵圭殑錛屽洜涓篤inci鏄湴鍚嶏紝鑰孌a Vinci灝辨槸浠嶸inci鏉ョ殑浜虹殑鎰忔濄傛崲鍙ヨ瘽璇達紝Leonardo Da Vinci灝辨槸“浠嶸inci鏉ョ殑Leonardo”鐨勬剰鎬濄傚彨鍒漢“Da Vinci”灝變笉鐭ユ墍璋撲箰銆傚棷錛屾壇榪滀簡錛屾墦浣忋?/p>


David Cutler David Cutler錛孷MS鍜學indows NT鐨勯甯璁″笀錛屽幓寰蔣鍓嶅彿縐扮璋鋒渶鐗涚殑kernel寮鍙戝憳銆傚綋鍒濅粬鍜屼粬鐨勬墜涓嬪湪寰蔣涓鍛ㄥ唴鎶婁竴涓叿澶囧熀鏈姛鑳界殑bootable kernel鍐欏嚭鏉ワ紝鐒跺悗璇達細“who can't write an OS in a week?"錛屼篃鏄墰姘斿啿澶╃殑璇淬傞『渚胯涓鍙ワ紝D鐖風埛鍒癗T3.5鏃訛紝綆$悊1500鍚嶅紑鍙戝憳錛岃嚜宸辮繕鍏煎仛璁捐鍜岀紪紼嬶紝涓嶆敼coder鏈壊鍟娿侱鐖風埛澶╃敓鑴?姘旂伀鐖嗭紝鍜屼漢浜夎鏃跺枩嬈㈠弻鎵嬬寷鍑繪瀛愪互澹0鍔褲?-) 鏃ュ父浜よ皥F-word涓嶇鍙c備粬闈㈣瘯縐樹功鏃跺繀闂細"what do you think of the word '****'?" 錛岃鏃犳暟緹庡コ鍒圭窘鑰屽綊銆傜粓浜庢湁涓澶╋紝涓涓悓鏍風伀鐖嗙殑濂抽潰瀵硅繖涓棶棰樿劚鍙h屽嚭錛?That's my favorite word"銆備簬鏄ス琚綍鍙栦箰錛屼負D鐖風埛宸ヤ綔鍒癗T3.5鍙戝竷銆?/p>


Donald E. Knuth Don Knuth銆傞珮鐖風埛鍏跺疄鐢ㄤ笉鐫鍋跺璇淬傚緙栫▼鐨勪笉鐭ラ亾浠栧氨濂藉儚瀛︾墿鐞嗙殑涓嶇煡閬撶墰欏匡紝瀛︽暟瀛︾殑涓嶇煡閬撴鎷夛紝瀛﹂煶涔愮殑涓嶇煡閬撹帿鎵庣壒錛屽Delphi鐨勪笉鐭ュ埌 Anders Hejlsberg錛屾垨鑰呭Linux涓嶇煡閬揕inus Torvalds涓鏍鳳紝涓嶅彲鍘熻皡鍟娿?-)涓轟簡璁╂枃绔犲畬鏁達紝灝卞啀緗楀攩鍑犲彞鍚с傞珮鐖風埛鏈鏃跺氨寮濮嬬粰琛岃鑹茶壊鐨勫叕鍙稿啓鍚勭紼濂囧彜鎬殑緙栬瘧鍣ㄦ專澶栧揩浜嗐備粬鍗栫粰 鍒漢鏃舵敹涓涓ゅ崈緹庡厓錛岄偅浜涘叕鍙告嬁浜哻ode錛屽姞宸ヤ竴涓嬪崠鍑哄幓灝辨槸涓婁竾涓婂崄涓囥備笉榪囦篃娌¤楂樼埛鐖蜂笉鐖借繃錛屽鑰呮湰鑹茬殑璇淬傛兂鎯抽偅鍙槸60騫翠唬鍒濆晩錛?楂樼埛鐖峰啓緙栬瘧鍣ㄥ啓澶氫簡錛岄『甯﹀氨鎼炲嚭浜嗕釜Attribute Grammar鍜孡R(k)錛屽ぇ澶у湴閫犵鍚庝漢鍟娿傝嚦浜庨珮鐖風埛鍦–alTech鐨勭紪紼嬫瘮璧?鏈堿lan Kay寰椾紬澶氶珮楂樻墜鍙傚姞)鎬繪槸絎竴錛屽啓鐨凾ex鍒?6騫村氨code freeze錛岃繕闄勫甫2^n緹庡垎濂栧姳絳夌瓑閮芥槸鑰崇啛鑳借錛屽伓灝變笉楗惰垖涔愩傞『渚胯涓涓嬶紝楂樿佸ぇ鐖鋒槸鏃犲彲浜夎鐨勫啓浣滈珮鎵嬨備粬緇機oncrete Mathematics 鍐欑殑鍓嶈█鍙皳瀛楀瓧閾塊數錛屽牚涓哄墠璦鐨勫吀鑼冦備粬鐨勬妧鏈枃绔犱篃鏄竴緇濓紝鏂囬緇嗚嚧錛岃В閲婄簿褰擄紝鑰屼笖娌℃湁瀛︾┒姘旓紝涓嶅け杞誨揩璺寵劚銆傝寰楀嚑騫村墠璇籆oncrete Mathematics錛屾椂涓嶆椂寮鎬澶х瑧錛岃鑰佸鏋佸叾閮侀椃錛岃寰楁垜nerdy鍒板錛屼笉鍙晳鑽傚叾瀹炲憿錛屽瓙闈為奔錛屽畨鐭ラ奔涔嬩箰錛屾洿涓嶇煡閭e畬鍏ㄦ槸楂樼埛鐖風殑鍔熷姵銆?璇村埌鍐欎綔楂樻墜錛屼笉鑳戒笉鎻怱tephen A. Cook銆備粬鐨勬枃绔犲綋騫村氨琚垜浠殑鍐欎綔鑰佸笀鏋佸姏鎺ㄨ崘錛屽彿縐板吀闆呮枃椋庣殑鏍鋒湰銆傚簱鐖風埛涓澶撮摱鍙戯紝韜潗棰闀匡紝鎬繪槸闈㈠甫璋﹀拰鐨勫井絎戯紝棰囨湁浠欓閬撻錛屾濂藉拰浠栫殑浠欐枃 鐩擱厤鐨勮銆傞珮鐖風埛鍏跺疄榪樻槸寮婧愯繍鍔ㄧ殑鍏堥┍銆傝櫧鐒朵粬娌℃湁璞ichard Stallman閭f牱鍏柟濂旇蛋錛屼絾浠栨崘鐚簡濂藉浣滃搧錛岄兘鍙互鍦ㄧ綉涓婄湅鍒幫紝姣斿钁楀悕鐨凪athematical Writing錛孧MIXWare錛孴he Tex Book絳夛紝鏇翠笉鐢ㄨ瓚充互璁╀粬嫻佽姵鐧句笘鐨凾ex涔愩?/p>


Ken Thompson Ken Thompson錛孋璇█鍓嶈韓B璇█鐨勪綔鑰咃紝Unix鐨勫彂鏄庝漢涔嬩竴(鍙︿竴涓槸Dennis M. Riche鑰佸ぇ錛岃灝婁負DMR)錛孊elle(涓涓帀瀹崇殑鍥介檯璞℃紼嬪簭)鐨勪綔鑰呬箣涓, 鎿嶄綔緋葷粺Plan 9鐨勪富瑕佷綔鑰?鍙︿竴涓槸澶х墰浜篟ob Pike, 鍓嶄笉涔呰google鎸栬蛋浜?銆侹en鐖風埛涔熺畻鏄綆楁満鍘嗗彶涓婂紑澶╄緹鍦扮殑浜虹墿浜嗐?969騫磋繕鏄綆楁満鍙插墠鏃朵唬錛屾櫘閫氫漢閮借涓哄彧鏈夊ぇ鍨嬫満鎵嶈兘榪愯閫氱敤鐨勬搷 浣滅郴緇燂紝灝忓瀷鏈哄彧鏈夐珮灞變話姝㈢殑浠藉効銆傝嚦浜庣敤楂樼駭璇█鏉ュ啓鎿嶄綔緋葷粺錛屾洿鏄瑧璋堛侹en鐖風埛鑷劧涓嶆槸姹犱腑鐗?錛屼簬鏄粬鍜孌MR鎬掍簡錛屽湪1969騫村埌1970闂寸敤姹囩紪鍦≒DP-7涓婂啓鍑轟簡UNIX鐨勭涓涓増鏈備粬浠茍涓嶇煡閬擄紝涓鍦鴻槳杞扮儓鐑堢殑UNIX浼犲鐢辨鎷夊紑浜?搴忓箷銆侹en鐖風埛鍦?971騫村張鎶奤nix鐢–閲嶅啓錛屼簬鏄疌鍦ㄩ殢鍚?0騫存垚灝變簡涓嶇煡澶氬皯璞澃鐨勬ⅵ鎯沖拰鍏夎崳銆侹en鐖風埛榪樻湁孌典匠璇濓細 瑁呬簡UNIX鐨凱DP-11鏈鏃╄瀹夎鍦˙ell Lab閲屼緵澶у鏃ュ父浣跨敤銆傚緢蹇ぇ瀹跺氨鍙戠幇Ken鐖風埛鎬昏兘榪涘叆浠栦滑鐨勫笎鎴鳳紝鑾峰緱鏈楂樻潈闄愩侭ell Lab閲岀殑縐戝瀹墮兘蹇冩瘮澶╅珮錛屽綋鐒惰鎼炲緱閮侀椃鏃犳瘮銆備簬鏄湁楂樻墜鎬掍簡錛岃煩鍑烘潵鍒嗘瀽浜哢NIX浠g爜錛屾壘鍒板悗闂紝淇敼浠g爜錛岀劧鍚庨噸鏂扮紪璇戜簡鏁翠釜UNIX銆傚氨鍦ㄥぇ 瀹墮兘浠ヤ負“榪欎釜涓栫晫娓呭噣浜?#8221;鐨勬椂鍊欙紝浠栦滑鍙戠幇Ken鐖風埛榪樻槸杞昏屾槗涓懼湴鎷垮埌浠栦滑鐨勫笎鎴鋒潈闄愶紝鐧炬濅笉瑙e悗 錛屽彧濂界戶緇儊闂楓傝皝鐭ラ亾榪欎竴閮侀椃錛屽氨閮侀椃浜?4騫達紝鐩村埌Ken鐖風埛閬撳嚭涓腑緙樼敱銆傚師鏉ワ紝浠g爜閲岀殑紜湁鍚庨棬錛屼絾鍚庨棬涓嶅湪Unix浠g爜閲岋紝鑰屽湪緙栬瘧Unix浠?鐮佺殑C緙栬瘧鍣ㄩ噷銆傛瘡嬈緙栬瘧鍣ㄧ紪璇慤NIX鐨勪唬鐮侊紝灝辮嚜鍔ㄧ敓鎴愬悗闂ㄤ唬鐮併傝屾暣涓狟ell Lab鐨勪漢錛岄兘鏄敤Ken鐖風埛鐨凜緙栬瘧鍣ㄣ?/p>


Rob Pike Rob Pike, AT&T Bell Lab鍓峂ember of Technical Staff 錛岀幇鍦╣oogle鐮旂┒鎿嶄綔緋葷粺銆傜綏浼集鏄疷nix鐨勫厛椹憋紝鏄礉灝斿疄楠屽鏈鏃╁拰Ken Thompson浠ュ強Dennis M. Ritche寮鍙慤nix鐨勭寷浜猴紝UTF-8鐨勮璁′漢銆備粬榪樺湪緹庡浗鍚嶅槾David Letterman鐨勬櫄闂磋妭鐩笂闇蹭簡涓灝忚劯錛屼竴鑴告啫鍘氬湴甯竴鑳栧瓙鍚圭墰鎼炴傝鍋朵僵鏈嶄笉宸茬殑鏄紝緗椾集浼繕鏄?980騫村ゥ榪愪細灝勭鐨勯摱鐗屽緱涓匯備粬涔熸槸涓涓哄帀 瀹崇殑涓氫綑澶╂枃瀛﹀錛岃璁$殑鐝堢帥灝勭嚎鏈涜繙闀滃樊鐐硅NASA鐢ㄥ湪鑸ぉ椋炴満涓娿備粬榪樻槸涓ゆ湰緇忓吀錛孴he Unix Programming Environment 鍜?The Practice of Programming 鐨勪綔鑰呬箣涓銆傚鏋滃垵瀛﹁呮兂鍦ㄧ紪紼嬫柟闈㈢簿鐩婃眰綺撅紝瀹炲湪璇ュソ濂借璇昏繖涓ゆ湰涔︺傚畠浠兘鏈変腑鏂囩増鐨勮銆傜綏浼集榪樺啓鍑轟簡Unix涓嬬涓涓熀浜庝綅鍥劇殑紿楀彛緋葷粺錛屽茍涓旀槸 钁楀悕鐨刡lit 緇堢鐨勪綔鑰呫傚綋鐒朵簡錛岀綏浼集榪樻槸鍙風О閿愭剰闈╂柊鐨勬搷浣滅郴緇燂紝Plan9錛岀殑涓昏浣滆呫傚彲鎯滅殑鏄紝Plan9騫舵病鏈夊紩璧峰灝戜漢鐨勬敞鎰忋傜綏浼集涓鎬掍箣涓嬶紝鍐欏嚭浜?鎸亱鍙戣仼鐨勯泟鏂?Systems Software Research is Irrelevant錛岀棝鏂ュ綋涓嬬郴緇熷紑鍙戜笉鎬濊繘鍙栵紝鍥烘鑷皝鐨勫紛鐥呫傝櫧鐒惰繖綃囨枃绔犳槸緗椾集浼惈蹇垮嚭鎵嬶紝棰囨湁鍋忔縺涔嬭瘝錛屼絾紜疄閬撳嚭浜嗙郴緇熷紑鍙戠殑鏃犲錛氬紑鍙戝懆鏈?瓚婃潵瓚婇暱錛屼唬浠瘋秺鏉ヨ秺澶э紝鐢ㄦ埛琚粺涓鍒板皯鏁板嚑涓郴緇熶笂錛岀粨鏋滆秺鏉ヨ秺澶氱殑媧誨姩鏄祴閲忓拰淇ˉ錛岃岀湡姝g殑闈╂柊 瓚婃潵瓚婂皯銆傚氨鍦ㄧ綏浼集閮侀椃涔嬫瀬鐨勬椂鍊欙紝google鐧婚棬姹傝搐鏉ヤ箰銆傚鏋滆鐜板湪榪樻湁涓瀹跺ぇ浼楀叕鍙稿湪涓嶉仐浣欏姏鍦版妸緋葷粺寮鍙戞帹鍚戞瀬鑷寸殑璇濓紝涔熷氨鏄痝oogle 涔愩傞殢渚跨湅鐪媑oogle鐨勬垚鏋滃氨鐭ラ亾浜嗐傚叿鏈夎秴寮哄閿欏拰璐熻澆騫寵 鑳藉姏鐨勫垎甯冨紡鏂囦歡緋葷粺GFS (鐜板湪鑳藉鐢?00,000鍙板粔浠稰C鎼搗涓涓法鍨嬪垎甯冪郴緇燂紝騫朵笖楂樻晥渚垮疁鍦拌繘琛岀鐞嗙殑緋葷粺涔熶笉澶氬搱)錛屽ぇ瑙勬ā鏈哄櫒瀛︿範緋葷粺(鎷煎啓媯鏌ワ紝騫垮憡鍖歸厤錛屾嫾闊蟲悳 瀵匯傘傘傚摢涓兘寰堢墰鐨勮)錛屾洿涓嶇敤璇村鐞嗘搗閲忓茍琛岃綆楃殑鍚勫紡google鏈嶅姟浜嗐俁ob鍦⊿ystem Software Research is Irrelevant閲岃惂鐟熷湴璇寸幇鍦ㄦ病鏈変漢鍐嶅叧蹇冪郴緇熺爺絀剁殑鍓嶆部鎴愭灉浜嗐傛兂涓嶅埌浠栭敊浜嗭紝鍥犱負google鍏沖績銆俫oogle緗戠粶浜嗗ぇ鎵瑰姛鎴愬悕灝辯殑鐗涗漢錛岃繕 鏈夊ぇ閲忓垵鐢熺墰鐘婅埇鍗氬+鍋氬紑鍙戯紝鏄劇劧涓嶆槸娌′簨鑰嶉叿錛岃屾槸鍥犱負瀹冧滑鐨勫紑鍙戞繪槸璇曞浘鍚稿彇緋葷粺鐮旂┒鐨勬渶鏂版垚鏋溿?鎯沖繀Rob Pike鍦╣oogle寰堝垢紱忋傛効浠栧仛鍑烘洿媯掔殑緋葷粺銆?/p>

Dennis M. Ritchie 鏃㈢劧Ken Thompson鏄垜鐨勫伓鍍忥紝鏂伴椈緇勪笂浜虹ОDMR鐨凞ennis M. Ritchie鑷劧涔熸槸錛屾瘯绔熶袱浜哄叡鍚岀紨閫犱簡UNIX錛岃孌ennis鍑犱箮鐙姏鎶奀鎼炲ぇ(褰撶劧錛孋鐨勫墠韜槸B錛岃孊鏄疜en Thompson涓鎵嬪仛鍑烘潵鐨?銆侸 涓や漢1983騫村垎浜浘鐏靛錛屾槸鏈夊彶浠ユ潵灝戞暟鍑犱釜鍥犲伐紼嬮」鐩緱濂栫殑宸ョ▼甯?鏈潵鏄敮涓鐨勪竴瀵瑰効錛屼絾Alan Kay鎵嶅洜涓篠mallTalk寰楀錛屾墍浠ュ氨鎴愪簡鍞簩鐨勪箰) 銆備竴涓漢涓鐢熻兘鍋氬嚭涓涓崜瓚婄殑緋葷粺宸茬粡涓嶆槗錛孌MR鐨凜鍜孶NIX闀跨洓涓嶈“榪?0騫達紝鑷充粖鐢熸満鍕冨媰錛孌MR姝ょ敓鍙互鏃犳喚鐨勮銆侱鐖風埛涔熺畻鏈夊瀛︽笂婧愶細浠栬?鐖稿湪AT&T璐濆皵瀹為獙瀹ゅ伐浣滀簡涓杈堝瓙錛屽茍鍦ㄧ數璺璁℃柟闈㈠崜鏈夋垚灝憋紝榪樺嚭浜嗘湰棰囨湁褰卞搷鐨勪功The Design of Switching Circuits錛屾嵁璇村湪浜ゆ崲鐞嗚鍜岄昏緫璁捐鏂歸潰鏈夌嫭鍒扮殑璁鴻堪銆傚綋鐒訛紝D鐖風埛鍜屼粬鑰佺埜鏄笉鍚屾椂浠g殑浜猴細浠栬佺埜鐨勭爺絀舵垚褰簬鏅朵綋綆″彂鏄庝箣鍓嶏紝鑰孌鐖風埛鐨勫伐浣?紱諱簡鏅朵綋綆″氨鐜╁効涓嶈漿涔愩?-D涓嶈鐪婦鐖風埛鎼炲嚭浜咰錛屽叾瀹炰粬鏈鐖辯殑緙栫▼璇█鏄疉lef錛屽湪Plan9涓婅繍琛岋紝鏀寔騫惰緙栫▼銆侫lef鐨勮娉曞拰C鐩鎬技錛屼絾 鏁版嵁綾誨瀷鍜屾墽琛屾柟寮忛兘鍜孋澶уぇ涓嶅悓銆傝鍒拌璦錛孌鐖風埛瀵瑰悗鏉ヤ漢鏈夐潪甯鎬腑鑲殑寤鴻錛氭姳鐫瀛︿範鐨勭洰鐨勬潵寮鍙戜綘鑷繁鐨勮璦錛屼笉瑕佸唨鏈涗簬瀹冭 浼椾漢鎺ュ彈銆傝繖涓緩璁笉鍏夊璇█寮鍙戞湁鐢紝涔熼傜敤浜庡叾瀹冨ぇ鍨嬬郴緇熺殑寮鍙戙傚埆鐨勪笉璇達紝DMR鍚庢潵棰嗗鑷繁鐨勫洟闃熷湪1995騫村拰1996鍒嗗埆鎺ㄥ嚭浜哖lan9鍜?Inferno鎿嶄綔緋葷粺錛屽張鐢ㄥ灝戜漢鐭ラ亾鍛紵鍏跺疄錛孌鐖風埛褰撳垵涔熸病鎯寵繃C浼氶琛屼笘鐣屻備粬寮鍙慍鐨勫垵琛峰拰 Eric S. Raymond鍦–athedral and Bazaar閲岄槓榪扮殑涓鏍鳳紝灝辨槸瑕佹秷闄よ嚜宸卞鐜版湁宸ュ叿鐨勪笉鐖戒箣澶勩傝皝鐭鐖風埛鏃犲績鎻掓煶錛孋绔熺劧鍙楀埌浼楀紼嬪簭鍛樼殑鐙傜儹鎷ユ埓錛岃繛D鐖風埛鑷繁閮藉ぇ鎯戜笉瑙c傚湪涓嬈?閲囪涓璂鐖風埛璇村ぇ姒傞偅鏄洜涓篊鐨勬娊璞$▼搴︾宸ф棦婊¤凍浜嗙▼搴忓憳鐨勮姹? 鍙堝鏄撳疄鐜般傚綋鐒禖涓搴︽槸Unix涓婄殑閫氱敤璇█涔熸槸鍘熷洜銆備絾涓嶇鎬庝箞璇達紝D鐖風埛瀵圭紪紼嬭璦鍑鴻壊鐨勫緹庢剰璇嗗瀹氫簡C騫夸負嫻佷紶鐨勫熀紜銆傛渶鍚庡叓鍗︿竴涓嬨侱鐖風埛鐨?涓氫綑鐖卞ソ鍜孨BA澶х墰Karl Malone涓鏍鳳細寮鍗¤濺銆備笉榪嘍鐖風埛鏇村枩嬈㈠紑NASCAR錛岃孠M鐙埍宸ㄦ棤闇搞侸 D鐖風埛鑷О蹇冧腑涓嶄緵鍋跺儚錛屽鏋滀竴瀹氳璇翠竴涓紝閭e氨鏄疜en Thompson浜嗐傜幇鍦↘en鐖風埛閫浼戝綋椋炴満鏁欑粌鍘諱簡錛岃孌鐖風埛褰撲簡璐濆皵瀹為獙瀹ょ郴緇熷紑鍙戦儴鐨勫ご錛屾暣鏃ュ繖浜庡紑鏀エ銆備粬淇╁悎浣?0騫達紝灞″薄鍒涢犲巻鍙層傝繖孌典護 浜虹寰鐨勪匠璇濓紝涔熷氨闀跨暀浣犳垜蹇冧腑涔愩侾.S., 寰堝浜洪兘浠ヤ負Brian W. Kernighan鏄疌鐨勪綔鑰呫傚叾瀹濨WK鍙槸鍐欎簡閭f湰緇忓吀K&R C銆傛嵁D鐖風埛璇達紝浠栵紝Ken, 鍜孠ernighan涓変漢涓紝Kernighan鏈鑳藉啓鏂囩珷錛屼粬嬈′箣錛岃孠en鍐欏緱鏈灝戯紱浣嗚鍒扮紪紼嬶紝Ken鐖風埛鎵嶆槸褰撲箣鏃犳劎鐨勮佸ぇ銆?/p>


Edsger Wybe Dijkstra 瀵癸紝灝辨槸E.W. Dijkstra. 涓鎻愬埌EWD錛屽緢澶氫漢灝變細鎯寵搗鎵炬渶鐭礬寰勭殑Dijkstra Algorithm錛屽氨濂藉儚涓鎻愬埌Sir. Tony Hoare錛屽氨鎯寵搗Quick Sort涓鏍楓傚叾瀹炶繖浜涗釜綆楁硶涓嶈繃鏄袱涓墰浜哄湪浠栦滑鑱屼笟鐢熸動涓渶鐞愮鐨勮礎鐚傛瘮濡侱ijkstra綆楁硶錛屾棤闈炴槸鎴寸埛鐖峰湪1956騫翠負浜嗗睍紺烘柊璁$畻鏈?ARMAC鐨勮綆楄兘鍔涳紝鍒濊瘯韜墜鐨勬垚鏋滐紝灞炰簬浠栫殑綆楁硶澶勫コ浣溿傛嵁鎴寸埛鐖瘋嚜榪幫紝浠栨悶鍑烘渶鐭礬寰勭畻娉曠殑鏃跺欒繛綰哥瑪 閮芥病鐢ㄣ傚綋鏃朵粬鍜屼粬鑰佸﹩鍦ㄩ樋濮嗘柉鐗逛腹涓瀹跺挅鍟″巺鐨勯槼鍙頒笂鏅掑お闃沖枬鍜栧暋錛岀獊鐒跺氨鎶婅繖涓畻娉曟兂鍑烘潵涔愩傝屼笖褰撴椂鐨勭畻娉曠爺絀惰繕姣旇緝鍘熷錛岀墰浜轟滑蹇欑潃鐢ㄨ綆楁満鎼炴暟 鍊艱綆楋紝瀵圭鏁g畻娉曚笉灞戜竴欏俱傞偅鏃惰繛涓涓薄鏍風殑涓撴敞浜庣鏁g畻娉曠殑涓撲笟鏈熷垔閮芥病鏈夈傛埓鐖風埛浜庢槸鎺ㄨ繜鍙戣〃榪?涓畻娉曘傜洿鍒?959騫達紝浠栨墠鎶婅繖涓畻娉曞彂琛ㄥ湪Numerische Mathematik鐨勫垱鍒婂彿涓婏紝鏉冧負鎹у満銆?-) EWD鍦ㄥ涓鍩熺墰姘斿啿澶╋紝绔殑鏄悊璁哄拰緙栫▼涓ゆ墜紜殑楂樻墜銆傚彧涓嶈繃浠栫殑寰堝宸ヤ綔姣旇緝娣卞埢錛屽鏍$殑鑰佸厛鐢熶滑瑙夊緱鏈鐢熸帴鍙椾笉浜嗭紝涓嶇粰鏈鐢熻鑰屽凡銆傛埓鐖風埛澶?姒傚洜涓烘渶鐭礬寰勭畻娉曚竴鎴樻垚鍚嶏紝浜庢槸鏈変漢璇蜂粬鍙傚姞鍙︿竴鍙拌綆楁満X1鐨勮璁″伐浣滐紝騫朵笖鎶婅璁″疄鏃朵腑鏂郴緇熺殑 浠誨姟媧劇粰浜嗕粬銆傜幇鍦ㄧ湅鏉ュ疄鏃朵腑鏂篃璁鎬笉綆椾粈涔堬紝浣嗚鐭ュ埌錛孹1鍓嶆牴鏈氨娌℃湁瀹炴椂涓柇鐨勬蹇點傚疄鐜板畠綆鐩村氨鏄竴鍦鴻豹璧屻傛埓鐖風埛璧峰垵榪樹笉鎯呮効錛屼絾緇忎笉浣忛」鐩礋 璐d漢Bram鍜孋arel鐨勮疆鐣?#8220;鍚規崸”錛氭垜浠煡閬撳疄鏃朵腑鏂鎮ㄥ伐浣滃彉寰楅潪甯稿洶闅撅紝浣嗚薄鎮ㄨ繖鏍風殑鐗涗漢鑲?瀹氳兘鍋氬嚭鏉ョ殑璇淬傜粨鏋滄埓鐖風埛琚硸琛g偖寮瑰交搴曞嚮絀匡紝鎺ヤ笅浜嗚繖涓儷鎵嬪北鑺嬨備袱涓夊勾鍚庯紝浠栦笉浠呮悶鍑轟簡瀹炴椂涓柇錛岃繕鍥寸粫榪欎釜鍐欏嚭浜嗚嚜宸辯殑鍗氬+璁烘枃錛岄『鍒╂埓涓婂崥澹?甯姐傝鎴寸埛鐖風湡姝f垚鍚嶇珛涓囩殑榪樻槸鍦╔1涓婂紑鍙戠殑Algo60錛屾渶鏃╃殑楂樼駭璇█涔嬩竴銆傛埓鐖風埛娌℃棩娌″鍦板伐浣?浜?涓湀錛屽氨鎼炲嚭浜咥lgo60錛屼篃鍥犳鑾峰緱浜?972騫寸殑鍥劇伒濂栥傚洜涓篈lgo60錛屾埓鐖風埛鍙戣〃浜嗕竴綃囩煶鐮村ぉ鎯婄殑鏂囩珷錛歊ecursive Programming錛屼簬鏄漢浠墠鐭ラ亾錛屽師鏉ラ珮綰ц璦涔熷彲浠ラ珮鏁堝湴瀹炵幇閫掑綊錛屽師鏉ヤ粠姝や互鍚庯紝鎵鏈夌▼搴忓憳閮戒笉鍙伩鍏嶅湴鍜屾埓鐖風埛鍙戞槑鐨勪竴涓瘝(搴旇璇存槸姒?蹇?鎵撲氦閬擄細鍫嗘爤銆傝屼笖Algo60榪樿鎴寸埛鐖鋒繁鍏ュ湴鎬濊冨閬撶▼搴忚璁$殑闂錛屾渶緇堝彂鏄庝簡姣忎釜緋葷粺紼嬪簭鍛?閮界粫涓嶅紑鐨勬蹇碉細semaphore銆傚綋鐒訛紝鎴寸埛鐖鋒繪槸鎶婁粬鍙戞槑鐨勬蹇典弗鏍煎艦寮忓寲錛屾瀬鍏風瀛﹀鏈壊鐨勮銆傚拰榪欎簺鎴愬氨鎯蟲瘮錛屼粬鎻愬嚭鐨勫悆楗殑鍝插瀹墮棶棰橈紝涔熷氨 娌′粈涔堝ソ璇寸殑浜嗐傝鏉ュソ絎戯紝褰撴椂鐨勫ぇ瀛?蹇樹簡鍝墍浜?榪樻槸瑙夊緱鎴寸埛鐖鋒病鏈夊彈榪囨緇熺殑鏁板璁粌錛屼篃涓嶆槸涓?闂ㄦ悶鏁板煎垎鏋愮殑錛屾墍浠ユ渶鍚庝笉澶儏鎰垮湴緇欎簡浠栦竴涓暀鑱屻傝繖縐嶅皬鎸姌騫朵笉鑳藉Θ紕嶈薄鎴寸埛鐖瘋繖鏍風殑鐗涗漢鍒涢犲巻鍙層備粬涓杈規暀鏁板煎垎鏋?:-D) 錛屼竴杈瑰紑濮嬪紑鍙戜竴涓柊鐨勬搷浣滅郴緇燂紝騫跺煿鍏昏綆楁満縐戝瀹躲傚嚑騫村悗錛孴HE Multiprogramming System妯┖鍑轟笘銆俆HE鏄涓涓敮鎸佹澗鏁h﹀悎錛屾樉寮忓悓姝ョ殑榪涚▼騫剁敱姝や嬌寰椾弗鏍艱瘉鏄庣郴緇熸病鏈夋閿佸彉寰楀鏄撶殑鎿嶄綔緋葷粺銆傚彲鎯滄埓鐖風埛浠昏亴鐨勭郴涓嶈瘑璐э紝榪樺己 琛岃В鏁d簡浠栫殑鐮旂┒灝忕粍(1972騫存埓鐖風埛緇欎粬鐨勭郴涓諱換璇翠粬寰椾簡鍥劇伒濂栵紝緋諱富浠葷殑絎竴鍙嶅簲鏄綘浠悶璁$畻鏈?灝卞枩嬈貢鍙戝)銆傝繖璁╂埓鐖風埛鐩稿綋閮侀椃錛屽緱浜嗘姂閮佺棁銆傚湪鏋佸害閮侀椃涔嬩腑錛屾埓鐖風埛鍐沖畾鐢ㄥ啓浣滄潵娌葷枟鑷繁鐨勬姂閮佺棁銆備簬鏄粡鍏稿氨璇炵敓涔愶細Notes on Structured Programming銆傛埓鐖風埛浠庢琚皧涓虹粨鏋勫寲緙栫▼鐨勫鍩轟漢錛岃屼笖浠栫殑鎶戦儊鐥囦篃琚不濂戒箰銆侲WD澶墰錛岀粨鏋滀粬鐨勬晠浜嬩篃澶銆傚厛鍒拌繖閲屽惂銆?973璧鳳紝浠?鐨勬晠浜嬪氨鍦ㄧ編鍥藉彂鐢熶簡銆?/p>


Anders Hejlsberg錛屽井杞?NET鐨勯甯灦鏋勫笀錛岀紪紼嬭璦璁捐鍜屽疄鐜扮殑欏跺皷楂樻墜銆備粬涓鎵嬪仛鍑轟簡Turbo Pascal, 涔熸槸Delphi,J++(灝ゅ叾鏄疻FC)錛孋#,鍜?NET鐨勪富瑕佷綔鑰呫傝繖浜涗綔鍝佺殑鍚嶅瓧瓚充互涓轟粬绔嬩紶銆備綔涓轟竴涓▼搴忓憳錛屾垜鍦ㄨ繖鏍風殑澶у笀闈㈠墠瀹炲湪鏃犺銆傜敓 瀛愬綋濡侫nders鐨勮銆傛潕緇寸殑<<Borland浼犲>>閲屽凡璇︾粏璁茶堪浜咥nders鐨勪紶濂囨晠浜嬶紝鎴戝氨涓嶇敤璐硅垖浜嗭細



]]>
淇濇姢妯″紡涓庡疄妯″紡鐨勫垏鎹?/title><link>http://m.shnenglu.com/xingkongyun/archive/2008/10/07/63414.html</link><dc:creator>鏉ㄥ漿褰?/dc:creator><author>鏉ㄥ漿褰?/author><pubDate>Tue, 07 Oct 2008 09:22:00 GMT</pubDate><guid>http://m.shnenglu.com/xingkongyun/archive/2008/10/07/63414.html</guid><wfw:comment>http://m.shnenglu.com/xingkongyun/comments/63414.html</wfw:comment><comments>http://m.shnenglu.com/xingkongyun/archive/2008/10/07/63414.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://m.shnenglu.com/xingkongyun/comments/commentRss/63414.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/xingkongyun/services/trackbacks/63414.html</trackback:ping><description><![CDATA[     鎽樿:   鍏充簬浠庝繚鎶ゆā寮忓垏鎹㈠埌瀹炴ā寮忕殑鐩稿叧璇存槑   鍙傝冧簬娓婄殑銆婅嚜宸卞姩鎵嬪啓鎿嶄綔緋葷粺銆嬬涓夌珷涓粠瀹炴ā寮忓垏鎹㈠埌淇濇姢妯″紡錛屾渶鍚庢湁閲嶆柊鍒囧洖瀹炴ā寮忕殑浠g爜錛堜唬鐮佸涓嬶級錛屽叾涓湁鍑犵偣涓嶅お鏄庣櫧鐨勶紝鍙傝冨叾浠栨枃绔犱箣鍚庡湪姝よ褰曚竴涓嬨?鍏朵腑榪樻湁涓嶅お鏄庣櫧鐨勫湴鏂癸紝甯屾湜澶у鑳藉湪涓嬮潰 鐣欎釜璦甯垜璁叉槑鐧斤紝璋㈣阿銆備笅闈唬鐮佹湁浜涘畯瀹氫箟娌¤創鍑烘潵錛屽簲璇ヨ兘鐪嬫槑鐧姐?  1; ===...  <a href='http://m.shnenglu.com/xingkongyun/archive/2008/10/07/63414.html'>闃呰鍏ㄦ枃</a><img src ="http://m.shnenglu.com/xingkongyun/aggbug/63414.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/xingkongyun/" target="_blank">鏉ㄥ漿褰?/a> 2008-10-07 17:22 <a href="http://m.shnenglu.com/xingkongyun/archive/2008/10/07/63414.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>楂樺害浼樺厛宸﹂珮鏍戝疄鐜?/title><link>http://m.shnenglu.com/xingkongyun/archive/2008/09/18/62193.html</link><dc:creator>鏉ㄥ漿褰?/dc:creator><author>鏉ㄥ漿褰?/author><pubDate>Thu, 18 Sep 2008 09:27:00 GMT</pubDate><guid>http://m.shnenglu.com/xingkongyun/archive/2008/09/18/62193.html</guid><wfw:comment>http://m.shnenglu.com/xingkongyun/comments/62193.html</wfw:comment><comments>http://m.shnenglu.com/xingkongyun/archive/2008/09/18/62193.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/xingkongyun/comments/commentRss/62193.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/xingkongyun/services/trackbacks/62193.html</trackback:ping><description><![CDATA[     鎽樿: 楂樺害浼樺厛宸﹂珮鏍戜笌鍫嗙殑鎬ц川綾諱技錛岄兘鍙湁浣滀負浼樺厛綰ч槦鍒楃殑搴曞眰緇撴瀯銆備絾搴旂敤楂樺害浼樺厛宸﹂珮鏍戝彲浠ュ緢瀹規槗鐨勫疄鐜頒袱涓紭鍏堢駭闃熷垪鐨勫悎騫舵搷浣溿?  1//楂樺害浼樺厛宸﹂珮鏍?HBLT)瀹炵幇  2#ifndef HBLT_H  3#define HBLT_H  4#include <queue>&n...  <a href='http://m.shnenglu.com/xingkongyun/archive/2008/09/18/62193.html'>闃呰鍏ㄦ枃</a><img src ="http://m.shnenglu.com/xingkongyun/aggbug/62193.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/xingkongyun/" target="_blank">鏉ㄥ漿褰?/a> 2008-09-18 17:27 <a href="http://m.shnenglu.com/xingkongyun/archive/2008/09/18/62193.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <a href="http://m.shnenglu.com/">青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品</a> <div style="position:fixed;left:-9000px;top:-9000px;"><font id="pjuwb"></font><button id="pjuwb"><pre id="pjuwb"></pre></button><sub id="pjuwb"></sub><tbody id="pjuwb"><var id="pjuwb"><address id="pjuwb"></address></var></tbody><listing id="pjuwb"><label id="pjuwb"><strong id="pjuwb"></strong></label></listing><wbr id="pjuwb"><small id="pjuwb"><tbody id="pjuwb"></tbody></small></wbr><ins id="pjuwb"><xmp id="pjuwb"></xmp></ins><style id="pjuwb"></style><label id="pjuwb"><em id="pjuwb"><li id="pjuwb"></li></em></label><samp id="pjuwb"></samp><menu id="pjuwb"><input id="pjuwb"></input></menu><pre id="pjuwb"><tbody id="pjuwb"><tfoot id="pjuwb"><button id="pjuwb"></button></tfoot></tbody></pre><form id="pjuwb"></form><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"><sup id="pjuwb"></sup></label></style></i><li id="pjuwb"><table id="pjuwb"><abbr id="pjuwb"></abbr></table></li><video id="pjuwb"></video><dfn id="pjuwb"></dfn><progress id="pjuwb"></progress><strong id="pjuwb"></strong><mark id="pjuwb"></mark><em id="pjuwb"></em><tbody id="pjuwb"><p id="pjuwb"><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike></p></tbody><option id="pjuwb"></option><strike id="pjuwb"></strike><u id="pjuwb"></u><td id="pjuwb"><center id="pjuwb"><tr id="pjuwb"></tr></center></td><em id="pjuwb"><mark id="pjuwb"><em id="pjuwb"><tt id="pjuwb"></tt></em></mark></em><strong id="pjuwb"></strong><wbr id="pjuwb"></wbr><s id="pjuwb"></s><strong id="pjuwb"></strong><legend id="pjuwb"></legend><nav id="pjuwb"></nav><dl id="pjuwb"><th id="pjuwb"><dl id="pjuwb"></dl></th></dl><noframes id="pjuwb"><ins id="pjuwb"></ins></noframes><font id="pjuwb"></font><strike id="pjuwb"><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"></label></style></i></strike><output id="pjuwb"></output><thead id="pjuwb"><pre id="pjuwb"></pre></thead><source id="pjuwb"></source><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem><pre id="pjuwb"><span id="pjuwb"><pre id="pjuwb"><big id="pjuwb"></big></pre></span></pre><cite id="pjuwb"><fieldset id="pjuwb"><s id="pjuwb"><rt id="pjuwb"></rt></s></fieldset></cite><big id="pjuwb"><progress id="pjuwb"><big id="pjuwb"></big></progress></big><samp id="pjuwb"><delect id="pjuwb"></delect></samp><dl id="pjuwb"></dl><strike id="pjuwb"><nav id="pjuwb"><dl id="pjuwb"><strong id="pjuwb"></strong></dl></nav></strike><tbody id="pjuwb"><b id="pjuwb"><optgroup id="pjuwb"><rp id="pjuwb"></rp></optgroup></b></tbody><em id="pjuwb"></em><xmp id="pjuwb"><blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote></xmp> <i id="pjuwb"><abbr id="pjuwb"><i id="pjuwb"><abbr id="pjuwb"></abbr></i></abbr></i><center id="pjuwb"><acronym id="pjuwb"><center id="pjuwb"></center></acronym></center><pre id="pjuwb"></pre><ul id="pjuwb"><thead id="pjuwb"></thead></ul><blockquote id="pjuwb"><pre id="pjuwb"><sup id="pjuwb"></sup></pre></blockquote><acronym id="pjuwb"></acronym><big id="pjuwb"><s id="pjuwb"></s></big><th id="pjuwb"></th><th id="pjuwb"></th><tbody id="pjuwb"></tbody><thead id="pjuwb"><strike id="pjuwb"></strike></thead><th id="pjuwb"><dl id="pjuwb"><wbr id="pjuwb"></wbr></dl></th><dl id="pjuwb"><strong id="pjuwb"></strong></dl><abbr id="pjuwb"><noframes id="pjuwb"><noscript id="pjuwb"></noscript></noframes></abbr><td id="pjuwb"><ol id="pjuwb"></ol></td><li id="pjuwb"><noscript id="pjuwb"><abbr id="pjuwb"></abbr></noscript></li><small id="pjuwb"><bdo id="pjuwb"><nav id="pjuwb"></nav></bdo></small><style id="pjuwb"></style><optgroup id="pjuwb"><table id="pjuwb"></table></optgroup><center id="pjuwb"><tr id="pjuwb"><dfn id="pjuwb"></dfn></tr></center><th id="pjuwb"></th><u id="pjuwb"></u><tfoot id="pjuwb"><legend id="pjuwb"><i id="pjuwb"></i></legend></tfoot><mark id="pjuwb"></mark><meter id="pjuwb"></meter><nav id="pjuwb"></nav><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><nobr id="pjuwb"></nobr><sub id="pjuwb"><th id="pjuwb"><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem></th></sub><thead id="pjuwb"><sub id="pjuwb"></sub></thead><ul id="pjuwb"><address id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></address></ul><dfn id="pjuwb"></dfn><pre id="pjuwb"></pre><input id="pjuwb"><cite id="pjuwb"><fieldset id="pjuwb"></fieldset></cite></input><u id="pjuwb"><form id="pjuwb"><u id="pjuwb"></u></form></u><kbd id="pjuwb"><em id="pjuwb"><mark id="pjuwb"></mark></em></kbd><tr id="pjuwb"></tr><del id="pjuwb"><form id="pjuwb"><address id="pjuwb"></address></form></del><tfoot id="pjuwb"><legend id="pjuwb"><ol id="pjuwb"><dl id="pjuwb"></dl></ol></legend></tfoot><menu id="pjuwb"><nobr id="pjuwb"><th id="pjuwb"><nobr id="pjuwb"></nobr></th></nobr></menu><fieldset id="pjuwb"></fieldset><pre id="pjuwb"><blockquote id="pjuwb"><samp id="pjuwb"></samp></blockquote></pre><xmp id="pjuwb"><sup id="pjuwb"><pre id="pjuwb"></pre></sup></xmp><span id="pjuwb"><progress id="pjuwb"></progress></span><font id="pjuwb"></font><var id="pjuwb"><abbr id="pjuwb"></abbr></var><strong id="pjuwb"><label id="pjuwb"><i id="pjuwb"><legend id="pjuwb"></legend></i></label></strong><tr id="pjuwb"><em id="pjuwb"><em id="pjuwb"><output id="pjuwb"></output></em></em></tr><thead id="pjuwb"><strike id="pjuwb"></strike></thead> <acronym id="pjuwb"></acronym><i id="pjuwb"></i><tt id="pjuwb"></tt><rt id="pjuwb"><source id="pjuwb"><rt id="pjuwb"></rt></source></rt><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike><del id="pjuwb"></del><font id="pjuwb"><output id="pjuwb"><ins id="pjuwb"><output id="pjuwb"></output></ins></output></font><kbd id="pjuwb"><tr id="pjuwb"><kbd id="pjuwb"></kbd></tr></kbd><pre id="pjuwb"><sup id="pjuwb"><delect id="pjuwb"><samp id="pjuwb"></samp></delect></sup></pre><samp id="pjuwb"></samp><track id="pjuwb"></track><tr id="pjuwb"></tr><center id="pjuwb"></center><fieldset id="pjuwb"></fieldset><i id="pjuwb"></i><td id="pjuwb"></td><rt id="pjuwb"></rt><object id="pjuwb"></object><pre id="pjuwb"><progress id="pjuwb"><sub id="pjuwb"><thead id="pjuwb"></thead></sub></progress></pre><kbd id="pjuwb"><tr id="pjuwb"><option id="pjuwb"></option></tr></kbd><output id="pjuwb"><ins id="pjuwb"></ins></output><ol id="pjuwb"></ol><source id="pjuwb"></source><strong id="pjuwb"></strong><ruby id="pjuwb"></ruby><sub id="pjuwb"><meter id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></meter></sub><pre id="pjuwb"></pre><center id="pjuwb"></center><tr id="pjuwb"><tbody id="pjuwb"><xmp id="pjuwb"><dd id="pjuwb"></dd></xmp></tbody></tr><video id="pjuwb"></video><pre id="pjuwb"></pre><form id="pjuwb"><optgroup id="pjuwb"></optgroup></form><samp id="pjuwb"></samp><kbd id="pjuwb"></kbd><strong id="pjuwb"><option id="pjuwb"></option></strong><object id="pjuwb"></object><abbr id="pjuwb"><noframes id="pjuwb"><abbr id="pjuwb"></abbr></noframes></abbr><ul id="pjuwb"><del id="pjuwb"><button id="pjuwb"><pre id="pjuwb"></pre></button></del></ul><abbr id="pjuwb"></abbr><strong id="pjuwb"><code id="pjuwb"><strong id="pjuwb"></strong></code></strong><option id="pjuwb"></option><optgroup id="pjuwb"><bdo id="pjuwb"><code id="pjuwb"></code></bdo></optgroup><mark id="pjuwb"><em id="pjuwb"><font id="pjuwb"></font></em></mark><acronym id="pjuwb"><code id="pjuwb"></code></acronym><dl id="pjuwb"></dl><em id="pjuwb"></em><object id="pjuwb"><input id="pjuwb"><object id="pjuwb"></object></input></object><output id="pjuwb"><dd id="pjuwb"></dd></output><option id="pjuwb"><button id="pjuwb"><option id="pjuwb"></option></button></option><small id="pjuwb"></small></div> <a href="http://3dmh329.com" target="_blank">欧美成年人在线观看</a>| <a href="http://772ss.com" target="_blank">欧美一级大片在线观看</a>| <a href="http://y65k.com" target="_blank">欧美电影在线观看完整版</a>| <a href="http://lysyfls.com" target="_blank">国产精品卡一卡二卡三</a>| <a href="http://fs-nanxiang.com" target="_blank">日韩亚洲国产欧美</a>| <a href="http://gx2020.com" target="_blank">9人人澡人人爽人人精品</a>| <a href="http://uuclassroom.com" target="_blank">欧美日韩国产免费</a>| <a href="http://56lw.com" target="_blank">亚洲大片在线</a>| <a href="http://anquye16.com" target="_blank">激情成人综合</a>| <a href="http://www44552.com" target="_blank">久久精品一区二区三区不卡牛牛</a>| <a href="http://444yd.com" target="_blank">亚洲国产你懂的</a>| <a href="http://5599912.com" target="_blank">狠狠综合久久</a>| <a href="http://hdsywang.com" target="_blank">久久综合影视</a>| <a href="http://xpj493.com" target="_blank">亚洲国产天堂网精品网站</a>| <a href="http://caoxiu33.com" target="_blank">一本色道久久</a>| <a href="http://ahhccz.com" target="_blank">国产精品视频大全</a>| <a href="http://aqd072.com" target="_blank">欧美在线一二三区</a>| <a href="http://dddd30.com" target="_blank">亚洲国产99精品国自产</a>| <a href="http://7777525.com" target="_blank">欧美午夜电影在线观看</a>| <a href="http://wwwiqiuxia.com" target="_blank">一级成人国产</a>| <a href="http://cm1-100.com" target="_blank">久久精品在线观看</a>| <a href="http://mauhorng.com" target="_blank">亚洲一区二区精品</a>| <a href="http://yzsss.com" target="_blank">美日韩在线观看</a>| <a href="http://8842aa.com" target="_blank">久久久人成影片一区二区三区</a>| <a href="http://hbzbjxzz.com" target="_blank">欧美日韩午夜激情</a>| <a href="http://xpfuli.com" target="_blank">亚洲自拍偷拍视频</a>| <a href="http://807225.com" target="_blank">亚洲国产美国国产综合一区二区</a>| <a href="http://hzhzzz.com" target="_blank">一区二区三区视频免费在线观看</a>| <a href="http://www-132377.com" target="_blank">国产精品男人爽免费视频1</a>| <a href="http://811914.com" target="_blank">欧美影院精品一区</a>| <a href="http://6k7a.com" target="_blank">亚洲少妇自拍</a>| <a href="http://wanshunpu.com" target="_blank">欧美福利视频在线观看</a>| <a href="http://www99mmnn.com" target="_blank">亚洲一区视频在线</a>| <a href="http://aa56789.com" target="_blank">精品1区2区3区4区</a>| <a href="http://2312138.com" target="_blank">欧美视频在线观看一区二区</a>| <a href="http://wce-expo.com" target="_blank">久久久综合精品</a>| <a href="http://tongrenyaoye.com" target="_blank">亚洲线精品一区二区三区八戒</a>| <a href="http://www1982t.com" target="_blank">国产日韩欧美一区二区</a>| <a href="http://hongmoyi.com" target="_blank">蜜桃av久久久亚洲精品</a>| <a href="http://www-3844444.com" target="_blank">亚洲一区二区三区精品视频</a>| <a href="http://xxxbobba.com" target="_blank">欧美**字幕</a>| <a href="http://scptw.com" target="_blank">欧美成人一区在线</a>| <a href="http://caerusmdx.com" target="_blank">亚洲欧美国产va在线影院</a>| <a href="http://xw4433.com" target="_blank">伊人男人综合视频网</a>| <a href="http://stt788.com" target="_blank">欧美三级韩国三级日本三斤</a>| <a href="http://missav88.com" target="_blank">开心色5月久久精品</a>| <a href="http://feiniao168.com" target="_blank">亚洲一区二区三区四区五区午夜</a>| <a href="http://www-333410.com" target="_blank">西西裸体人体做爰大胆久久久</a>| <a href="http://06le.com" target="_blank">在线日本成人</a>| <a href="http://238918.com" target="_blank">国产一区二区三区电影在线观看 </a>| <a href="http://8bc3.com" target="_blank">欧美激情综合色</a>| <a href="http://1194123.com" target="_blank">久久精品中文字幕一区二区三区</a>| <a href="http://sxhrdyb.com" target="_blank">亚洲午夜精品</a>| <a href="http://tavbao.com" target="_blank">99精品视频免费在线观看</a>| <a href="http://17ang.com" target="_blank">一区二区视频免费完整版观看</a>| <a href="http://yzstbjt.com" target="_blank">国产精品一级久久久</a>| <a href="http://xkm663y.com" target="_blank">一本色道久久综合狠狠躁篇的优点</a>| <a href="http://7m08.com" target="_blank">久久精品成人一区二区三区 </a>| <a href="http://7755mm.com" target="_blank">久久国产精品亚洲va麻豆</a>| <a href="http://yp8882.com" target="_blank">日韩午夜av</a>| <a href="http://aqdit2022.com" target="_blank">亚洲精品乱码久久久久</a>| <a href="http://6w7y.com" target="_blank">欧美国产第一页</a>| <a href="http://888nei.com" target="_blank">免费视频一区二区三区在线观看</a>| <a href="http://javliabary.com" target="_blank">欧美中文日韩</a>| <a href="http://ybshg.com" target="_blank">欧美中文字幕在线</a>| <a href="http://mm77gg.com" target="_blank">久久高清国产</a>| <a href="http://6767673.com" target="_blank">久久影视精品</a>| <a href="http://sdsptl.com" target="_blank">欧美国产日韩视频</a>| <a href="http://737sihu.com" target="_blank">亚洲无人区一区</a>| <a href="http://www-37277.com" target="_blank">欧美精品一区二区三区蜜臀</a>| <a href="http://elpezomaha.com" target="_blank">乱中年女人伦av一区二区</a>| <a href="http://yanuoxun.com" target="_blank">久久在线精品</a>| <a href="http://m-pisiwa.com" target="_blank">欧美精品在线视频</a>| <a href="http://chaoxibg.com" target="_blank">欧美日韩精品一区</a>| <a href="http://y65k.com" target="_blank">久久综合中文字幕</a>| <a href="http://zhenhaozu.com" target="_blank">国产综合精品</a>| <a href="http://785448.com" target="_blank">激情综合网激情</a>| <a href="http://cp88966.com" target="_blank">亚洲第一搞黄网站</a>| <a href="http://y65y.com" target="_blank">99ri日韩精品视频</a>| <a href="http://babylonmovi.com" target="_blank">亚洲午夜精品视频</a>| <a href="http://jsydjxgs.com" target="_blank">久久精品成人</a>| <a href="http://86311ib.com" target="_blank">欧美激情亚洲精品</a>| <a href="http://ffff53.com" target="_blank">99亚洲视频</a>| <a href="http://avse69.com" target="_blank">香蕉久久一区二区不卡无毒影院 </a>| <a href="http://actinview.com" target="_blank">日韩性生活视频</a>| <a href="http://www-485050.com" target="_blank">日韩视频在线观看一区二区</a>| <a href="http://710557.com" target="_blank">国产精品99久久99久久久二8</a>| <a href="http://3314133.com" target="_blank">亚洲综合999</a>| <a href="http://xindefalv.com" target="_blank">久久久欧美精品sm网站</a>| <a href="http://xiaofan123.com" target="_blank">午夜一区二区三区在线观看</a>| <a href="http://www18889.com" target="_blank">小嫩嫩精品导航</a>| <a href="http://yyy922.com" target="_blank">久久精品亚洲精品</a>| <a href="http://fxsdcj.com" target="_blank">欧美日韩国产成人在线91</a>| <a href="http://mxkaozi.com" target="_blank">国产精品专区h在线观看</a>| <a href="http://roujizz.com" target="_blank">国内精品嫩模av私拍在线观看</a>| <a href="http://yeedeli.com" target="_blank">91久久精品美女</a>| <a href="http://6966g.com" target="_blank">亚洲欧美日韩国产一区二区三区 </a>| <a href="http://aqxiangtai.com" target="_blank">欧美国产日本</a>| <a href="http://caoliu2022.com" target="_blank">亚洲精选视频在线</a>| <a href="http://567acg.com" target="_blank">性欧美大战久久久久久久久</a>| <a href="http://hzhzzz.com" target="_blank">欧美高清不卡</a>| <a href="http://2387463.com" target="_blank">国内精品久久久久影院 日本资源 国内精品久久久久伊人av </a>| <a href="http://spyfaw.com" target="_blank">欧美成人免费大片</a>| <a href="http://3451215.com" target="_blank">久久综合狠狠综合久久激情</a>| <a href="http://www30bxbx.com" target="_blank">国产精品乱人伦一区二区</a>| <a href="http://7788444.com" target="_blank">亚洲国内在线</a>| <a href="http://e7w2.com" target="_blank">一本一本久久a久久精品牛牛影视</a>| <a href="http://belerbb.com" target="_blank">久久久久久久久久久久久9999</a>| <a href="http://4545www.com" target="_blank">欧美视频在线一区</a>| <a href="http://www-444454.com" target="_blank">亚洲欧洲一区二区在线观看</a>| <a href="http://www-440450.com" target="_blank">久久一区亚洲</a>| <a href="http://330310c.com" target="_blank">国内精品久久久久久</a>| <a href="http://69ru.com" target="_blank">欧美一区二区网站</a>| <a href="http://cdcpt.com" target="_blank">亚洲一区二区三区在线观看视频</a>| <a href="http://hg4958.com" target="_blank">欧美91视频</a>| <a href="http://ggg4444.com" target="_blank">亚洲另类在线一区</a>| <a href="http://nxyhbz.com" target="_blank">日韩视频一区二区三区</a>| <a href="http://038226.com" target="_blank">久久深夜福利</a>| <a href="http://ks180.com" target="_blank">亚洲区在线播放</a>| <a href="http://emu160.com" target="_blank">欧美视频免费</a>| <a href="http://060607.com" target="_blank">欧美3dxxxxhd</a>| <a href="http://13789a.com" target="_blank">欧美好吊妞视频</a>| <a href="http://ju5556.com" target="_blank">黄色国产精品</a>| <a href="http://wltaste.com" target="_blank">亚洲国产欧美在线</a>| <a href="http://my777752.com" target="_blank">国产丝袜一区二区三区</a>| <a href="http://www515678.com" target="_blank">亚洲精品国精品久久99热一</a>| <a href="http://q731.com" target="_blank">久久综合亚洲社区</a>| <a href="http://www930666.com" target="_blank">亚洲手机在线</a>| <a href="http://221080.com" target="_blank">欧美日韩一级大片网址</a>| <a href="http://sese912.com" target="_blank">免费成人激情视频</a>| <a href="http://llyx888.com" target="_blank">欧美精品电影</a>| <a href="http://hg98688.com" target="_blank">欧美一级播放</a>| <a href="http://227c7.com" target="_blank">黄色影院成人</a>| <a href="http://tristooges.com" target="_blank">激情欧美一区二区三区在线观看</a>| <a href="http://xsjgxx.com" target="_blank">欧美国产精品</a>| <a href="http://www-34909.com" target="_blank">欧美日韩成人一区二区</a>| <a href="http://060969.com" target="_blank">亚洲天堂成人</a>| <a href="http://www-798009.com" target="_blank">国产日韩欧美不卡</a>| <a href="http://7555hh.com" target="_blank">亚洲精品国产欧美</a>| <a href="http://www66441.com" target="_blank">亚洲欧美在线一区</a>| <a href="http://hkjccc.com" target="_blank">亚洲永久免费av</a>| <a href="http://569658.com" target="_blank">中文高清一区</a>| <a href="http://772ss.com" target="_blank">毛片基地黄久久久久久天堂</a>| <a href="http://987kt.com" target="_blank">欧美日韩一卡二卡</a>| <a href="http://78757a.com" target="_blank">欧美视频一区二区三区</a>| <a href="http://dadepaimai.com" target="_blank">国产精品视频一区二区三区 </a>| <a href="http://av0333.com" target="_blank">国内精品久久久久久久果冻传媒 </a>| <a href="http://cm168168.com" target="_blank">国产精品毛片在线</a>| <a href="http://ww3838.com" target="_blank">亚洲人成网站在线观看播放</a>| <a href="http://xb735.com" target="_blank">久久香蕉精品</a>| <a href="http://1000kongbao.com" target="_blank">欧美在线电影</a>| <a href="http://qmynong.com" target="_blank">欧美大片免费</a>| <a href="http://6666785.com" target="_blank">午夜亚洲视频</a>| <a href="http://jnhrjixie.com" target="_blank">亚洲一区精彩视频</a>| <a href="http://by21999.com" target="_blank">亚洲婷婷综合色高清在线 </a>| <a href="http://wwwsenvpu.com" target="_blank">国产精品一区毛片</a>| <a href="http://5555547.com" target="_blank">亚洲永久免费av</a>| <a href="http://mruyan.com" target="_blank">日韩亚洲欧美一区</a>| <a href="http://88848885.com" target="_blank">欧美午夜一区二区福利视频</a>| <a href="http://x946.com" target="_blank">欧美日韩高清不卡</a>| <a href="http://9906w.com" target="_blank">一本大道久久a久久精二百</a>| <a href="http://wanzhixue.com" target="_blank">91久久国产综合久久91精品网站</a>| <a href="http://92ebook.com" target="_blank">99re66热这里只有精品4</a>| <a href="http://as777as.com" target="_blank">美女爽到呻吟久久久久</a>| <a href="http://6k6a.com" target="_blank">国产精品一区二区女厕厕</a>| <a href="http://3531888.com" target="_blank">亚洲精品日韩激情在线电影</a>| <a href="http://48655aa.com" target="_blank">最新热久久免费视频</a>| <a href="http://66889h.com" target="_blank">亚洲丁香婷深爱综合</a>| <a href="http://yymh1056.com" target="_blank">午夜精品福利在线</a>| <a href="http://www-116036.com" target="_blank">亚洲欧洲在线视频</a>| <a href="http://www33444.com" target="_blank">免费观看在线综合色</a>| <a href="http://6623555.com" target="_blank">老司机成人网</a>| <a href="http://www-q28.com" target="_blank">一区二区三区四区国产</a>| <a href="http://gztcm01.com" target="_blank">在线综合视频</a>| <a href="http://8331651.com" target="_blank">欧美国产另类</a>| <a href="http://eguge.com" target="_blank">91久久国产综合久久</a>| <a href="http://621791.com" target="_blank">一本久道久久综合婷婷鲸鱼</a>| <a href="http://www-90443.com" target="_blank">国产精品综合av一区二区国产馆</a>| <a href="http://fc3332.com" target="_blank">亚洲欧美日韩一区二区</a>| <a href="http://www-485050.com" target="_blank">欧美在线亚洲一区</a>| <a href="http://xtsjjw.com" target="_blank">小处雏高清一区二区三区</a>| <a href="http://9273829.com" target="_blank">91久久夜色精品国产九色</a>| <a href="http://mmmm57.com" target="_blank">亚洲欧洲日本专区</a>| <a href="http://59199m.com" target="_blank">国内激情久久</a>| <a href="http://m72722.com" target="_blank">夜夜嗨av一区二区三区中文字幕 </a>| <a href="http://xian369.com" target="_blank">欧美午夜在线视频</a>| <a href="http://tongrenyaoye.com" target="_blank">亚洲欧美日韩国产成人</a>| <a href="http://xigou666.com" target="_blank">久久影视三级福利片</a>| <a href="http://hsxinbao.com" target="_blank">午夜精品福利电影</a>| <a href="http://8181777.com" target="_blank">欧美电影免费观看高清</a>| <a href="http://xiphosoft.com" target="_blank">久久精品国产第一区二区三区最新章节</a>| <a href="http://621939.com" target="_blank">亚洲视频精品</a>| <a href="http://710191.com" target="_blank">狠狠色伊人亚洲综合成人</a>| <a href="http://www-tk3333.com" target="_blank">欧美a级一区</a>| <a href="http://799868.com" target="_blank">欧美日韩国产美</a>| <a href="http://2323nn.com" target="_blank">欧美顶级艳妇交换群宴</a>| <a href="http://21bridal.com" target="_blank">国产亚洲精品aa午夜观看</a>| <a href="http://www225011.com" target="_blank">av成人免费在线</a>| <a href="http://ekuyun.com" target="_blank">亚洲三级色网</a>| <a href="http://49234c.com" target="_blank">久久久免费观看视频</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>