¹ØµôÃû³Æ¶Ô»°¿ò£¬F9ÔËÐУ¬³ÌÐòÒѾÔËÐÐÆðÀ´ÁË¡£ÎÒÃÇÔÚ³ÌÐòµÄÁбí¿òÖÐËæ±ãÕÒÒ»ÏîË«»÷һϣ¬ºÜ²»ÐÒ£¬ÄǸö×ÖÌåÄÑ¿´µÄ½çÃæÓÖ³öÏÖÁË£¬OllyDBG ûÓÐÈκζ¯×÷¡£¿É¼û´´½¨Õâ¸ö´°¿ÚµÄʱºò¸ù±¾Ã»µ÷Óà CreateFontIndirectA£¬ÎÊÌâÏÖÔھͱäµÃÓе㸴ÔÓÁË¡£ÏȵãÈ·¶¨°ÑÕâ¸ö×ÖÌåÄÑ¿´µÄ¶Ô»°¿ò¹Ø±Õ£¬ÏÖÔÚÎÒÃÇ´ÓÁíÒ»¸ö·½Ã濼ÂÇ£º¼ÈȻûÓе÷ÓÃÉèÖÃ×ÖÌåµÄº¯Êý£¬ÄÇÎÒÃÇÀ´¿´¿´Õâ¸ö´°¿ÚÊÇÈçºÎ´´½¨µÄ£¬¸ú×Ù´°¿Ú´´½¨¹ý³Ì¿ÉÄÜ»áÕÒµ½Ò»Ð©¶ÔÎÒÃÇÓÐÓõÄÐÅÏ¢¡£ÏÖÔÚÎÒÃÇÔٻص½ÎÒÃǵ÷ÊÔ³ÌÐòµÄÁì¿Õ£¬°´ CTR+N ¿´Ò»Ï£¬·¢ÏÖ CreateWindowExA Õâ¸ö API º¯Êý±È½Ï¿ÉÒÉ¡£ÎÒÃÇÔÚ CreateWindowExA º¯ÊýµÄÿ¸ö²Î¿¼ÉÏÉèÉ϶ϵ㣬ÔÚ MyUninstaller µÄÁбí¿òÖÐÔÙËæ±ãÕÒÒ»ÏîË«»÷һϣ¬±» OllyDBG ¶ÏÏ£º
00408F5E |. FF15 98B24000 |CALL DWORD PTR DS:[<&USER32.CreateWindowExA>] ; \\¶ÏÔÚÕâÀï
ÉÏÏ·¿´Ò»Ï´úÂ룺
00408F3B |. 50 |PUSH EAX ; |hInst
00408F3C |. 8B45 C0 |MOV EAX,DWORD PTR SS:[EBP-40] ; | 00408F3F |. 6A 00 |PUSH 0 ; |hMenu = NULL 00408F41 |. 03C6 |ADD EAX,ESI ; |
00408F43 |. FF75 08 |PUSH DWORD PTR SS:[EBP+8] ; |hParent 00408F46 |. FF75 D0 |PUSH DWORD PTR SS:[EBP-30] ; |Height 00408F49 |. 57 |PUSH EDI ; |Width 00408F4A |. 50 |PUSH EAX ; |Y
00408F4B |. FF75 BC |PUSH DWORD PTR SS:[EBP-44] ; |X 00408F4E |. FF75 EC |PUSH DWORD PTR SS:[EBP-14] ; |Style
00408F51 |. 68 80DE4000 |PUSH myuninst.0040DE80 ; |WindowName = \00408F56 |. 68 DCD94000 |PUSH myuninst.0040D9DC ; |Class = \00408F5B |. FF75 D4 |PUSH DWORD PTR SS:[EBP-2C] ; |ExtStyle 00408F5E |. FF15 98B24000 |CALL DWORD PTR DS:[<&USER32.CreateWindowExA>] ; \\¶ÏÔÚÕâÀï 00408F64 | 6A 00 |PUSH 0 ; µÚÒ»´¦ÒªÐ޸ĵĵط½
00408F66 | 8945 F4 |MOV DWORD PTR SS:[EBP-C],EAX 00408F69 |. E8 A098FFFF |CALL
00408F6F |. 8B45 DC |MOV EAX,DWORD PTR SS:[EBP-24] ; | 00408F72 |. 6A 00 |PUSH 0 ; |hMenu = NULL 00408F74 |. 03F0 |ADD ESI,EAX ; |
00408F76 |. FF75 08 |PUSH DWORD PTR SS:[EBP+8] ; |hParent 00408F79 |. FF75 CC |PUSH DWORD PTR SS:[EBP-34] ; |Height 00408F7C |. 53 |PUSH EBX ; |Width 00408F7D |. 56 |PUSH ESI ; |Y
00408F7E |. FF75 D8 |PUSH DWORD PTR SS:[EBP-28] ; |X 00408F81 |. FF75 E8 |PUSH DWORD PTR SS:[EBP-18] ; |Style
00408F84 |. 68 80DE4000 |PUSH myuninst.0040DE80 ; |WindowName = \
00408F89 |. 68 D4D94000 |PUSH myuninst.0040D9D4 ; |Class = \00408F8E |. FF75 B8 |PUSH DWORD PTR SS:[EBP-48] ; |ExtStyle 00408F91 |. FF15 98B24000 |CALL DWORD PTR DS:[<&USER32.CreateWindowExA>] ; \\CreateWindowExA
00408F97 | 8945 F0 |MOV DWORD PTR SS:[EBP-10],EAX ; µÚ¶þ´¦ÒªÐ޸ĵĵط½
00408F9A | 8B45 F8 |MOV EAX,DWORD PTR SS:[EBP-8] 00408F9D |. FF30 |PUSH DWORD PTR DS:[EAX] ; /<%s>
00408F9F |. 8D85 B0FEFFFF |LEA EAX,DWORD PTR SS:[EBP-150] ; | 00408FA5 |. 68 D0D94000 |PUSH myuninst.0040D9D0 ; |format = \00408FAA |. 50 |PUSH EAX ; |s
00408FAB |. FF15 90B14000 |CALL DWORD PTR DS:[<&MSVCRT.sprintf>] ; \\sprintf 00408FB1 |. 8B35 84B24000 |MOV ESI,DWORD PTR DS:[<&USER32.SetWindowTextA>] ; USER32.SetWindowTextA 00408FB7 |. 83C4 0C |ADD ESP,0C
00408FBA |. 8D85 B0FEFFFF |LEA EAX,DWORD PTR SS:[EBP-150] 00408FC0 |. 50 |PUSH EAX ; /Text
00408FC1 |. FF75 F4 |PUSH DWORD PTR SS:[EBP-C] ; |hWnd 00408FC4 |. FFD6 |CALL ESI ; \\SetWindowTextA
00408FC6 |. 8D85 ACFAFFFF |LEA EAX,DWORD PTR SS:[EBP-554] 00408FCC |. 50 |PUSH EAX ; /Arg3
00408FCD |. FF75 FC |PUSH DWORD PTR SS:[EBP-4] ; |Arg2
00408FD0 |. FF35 00EF4000 |PUSH DWORD PTR DS:[40EF00] ; |Arg1 = 00BEADCC
00408FD6 |. E8 1884FFFF |CALL
00408FDF |. FF75 F0 |PUSH DWORD PTR SS:[EBP-10] 00408FE2 |. FFD6 |CALL ESI
00408FE4 |. FF45 FC |INC DWORD PTR SS:[EBP-4]
00408FE7 |. 8345 F8 14 |ADD DWORD PTR SS:[EBP-8],14 00408FEB |. 837D FC 0F |CMP DWORD PTR SS:[EBP-4],0F 00408FEF |.^ 0F8C 32FFFFFF \\JL
ÎÒÏëÉÏÃæµÄ´úÂëÎÒ²»Ðè¶à×ö½âÊÍ£¬OllyDBG ×Ô¶¯¸ø³öµÄ×¢ÊÍÒѾ¹»Çå³þµÄÁË¡£ÎÒÃÇË«»÷ MyUninstaller Áбí¿òÖеĵÄijÏî²é¿´ÊôÐÔʱ£¬µ¯³öµÄÊôÐÔ´°¿ÚÉ쵀 STATIC ¿Ø¼þºÍ EDIT ¿Ø¼þ¶¼ÊÇÓÉ CreateWindowExA º¯Êý´´½¨µÄ£¬È»ºóÔÙµ÷
Óà SetWindowTextA À´ÉèÖÃÎı¾£¬¸ù±¾Ã»¿¼ÂǿؼþÉÏ×ÖÌåÏÔʾµÄÎÊÌ⣬ËùÒÔÎÒÃÇ¿´µ½µÄ¶¼ÊÇϵͳĬÈϵÄ×ÖÌå¡£ÎÒÃÇÒªÉèÖÿؼþÉϵÄ×ÖÌ壬¿ÉÒÔ¿¼ÂÇÔÚ CreateWindowExA ´´½¨Íê¿Ø¼þºó£¬ÔÚʹÓà SetWindowTextA º¯ÊýÉèÖÃÎı¾Ö®Ç°µ÷ÓÃÏà¹Ø×ÖÌå´´½¨º¯ÊýÀ´Ñ¡Ôñ×ÖÌ壬ÔÙµ÷Óà SendMessageA º¯Êý·¢ËÍ WM_SETFONT ÏûÏ¢À´ÉèÖÿؼþ×ÖÌ塣˼·¶¨ÏÂÀ´ºó£¬ÎÒÃǾͿªÊ¼À´ÊµÊ©¡£Ê×ÏÈÎÒÃÇ¿´Ò»ÏÂÕâ¸ö³ÌÐòÖеĵ¼È뺯Êý£¬CreateFontIndirectA Õâ¸ö×ÖÌå´´½¨º¯ÊýÒѾÓÐÁË£¬ÔÙ¿´¿´ SendMessageA£¬ºÇºÇ£¬²»´í£¬Ô³ÌÐòÒ²ÓÐÕâ¸öº¯Êý¡£ÕâÑùÎÒÃǾÍÊ¡ÊÂÁË¡£ÓÐÈË¿ÉÄÜÒªÎÊ£¬Èç¹ûÔÀ´²¢Ã»ÓÐÕâÁ½¸öµ¼È뺯Êý£¬ÄÇÔõô°ìÄØ£¿ÆäʵÕâÒ²ºÜ¼òµ¥£¬ÎÒÃÇ¿ÉÒÔÖ±½ÓÓà LordPE À´ÔÚ³ÌÐòÖÐÌí¼ÓÎÒÃÇÐèÒªµÄµ¼È뺯Êý¡£ÎÒÕâÀïÓøöºÜСµÄ PE ¹¤¾ß zeroadd À´Ê¾·¶Ò»Ï£¬Õâ¸ö³ÌÐòÀïÃæÃ»ÓÐ CreateFontIndirectA ºÍ SendMessageA º¯Êý£¨ÕâÀﻹÓиöÎÊÌâ˵һÏ£¬ÆäʵÎÒÃDZà³Ìʱµ÷ÓÃÕâÁ½¸öº¯Êýʱ¶¼ÊÇÖ±½Óд CreateFontIndirect ¼° SendMessage£¬Ò»°ã²»ÐèÖ¸¶¨¡£µ«ÔÚ³ÌÐòÖÐд²¹¶¡´úÂëʱÎÒÃÇÒªÖ¸¶¨ÕâÊÇʲôÀàÐ͵ĺ¯Êý¡£ÕâÀïÔÚº¯ÊýºóÃæ¼Ó¸ö¡°A¡±±íʾÕâÊÇ ASCII °æ±¾£¬Í¬Ñù UNICODE °æ±¾ÔÚºóÃæ¼Ó¸ö¡°W¡±£¬Èç SendMessageW¡£ÔÚ Win9X ÏÂÎÒÃÇÒ»°ã¶¼Óà ASCII °æ±¾µÄº¯Êý£¬UNICODE °æ±¾µÄº¯ÊýºÜ¶àÔÚ Win9X ÏÂÊDz»ÄÜÔËÐеġ£¶øNT ϵͳÈç WinXP Ò»°ã¶¼ÊÇ UNICODE °æ±¾µÄ£¬µ«Èç¹ûÎÒÃÇÓÃÁË ASCII °æ±¾µÄº¯Êý£¬ÏµÍ³»á×Ô¶¯×ª»»µ÷Óà UNICODE °æ±¾¡£ÕâÑùÎÒÃÇд²¹¶¡´úÂëµÄʱºò¾Í¿ÉÒÔÖ±½ÓÖ¸¶¨Îª ASCII °æ±¾µÄº¯Êý£¬¿ÉÒÔ¼æÈݸ÷¸öϵͳ£©£ºÎÒÃÇÓà LordPE µÄ PE ±à¼Æ÷ÔØÈë zeroadd ³ÌÐò£¬Ñ¡Ôñ¡°Ä¿Â¼¡±£¬ÔÙÔÚµ¯³öµÄĿ¼±í¶Ô»°¿òÖÐÑ¡ÔñÊäÈë±íºóÃæµÄÄǸö¡°...¡±°´Å¥£¬»áµ¯³öÒ»¸ö¶Ô»°¿ò£º
ÒòΪ SendMessageA ÔÚ USER32.dll ÖУ¬ÎÒÃÇÔÚÓÒ¼ü²Ëµ¥Öеã»÷°´Å¥¡°Ìí¼Óµ¼Èë±í¡±£¬À´µ½ÏÂÃæ£º
°´ÉÏÃæµÄÌáʾÍê³Éºóµã¡°È·¶¨¡±£¬ÎÒÃǻص½ÔÏȵÄÄǸö¡°ÊäÈë±í¡±¶Ô»°¿ò£º
´ÓÉÏͼÖÐÎÒÃÇ¿ÉÒÔ¿´³ö¶à³öÁËÒ»¸ö USER32.dll£¬Õâ¾ÍÊÇÎÒÃÇÌí¼Ó SendMessageA µÄ½á¹û¡£ÕâÒ²ÊÇÓù¤¾ßÌí¼ÓµÄÒ»¸öȱµã¡£ÎÒÃÇÒ»°ãÏ£Íû°ÑÌí¼ÓµÄº¯ÊýÖ±½Ó·Åµ½ÒÑ´æÔÚµÄ DLL ÖУ¬¶ø²»ÊǶà³öÀ´Ò»¸ö£¬ÕâÑùÏԵò»ºÃ¿´¡£µ«Óù¤¾ß¾Íû°ì·¨£¬LordPE ĬÈÏÊǽ¨Ò»¸ö 1K µÄÐÂÇø¶ÎÀ´±£´æÌí¼ÓºóµÄ½á¹û£¬Óɴ˳öÏÖÁËÉÏͼÖеÄÇé¿ö¡£Èç¹ûÄã¶Ô PE ½á¹¹±È½ÏÊìϤµÄ»°£¬Ò²¿ÉÒÔÖ±½ÓÓà 16½øÖƱ༹¤¾ßÀ´Ìí¼ÓÄãÐèÒªµÄº¯Êý£¬ÕâÑù¸Ä³öÀ´µÄ¶«Î÷ºÃ¿´¡£Èç¹ûÏë͵ÀÁ£¬¾ÍÏñÎÒÒ»ÑùÓù¤¾ß°É£¬ºÇºÇ¡£ÔÚÉÏͼÖÐÎÒ»¹±ê³öÁËҪעÒâ FirstThunk ¼°ÄǸö ThunkRVA µÄÖµ£¬²¢ÇÒÒª°Ñ¡°×ÜÊDz鿴 FirstThunk¡±ÄǸöÑ¡ÏîÑ¡ÉÏ¡£ÓÐÈË¿ÉÄܲ»Àí½âÆä×÷Óã¬ÎÒÕâÀïÒ²½âÊÍһϣºÒ»°ã½²Êö PE ¸ñʽµÄÎÄÕÂÖÐ¶Ô FirstThunk µÄ½âÊÍÊÇÕâÑùµÄ£ºFirstThunk °üº¬Ö¸ÏòÒ»¸ö IMAGE_THUNK_DATA ½á¹¹Êý×éµÄ RVA Æ«ÒÆµØÖ·£¬µ±°Ñ PE Îļþ×°ÔØµ½ÄÚ´æÖÐʱ£¬PE×°ÔØÆ÷½«²éÕÒ IMAGE_THUNK_DATA ºÍ IMAGE_IMPORT_BY_NAME ÕâЩ½á¹¹Êý×éÀ´¾ö¶¨µ¼È뺯ÊýµÄµØÖ·£¬ËæºóÓõ¼È뺯ÊýÕæÊµµØÖ·À´Ìæ´úÓÉ FirstThunk Ö¸ÏòµÄ IMAGE_THUNK_DATA Êý×éÀïµÄÔªËØÖµ¡£ÕâÑù˵ÆðÀ´»¹ÊÇÈÃÈ˲»Ã÷°×£¬ÎÒ¾Ù¸öÀý×Ó£º±ÈÈçÄãÓиöºÜÒªºÃµÄÅóÓÑ£¬ËûÊǸö´óæÈË£¬ËäÈ»ÄãÖªµÀËûµÄ¼Òͥסַ£¬¿ÉËûºÜÉٻؼҡ£Èç¹ûÄãÄÄÌìÏëÕÒËû£¬Ö±½ÓÈ¥Ëû¼Ò£¬ºÜ¿ÉÄܳԸö±Õßþ£¬ÕÒ²»µ½ËûÈË¡£Ôõô°ì£¿ÐÒºÃÄãÓÐËûµÄÊÖ»úºÅÂ룬Äã¾Í¸øËû²¦ÁËÒ»¸öµç»°£º¡°Ð¡×Ó£¬ÄãÔÚÄÄÄØ£¿¡±£¬Ëû¸æËßÄ㣺¡°ÎÒÕýÔÚXXX·¹µêºÈ¾ÆÄØ£¡¡±ÕâʱÄãÔõô°ì£¿£¨µ±È»ÊÇɱ