Ŀ¼£¾£¾µÚ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: |
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] |
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, Ëæ±ãÊäÈ뼸¸ö×Ö·ûÊÔÊÔ . ³É¹¦ÁË ! (µ±È»ÕâÖ»ÊǶÔÄÇЩ¼òµ¥µÄ³ÌÐòÓÐЧ)