win32k.sys·ì϶ÍÚ¾ò˼·½â¶Á

°ä²¼¹¦·ò 2020-05-09

Ò»¡¢×êÑв¼¾°


4ÔÂ1ÈÕ£¬£¬£¬£¬£¬ÒÔÉ«Áа²È«×êÑÐÔ±Gil DabahÔÚ²©¿ÍÉϰ䲼ÁËһƪ¹ØÓÚwin32k·ì϶×êÑÐÎÄÕ£¬£¬£¬£¬£¬ÃèÊöÁËÈôºÎͨ¹ýÄÚ²é¶ÔÏóµÄDestroyº¯ÊýºÍwin32k user-mode callback»º½â´ëÊ©µÄ¸öÐÔÀ´Ñ°ÕÒUAF·ì϶µÄÐÂ˼·¡£¡£¡£¡£¡£¡£¡£


Ϊ´Ë£¬£¬£¬£¬£¬8827Ì«Ñô¼¯ÍÅADLab¶Ôwin32kÓйØÄں˻úÔì½øÐÐ×êÑзÖÎö£¬£¬£¬£¬£¬²¢¶ÔÕâÀà·ì϶µÄÍÚ¾ò˼·½øÐоßÌå½â¶Á·ÖÎö¡£¡£¡£¡£¡£¡£¡£


¶þ¡¢win32k·ì϶»º½âÓëÆ¥µÐ


2.1 win32k user-mode callback·ì϶


ÓÉÓÚÉè¼ÆÔ­Òò£¬£¬£¬£¬£¬win32kÇý¶¯±ØÒª´¦ÖúöàÓû§²ãµÄ»Øµ÷£¬£¬£¬£¬£¬ÕâЩ»Øµ÷¸øwin32kÄ£¿£¿ £¿£¿£¿ £¿éµÄ°²È«´øÀ´Á˼«¶È´óµÄÒþ»¼£¬£¬£¬£¬£¬²¢ÔÚ´Óǰ10Ä깦·ò¹±Ï×ÁË´óÁ¿µÄ·ì϶¡£¡£¡£¡£¡£¡£¡£


ΪÁ˱ãÓÚ·ìϼûèÊö£¬£¬£¬£¬£¬ÒÔÈçÏÂα´úÂë½øÐоÙÀý·ÖÎö¡£¡£¡£¡£¡£¡£¡£


NtUserSysCall()

 £û

     PWND p = CreateWindowEx(¡­);

     somecallback();

     xxxSetWindowStyle(p);

 £ý


ÉÏÊö´úÂëÖ´ÐгÉЧÈçÏÂͼËùʾ£¬£¬£¬£¬£¬Óû§²ãÖ´ÐеÄijº¯Êýͨ¹ýsyscall´«ÈëÄں˲㣬£¬£¬£¬£¬µ±Äں˲ã´úÂëÖ´Ðе½somecallbackÕâÒ»¾äʱ£¬£¬£¬£¬£¬Óû§²ãÄܹ»ÔÚÓû§½ç˵µÄcallbackº¯ÊýÖлñµÃ´úÂëÖ´ÐеĻúÓö£¬£¬£¬£¬£¬ÈôÊÇÓû§ÔÚcallbackº¯ÊýŲÓÃÁËDestroyWindowº¯ÊýÏú»Ù´°¿Úp£¬£¬£¬£¬£¬Äں˲ãµÄÏàÓ¦Ïú»Ù´úÂ뽫»á±»Ö´ÐУ¬£¬£¬£¬£¬pµÄÏàÓ¦ÄÚ´æ±»¿ªÊÍ£¬£¬£¬£¬£¬»Øµ÷Ö´ÐнáÊø£¬£¬£¬£¬£¬NtUserSysCallº¯Êý³ÖÐøÖ´ÐУ¬£¬£¬£¬£¬µ±Ö´Ðе½xxxSetWindowStyle(p)Ò»¾äʱ£¬£¬£¬£¬£¬ÓÉÓÚpµÄÄÚ´æÒѾ­±»¿ªÊÍ´Ó¶øµ¼ÖÂUAF·ì϶µÄ²úÉú¡£¡£¡£¡£¡£¡£¡£


8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website


