ÓÑÇéÌáʾ£ºÈç¹û±¾ÍøÒ³´ò¿ªÌ«Âý»òÏÔʾ²»ÍêÕû£¬Çë³¢ÊÔÊó±êÓÒ¼ü¡°Ë¢Ð¡±±¾ÍøÒ³£¡
windows»·¾³ÏÂ32λ»ã±àÓïÑÔ³ÌÐòÉè¼Æ-µÚ66²¿·Ö
¿ì½Ý²Ù×÷: °´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·ҳ °´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ °´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿! Èç¹û±¾ÊéûÓÐÔĶÁÍ꣬ÏëÏ´μÌÐø½Ó×ÅÔĶÁ£¬¿ÉʹÓÃÉÏ·½ "Êղص½ÎÒµÄä¯ÀÀÆ÷" ¹¦ÄÜ ºÍ "¼ÓÈëÊéÇ©" ¹¦ÄÜ£¡
2¡£¡¡Ê¹Óñ£ÁôµÄµØÖ·¿Õ¼ä
ҪʹÓñ£ÁôµÄµØÖ·£¬Ê×ÏȱØÐëÌá½»ÎïÀíÄÚ´æ¸ø¸ÃµØÖ·¡£Ìá½»ÄÚ´æµ½µØÖ·Óë±£ÁôÄÚ´æͬÑùʹÓÃVirtualAllocº¯Êý£¬Ö»Êǵ÷Óõķ½Ê½Ê¹ÓÃMEM_MIT±êÖ¾¡£ÔÚÒѾ±£ÁôµÄµØÖ·¶ÎÖУ¬ÄÚ´æ¿ÉÒÔ°´Ò»Ò³µÄ´óС±»·Ö´ÎÌá½»£¬Ò²¿ÉÒÔÒ»´ÎÌá½»ËùÓеı£ÁôµØÖ·¡£
µ±ÄÚ´æ±»Ìύʱ£¬¿ÉÄÜÈ«²¿±»·ÖÅäΪÎïÀíÄÚ´æÒ³£¬Ò²¿ÉÄÜÒ»²¿·Ö»òÈ«²¿±»·ÖÅäÔÚÒ³ÎļþÖУ¬Ö±µ½Ëü±»·ÃÎÊ¡£Ò»µ©ÄÚ´æÒ³ÒÑÌá½»£¬ÏµÍ³¾Í»áÏñ¶Ô´ýÓÃÆäËûº¯Êý·ÖÅäµÄÄÚ´æ¿éÒ»ÑùÀ´¶Ô´ýËüÃÇ¡£
ʹÓÃVirtualAllocº¯ÊýÌá½»µØÖ·¿Õ¼äµÄ·½·¨ÊÇ£º
invoke¡¡¡¡VirtualAlloc£¬lpAddress£¬4096£¬MEM_MIT£¬PAGE_READWRITE
¡¡¡¡¡¡¡¡¡£if¡¡¡¡¡¡¡¡¡¡eax
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡mov¡¡lpMemory£¬eax
¡£endif
Õâ¸öÓï¾ä½«Ò»¸öÒ³Ãæ4¡¡096¡¡BµÄ±£ÁôµØÖ·Ìá½»µ½ÎïÀíÄÚ´æ¡£ÔÚÌá½»µÄʱºò£¬lpAddress²ÎÊý²»ÄÜÖ¸¶¨ÎªNULL£¬¶øÊÇÒªÖ¸¶¨Ò»¸öÌض¨µÄµØÖ·À´×¼È·µØָʾ±»±£ÁôµØÖ·µÄÄÄÒ»Ò³»á±»Ìá½»¡£¶øÇÒ£¬Ò³µÄÊôÐÔÏÖÔÚÒªÖ¸¶¨ÊÇ¿ÉÒÔ·ÃÎʵģ¬²»ÄÜÔÙʹÓÃPAGE_NOACCESS£¬¿ÉÒÔʹÓÃPAGE_READWRITEºÍPAGE_READONLYµÈÊôÐÔ¡£Èç¹ûº¯ÊýÖ´Ðгɹ¦£¬·µ»ØµÄÊDZ»Ìá½»µØÖ·ÖеÚÒ»Ò³µÄÆðʼÏ̵߳ØÖ·£¬Ö´ÐÐʧ°Ü½«·µ»ØNULL¡£
Ìá½»ÄÚ´æµÄʱºò£¬ÏµÍ³Ö»ÄÜ°´Ò³ÃæµÄÕûÊý±¶´óСÌá½»£¬º¯Êý»á×Ô¶¯°´ÕÕlpAddressºÍdwSizeÖ¸¶¨µÄ·¶Î§°ÑÓëÕâ¸ö·¶Î§Í¬ÊôÒ»¸öÒ³ÃæµÄµØÖ·È«²¿Ìá½»£¬ËùÒÔµ±lpAddressÖ¸¶¨µÄÊýÖµ²»ÊÇÒ»¸öÒ³µÄÕûÊý±¶µÄʱºò£¬·µ»ØµÄlpMemory¾Í²»»áºÍÖ¸¶¨µÄlpAddressÏàͬ£¬¶øÊDZ»ÐÞ¸ÄΪҳµÄ±ß½çµØÖ·¡£
Èç¹ûÒªÒ»´ÎÌύȫ²¿±£ÁôµÄµØÖ·¿Õ¼ä£¬ÄÇô¿ÉÒ԰ѱ£ÁôºÍÌá½»µÄ²Ù×÷ºÏ²¢µ½Í¬Ò»´Î¶ÔVirtualAllocº¯ÊýµÄµ÷ÓÃÖУº
invoke¡¡¡¡¡¡VirtualAlloc£¬NULL£¬dwSize£¬MEM_RESERVE¡¡or¡¡MEM_MIT£¬PAGE_READWRITE
¡£if¡¡¡¡¡¡¡¡¡¡eax
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡mov¡¡lpMemory£¬eax
¡£endif
ÕâÖÖ·½·¨ÓëÓÃGlobalAllocº¯ÊýÖ±½Ó·ÖÅäÒ»¿éÄÚ´æûÓжà´óµÄ²î±ð£¬Î©Ò»µÄºÃ´¦¾ÍÊÇ¿ÉÒÔ×Ô¼ºÖ¸¶¨·ÖÅäµÄÄÚ´æ¿éµØÖ·¡£
Èç¹ûÏë¶ÔÒѾÌá½»µÄÒ³Ãæ½â³ýÌá½»£¬ÈÃËüÃÇ´ÓÌύ״̬·µ»Øµ½±£Áô״̬£¬¿ÉÒÔʹÓÃVirtualFreeº¯Êý£¬ÕâʱÐèҪʹÓÃMEM_DEMIT²ÎÊý£º
¡¡¡¡¡¡¡¡invoke¡¡¡¡VirtualFree£¬lpMemory£¬dwSize£¬MEM_DEMIT
ͬÑù£¬º¯Êý²Ù×÷µÄ¶ÔÏóÊÇÕû¸öÒ³Ã棬Èç¹ûÖ¸¶¨µÄÄڴ淶Χ²»ÊÇÕû¸öÒ³Ã棬º¯Êý»á×Ô¶¯½«Õû¸ö·¶Î§Í¬ÊôÒ»¸öÒ³ÃæµÄµØÖ·È«²¿½â³ýÌá½»¡£
3¡£¡¡ÄÚ´æÒ³µÄ±£»¤ºÍËø¶¨
³ýÁËÓÃVirtualAllocº¯ÊýÔÚÌá½»ÄÚ´æµÄʱºòÖ¸¶¨²»Í¬µÄ±£»¤·½Ê½Í⣬Ҳ¿ÉÒÔÔÚÒÔºóÓÃVirtualProtectº¯ÊýÀ´¸Ä±äÐéÄâÄÚ´æÒ³µÄ±£»¤·½Ê½¡£±ÈÈ磬ӦÓóÌÐò¿ÉÒÔ°´PAGE_READWRITEÀ´Ìá½»Ò»¸öÒ³²¢Á¢¼´½«Êý¾Ýдµ½¸ÃÒ³ÖУ¬È»ºóÂíÉÏʹÓÃVirtualProtectº¯Êý½«¸ÃÒ³µÄ±£»¤·½Ê½¸ÄΪPAGE_READONLY£¬ÕâÑù¿ÉÒÔÓÐЧµØ±£»¤Êý¾Ý²»±»¸Ã½ø³ÌÖеÄÈκÎÏß³ÌÖØд¡£VirtualProtectº¯ÊýµÄÓ÷¨ÊÇÕâÑùµÄ£º
¡¡
¡¡¡¡¡¡¡¡invoke¡¡¡¡VirtualProtect£¬lpAddress£¬dwSize£¬flNewProtect£¬lpflOldProtect
flNewProtectÊÇеı£»¤·½Ê½£¬È¡Öµ¿ÉÒԲο¼VirtualAllocº¯ÊýÖеÄflProtect²ÎÊý£¬lpflOldProtect¡¡ÊÇÖ¸ÏòÒ»¸öË«×ÖµÄÖ¸Õ룬º¯Êý»áÔÚÕâÀï·µ»ØÔÀ´µÄ±£»¤·½Ê½£¬Èç¹û²»ÐèÒªÖªµÀÔÀ´µÄ·½Ê½£¬¿ÉÒÔ°ÑÕâ¸ö²ÎÊýÉèÖÃΪNULL¡£
VirtualProtectº¯Êý»¹¿ÉÒÔÓÃÔÚʲôµØ·½ÄØ£¿MSDNÖÐÓÉRandy¡¡KathÊéдµÄһƪÎÄÕ¡¶Managing¡¡Virtual¡¡Memory¡¡in¡¡Win32¡·ÖеÄÀý×ÓºÜÓдú±íÐÔ£º
¡°Ò»¸öÓÃÓÚ»º³åÊý¾ÝµÄÓ¦ÓóÌÐò½ÓÊÕµ½Ò»×é´óС±ä»¯µÄÊý¾ÝÁ÷£¬ÓÉÓÚÆäËûÓ¦ÓóÌÐò¶ÔCPUʱ¼äµÄ¾ºÕù£¬Êý¾ÝÁ÷¿ÉÄÜÔÚijЩʱºò³¬³ö½ø³ÌµÄÄÜÁ¦¡£ÎªÁË·ÀÖ¹ÕâÖÖÏÖÏó·¢Éú£¬Ó¦ÓóÌÐò¿ÉÒÔÔÚ¿ªÊ¼Ê±ÎªÒ»¸ö»º³åÇøÌύһЩÄÚ´æÒ³£¬È»ºóʹÓÃPAGE_NOACCESS±£»¤À´±£»¤ÄÚ´æµÄ¶¥¶ËÒ³£¬Ê¹µÃÈκÎÏëÒª·ÃÎʸÃÄÚ´æµÄÇëÇ󶼻á²úÉúÒ»¸öÒì³£¡£Ó¦ÓóÌÐòÒ²ÔڸôúÂëµÄÍâ²ã´úÂëÖÐʹÓÃÒ»¸öÒì³£´¦Àí³ÌÐòÀ´´¦Àí·ÃÎʳåÍ»¡£¡±
¡°µ±´¦ÀíÄÜÁ¦²»¹»µÄʱºò£¬»º³åÇø»áÂúµ½Õâ¸öÊܱ£»¤µÄ¶¥¶ËÒ³£¬ÓÚÊÇ»á²úÉúÒ»¸ö·ÃÎʳåÍ»£¬ÕâʱӦÓóÌÐò¾ÍÖªµÀ»º³åÇøÒѾµ½ÁËÆ伫ÏÞ£¬¸ÃÓ¦ÓóÌÐò¿ÉÒÔͨ¹ý½«Ò³±£»¤¸Ä±äΪPAGE_READWRITEÀ´ÏìÓ¦£¬ÔÊÐí¸Ã»º³åÇø½ÓÊÕÈκθ½¼ÓµÄÊý¾Ý£¬²¢ÇÒ¼ÌÐø²»¼ä¶ÏµØÖ´ÐС£Í¬Ê±£¬Ó¦ÓóÌÐò¼ÓÔØÁíÒ»¸öÏß³ÌÀ´¼õ»ºÊý¾ÝÁ÷£¬Ö±µ½¸Ã»º³åÇø»Ö¸´µ½Ò»¸öÀíÏëµÄ²Ù×÷·¶Î§¡£µ±Çé¿ö»Ö¸´µ½Õý³££¬¶¥¶ËµÄÒ³ÓÖ·µ»ØΪPAGE_NOACCESSÒ³£¬¸½¼ÓµÄÏß³ÌÒ²½áÊøÁË¡£ÕâÑù¿ÉÒÔ½«Ò³±£»¤ºÍÒì³£´¦Àí³ÌÐò½áºÏʹÓÃÀ´Ìṩ¶ÀÒ»ÎÞ¶þµÄÄÚ´æ¹ÜÀí»ú»á¡£¡±
ÁíÍ⣬ӦÓóÌÐò»¹¿ÉÒÔʹÓÃVirtualLockºÍVirtualUnlockº¯Êý£¬ËüÃǵŦÄÜ·Ö±ðÊǽ«ÄÚ´æÒ³Ëø¶¨ÔÚÎïÀíÄÚ´æÖÐÒÔ¼°½â³ýËø¶¨¡£ÕâÁ½¸öº¯ÊýµÄÓï·¨ºÜ¼òµ¥£º
¡¡¡¡¡¡¡¡invoke¡¡¡¡VirtualLock£¬lpAddress£¬dwSize
¡¡¡¡¡¡¡¡invoke¡¡¡¡VirtualUnlock£¬lpAddress£¬dwSize
¡°Ëø¶¨¡±µÄÒâ˼ÊÇÒªÇóϵͳ×ÜÊǽ«Ö¸¶¨µÄÄÚ´æÒ³±£ÁôÔÚÎïÀíÄÚ´æÖУ¬²»Ðí½«Ëü½»»»µ½´ÅÅÌÒ³ÎļþÖС£Èç¹û³ÌÐòÖÐÓÐЩÄڴ汻Ƶ·±Ê¹Ó㬽«ËüÃDZ£ÁôÔÚÎïÀíÄÚ´æ¿ÉÒÔÌá¸ß·ÃÎʵÄËٶȡ£ÓÉÓÚËø¶¨Ì«¶àµÄÒ³Ãæ»áµ¼ÖÂÆäËûÒ³Ã汻Ƶ·±½»»»µ½Ò³ÎļþÖУ¬ËùÒÔWindowsÏÞÖÆÿ¸ö½ø³ÌÄÜͬʱËø¶¨µÄÒ³Êý²»Äܳ¬¹ý30¸ö¡£Ö»ÓÐÒѾ±»Ìá½»µÄÄÚ´æÒ³²ÅÄܱ»Ëø¶¨£¬¶ÔÒ»¸ö±£ÁôµÄµØÖ·½øÐÐËø¶¨²Ù×÷ÊDz»Äܳɹ¦µÄ¡£
10¡£1¡£6¡¡¡¡ÆäËûÄÚ´æ¹ÜÀíº¯Êý
Win32Öл¹ÓÐÆäËûµÄһЩÄÚ´æ¹ÜÀíº¯Êý£¬¿ÉÒÔÓÃÀ´Íê³ÉһЩ¸¨ÖúµÄ¹¦ÄÜ£¬ÈçÄÚ´æÌî³ä¡¢Òƶ¯ÒÔ¼°²âÊÔº¯ÊýµÈ¡£
1¡£¡¡Ìî³äºÍÒƶ¯ÄÚ´æ
Ìî³äºÍÒƶ¯ÄÚ´æ±¾À´¾Í¿ÉÒÔÓü¸¾ä¼òµ¥µÄ´úÂëʵÏÖ£¬ÈçÏÂÃæµÄ´úÂë¿ÉÒÔ½«´ÓszSource¿ªÊ¼µÄdwSize´óСµÄÄÚ´æ¿éÒƶ¯µ½szDest´¦£º
mov¡¡esi£»offset¡¡szSource
¡¡¡¡¡¡¡¡mov¡¡edi£»offset¡¡szDest
¡¡¡¡¡¡¡¡mov¡¡ecx£»dwSize
¡¡¡¡¡¡¡¡cld
rep¡¡movsb
¡¡
À´Ô´£ºµç×Ó¹¤Òµ³ö°æÉç¡¡×÷ÕߣºÂÞÔƱò¡¡ÉÏÒ»Ò³¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡»ØÊéÄ¿¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ÏÂÒ»Ò³¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
ÉÏÒ»Ò³¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡»ØÊéÄ¿¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ÏÂÒ»Ò³¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡
µÚ10Õ¡¡ÄÚ´æ¹ÜÀíºÍÎļþ²Ù×÷
10¡£1¡¡ÄÚ¡¡´æ¡¡¹Ü¡¡Àí£¨8£©
¡¡¡¡¡¡¡¡
¶øÏÂÃæµÄ´úÂë¿ÉÒÔ½«szDest´¦µÄdwSize×Ö½ÚÌî³äΪ0£º
xor¡¡eax£»eax
mov¡¡edi£»offset¡¡szDest
mov¡¡ecx£»dwSize
cld
rep¡¡stosb
Èç¹û°Ñxor¡¡eax£»eax»»³Émov¡¡al£»xx£¬ÄÇôÍê³ÉµÄ¹¦ÄܾÍÊǽ«Õâ¿éÄÚ´æÌî³äΪxx¡£
ËäÈ»Ìî³äºÍÒƶ¯µÄ¹¦ÄÜÕâô¼òµ¥£¬µ«Win32Öл¹ÊÇÓжÔÓ¦µÄAPIº¯Êý£º
invoke¡¡¡¡RtlMoveMemory£»offset¡¡szDest£»offset¡¡szSource£»dwSize¡¡¡¡£»Òƶ¯ÄÚ´æ
invoke¡¡¡¡RtlFillMemory£»offset¡¡szDest£»dwSize£»dwFill¡¡¡¡¡¡£»ÒÔdwFillÌî³äÄÚ´æ¿é
invoke¡¡¡¡RtlZeroMemory£»offset¡¡szDest£»dwSize¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£»ÒÔ0Ìî³äÄÚ´æ¿é
¿ÉÒÔ¿´µ½£¬Ê¹ÓÃÕâЩº¯Êýʱ£¬½ö´«µÝ²ÎÊýºÍµ÷ÓõĿªÏú¾ÍÔ¶Ô¶³¬¹ýÁËÇ°Ãæ¾ÙÀýµÄÁ½¶Î´úÂ룬µ«ÊÇʹÓÃËüÃǵĿɶÁÐԱȽϺã¬ËùÒÔÔÚ¾ßÌåµÄʹÓÃÖÐÒªÓÐËùÈ¡Éá¡£Èç¹ûÖ´ÐÐËٶȱȽÏÖØÒª£¬±ÈÈçÊÇÔÚÒ»¸öÑ»·ÖÐʹÓã¬Í¬ÑùµÄ´úÂëÒª±»Ê¹Óúܶà±é£¬»¹ÊÇÓ¦¸ÃʹÓÃǶÈëµÄ¼¸¾ä»ã±à´úÂ룻Èç¹ûΪÁËÈóÌÐò¿´ÉÏÈ¥¼ò½àһЩ£¬ÄǾͲ»·ÁʹÓÃÕ⼸¸öAPIº¯Êý¡£
2¡£¡¡ÄÚ´æ״̬²âÊÔ
ÓÐʱºòÔÚ·ÃÎÊÒ»¿éÄÚ´æ֮ǰ£¬¿ÉÄÜÏëÖªµÀÕâ¿éÄÚ´æµÄÊôÐÔ¾¿¾¹ÊÇʲô£¬ÊÇ¿ÉдµÄ£¿¿É¶ÁµÄ£¿»¹ÊÇ¿ÉÖ´Ðеģ¿ÕâЩ¹¦ÄÜ¿ÉÒÔÓòâÊÔº¯ÊýÀ´Íê³É£º
¡¡¡¡¡¡¡¡invoke¡¡¡¡IsBadCodePtr£¬lpMemory
¡¡¡¡¡¡¡¡invoke¡¡¡¡IsBadReadPtr£¬lpMemory£¬dwSize
¡¡¡¡¡¡¡¡invoke¡¡¡¡IsBadWritePtr£¬lpMemory£¬dwSize
¡¡¡¡¡¡¡¡invoke¡¡¡¡IsBadStringPtr£¬lpMemory£¬dwSize
ÕâЩº¯ÊýµÄ¹¦ÄÜÈçÏ£º
¡ñ¡¡¡¡¡¡IsBadCodePtrº¯Êý²âÊÔij¸öÖ¸ÕëÖ¸ÏòµÄµ¥¸ö×Ö½ÚÊÇ·ñ¿É¶Á£¬Èç¹û¿É¶ÁÔò·µ»Ø0£¬·ñÔò·µ»Ø·Ç0Öµ¡£
¡ñ¡¡¡¡¡¡IsBadReadPtrº¯Êý²âÊÔij¶ÎÄÚ´æÊÇ·ñ¿É¶Á£¬Èç¹ûÕâ¶ÎÄÚ´æµÄËùÓÐ×Ö½Ú¶¼ÊǿɶÁµÄ£¬Ôò·µ»Ø0£¬Èç¹ûÖмä°üº¬Óв»¿É¶ÁµÄ×Ö½ÚÔò·µ»Ø·Ç0Öµ¡£
¡ñ¡¡¡¡¡¡IsBadWritePtrº¯Êý²âÊÔij¶ÎÄÚ´æÊÇ·ñ¿Éд£¬Èç¹ûÕâ¶ÎÄÚ´æµÄËùÓÐ×Ö½Ú¶¼ÊÇ¿ÉдµÄ£¬Ôò·µ»Ø0£¬Èç¹ûÖмä°üº¬Óв»¿ÉдµÄ×Ö½ÚÔò·µ»Ø·Ç0Öµ¡£
¡ñ¡¡¡¡¡¡IsBadStringPtrº¯Êý²âÊÔµÄͬÑùÊǿɶÁÐÔ£¬lpMemory²ÎÊýÖ¸ÏòÒ»¸öÒÔ0½áβµÄ×Ö·û´®£¬×Ö·û´®µÄ×î´ó³¤¶ÈΪdwSize£¬Èç¹ûÕû¸ö×Ö·û´®°üº¬½áβµÄÒ»¸ö0¶¼ÊǿɶÁµÄ£¬Ôòº¯Êý·µ»Ø0£¬·ñÔò·µ»Ø·Ç0Öµ¡£»º³åÇøÖÐÊ£ÓàµÄ×Ö½ÚÔò²»Óè²âÊÔ¡£
¡¡
À´Ô´£ºµç×Ó¹¤Òµ³ö°æÉç¡¡×÷ÕߣºÂÞÔƱò¡¡ÉÏÒ»Ò³¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡»ØÊéÄ¿¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ÏÂÒ»Ò³¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
ÉÏÒ»Ò³¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡»ØÊéÄ¿¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ÏÂÒ»Ò³¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡
µÚ10Õ¡¡ÄÚ´æ¹ÜÀíºÍÎļþ²Ù×÷
10¡£2¡¡ÎÄ¡¡¼þ¡¡²Ù¡¡×÷£¨1£©
¡¡¡¡¡¡¡¡
10¡£2¡£1¡¡¡¡WindowsµÄÎļþI/O
ÔÚDOS²Ù×÷ϵͳÏ£¬×îÔçµÄÎļþ²Ù×÷·½·¨ÊÇʹÓÃFCB£¨Îļþ¿ØÖƿ飩£¬FCBÊÇÒ»¸öÊý¾Ý½á¹¹£¬ÎªÁË´æÈ¡Ò»¸öÎļþ£¬±ØÐ뽨Á¢Ò»¸öFCB²¢ÔÚÆäÖÐÌîдºÃÇý¶¯Æ÷Ãû¡¢ÎļþÃûºÍÒª¶ÁдµÄ¼Ç¼ºÅµÈ£¬È»ºóµ÷ÓÃint¡¡21hÖжÔÓ¦µÄ¹¦ÄÜ¡£Ê¹ÓÃFCB·½Ê½µÄȱµãºÜ¶à£¬Èçÿ´ÎÖ»ÄÜ°´¼Ç¼Ϊµ¥Î»¶ÁÈ¡Êý¾Ý£¬ÎÞ·¨ËæÒâÖ¸¶¨Êý¾Ý¿é´óС£¬ÎÞ·¨Ö±½ÓÖ¸¶¨Ò»¸öȫ·¾¶µÄÎļþÃû£¬ÎļþµÄ²Ù×÷λÖò»»á×Ô¶¯µ÷Õû£¬Ã¿´Î²Ù×÷¶¼±ØÐëÖ¸¶¨¼Ç¼ºÅµÈ£¬¹éÄÉÆðÀ´¾ÍÊǹ¦Äܼòµ¥£¬²Ù×÷¸´ÔÓ¡£
ÓÚÊÇÔÚ2¡£0ÒÔÉϵÄDOS°æ±¾ÖУ¬¿ªÊ¼Ê¹Óøü·½±ãµÄÎļþ¾ä±ú·½Ê½£¬ÕâÖÖ·½Ê½²»ÔÙÐèÒªÎļþ¿ØÖƿ飬³ÌÐòÖ¸¶¨Ò»¸ö°üº¬È«Â·¾¶µÄÎļþÃûºó£¬¾Í¿ÉÒÔÒªÇó²Ù×÷ϵͳ´ò¿ªÕâ¸öÎļþ²¢·µ»ØÒ»¸öÎļþ¾ä±ú£¬ÒÔºó¾Í¿ÉÒÔÓÃÕâ¸ö¾ä±úÀ´¶ÁдÎļþ£¬Ö±µ½¹Ø±ÕÎļþΪֹ¡£²Ù×÷ϵͳÔÚÄÚ²¿ÎªÃ¿¸öÎļþ¾ä±úά»¤Ò»¸ö¶ÁдָÕë¡£¶ÁдָÕë×ÜÊÇÖ¸ÏòÎļþÏÂÒ»´ÎÒª´æÈ¡µÄλÖã¬Ã¿´Î¶ÔÎļþµÄ¶Áд²Ù×÷Íê³ÉÒԺ󣬶ÁдָÕë»á×Ô¶¯µ÷Õûµ½±¾´Î²Ù×÷µÄ×îºóÒ»¸ö×Ö½ÚºóÃæµÄλÖã¬ÕâÑù˳Ðò¶ÁдÎļþ¾Í²»±Øÿ´ÎÖØÐÂÖ¸¶¨Î»Ö᣶ÁдָÕë¿ÉÒÔ±»Òƶ¯µ½ÎļþµÄÈÎÒâλÖã¬ÒÔ±ãÂú×ãËæ»ú´æÈ¡µÄÒªÇó¡£
Windows²Ù×÷ϵͳÖУ¬Îļþ²Ù×÷ÑØÓÃÁËÕâÖÖ¾ä±ú·½Ê½£¬±£ÁôÁËÎļþ¾ä±úºÍ¶ÁдָÕëµÈ¸ÅÄͬʱÓÖ¸ù¾ÝWindows²Ù×÷ϵͳµÄÐÂÌØÕ÷¶ÔÎļþI/O½øÐÐÁ˺ܶàµÄÀ©Õ¹£¬ÏÂÃæÁгöÁËWin32ÖÐÎļþº¯Êý¾¹ýÀ©Õ¹µÄһЩ¹¦ÄÜ£º
¡ñ¡¡¡¡¡¡Îļþº¯ÊýµÄ²Ù×÷¶ÔÏóÓÐÁ˺ܴóµÄÀ©Õ¹£¬³ýÁËÆÕͨµÄÎļþ£¬¶Ô´®¿Ú¡¢´ÅÅÌÉ豸¡¢ÍøÂçÎļþ¡¢¿ØÖÆ̨ºÍĿ¼µÈµÄ²Ù×÷¶¼¿ÉÒÔʹÓÃÎļþº¯ÊýÀ´Íê³É¡£
¡ñ¡¡¡¡¡¡Ö§³ÖÒì²½Îļþ²Ù×÷£¬Îļþº¯Êý¿ÉÒÔ²»±ØµÈ´ýµ½²Ù×÷Íê³É²ÅÄÜ·µ»Ø¡£
¡ñ¡¡¡¡¡¡WindowsÊǶàÓû§µÄ²Ù×÷ϵͳ£¬¿ÉÄÜ·¢Éú¶à¸ö³ÌÐòͬʱ¶ÔÎļþ²Ù×÷µÄÏÖÏó£¬Îļþº¯ÊýÖÐÔöÇ¿Á˶Թ²ÏíºÍËø¶¨µÄÖ§³Ö¡£
¡ñ¡¡¡¡¡¡Îļþ²Ù×÷º¯ÊýºÍÄÚ´æÓ³ÉäÎļþº¯ÊýÅäºÏ¿ÉÒÔʵÏÖ½«Îļþµ±×öÄÚ´æµÄÒ»²¿·ÖÀ´´æÈ¡µÄ¹¦ÄÜ¡£
¡ñ¡¡¡¡¡¡Ôö¼ÓÁË¿½±´ÎļþºÍÒƶ¯ÎļþµÈº¯ÊýÀ´ÊµÏÖ³£ÓõŦÄÜ¡£
ÁíÍ⣬ÔÚÎļþµÄÃüÃûÖÐÓ㤶ÌÎļþÃûÖ®·Ö£¬ÖÚËùÖÜÖª£¬DOS²Ù×÷ϵͳʹÓÃ8¡£3½á¹¹µÄÎļþÃüÃû·½Ê½£¬ÔÚÕâÖÖÃüÃû·½Ê½Ï£¬ÓÃÎļþÃûÀ´¼òµ¥µØ˵Ã÷ÎļþµÄÓÃ;ÏԵñȽÏÀ§ÄÑ£¬ÒòΪ½öÓÃ8¸ö×Ö·ûÊDZí´ï²»ÁËʲô¸´Ôӵĺ¬ÒåµÄ¡£
¶øÔÚ³¤ÎļþÃûϵͳÖУ¬ÎļþÃûµÄ³¤¶È¿ÉÒÔ³¤´ï255¸ö×Ö·û£¬ÕâÑùÔÚÎļþÃûÖоͿÉÒÔÇåÎúµØ±í´ï³öÎļþµÄÓÃ;£¬³¤ÎļþÃûÔÚ´ÅÅ̵ÄĿ¼ÇøÖÐÕ¼ÓÃÁ˶à¸öÁ¬ÐøµÄĿ¼ÏÆäÖеÄÒ»¸öĿ¼ÏîÓÃ×ö8¡£3½á¹¹µÄ¶ÌÎļþÃû£¬ÆäËûµÄĿ¼Ïî´æ·ÅÆäËûÃû×Ö×Ö·û¡£ÔÚ8¡£3ÎļþÃûÖв»ºÏ·¨µÄһЩ×Ö·û£¬ÈçСÊýµãÓë¿Õ¸ñµÈÔÚ³¤ÎļþÃûÖж¼¿ÉÒÔʹÓã¬Ö»ÓÐ/¡¡£º*£¿¡¨£üµÈ9¸ö×Ö·û²»ÄÜÓÃÓÚ³¤ÎļþÃû¡£
³¤ÎļþÃûÐèÒªÎļþϵͳµÄÖ§³Ö£¬´ÓDOSµ½Windows£¬Ê¹ÓùýµÄÓÐFAT£¬VFAT£¬FAT32£¬NTFSÓëHPFSµÈ¶àÖÖÎļþϵͳ£¬ÔÚÕâЩÎļþϵͳÖУ¬Ö»ÓÐFATϵͳ²»Ö§³Ö³¤ÎļþÃû¡£
¸÷ÖÖ²Ù×÷ϵͳ¶ÔÎļþϵͳµÄÖ§³ÖÊDz»Í¬µÄ¡£Windows¡¡3¡£xºÍDOS²Ù×÷ϵͳһֱʹÓõÄÊÇÎļþ·ÖÅä±í£¨FAT£©ÏµÍ³£»Windows¡¡95¿ªÊ¼Ê¹ÓÃÀ©Õ¹FATÎļþϵͳ£¨VFAT£©£¬FATϵͳºÍVFATϵͳ¶¼ÊÇ16λµÄÎļþϵͳ£¬Ò²³ÆΪFAT16¡£Windows¡¡NTÔÚÖ§³ÖFAT16µÄͬʱ£¬»¹Ö§³ÖÁ½ÖÖ32λµÄÎļþϵͳ£ºNTÎļþϵͳ£¨NTFS£©ºÍ¸ßÐÔÄÜÎļþϵͳ£¨HPFS£©£¬NTFSÖ§³ÖÎļþµÄ°²È«ÐÔ£¬Äܹ»Ö¸¶¨ËÄÜ·ÃÎÊijһÎļþ»òĿ¼ºÍ¶ÔËü×öʲô²Ù×÷¡£Windows¡¡98ÔÚÖ§³ÖFAT16µÄͬʱ£¬Ò²Ö§³Ö32λµÄFATÎļþϵͳ£¨FAT32£©£¬µ«Windows¡¡9xϵÁвÙ×÷ϵͳ²»Ö§³ÖNTFSºÍHPFS¡£Windows¡¡2000ÔòÖ§³ÖÉÏÃæËùÁеÄËùÓÐÎļþϵͳ¡£
ÄÇôÔÚWin32µÄÎļþ²Ù×÷º¯ÊýÖУ¬ÈçºÎ´¦Àí³¤¡¢¶ÌÎļþÃû£¬ÓÖÈçºÎ´¦Àí²»Í¬µÄÎļþϵͳÄØ£¿´ð°¸ºÜ¼òµ¥£º¾ÍÊDz»ÒªÈ¥¿¼ÂÇËüÃÇ£¬²»¹ÜÒª²Ù×÷µÄÎļþÃûÊdz¤ÊǶ̣¬²»¹ÜÎļþλÓÚʲôÑùµÄÎļþϵͳÖУ¬Ö»ÒªÖ¸¶¨ÁËÕýÈ·µÄÎļþÃû£¬Îļþ²Ù×÷º¯Êý¾ÍÄÜÕýÈ·µØ´¦ÀíËü¡£
10¡£2¡£2¡¡¡¡´´½¨ºÍ¶ÁдÎļþ
ÔÚ¿ªÊ¼ÌÖÂÛÎļþI/OµÄº¯Êý֮ǰ£¬ÏÈÀ´¿´Ò»¸öÀý×Ó£¬ÕâÊÇÒ»¸ö¶ÔÎı¾ÎļþÖеÄÓ¢Îĵ¥´Ê½øÐÐͳ¼ÆµÄС³ÌÐòWordCount£¬³ÌÐò½«Îı¾Îļþ¶ÁÈë²¢·ÖÎöÎļþÄÚÈÝ£¬×îºó½«Í³¼Æ½á¹û±£´æµ½¼Ç¼ÎļþÖУ¬±ÈÈç¶Ô°üº¬ÏÂÃæÎı¾µÄÎļþ½øÐÐͳ¼Æ£¬¾Í»áµÃµ½Èçͼ10¡£4ËùʾµÄ¼Ç¼Îļþ£º
¡°He's¡¡one¡¡of¡¡my¡¡best¡¡friend£»¡¡a¡¡very¡¡very¡¡good¡¡man¡¡and¡¡has¡¡a¡¡very¡¡very¡¡good¡¡job¡¡and¡¡their¡¡relationship¡¡used¡¡to¡¡be¡¡so¡¡charming¡¡and¡¡stable£»¡¡but¡¡now¡¡changed¡£¡±
ͼ10¡£4¡¡¡¡WordCount³ÌÐòµÄÔËÐнá¹û
ΪÁËʵÏÖ³ÌÐòµÄ¹¦ÄÜ£¬³ýÁ˶ÁÎı¾ÎļþºÍд¼Ç¼ÎļþÍ⣨Õⲿ·ÖÔÚ±¾½ÚÖÐÖð²½½éÉÜ£©£¬»¹ÒªÉæ¼°ÈçºÎÉè¼Æ³ÌÐòµÄ½á¹¹¡£ËäÈ»¿ÉÒÔÓÃÒ»¸ö±È½Ï±¿µÄ°ì·¨£ºÊ×ÏȶÁÒ»¸öµ¥´Ê£¬½«Ëü±£´æÔÚ»º´æÇøÖв¢ÎªËüÔö¼ÓÒ»¸ö¼ÆÊý£¬ÒÔºóÿ¶Áµ½Ò»¸öµ¥´Ê¾ÍºÍÒÔÇ°±£´æµÄËùÓе¥´Ê±È½Ïһϣ¬Èç¹û´æÔÚÔòÔö¼Ó¼ÆÊý£¬²»´æÔÚÔò±£´æÒ»¸öе¥´Ê£¬µ«ÕâÖÖ°ì·¨Ëæ×ÅÊý¾ÝµÄÔö³¤¹¤×÷Á¿»á¼±¾çÔö¼Ó£¬ËùÒÔÀý×Ó³ÌÐòÓÃÁËÁíÍâÒ»ÖÖ·½·¨£º¾ÍÊÇÓÃÊ÷ÐͽṹµÄ°ì·¨¡£
Èçͼ10¡£5Ëùʾ£¬Ê÷µÄÿ¸ö½áµãÖÐÓиö¼ÆÊýÆ÷£¬»¹ÓÐ26¸ö×Ó½
¿ì½Ý²Ù×÷: °´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·ҳ °´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ °´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿!
ÎÂÜ°Ìáʾ£º ο´Ð¡ËµµÄͬʱ·¢±íÆÀÂÛ£¬Ëµ³ö×Ô¼ºµÄ¿´·¨ºÍÆäËüС»ï°éÃÇ·ÖÏíÒ²²»´íŶ£¡·¢±íÊéÆÀ»¹¿ÉÒÔ»ñµÃ»ý·ÖºÍ¾Ñé½±Àø£¬ÈÏÕæдԴ´ÊéÆÀ ±»²ÉÄÉΪ¾«ÆÀ¿ÉÒÔ»ñµÃ´óÁ¿½ð±Ò¡¢»ý·ÖºÍ¾Ñé½±ÀøŶ£¡