Ŀ¼£¾£¾µÚ4ÕÂ

µÚ4Õ ¾²Ì¬·ÖÎö¼¼Êõ

µÚÒ»½Ú »ù´¡ÖªÊ¶
µÚ¶þ½Ú W32Dasm¼ò½é
µÚÈý½Ú IDA Pro ¼ò½é
µÚËÄ½Ú HIEW¼ò½é
µÚÎå½Ú ²ð½â½Ì³Ì

µÚÎå½Ú ²ð½â½Ì³Ì

ʵÑé¶ÔÏó£ºÀýÌâChap4-eg-1.zip £»

ÆÆ½â¹¤¾ß£ºW32Dasm£¬Hiew£»

1¡¢Ë¼Â·Ìáʾ£ºÊ×ÏÈÒªÊÔÔËÐÐ񻮮½âµÄ³ÌÐò£¬Á˽âÆäһЩÌáʾÐÅÏ¢£¬È磺Îı¾/NAGÆÁ/°´Å¥µÈµÈ.×îÖØÒªµÄ¾ÍÊdzö´íÐÅÏ¢ .È磺 "Wrong serial.."¼ÇÏ£¬ÒòΪÄãÔÚºóÃæÒªÓõ½Ëü£¬ÄãÐèÒªËüÀ´ÕÒµ½call³ö´ímessageboxµÄµØ·½.µ± W32Dasm·´±àÒëºóÄã»á¿´µ½Ò»ÆÁÄ»ÄѶ®µÄ»ã±àÂë .Ä㻹¼ÇµÃ¸ÕÒªÄã¼ÇϵÄÄǸömessageô? ´Ëʱµ¥»÷ÔÚ¹¤¾ßÀ¸ÀïµÄ´®Ê½Êý¾Ý²Î¿¼SDR (=String Data Reference).Õâ¸ö¹¦ÄÜ¿ÉÊǷdz£ÓÐÓõÄ.

ÔÚ´®Ê½Êý¾Ý²Î¿¼SDRÖÐÕÒµ½ÄǸöÌáʾÐÅÏ¢(ËüÒ²ÐíÖ»ÏÔʾÁËÐÅÏ¢µÄÒ»²¿·Ö) £¬´Ëʱ˫»÷Ëü£¬À´µ½Ïà¹Ø´úÂë´¦£¬ÔÙ·ÖÎöÔ´´úÂë¡£

2¡¢ÔËÐÐcrackme£¬ÊäÈë¼ÙµÄÐòÁкţ¬µã»÷CHECK,³öÏÖ´íÎóÌáʾ£º"Incorrect try again!! "¼ÇÏ¡£

3¡¢½«crackmer±¸·ÝÒ»·Ý£¬ÓÃW32DASM·´»ã±àËü¡£

4¡¢Ò»µ©Íê³É·´»ã±à , µã´®Ê½Êý¾Ý²Î¿¼£¨string data reference£©°´Å¥ , ÔÚÁгöµÄ×Ö·û´®ÁбíÖÐÕÒµ½ : "Incorrect try again!! " ²¢Ë«»÷Ëü . £¨×¢£ºÈç´úÂëÖÐÓжദÓдË×Ö´®£¬ÄãÔÙ´ÎË«»÷ºó£¬¹â±ê½«³öÏÖÔÚÏÂÒ»´úÂëÉÏ£©

5¡¢¹Ø±ÕÕâ¸ö´°¿Ú»Øµ½Ö÷´°¿Ú , ÄãÓ¦¸ÃÄܹ»¿´µ½ÏÂÃæÕâÒ»ÐÐ £º

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00401595(C)
|
:004015AD 6A40                    push 00000040

* Possible StringData Ref from Data Obj ->"CrackMe"//´íÎóÌáʾ´°¿ÚµÄ±êÌâ
                                  |
:004015AF 686C304000              push 0040306C

* Possible StringData Ref from Data Obj ->"Incorrect try again!!"//´íÎóÌáʾ´¦£¬ÎÒÃÇÀ´µ½ÕâÒ»ÐÐ
                                  |
:004015B4 6874304000              push 00403074
:004015B9 8B4DE0                  mov ecx, dword ptr [ebp-20]

6¡¢ÏÖÔÚÄã±ØÐë´ÓÕâÐÐÆðÏòÉÏÕÒ , Ö±µ½ÕÒµ½ÓÐÕâÑùµÄÃüÁîΪֹ :cmp,jne,je,test µÈµÈ .

CMP = ±È½Ï (Èç CMP EAX, EBX) <- ±È½ÏEAXºÍEBX
JE = Èç¹ûÏàµÈ¾ÍÌø×ª
JNE = Èç¹û²»ÏàµÈ¾ÍÌø×ª
JL = Èç¹ûСÓÚ¾ÍÌø×ª
JLE = Èç¹ûСÓÚµÈÓÚ¾ÍÌø×ª
JA = Èç¹û´óÓÚ¾ÍÌø×ª
JAE = Èç¹û´óÓÚµÈÓÚ¾ÍÌø×ª
JMP = ÎÞÌõ¼þÌø×ª