2.2 user-mode callback·ì϶»º½â»úÔì


ΪÁËÔ¤·ÀÉÏÊöÎÊÌâµÄ²úÉú£¬£¬£¬£¬£¬Î¢ÈíÔÚ¶ÔÏóÖÐÒýÈëÁËÒ»¸öÒýÓüÆÊý£¨¶ÔÏó+0x8´¦£©£¬£¬£¬£¬£¬¶ÔÏó·ÖÅäʱÒýÓüÆÊýΪ1£¬£¬£¬£¬£¬µ±Ö´ÐжÔÏóµÄDestroyº¯ÊýʱÒýÓüÆÊý¼õ1£¬£¬£¬£¬£¬µ±ÒýÓüÆÊýΪ0ʱ¶ÔÏó»á±»ÕæÕý¿ªÊÍ¡£¡£¡£¡£¡£¡£¡£Î¢Èíͨ¹ýËøµÄ¸ÅÏëΪ¶ÔÏóÔö³¤ºÍÏ÷¼õÒýÓüÆÊý£¬£¬£¬£¬£¬ÔÚwin32kÖÐΪ¶ÔÏóÖÎÀíÒýÓüÆÊýµÄËøÓÐÁ½ÖÖ±ðÀëÊÇÒ»Ê±Ëø£¨ÏàÓ¦º¯ÊýΪThreadLock/ ThreadUnlock£©ºÍÓÀÔ¶Ëø£¨ÏàÓ¦º¯ÊýΪHMAssignmentLock/ HMAssignmentUnlock£©¡£¡£¡£¡£¡£¡£¡£¾­¹ý¼Ó¹ÌÖ®ºóÊÀÂë²û·¢ÎªÈçÏ´ó¾Ö£º


NtUserSysCall()

 £û

     PWND p = CreateWindowEx(¡­);

     ThreadLock(p);

     Somecallback();

     xxxSetWindowStyle(p);

     ThreadUnlock();

 £ý


ͨ¹ýÉÏÊö´úÂ룬£¬£¬£¬£¬Äܹ»±£Õϼ´±ãcallback±»Ö´ÐУ¬£¬£¬£¬£¬pÔÚxxxSetWindowStyleº¯ÊýÖ´ÐеÄʱ³½Ò²²»»á±»¿ªÊÍ¡£¡£¡£¡£¡£¡£¡£


2.3»º½â»úÔìµÄÆ¥µÐ¼¼Êõ


ÉÏÒ»½ÚÌáµ½Á˶ÔÏóµÄÒýÓüÆÊý£¬£¬£¬£¬£¬ÈôÊǶÔÏóµÄÒýÓüÆÊýΪÕý£¬£¬£¬£¬£¬¼´±ãÖ´ÐжÔÏóµÄdestroyº¯Êý£¬£¬£¬£¬£¬¶ÔÏóûÓÐÕæÕý±»¿ªÊÍ£¬£¬£¬£¬£¬ÈԾɴæÁôÔÚÄÚ´æÖУ¬£¬£¬£¬£¬ÕâÖÖ¶ÔÏó±»Î¢Èí¿ª·¢Õß³ÆÎª½©Ê¬£¨Zombie£©¶ÔÏ󡣡£¡£¡£¡£¡£¡£Ò»µ©½©Ê¬¶ÔÏóµÄÒýÓüÆÊýÏ÷¼õµ½0Ëü½«»áÒþû£¬£¬£¬£¬£¬µ«ÊÇÔÚ´Ë֮ǰËüÈԾɴæÔÚÄÚ´æÖУ¬£¬£¬£¬£¬Ö»ÊÇÓû§²ãÎÞ·¨½Ó¼û¸Ã¶ÔÏ󡣡£¡£¡£¡£¡£¡£


ͬʱΪÁËÔ¤·À½©Ê¬¶ÔÏó³ÖÐø´æÁôÔÚÄÚ´æÖУ¬£¬£¬£¬£¬ËøµÄ¿ªÊͺ¯Êý£¨ThreadUnlock/ HMAssignmentUnlock£©Í¨³£»áÔ̺¬¶ÔÏóµÄ¿ªÊÍ»·½Ú¡£¡£¡£¡£¡£¡£¡£


