¡¡
À´Ô´£ºµç×Ó¹¤Òµ³ö°æÉç¡¡×÷ÕߣºÂÞÔÆ±ò¡¡ÉÏÒ»Ò³¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡»ØÊéÄ¿¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ÏÂÒ»Ò³¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
ÉÏÒ»Ò³¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡»ØÊéÄ¿¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ÏÂÒ»Ò³¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡
µÚ10Õ¡¡ÄÚ´æ¹ÜÀíºÍÎļþ²Ù×÷
10¡£1¡¡ÄÚ¡¡´æ¡¡¹Ü¡¡Àí£¨7£©
¡¡¡¡¡¡¡¡
invoke¡¡¡¡VirtualFree£¬lpAddress£¬dwSize£¬dwFreeType
lpAddressºÍdwSize²ÎÊýÖ¸¶¨µØÖ·ºÍµØÖ·¿Õ¼äµÄ´óС£¬dwFreeTypeÖ¸¶¨ÊͷŵØÖ·¿Õ¼äµÄ·½Ê½£¬Ëü¿ÉÒÔÊÇÒÔϵÄÊýÖµ£º
¡ñ¡¡¡¡¡¡MEM_DEMIT¡ª¡ªÎªÒ»¸öÒѾÌá½»ÎïÀíÄÚ´æµÄµØÖ·¿Õ¼ä½â³ýÌá½»¡£
¡ñ¡¡¡¡¡¡MEM_RELEASE¡ª¡ªÊͷű£ÁôµÄµØÖ·¿Õ¼ä¡£
ÏÖÔÚÀ´¿´ÈçºÎʹÓÃËüÃÇÀ´±£ÁôµØÖ·¿Õ¼äºÍÊͷű£ÁôµÄµØÖ·¿Õ¼ä¡£Ê¹ÓÃVirtualAllocº¯Êý±£ÁôÒ»¸öµØÖ·¿Õ¼äµÄ·ÖÅ䷽ʽʹÓÃMEM_RESERVE£¬ÓÉÓÚ±»±£ÁôµÄµØÖ·¿Õ¼ä»¹Ã»ÓÐÌá½»¸øÎïÀíÄڴ棬ÊÇÎÞ·¨·ÃÎʵģ¬ËùÒÔ±£»¤ÊôÐÔ±ØÐëʹÓÃPAGE_NOACCESS±êÖ¾£¬¾ßÌåµÄÓï¾äÊÇ£º
¡¡¡¡¡¡¡¡invoke¡¡¡¡VirtualAlloc£¬NULL£¬10485760£¬MEM_RESERVE£¬PAGE_NOACCESS
¡¡¡¡¡¡¡¡¡£if¡¡¡¡¡¡¡¡¡¡eax
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡mov¡¡lpAddress£¬eax
¡¡¡¡¡¡¡¡¡£endif
ÕâÒ»¶Î´úÂëµ¼ÖÂϵͳ±£ÁôÒ»¸ö10¡¡MB´óСµÄµØÖ·¿Õ¼ä¡£µ±ÔÚÒ»¸ö½ø³ÌÖб£ÁôµØÖ·Ê±£¬Ã»ÓÐÎïÀíÄÚ´æÒ³±»Ìá½»£¬Ò²Ã»ÓÐÔÚÒ³ÎļþÖÐΪËü±£Áô¿Õ¼ä£¬¶øÖ»ÊÇ×èÖ¹ÁËÆäËûÄÚ´æ·ÖÅ亯Êý¶Ô¸Ã¶ÎµØÖ·µÄÇëÇó¶øÒÑ£¬±£ÁôÒ»¸öµØÖ··¶Î§²¢²»±£Ö¤½«À´»áÓпÉÓõÄÎïÀíÄÚ´æÀ´Ìá½»¸øÕâЩµØÖ·¡£
±£ÁôµØÖ·µÄ²Ù×÷ÊǺܿìµÄ£¬±£ÁôÒ»¸öСµÄµØÖ··¶Î§ºÍ±£ÁôÒ»¸ö´ó·¶Î§µÄµØÖ·¿Õ¼äµÄËٶȲ¶à£¬ÒòΪÔÚ²Ù×÷ÆÚ¼ä£¬²¢Ã»ÓÐ×ÊÔ´·ÖÅä¡£
Èç¹ûÒªÊͷű£ÁôµÄµØÖ·¿Õ¼ä£¬¿ÉÒÔʹÓÃMEM_RELEASE·½Ê½µ÷ÓÃVirtualFreeº¯Êý£º
¡¡¡¡¡¡¡¡invoke¡¡¡¡VirtualFree£¬lpAddress£¬0£¬MEM_RELEASE
lpAddress¾ÍÊÇÉÏÃæµ÷ÓÃVirtualAlloc·µ»ØµÄÖ¸Õ룬dwSize²ÎÊýÔÚÕâÀï±ØÐëΪ0¡£µ±Ê¹ÓÃÉÏÃæµÄVirtualAllocº¯Êý±£ÁôÁËÒ»¶ÎµØÖ·¿Õ¼äÒԺ󣬽ÓÏÂÀ´»¹¿ÉÒÔ¼ÌÐø¶à´Îµ÷ÓÃͬÑùµÄº¯ÊýÌá½»Õâ¶ÎµØÖ·¿Õ¼äÖеIJ»Í¬Ò³Ã棬ËùÒÔµ½×îºó²»Í¬µÄÒ³Ãæ¿ÉÄÜ´¦ÔÚ²»Í¬µÄ״̬ÖУ¨Ìá½»µÄºÍûÓÐÌá½»µÄ£©¡£Èç¹ûÓÃVirtualFreeº¯ÊýÊÍ·ÅÕâ¸öµØÖ·¿Õ¼ä£¬ËùÓеÄÒ³Ãæ±ØÐë´¦ÔÚÏàͬµÄ״̬Ï£¨¿ÉÒÔÊÇÈ«²¿Ìá½»µÄ»òÈ«²¿Ã»ÓÐÌá½»µÄ£©£¬·ñÔòÊͷŲÙ×÷»áʧ°Ü¡£µ±²»Í¬Ò³ÃæµÄ״̬²»Í¬µÄʱºò£¬×îºÃÊ×ÏȽ«ËùÓеÄÒÑÌá½»Ò³ÃæÖðÒ»½â³ýÌá½»£¬×îºóÔÙʹÓÃÉÏÃæ¾ÙÀýµÄ·½·¨ÊÍ·ÅÕû¸öµØÖ·¿Õ¼ä¡£
ÓÐʱºò£¬Á½´Îµ÷ÓÃVirtualAllocº¯Êý±£ÁôÁËÁ½¶ÎÁ¬ÔÚÒ»ÆðµÄµØÖ·¿Õ¼ä£¬¶ÔÓÚÕâÖÖÇé¿ö£¬ËäÈ»Á½¶ÎµØÖ·¿Õ¼äʵ¼ÊÉÏÊÇÁ¬ÔÚÒ»ÆðµÄ£¬µ«Ò²ÎÞ·¨µ÷ÓÃVirtualFreeº¯Êý½«ËüÃÇÒ»´ÎÊÍ·Å£¬±ØÐëµ÷ÓÃÁ½´ÎVirtualFreeº¯Êý½«ËüÃÇ·Ö±ðÊÍ·Å¡£
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Öµ¡£»º³åÇøÖÐÊ£ÓàµÄ×Ö½ÚÔ
СÌáʾ£º°´ »Ø³µ [Enter] ¼ü ·µ»ØÊéÄ¿£¬°´ ¡û ¼ü ·µ»ØÉÏÒ»Ò³£¬ °´ ¡ú ¼ü ½øÈëÏÂÒ»Ò³¡£
ÔÞÒ»ÏÂ
Ìí¼ÓÊéÇ©¼ÓÈëÊé¼Ü