7¡¢×¢ÒâÕâÒ»ÐдúÂ룺

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00401595(C)
|
:004015AD 6A40                    push 00000040

:00401595(C) ÊÇ´úÂëλÖöø²»ÊÇoffset£¬±íʾָÁîÓÉ00401595Ò»ÐÐÌø×ªµ½´Ë .´ËʱÄãÔÚÀûÓò˵¥µÄתµ½´úÂëλÖù¦ÄÜ»ò°´shift+F12£¬ÔÚ¶Ô»°¿òÖÐÊäÈë:00401595£¬Ä㽫À´µ½´Ë£º

:00401585 8D4DE4                  lea ecx, dword ptr [ebp-1C]
:00401588 51                      push ecx
:00401589 8D55F4                  lea edx, dword ptr [ebp-0C]
:0040158C 52                      push edx

* Reference To: KERNEL32.lstrcmpA, Ord:02FCh
                                  |
:0040158D FF1500204000            Call dword ptr [00402000]
:00401593 85C0                    test eax, eax
:00401595 7516                    jne 004015AD

8¡¢´ËʱÄã½èÖúSOFTICE¶¯Ì¬µ÷ÊÔÄܺܿìÕÒµ½ÐòÁкţ¬ÔÚÕâÎÒÃǽñÌìÓñ©Á¦·¨ÆÆ½â£¬×¢Òâ :

:0040158D FF1500204000            Call dword ptr [00402000]//Õæ¼ÙÐòÁкűȽϺËÐÄ£¨µ÷Óú¯Êýlsrcmpa±È½Ï£©
:00401593 85C0                    test eax, eax//ÓÃeaxµ±ÆìÖÄ£¬ÈçÏàµÈ£¬Ôòeax=0
:00401595 7516                    jne 004015AD//Èç²»Ìø×ªÔò×¢²á³É¹¦

¿´Ã÷°×ÁËÂð£¿ÒªÈóÌÐò½ÓÊÜÈκÎ×¢²áÂë¾ÍÖ»Òª°ÑJNE (=²»ÏàµÈ¾ÍÌø)¸Ä³ÉJE (=ÏàµÈ¾ÍÌø).»ò°Ñ¸Ä³É¿ÕÖ¸Áînop(ʲôҲ²»Ö´ÐУ©,ÕâÑùǰһ¸÷¸Ä·¨Òª×¢²á¾ÍÖ»ÄÜÊäÈë´íÎóµÄ×¢²áÂ룬ºóÕß¿ÉÈÎÒâ×¢²áÂë¡£

9¡¢½«ÂÌÉ«µÄ¹âÌõÒÆµ½ :00401595 7516 jne 004015ADÉÏ , ÔÚ´°¿Úµ×²¿ÓÐÒ»ÐÐ×ÖָʾÕâ¾äÃüÁîµÄÆ«ÒÆµØÖ· , ´Ë´¦Îª @Offset 00001595h. Õâ¾ÍÊÇÓ¦¸ÃÐ޸ĵĵط½ÁË .

10¡¢Æô¶¯hiew, ´ò¿ªcrackme.exe£¬°´ F4 È»ºóÑ¡Ôñ decode mode, °´ F5 ÊäÈëÆ«ÒÆµØÖ·1595£¨@Offset 00001595h£©. ÄãÓ¦¸Ã¿´µ½ÏÂÃæÕ⼸ÐÐ :

².00401593: 85C0 test eax,eax
².00401595: 7516 jne .0004015AD

11¡¢Õâ¾ÍÊÇÐ޸ĵĵط½ÁË£¬°´F3½øÈëÐÞÕý״̬£¬ÔÚ»úÆ÷Âë´¦Ö±½ÓÓÃ7416´úÌæ7516£¬°´F9´æÅÌ¡£»òÔÚÕâÒ»Ðа´F2»ò»Ø³µ½øÈëС»ã±àÐÞ¸Ä״̬£¬ÊäÈëÕýÈ·µÄÖ¸Áî¡£

12¡¢µÚ¶þÖÖÐ޸ķ½·¨ÊÇÓÃÁ½¸öNOPÖ¸ÁNOPÖ¸Áî»úÆ÷ÂëÊÇ90,ÊÇÒ»¸ö×Ö½Ú£©´úÌæ»úÆ÷Â룺7516,¼´¸ÄΪ£º9090

13¡¢ÔËÐÐ crackme, Ëæ±ãÊäÈ뼸¸ö×Ö·ûÊÔÊÔ . ³É¹¦ÁË ! (µ±È»ÕâÖ»ÊǶÔÄÇЩ¼òµ¥µÄ³ÌÐòÓÐЧ)


Copyright © 2000-2001 KanXue Studio All Rights Reserved.