¶ÔÏóµÄDestroyº¯Êý»¹ÓÐÒ»¸ö¸öÐÔ¾ÍÊÇÔÚ¿ªÊͶÔÏóµÄͬʱ£¬£¬£¬£¬£¬Destroyº¯ÊýÒ²»á¿ªÊͶÔÏóµÄ×Ó×ÊÔ´£¬£¬£¬£¬£¬Æä¹ý³ÌÄܹ»¼òÒªÃèÊöÈçÏ¡£¡£¡£¡£¡£¡£¡£


void xxxDestroyWindow(PWND pwnd)

 £û

     xxxFW_DestroyAllChildren(); // Destroy child windows, if exist!

     if (NULL != pwnd->spmenu)  // If there¡¯s a menu, remove and destroy it.

     £û

         PMENU tmp = pwnd->spmenu;

         if (HMAssignmentUnlock(&pwnd->spmenu)) // If it¡¯s still locked

           £û

               DestroyMenu(tmp); // Try destroying it (it can remain a zombie).

           £ý

      £ý

     DereferenceClass(pwnd);

     if (HMMarkObjectDestroy(pwnd)) // Check for zero refs!

           HmFreeObject(pwnd); // Only now free the object and handle pair.

 £ý


DestroyWindowÔÚµÚÒ»´ÎŲÓÃʱ¿ªÊÍ×Ó×ÊÔ´£¬£¬£¬£¬£¬Ò»µ©´°¿Ú²»ÔÙ±»ÒýÓ㬣¬£¬£¬£¬¾ä±úÖÎÀíÆ÷¾Í»áÔÙ´ÎÆëÈ«Ïú»ÙËü£¬£¬£¬£¬£¬Í¨³£Çé¿öÏ£¬£¬£¬£¬£¬µÚ¶þ´ÎÏú»ÙDestroyº¯Êý²»»áÔÚÈ¥ÏòÀí×Ó×ÊÔ´£¬£¬£¬£¬£¬ÓÉÓÚµÚÒ»´ÎÒѾ­¿ªÊÍÁËËùÓеÄ×Ó×ÊÔ´¡£¡£¡£¡£¡£¡£¡£


µ«ÊÇʼþÍùÍù²»ÊÇÕâôµ¥Ò»£¬£¬£¬£¬£¬ÊÂʵÉϼ´±ãÊÇÒ»¸öÒѾ­Å²ÓùýÏàÓ¦Destroyº¯Êý¿ªÊ͵Ľ©Ê¬¶ÔÏ󣬣¬£¬£¬£¬ÒÀÈ»ÓлúÓö¶ÔÆä×ÔÉí½øÐÐһЩ¸ü¸Ä£¨»Øµ÷Ö®ºóÄں˴úÂëÈÔ»á¶Ô¶ÔÏó½øÐÐһЩ²Ù×÷£©£¬£¬£¬£¬£¬ÎÒÃǰÑÕâÖÖÇé¿ö½Ð×öZombie Reload£¬£¬£¬£¬£¬µ±¸Ã½©Ê¬¶ÔÏóÓÉÓÚÒýÓüÆÊýΪ0¶ø±»ÕæÕý¿ªÊÍʱ£¬£¬£¬£¬£¬Ö®Ç°µÄ¸ü¸Ä²Ù×÷½«»á¸øÄں˴øÀ´Ò»Ð©Òþ»¼¡£¡£¡£¡£¡£¡£¡£


¶ÔÓÚÈçÏ´úÂëÆ¬¶Î£º


ThreadLock(pwnd);

xxxSomeCallback(); // Here we can destroy pwnd from user-mode.

InternalSetTimer(pwnd, ...);  // reuse pwnd without check wether it is destroyed

ThreadUnlock();

SomefunctionUseTimer();   //UAF of Timer


ÎÒÃÇÔÚÓû§²ã»Øµ÷ÖжÔpwndÖ´ÐÐÁËDestroyº¯Êý£¬£¬£¬£¬£¬¶øºóͨ¹ýInternalSetTimerΪ֮ÉèÖÃÁËÒ»¸ö¼ÆÊ±Æ÷£¬£¬£¬£¬£¬µ±ThreadUnlock½«pwndÕæÕý¿ªÊ͵Äʱ³½£¬£¬£¬£¬£¬¼ÆÊ±Æ÷Ò²½«±»¿ªÊÍ£¬£¬£¬£¬£¬ÄÇô½ÓÏÂÀ´¶Ô¼ÆÊ±Æ÷µÄ²Ù×÷½«»áµ¼ÖÂUAF·ì϶µÄ²úÉú¡£¡£¡£¡£¡£¡£¡£


Èý¡¢°¸Àý·ÖÎö


ÉÏÒ»½ÚÎÒÃÇ»áÉÌÁ˶ÔÏóµÄÒýÓüÆÊýºÍËø¸ø¶ÔÏó´øÀ´µÄÐµİ²È«Òþ»¼£¬£¬£¬£¬£¬µ«ÊÇÕæÕýµÄÌôÕ½ÔÚÓÚÎÒÃÇÈôºÎÈ·¶¨Ò»¶Î´úÂëÖдæÔÚ·ì϶£¬£¬£¬£¬£¬¹Ø¼üµãÊÇÈ·±£ÔÚunlockº¯ÊýÖпªÊ͵ĶÔÏóÔÚÔËÐе½ÓÐÎÊÌâµÄ´úÂëʱÆäÒýÓüÆÊýÓ¦¸ÃΪ1£¬£¬£¬£¬£¬Ö»ÓÐÕâÑùÎÒÃÇÄÜÁ¦ÔÚÓû§²ã»Øµ÷ŲÓÃÆäDestroyº¯Êý£¬£¬£¬£¬£¬²¢Í¨¹ýunlockº¯Êý½«Õâ¸ö¶ÔÏóÕæÕý¿ªÊ͵ô£¨ÉÏËøµÄʱ³½»á×ö+1´¦Öã©£¬£¬£¬£¬£¬ÕâÒ²ÊÇÎÒÃǽÓÏÂÀ´±ØÒª»áÉ̵ġ£¡£¡£¡£¡£¡£¡£ÏÂÃæÎÒÃÇͨ¹ýÒ»¸ö°¸ÀýÀ´·ÖÎö·ì϶ÍÚ¾ò˼·¡£¡£¡£¡£¡£¡£¡£


3.1·ì϶³ÉÒò


ÏÂͼÊÇxxxMnOpenHierarchyº¯ÊýµÄ´úÂëÆ¬¶Î¡£¡£¡£¡£¡£¡£¡£


8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website


ͼÖÐͨ¹ýxxxCreateWindowExÄܹ»»ñµÃÒ»¸ö·µ»ØÓû§²ãÖ´ÐÐcallbackº¯ÊýµÄ»úÓö£¬£¬£¬£¬£¬xxxCreateWindowEx´´½¨µÄ´°¿Ú½«×÷Ϊ¸¸´°¿Ú*(struct tagWND **)(**v3 + 8)£¨ÉÏͼºì¿ò£©µÄ×Ó´°¿Ú£¬£¬£¬£¬£¬ÈôÊÇÎÒÃÇÄܹ»Í¨¹ýThreadUnlock¿ªÊ͸¸´°¿Ú£¬£¬£¬£¬£¬ÄÇô×Ó´°¿Úv32Ò²»á±»¿ªÊÍ£¬£¬£¬£¬£¬ËùÒÔµ±ºóÐøµÄsafe_cast_fnid_to_PMENUWNDº¯Êý½«v32×÷Ϊ²ÎÊýÖ´ÐÐʱ¾Í»á²úÉúÎÊÌ⣬£¬£¬£¬£¬ÖµÍ×ÌùÐĵÄÊÇͨ¹ý»Øµ÷¿ªÊÍv32ÊÇÐв»Í¨µÄ£¬£¬£¬£¬£¬ÈôÊÇÕâÑùxxxCreateWindowEx½«»á·µ»Ø0£¬£¬£¬£¬£¬ÎÞ·¨Í¨¹ýifÅжϡ£¡£¡£¡£¡£¡£¡£


ÕâÀïµÄÎÊÌâ¾ÍÔÚÓÚÈôºÎ±£Õϸ¸´°¿ÚÔÚThreadUnlockº¯ÊýÖ´ÐеÄʱ³½ÒýÓüÆÊýΪ1£¬£¬£¬£¬£¬ÓÉÓÚÒªÖ´ÐÐxxxMnOpenHierarchyº¯Êý±ØÒª½«¸¸´°¿Ú¹ØÁªµ½Ò»¸ömenu´°¿ÚÉÏ£¬£¬£¬£¬£¬´Ëʱ¸¸´°¿ÚºÍmenu´°¿Ú½«»á±»Ò»¸öÓÀÔ¶ËøËø×¡£¡£¡£¡£¡£¡£¡£¬£¬£¬£¬£¬ÏÂÃæÎÒÃǽéÉÜÈôºÎÈÆ¹ýÓÀÔ¶Ëø¡£¡£¡£¡£¡£¡£¡£


3.2 ·ì϶ÍÚ¾ò˼·


Ê×ÏÈÎÒÃÇ´´½¨ÁËg_hMenuOwnerºÍg_hNewOwnerÁ½¸ö´°¿Ú£¬£¬£¬£¬£¬ÆäÖÐg_hMenuOwnerµÄ²Ëµ¥¾ä±úΪhMenu£¬£¬£¬£¬£¬ËüÒ²ÊÇg_hNewOwnerµÄËùÓÐÕß¡£¡£¡£¡£¡£¡£¡£


8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website


ÔÚÉÏÊö´´½¨¹ý³ÌÖУ¬£¬£¬£¬£¬ÄÚºËͨ¹ýLockPopuMenuº¯Êý±ðÀëΪhMenuºÍg_hMenuOwnerÔö³¤ÁËÓÀÔ¶Ëø£¬£¬£¬£¬£¬ÎªÁË´ï³É¿ªÊÍÖ÷ÕÅ£¬£¬£¬£¬£¬Õâ¸öÓÀÔ¶Ëø±ØÒª±»Èƹý¡£¡£¡£¡£¡£¡£¡£


8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website


8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website


´ËÊ±ËøºÍËùÓÐÕߵĹØÏµÊÇÕâÑùµÄ£º


8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website


½ÓÏÂÀ´ÎÒÃÇͨ¹ýSetWindowsHookEx¸ø´°¿ÚÔö³¤ÁËWH_CBT¹³×Ó£¬£¬£¬£¬£¬²¢Èô°¿Ú½øÈëÐÂÎÅÑ­»·ÖÓ×£¡£¡£¡£¡£¡£¡£


8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website


SendMessage²Ù×÷Ϊg_hMenuOwnerÔö³¤Ò»¸öÒ»Ê±Ëø£¬£¬£¬£¬£¬ÓÉÓÚºóÐøµÄËùÓй¥»÷¶¼ÊÇÔÚmessageµÄ»Øµ÷ÖнøÐУ¬£¬£¬£¬£¬ËùÒÔ¶ÔÓÚg_hMenuOwnerÀ´ËµÕâ¸öÒ»Ê±ËøÊÇÎÞ·¨¿ªÊ͵쬣¬£¬£¬£¬ÈôÊÇÏëÒª»ú¹ØÒ»¸ö·ì϶ÀûÓû·¾³Ê×ÏȱØÒªÓÃһЩ²½ÖèÀ´ÈƹýËü¡£¡£¡£¡£¡£¡£¡£


8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website

´Ë¿ÌµÄÇé¿öÔì³ÉÁËÏÂͼËùʾ£º


8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website


µ±ÐÂÎÅΪHCBT_CREATEWNDʱ£¬£¬£¬£¬£¬ÎÒÃǵÚÒ»´Î´ïµ½xxxMNOpenHierarchyº¯ÊýÄÚ²¿µÄxxxCreateWindowEx¡£¡£¡£¡£¡£¡£¡£


8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website


ÕâÀïÄܹ»Í¨¹ý½ç˵¹ØÓÚHCBT_CREATEWNDÐÂÎŵĴ¦Öõõ½Ö´ÐÐÓû§²ã»Øµ÷´úÂëµÄ»úÓö£¬£¬£¬£¬£¬ÕâÒ»²½µÄÖØÒªÖ÷ÕÅÊÇΪÁË»ñÈ¡MenuµÄWnd¡£¡£¡£¡£¡£¡£¡£


8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website


µ±½Ó¹Üµ½µÄÐÂÎÅΪWM_ENTERIDLEʱ£¬£¬£¬£¬£¬ÎÒÃÇÔÚ´°¿ÚµÄÐÂÎŻص÷ÖÐͨ¹ýPostMessageÏ·¢ÐÂÎÅ¡£¡£¡£¡£¡£¡£¡£


8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website


·¢ËÍÐÂÎźó£¬£¬£¬£¬£¬Çý¶¯·¨Ê½À´µ½ÁËxxxMNKeyDownº¯ÊýÄÚ²¿Å²ÓÃxxxSendMessage´¦¡£¡£¡£¡£¡£¡£¡£


8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website


ͨ¹ýWM_NEXTMENUÐÂÎŵĻص÷º¯ÊýÆðͷΪLPARAM¸³Öµ£¬£¬£¬£¬£¬¸³Öµ²Ù×÷ÊÇΪÁËÅú¸ÄhMenuµÄOwner£¬£¬£¬£¬£¬ÕâÑù¾ÍÄܹ»½«OwnerµÄÒ»Ê±ËøÈÆ¹ý¡£¡£¡£¡£¡£¡£¡£


8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website


´ËʱÄں˻á½Óµ½Ïú»ÙmenuµÄÐÂÎÅ£¬£¬£¬£¬£¬Í¨¹ýÓû§²ãµÄ»Øµ÷º¯Êý·µ»Ø1×èÖ¹menuµÄÏú»Ù¡£¡£¡£¡£¡£¡£¡£


8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website


xxxMNKeyDownº¯Êýͨ¹ýUnlockPopupMenu½«g_hMenuOwnerÉíÉϵÄÓÀÔ¶Ëø±»È¥µô¡£¡£¡£¡£¡£¡£¡£


8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website


È¡¶ø´úÖ®µÄÊÇg_hNewOwner¼ÓÉÏÁËÒ»¸öËø£¬£¬£¬£¬£¬hMenuµÄOwnerÒ²´Óg_hMenuOwnerÔì³ÉÁËg_hNewOwner¡£¡£¡£¡£¡£¡£¡£


8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website


Õâʱ£¬£¬£¬£¬£¬ËøµÄ¹ØÏµÔì³ÉÁË£º

   

8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website


½ÓÏÂÀ´·¨Ê½µÚ¶þ´Î½øÈëµ½xxxMNOpenHierarchyº¯Êý²¢Í¨¹ýxxxSendMessage·¢ËÍÁËÐÂÎÅ¡£¡£¡£¡£¡£¡£¡£


8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website


´Ëʱͨ¹ýÉèÖÃWM_INITMENUPOPUP»Øµ÷À´»ñµÃÓû§²ãÖ´ÐеĻúÓö£¬£¬£¬£¬£¬WM_INITMENUPOPUP»Øµ÷º¯Êýͨ¹ýSetWindowsHookExº¯ÊýÉèÖÃÁËÒ»¸öеÄhook£¬£¬£¬£¬£¬Ö÷ÕÅÊÇΪÁËÔÚxxxMnOpenHierarchyº¯Êý´´½¨×Ó´°¿ÚµÄʱ³½»ñµÃÓû§²ãÖ´ÐÐȨÏÞ¡£¡£¡£¡£¡£¡£¡£


8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website


xxxMnOpenHierarchyº¯Êý³ÖÐøÏòÏÂÖ´ÐУ¬£¬£¬£¬£¬ÔÙ´ÎÀ´µ½xxxCreateWindowEx´¦¡£¡£¡£¡£¡£¡£¡£


8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website


xxxCreateWindowExŲÓÃÁ˸ոÕÉèÖõĻص÷º¯ÊýchildMenuHookProc¡£¡£¡£¡£¡£¡£¡£


8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website


Ôڻص÷º¯ÊýchildMenuHookProcÖУ¬£¬£¬£¬£¬SendMessage·¢ËÍÁËWM_NEXTMENUÐÂÎÅ£¬£¬£¬£¬£¬Í¨¹ý¸Ã½ç˵¸ÃÐÂÎŵĻص÷º¯ÊýÔÙ´ÎÅú¸Ä²ÎÊýLPARAM£¬£¬£¬£¬£¬ÕâÊÇΪÁËÈ¥µôg_hNewOwnerÉíÉϵÄÓÀÔ¶Ëø¡£¡£¡£¡£¡£¡£¡£


8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website


MenuµÄOwner¹ØÏµÔٴα»Å¤×ª£¬£¬£¬£¬£¬xxxMNKeyDownͨ¹ýº¯ÊýUnlockPopMenuÈ¥µôg_hNewOwnerÉíÉϵÄÓÀÔ¶Ëø¡£¡£¡£¡£¡£¡£¡£²¢½«Õâ¸öËø³ÁмÓÔÚÁËg_hMenuOwnerÉÏ¡£¡£¡£¡£¡£¡£¡£


8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website

8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website


Õâ¸öʱ³½£¬£¬£¬£¬£¬ËùÓеÄËø¶¼ÒѾ­×ªÒƵ½ÁËg_hMenuOwnerÉíÉÏ£¬£¬£¬£¬£¬¶øÓÉÓÚWH_CBT¹³×ÓÒѾ­±»ÒƳý£¬£¬£¬£¬£¬menu½«±»ÆúÓ㬣¬£¬£¬£¬g_hNewOwner½«°Ñд´½¨µÄ´°¿Úlinkµ½×Ô¼ºÉíÉÏ¡£¡£¡£¡£¡£¡£¡£Õâ¸öʱ³½Çé¿öÔì³ÉÁËÏÂÃæµÄÑù×Ó£¬£¬£¬£¬£¬g_hNewOwnerÉíÉÏÒѾ­Ã»ÓбØÒªÈƹýµÄËøÁË¡£¡£¡£¡£¡£¡£¡£


8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website


½Ó×ÅchildMenuHookProcͨ¹ýSetWindowsHookExº¯ÊýÓÖÒ»´ÎÉèÖÃÁ˻ص÷º¯Êý²¢Í¨¹ýSetWindowLongPtrº¯ÊýÀ´Å²ÓÃËü£¬£¬£¬£¬£¬»Øµ÷º¯ÊýÏú»ÙÁËg_hNewOwnerºÍxxxCreateWindowExÌìÉúµÄд°¿Ú¡£¡£¡£¡£¡£¡£¡£


8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website


xxxCreateWindowEx·µ»ØµÄֵΪffff871b80239130£¬£¬£¬£¬£¬Õâ¾ÍÊÇxxxCreateWindowEx´´½¨µÄ×Ó´°¿Ú¡£¡£¡£¡£¡£¡£¡£


8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website


½ÓÏÂÀ´¾ÍÄܹ»Í¨¹ýThreadUnlockÀ´Ïú»Ùg_hNewOwnerºÍÆäд´½¨µÄ×Ó´°¿ÚÀ´µÃµ½Ò»¸öUAF·ì϶¡£¡£¡£¡£¡£¡£¡£


8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website


ËÄ¡¢×Ü ½á



±¾ÎĶÔwin32k·ì϶ÍÚ¾òÐÂ˼·½øÐÐÁ˾ßÌå½â¶Á£¬£¬£¬£¬£¬ÆäÖÐÔ̺¬½«unlockº¯ÊýºÍ¶ÔÏóµÄDestroyº¯ÊýµÄ¸öÐÔ¹ØÁªÔÚһ·£¬£¬£¬£¬£¬²¢°Ñ¶ÔÏóµÄ×Ó×ÊÔ´×÷Ϊ¹¥»÷Ö¸±êѰÕÒÐµĹ¥»÷ÃæµÄ·ì϶ÍÚ¾ò˼·¡£¡£¡£¡£¡£¡£¡£Áí±í£¬£¬£¬£¬£¬ÈôºÎͨ¹ý¶ÔÏóÄÚ²¿µÄ¸öÐÔÈ¥ÈÆ¹ýËø¶Ô¶ÔÏóµÄËø¶¨µÄ˼·ºÍ¼¼ÇÉ£¬£¬£¬£¬£¬Ò²¼«¶ÈÓµÓÐ½è¼øÒâ˼¡£¡£¡£¡£¡£¡£¡£