¡¾Ô­´´¡¿Turbo PhotoµÄÆƽ⼰²»ÍêÈ«Ëã·¨·ÖÎö
Turbo PhotoÊÇÒ»¸öÒÔÊýÂëÓ°ÏñΪ±³¾°£¬ÃæÏòÊýÂëÏà»úÆÕͨÓû§ºÍ׼רҵÓû§¶øÉè¼ÆµÄÒ»Ì×¼¯Í¼Æ¬¹ÜÀí£¬ä¯ÀÀ£¬´¦Àí£¬Êä³öΪһÉíµÄÈí¼þϵͳ¡£Ëý°üÀ¨Á½¸ö²¿·Ö:Turbo Photo Ïà²áºÍTurbo Photo ±à¼­Æ÷¡£

¡¾×÷Õß¡¿WindayJiang
¡¾ÆƽâÉùÃ÷¡¿´¿´âѧϰ
¡¾Æƽ⹤¾ß¡¿WDSM£¬OLLDBG, eXeScopE,  PEID£¬
¡¾ÆƽâÄѶȡ¿EASY
¡¾Èí¼þ±£»¤¡¿SN+TIME
¡¾Èí¼þÏÂÔØ¡¿http://www.stepok.com/chs/index.htm

ÔËÐÐÈí¼þ£¬³ÌÐòÒª¹Ø±ÕÄÇÒ»¿Ì²Å»áµ¯³ö×¢²á¿ò£¬´íÎó×¢²á»áÓÐÌáʾ 

¿ª¹¤£¡ÏȲé¿Ç°É£¬VC±àµÄ£¬Ã»Óмӿǡ£

ÓÃOD¼ÓÔØ£¬CTRL+N²é¿´Ò»Ï£¬ÕÒ²»µ½GETWINDOWTEXTAÖ®ÀàµÄ³£¹æº¯Êý£¬ÄÇô¾ÍÊÔÒ»ÏÂÄÚ´æµÄ°É£¬¡¡µ÷³ö×¢²á´°¿Ú£¬ÊäÈ룱£²£³£´£µ-£µ£´£³£²£±-£¸£¸£¸£¸£¸£¸£­£¹£¸£·£¶£µ£¬°´½âËø£¬ÕâʱÌáʾÐòÁкŴíÎ󣬲»Òª¹Ø±ÕËü£¬»Øµ½OD£¬ÔÚDUMPÀïCTRL+B£¬²éÕÒHEX31¡¡32¡¡33¡¡34¡¡35, ÈçÏ£º
004BB52C  31 32 33 34 35 00 35 34 33 32 31 00 38 38 38 38  12345.54321.8888
004BB53C  38 38 00 39 38 37 36 35 00 00 00 00 80 22 1D 40  88.98765......€" @

ÔÚ004BB52CÏÂÓ²¼þ¶Ïµã£¬ÔٴνâËø¾Í»áÀ´µ½ÕâÀ
00453430  |.  8BC8          MOV ECX,EAX
00453432  |.  33C0          XOR EAX,EAX
00453434  |.  83E1 03       AND ECX,3
00453437  |.  F3:A4         REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[>
.
CTRL+F9·µ»ØºóÀ´µ½ÕâÀ
00452EA3   .  B9 7CB14B00   MOV ECX,TPhoto.004BB17C
00452EA8   .  E8 53050000   CALL TPhoto.00453400¡¡¡¡¡¡¡¡¡¡¡¡¡¡//×¢²áÂëµÄ±È½ÏCALL
00452EAD   .  85C0          TEST EAX,EAX¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//ÅжÏEAX
00452EAF   .  75 1B         JNZ SHORT TPhoto.00452ECC¡¡¡¡¡¡//Ìø¾Í³É¹¦×¢²áÁË£¬²»Ìø¾ÍÌáʾ´íÎó
00452EB1   .  50            PUSH EAX

ÓÚÊÇÐÞ¸Ä452EAFΪJMP¡¡SHORT TPhoto.00452ECC£¬µ«ÄãºÜ¿ì¾Í»á·¢ÏÖÕâÊDz»Öα¾µÄ£¬³ÌÐòÆô¶¯»áÔÙÅжÏÊÇ·ñ×¢²á£¬ÓÚÊǵã»÷452EAFÓÒ¼ü£¬Ñ¡FIND REFERENCES TO CALL DESTINATION£¬·¢ÏÖÓУ²¸öµØ·½µ÷Óã¬ÁíÒ»¸ö¾ÍÊÇ4535CC£¬ÔÚ´Ë϶ϣ¬ÖØÔËÐгÌÐò£¬¶ÏÏ£º
004535CC  |.  E8 2FFEFFFF   CALL TPhoto.00453400
004535D1  \.  C3            RETN¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//·µ»Ø4533A5
¡­¡­¡­¡­¡­..
004533A5  |.  F7D8          NEG EAX
004533A7  |.  5F            POP EDI         ;  TPhoto.004BBC58
004533A8  |.  5E            POP ESI
004533A9  |.  1BC0          SBB EAX,EAX
004533AB  |.  5D            POP EBP
004533AC  |.  F7D8          NEG EAX
004533AE  |.  5B            POP EBX
004533AF  |.  59            POP ECX¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//ÉÏÃæÊǶÔEAX´¦Àí
004533B0  \.  C3            RETN¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//·µ»Ø453A37
¡­¡­¡­¡­¡­¡­..
00453A37  |.  8986 64030000 MOV DWORD PTR DS:[ESI+364],EAX    //½«EAXдÈëÄÚ´æ±ê־λ
00453A3D  |.  C786 68030000>MOV DWORD PTR DS:[ESI+368],1    
00453A47  |.  5E            POP ESI
00453A48  \.  C3            RETN              

ÓÉÉÏ£²´¦ÅжϿÉÖªÖ»ÒªÁî±êÖ¾·µ»Ø£±¾ÍOKÁË£¬ÏÂÃæÎÒÃÇ¿´¿´×¢²áÂëµÄ±È½ÏCALL£º
00453400  /$ >PUSH EBX                                          
00453401  |. >MOV EBX,ECX
00453403  |. >PUSH EBP¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//"C:\WINNT\system32\tpflag.rg£¬×¢²áÐÅÏ¢Îļþ
00453404  |. >MOV EBP,DWORD PTR SS:[ESP+C]
00453408  |. >LEA EDX,DWORD PTR DS:[EBX+3B0]  ¡¡¡¡//µÚÒ»¶Î×¢²áÂëµØÖ··Åµ½EDX  /12345
0045340E  |. >PUSH ESI
0045340F  |. >CMP EDX,EBP
00453411  |. >PUSH EDI
00453412  |. >JE TPhoto.004534BE¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//ÕâÀï»áÌø
¡­¡­. 
004534BE  |>>MOV EDI,TPhoto.004B795C       ;  ASCII "DDGTM"¡¡¡¡//×Ö´®DDGTMµ½EDI
004534C3  |.>MOV ESI,EDX¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//µÚÒ»¶Î×¢²áÂëµ½ESI  12345
004534C5  |>>/MOV CL,BYTE PTR DS:[ESI]¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//µÚ£±¸ö×¢²áÂëµ½CL    ¡°1¡±
004534C7  |.>|MOV DL,BYTE PTR DS:[EDI]¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//¡°D¡±
004534C9  |.>|MOV AL,CL¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//µÚ£±¸ö×¢²áÂëµ½AL
004534CB  |.>|CMP CL,DL¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//µÚ£±¸ö×¢²áÊDz»ÊÇ¡°D¡±
004534CD  |.>|JNZ SHORT TPhoto.004534ED¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//²»ÊÇÌø×ß
004534CF  |.>|TEST AL,AL¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//ALÊDz»ÊÇ0
004534D1  |.>|JE SHORT TPhoto.004534E9  ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//0¾ÍÌøµ½4534E9
004534D3  |.>|MOV DL,BYTE PTR DS:[ESI+1]¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//µÚ£²¸ö×¢²áÂëµ½CL    ¡°2¡±
004534D6  |.>|MOV CL,BYTE PTR DS:[EDI+1]¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//µÚ¶þ¸ö¡°D¡±
004534D9  |.>|MOV AL,DL
004534DB  |.>|CMP DL,CL            
004534DD  |.>|JNZ SHORT TPhoto.004534ED¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//²»ÊÇÌø×ß
004534DF  |.>|ADD ESI,2
004534E2  |.>|ADD EDI,2
004534E5  |.>|TEST AL,AL
004534E7  |.>\JNZ SHORT TPhoto.004534C5¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//ÏòÉÏÑ­»·
004534E9  |>>XOR EAX,EAX  ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//EAXÇå0
004534EB  |.>JMP SHORT TPhoto.004534F2¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//Ìøµ½4534F2
004534ED  |>>SBB EAX,EAX¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//½èλ¼õ
004534EF  |.>SBB EAX,-1
004534F2  |>>TEST EAX,EAX        
004534F4  |.>JNZ SHORT TPhoto.004534FD¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//Èç¹û²»Ìø±êÖ¾Öµ¾Í²»ÄÜÉèΪ£±
004534F6  |.>POP EDI
004534F7  |.>POP ESI
004534F8  |.>POP EBP
004534F9  |.>POP EBX
004534FA  |.>RETN 10
¡­¡­¡­¡­¡­¡­
004534FD  |> \8B>MOV EAX,DWORD PTR SS:[ESP+20]¡¡¡¡¡¡¡¡¡¡¡¡¡¡//µÚ4¶Î×¢²áÂë
00453501  |.  8B>MOV ECX,DWORD PTR SS:[ESP+1C] ¡¡¡¡¡¡¡¡¡¡¡¡//µÚ£³¶Î×¢²áÂë
00453505  |.  8B>MOV EDX,DWORD PTR SS:[ESP+18]  ¡¡¡¡¡¡¡¡¡¡//µÚ£²¶Î×¢²áÂë
00453509  |.  50 PUSH EAX ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//µÚ4¶Î×¢²áÂëÈëÕ»
0045350A  |.  51 PUSH ECX¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ //µÚ£³¶Î×¢²áÂëÈëÕ»
0045350B  |.  52 PUSH EDX¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//µÚ£²¶Î×¢²áÂëÈëÕ»
0045350C  |.  55 PUSH EBP¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//µÚ£±¶Î×¢²áÂëÈëÕ»
0045350D  |.  8D>LEA ECX,DWORD PTR DS:[EBX+204]                     ; |
00453513  |.  E8>CALL TPhoto.0048E210¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//¿´À´Õâ¸ö×îÖյıȽÏCALLÁË
00453518  |. >TEST EAX,EAX¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//±êÖ¾ÊÇ·ñΪ0
0045351A  |. >JNZ SHORT TPhoto.00453523¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//0µÄ»°¾ÍÊÇ×¢²á²»³É¹¦ÁË
¡­¡­¡­¡­¡­¡­¡­¡­
00453523  |> >LEA EAX,DWORD PTR SS:[ESP+20]
00453527  |. >PUSH EAX
00453528  |. >CALL <JMP.&MFC42.#3811>
0045352D  |. >PUSH 0
0045352F  |. >MOV ECX,EAX
00453531  |. >CALL <JMP.&MFC42.#3337>
00453536  |. >MOV ECX,DWORD PTR DS:[EAX+14]
00453539  |. >ADD ECX,76C
0045353F  |. >CMP ECX,7D5¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//ÊÇ·ñ2005Äꣿ
00453545  |. >JLE SHORT TPhoto.0045358F
¡­¡­¡­¡­..
0045358F  |> >MOV EAX,1¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//ÖÕÓÚ¿´µ½Õâ¸öÁË£¬µÈµÃ²»¾ÍÊÇÕâ¸öÂºÇºÇ
00453594  |. >POP EDI
00453595  |. >POP ESI
00453596  |. >MOV DWORD PTR DS:[EBX+368],EAX
0045359C  |. >POP EBP
0045359D  |. >POP EBX
0045359E  \. >RETN 10

ƪ·ùÓÐÏÞ£¬ÄÄЩJUMP¸ÃÐÞ¸ÄÎҾͲ»ËµÁË£¬¸ÄÍêºóµ±ÄãÔÙ´ÎÔËÐгÌÐò»áÌáʾ£º×¢²áºÅÊÇ·Ç·¨µÄ´°¿Ú£¬ÐèÒªÔٴνâËø£¬ÄóöEXESCOPE£¬ÕÒµ½¸Ã¶Ô»°¿ò274,¡¡»»ËãHEXÊÇ112,¡¡ÔÙÀ´WDASM¿´¿´£º
* Possible Reference to Dialog: DialogID_0112 
:00453B31 6812010000              push 00000112¡¡¡¡¡¡¡¡¡¡¡¡//µ½ODÉè¶ÏÕâÀï
:00453B36 89742418                mov dword ptr [esp+18], esi
CTRL+K VIEW CALL TREE£¬¿´¿´ÊÇ´ÓʲôµØ·½µ÷Óõģ¨ÕâÀïÒª¿´£²´Î£¬Æª·ùÎÊÌâÎÒÖ»ÄÜÊ¡ÂÔÁË£©£¬À´µ½Õ⣺
0042E79F   .  E8 3C4E0200   CALL TPhoto.004535E0
0042E7A4   .  3BC5          CMP EAX,EBP
0042E7A6   .  A1 E0B44B00   MOV EAX,DWORD PTR DS:[4BB4E0]/ºÜÃæÊì°É£¬ÔÚ×¢²áÂë±È½ÏÄǼû¹ý
0042E7AB   .  7F 4D         JG SHORT TPhoto.0042E7FA¡¡¡¡//±ØÐëÌø·ñÔò˵·Ç·¨
¡­¡­¡­¡­¡­. 
0042E7FA   > \3BC5          CMP EAX,EBP        
0042E7FC   .  75 68         JNZ SHORT TPhoto.0042E866¡¡¡¡//±ØÐëÌø£¬·ñÔòÊÇÊÔÓðæ
¡­¡­¡­¡­¡­

ÐÞ¸Äһϣ¬Ò»¸ö·Ç³£ºÃÓõÄÈí¼þ¾Í´Ë¸æÆÆ£¡

×ܽáһϣººÜ³¤Ê±¼äûдÆÆÎÄÁË£¬×Ô¼º¸Ð¾õÒ²ºÜÀÛ£¬±ÈÆƵÄʱ¼ä»¹Òª³¤£ºP£¬¡¡ÆƵÄʱºòûÓÐÓÃÆäËûһЩ¿ÉÄܸüÓÐЧ¸ü¿ì½ÝµÄ¶Ïµã£¬¶øÊÇÓü¸¸öÈí¼þ½»²æÅäºÏ£¬ÈøÕѧÆƽâµÄNEWBIESÊìÁ·ÓÃÓÃÈí¼þ£¬Ð´µÃ²»ºÃ»¹Íû´ó¼Ò¶à¶àÔ­ÁÂÁË¡£ÁíÍâÎÒûÓÐʱ¼äÔÙ¸ú½ø×¢²áËã·¨£¬TPhoto.0048E210Õâ¸öCALL¹À¼Æ¾ÍÊÇËã·¨µÄ¹Ø¼üCALL£¬ÓÐÐËȤµÄÅóÓÑ¿ÉÒÔÔÙÈ¥¿´¿´¡£»¹ÓоÍÊÇTurboPhotoAlbum.exeÊÇÏà²á£¬Í¬ÑùÐèÒªÆƽâµÄ£¬µ«¸úÉÏÃæ˼·һÑù£¬ÎÒ¾ÍÀÁµÃдÁË£ºP

////////////////////////////////////////////////////////////////
If you want to crack well, learn ASM well !

WiNDaYJiANg       2005-12-18
////////////////////////////////////////////////////////////////




  • ±ê Ì⣺ ÌùÒ»¶ÎÀÏ°æ±¾£¨3.5£©µÄ×¢²áËã·¨¸øÄã²Î¿¼Ò»ÏÂ
  • ×÷ ÕߣºForEver
  • ʱ ¼ä£º2005-12-18 18:37

ÐòÁкŸñʽ:XXXXX-XXXXXX-XXXXX-XXXXX

ÎÒÃǼÙÉèÊäÈëµÄËÄ×éÐòÁкŷֱðÓÃs1[6],s2[6],s3[7],s4[6]À´±íʾ¡£
ÆäÖÐs1[0]´ú±íµÚÒ»×éÐòÁкŵĵÚÒ»¸ö×Ö·û¡£ÆäÓàÀàÍÆ¡£


loc46B2EE:  mov  dword ptr [ebx],     offset loc_46A9A0 ;ÕâЩµØÖ·Æäʵ¾ÍÊÇÑé֤ע²áÂë
    mov  dword ptr [ebx+4],   offset loc_46A910 ;µÄCALL£¬Èí¼þ×÷Õ߸ù¾Ý¼ÆËã»ú
    mov  dword ptr [ebx+8],   offset sub_46A890 ;Óû§ÃûÑ¡ÔñÒ»²¿·ÖÀ´ÑéÖ¤¡£Èç
    mov  dword ptr [ebx+0Ch], offset loc_46A980 ;¹ûÖ»¸ú×ÙÓõ½µÄCALLÀ´×ö×¢²á
    mov  dword ptr [ebx+10h], offset loc_46A810 ;»úÊDz»ÄÜͨÓõġ£Õâ´ó¸ÅÒ²ÊÇ
    mov  dword ptr [ebx+14h], offset sub_46AC80 ;Èí¼þ×÷Õ߶ÔÆƽâµÄ·À·¶¡£
    mov  dword ptr [ebx+18h], offset sub_46AD40 ;
    mov  dword ptr [ebx+1Ch], offset sub_46AE00 ;ÏÂÃæÎÒÃÇÒ»Ò»·ÖÎöÕâЩCALL¡£
    mov  dword ptr [ebx+20h], offset loc_46AEB0 ;
    mov  dword ptr [ebx+24h], offset sub_46AF40 ;
    mov  dword ptr [ebx+28h], offset loc_46AB80 ;
    mov  dword ptr [ebx+2Ch], offset loc_46AB20 ;
    mov  dword ptr [ebx+30h], offset loc_46AAC0 ;
    mov  dword ptr [ebx+34h], offset loc_46ABE0 ;
    mov  dword ptr [ebx+38h], offset loc_46AA60 ;
    mov  dword ptr [ebx+3Ch], offset loc_46AC40 ;
;///////////////////////////////////////////////////////////////

µÚÒ»¸öCALL: s1[4] = 4Dh ('M')

;-------------------------------------------------
loc_46A9A0:        ; DATA XREF: sub_46B200+EEo
    mov  eax, [esp+4]      ;µÚÒ»×éÐòÁкÅ
    push  ebx
    push  esi
    push  edi
    mov  bl, [eax+4]       ;Ö¸ÏòµÚÎå¸ö×Ö·û



loc_46AA45:        ; CODE XREF: .text:0046AA2Aj
    mov  edx, dword_490278 ;Õâ¸öÈ«¾Ö±äÁ¿ÀïÊÇ 1 £¬×·Ò»Ï¿ÉÒÔ¿´µ½
    xor  ecx, ecx
    movsx  eax, bl
    add  edx, 4Ch
    pop  edi
    cmp  eax, edx          ;²»µÈÓÚ 4Dh Ê§°Ü
    pop  esi
    setz  cl
    mov  eax, ecx
    pop  ebx
    retn
;///////////////////////////////////////////////////////////////

µÚ¶þ¸öCALL: s1[2]>=43h && s1[2]<=4Ch

;---------------------------------------------------------------
loc_46A910:        ; DATA XREF: sub_46B200+F4o

loc_46A961:        ; CODE XREF: .text:0046A94Aj
    mov  edx, [esp+4]    ;µÚÒ»×éÐòÁкÅ
    mov  al, [edx+2]     ;Ö¸ÏòµÚÈý¸ö×Ö·û
    cmp  al, 43h         ;СÓÚ43hʧ°Ü
    jl  short loc_46A976
    cmp  al, 4Ch         ;´óÓÚ4Chʧ°Ü
    jg  short loc_46A976

unknown_libname_47:
    mov  eax, 1
    retn
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ?

loc_46A976:        ; CODE XREF: .text:0046A93Bj
          ; .text:0046A93Fj .text:0046A955j
          ; .text:0046A959j .text:0046A96Aj
          ; .text:0046A96Ej
    xor  eax, eax
    retn
;///////////////////////////////////////////////////////////////

µÚÈý¸öCALL: s1[1]>=42h && s1[1]<=44

;---------------------------------------------------------------
sub_46A890  proc near    ; DATA XREF: sub_46B200+FBo

loc_46A8CB:        ; CODE XREF: sub_46A890+21j
    push  ecx
    lea  ecx, [esp+0Ch+var_8]
    mov  eax, esp
    mov  dword ptr [eax], 5
    call  sub_46B4B0
    test  eax, eax
    jz  short loc_46A8F2
    mov  ecx, [esp+8+arg_0]     ;µÚÒ»×éÐòÁкÅ
    xor  eax, eax
    cmp  byte ptr [ecx+1], 41h  ;µÚ¶þ¸ö×Ö·ûµÈÓÚ41hÔòʧ°Ü
    setnl  al
    add  esp, 8
    retn
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ?

loc_46A8F2:        ; CODE XREF: sub_46A890+4Fj
    mov  edx, [esp+8+arg_0]
    mov  al, [edx+1]
    cmp  al, 41h               ;СÓÚ41hÔòʧ°Ü
    jl  short loc_46A90A
    cmp  al, 45h               ;´óÓÚµÈÓÚ45hÔòʧ°Ü
    jge  short loc_46A90A
    mov  eax, 1
    add  esp, 8
    retn
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ?

loc_46A90A:        ; CODE XREF: sub_46A890+2Cj
          ; sub_46A890+30j sub_46A890+6Bj
          ; sub_46A890+6Fj
    xor  eax, eax
    add  esp, 8
    retn
sub_46A890  endp
;///////////////////////////////////////////////////////////////

µÚËĸöCALL:s1[3]>=42 && s1[3]<=79

;---------------------------------------------------------------
loc_46A980:        ; DATA XREF: sub_46B200+102o
    mov  eax, [esp+4]    ;µÚÒ»×éÐòÁкÅ
    mov  al, [eax+3]     ;µÚËĸö×Ö·û
    cmp  al, 41h         ;СÓÚ41hʧ°Ü
    jl  short loc_46A995
    cmp  al, 7Ah         ;´óÓÚµÈÓÚ7ahʧ°Ü
    jge  short loc_46A995

unknown_libname_48:
    mov  eax, 1
    retn
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ?

loc_46A995:        ; CODE XREF: .text:0046A989j
          ; .text:0046A98Dj
    xor  eax, eax
    retn
;///////////////////////////////////////////////////////////////

µÚÎå¸öCALL:s1[0] = 44h ('D')

;---------------------------------------------------------------
loc_46A810:        ; DATA XREF: sub_46B200+109o
    


loc_46A866:        ; CODE XREF: .text:0046A843j
          ; DATA XREF: .text:0046A880o
    mov  eax, [esp+4]  ;µÚÒ»×éÐòÁкÅ
    mov  al, [eax]       ;µÚÒ»¸ö×Ö·û
    cmp  al, 44h         ;СÓÚ44hʧ°Ü
    jl  short loc_46A874
    cmp  al, 45h         ;´óÓÚµÈÓÚ45hʧ°Ü

loc_46A872:        ; CODE XREF: .text:0046A856j
          ; .text:0046A864j
    jl  short unknown_libname_43 ; default

loc_46A874:        ; CODE XREF: .text:0046A852j
          ; .text:0046A860j .text:0046A86Ej
    xor  eax, eax
    retn
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ?

unknown_libname_43:      ; CODE XREF: .text:0046A841j
          ; .text:0046A843j .text:0046A872j
          ; DATA XREF: .text:0046A880o
    mov  eax, 1    ; default
    retn        
;///////////////////////////////////////////////////////////////

µÚÁù¸öCALL: s4[0] = (s1[4]%7 + s1[2]%5 + s1[1]*2 + s1[0]) % 1Ah + 41h

;---------------------------------------------------------------
sub_46AC80  proc near    ; DATA XREF: sub_46B200+110o

    sub  esp, 8
    lea  eax, [esp+8+var_4]
    push  eax
    call  ?GetTickCount@CTime@@SG?AV1@XZ ; CTime::GetTickCount(void)
    mov  ecx, [eax]
    push  0
    mov  [esp+0Ch+var_8], ecx
    lea  ecx, [esp+0Ch+var_8]
    call  ?GetLocalTm@CTime@@QBEPAUtm@@PAU2@@Z ; CTime::GetLocalTm(tm *)
    mov  eax, [eax+4]
    cmp  eax, 2Dh
    jle  short loc_46ACF9
    mov  ecx, [esp+8+arg_0]    
    push  esi
    mov  esi, 7
    push  edi
    movsx  eax, byte ptr [ecx+4] ;µÚÒ»×éÐòÁкŵÚÎå¸ö×Ö·û
    cdq
    idiv  esi                   
    movsx  eax, byte ptr [ecx+2] ;µÚÒ»×éÐòÁкŵÚÈý¸ö×Ö·û
    mov  edi, 5                
    mov  esi, edx              
    cdq
    idiv  edi
    pop  edi
    add  esi, edx              
    movsx  edx, byte ptr [ecx+1] ;µÚÒ»×éÐòÁкŵڶþ¸ö×Ö·û
    movsx  ecx, byte ptr [ecx]   ;µÚÒ»×éÐòÁкŵÚÒ»¸ö×Ö·û
    lea  eax, [esi+edx*2]      
    pop  esi
    add  eax, ecx             ;eax = s1[4]%7 + s1[2]%5 + s1[1]*2 + s1[0]
    mov  ecx, 1Ah             
    cdq
    idiv  ecx
    mov  eax, [esp+8+arg_C]   
    movsx  ecx, byte ptr [eax]  ;s4[0]
    xor  eax, eax
    add  dl, 41h              ;eax % 1ah +41
    and  edx, 0FFh
    cmp  ecx, edx
    setz  al
    add  esp, 8
    retn

sub_46AC80  endp
;///////////////////////////////////////////////////////////////

µÚÆ߸öCALL: s4[1] = (s2[3]%3 + s2[4]*5 + s2[0]*2 + s2[1] + s2[2]) % 1Ah + 41h

;---------------------------------------------------------------
sub_46AD40  proc near    ; DATA XREF: sub_46B200+117o
    sub  esp, 8
    lea  eax, [esp+8+var_4]
    push  eax
    call  ?GetTickCount@CTime@@SG?AV1@XZ ; CTime::GetTickCount(void)
    mov  ecx, [eax]
    push  0
    mov  [esp+0Ch+var_8], ecx
    lea  ecx, [esp+0Ch+var_8]
    call  ?GetLocalTm@CTime@@QBEPAUtm@@PAU2@@Z ; CTime::GetLocalTm(tm *)
    mov  eax, [eax+18h]
    inc  eax
    cmp  eax, 5
    jle  short loc_46ADB8
    mov  ecx, [esp+8+arg_4]   ;µÚ¶þ×éÐòÁкÅ
    push  esi
    mov  esi, 3
    movsx  eax, byte ptr [ecx+3] ;s2[3]
    cdq
    idiv  esi
    movsx  eax, byte ptr [ecx+4] ;s2[4]
    pop  esi
    lea  eax, [eax+eax*4]
    add  edx, eax
    movsx  eax, byte ptr [ecx]   ;s2[0]
    lea  eax, [edx+eax*2]
    movsx  edx, byte ptr [ecx+2] ;s2[2]
    movsx  ecx, byte ptr [ecx+1] ;s2[1]
    add  eax, edx
    add  eax, ecx
    mov  ecx, 1Ah
    cdq
    idiv  ecx
    mov  eax, [esp+8+arg_C]    ;µÚËÄ×éÐòÁкÅ
    movsx  ecx, byte ptr [eax+1] ;s4[1]
    xor  eax, eax
    add  dl, 41h
    and  edx, 0FFh
    cmp  ecx, edx
    setz  al
    add  esp, 8
    retn
sub_46AD40  endp
;///////////////////////////////////////////////////////////////

µÚ°Ë¸öCALL: s4[2] = (s3[3]*23 + s3[5] + s3[0])% 1Ah + 41h

;---------------------------------------------------------------
sub_46AE00  proc near    ; DATA XREF: sub_46B200+11Eo
    sub  esp, 8
    lea  eax, [esp+8+var_4]
    push  eax
    call  ?GetTickCount@CTime@@SG?AV1@XZ ; CTime::GetTickCount(void)
    mov  ecx, [eax]
    push  0
    mov  [esp+0Ch+var_8], ecx
    lea  ecx, [esp+0Ch+var_8]
    call  ?GetLocalTm@CTime@@QBEPAUtm@@PAU2@@Z ; CTime::GetLocalTm(tm *)
    mov  eax, [eax]
    and  eax, 80000007h
    jns  short loc_46AE2C
    dec  eax
    or  eax, 0FFFFFFF8h
    inc  eax

loc_46AE2C:        ; CODE XREF: sub_46AE00+25j
    cmp  eax, 5
    jle  short loc_46AE70
    mov  edx, [esp+8+arg_8]       ;µÚÈý×éÐòÁкÅ
    movsx  ecx, byte ptr [edx+3]    ;s[3]
    lea  eax, [ecx+ecx*2]
    shl  eax, 3
    sub  eax, ecx
    movsx  ecx, byte ptr [edx+5]    ;s[5]
    movsx  edx, byte ptr [edx]      ;s[0]
    add  eax, ecx
    mov  ecx, 1Ah
    add  eax, edx
    cdq
    idiv  ecx
    mov  eax, [esp+8+arg_C]    ;µÚËÄ×éÐòÁкÅ
    movsx  ecx, byte ptr [eax+2] ;s4[2]
    xor  eax, eax
    add  dl, 41h
    and  edx, 0FFh
    cmp  ecx, edx
    setz  al
    add  esp, 8
    retn
sub_46AE00  endp
;///////////////////////////////////////////////////////////////

µÚ¾Å¸öCALL: s4[3] = (s3[1]*7 + s3[2] + s2[2] + s1[3]) % 1Ah + 41h
        
;---------------------------------------------------------------
loc_46AEB0:        ; DATA XREF: sub_46B200+125o
    call  sub_46A690
    cmp  eax, 5
    jle  short loc_46AF06
    mov  edx, [esp+0Ch]        ;µÚÈý×éÐòÁкÅ
    movsx  ecx, byte ptr [edx+1] ;s3[1]
    movsx  edx, byte ptr [edx+2] ;s3[2]
    lea  eax, ds:0[ecx*8]
    sub  eax, ecx
    mov  ecx, [esp+4]          ;µÚÒ»×éÐòÁкÅ
    movsx  ecx, byte ptr [ecx+3] ;s1[3]
    add  eax, ecx
    mov  ecx, [esp+8]          ;µÚ¶þ×éÐòÁкÅ
    movsx  ecx, byte ptr [ecx+2] ;s2[2]
    add  eax, ecx
    mov  ecx, 1Ah
    add  eax, edx
    cdq
    idiv  ecx
    mov  eax, [esp+10h]        ;µÚËÄ×éÐòÁкÅ
    movsx  ecx, byte ptr [eax+3] ;s4[3]
    xor  eax, eax
    add  dl, 41h
    and  edx, 0FFh
    cmp  ecx, edx
    setz  al
    retn
;///////////////////////////////////////////////////////////////

µÚÊ®¸öCALL: ·µ»Ø 1 £¬¼´³É¹¦±êÖ¾
        
;---------------------------------------------------------------
  
;///////////////////////////////////////////////////////////////

µÚʮһ¸öCALL: s3[3]>=49h && s3[3]<=52h
        
;---------------------------------------------------------------
loc_46AB80:        ; DATA XREF: sub_46B200+133o
    call  sub_46A690
    cmp  eax, 8
    jle  short loc_46AB9F
    mov  eax, [esp+0Ch]        ;µÚÈý×éÐòÁкÅ
    mov  al, [eax+3]           ;s3[3]
    cmp  al, 49h
    jl  short unknown_libname_63
    cmp  al, 52h
    jg  short unknown_libname_63

unknown_libname_60:
    mov  eax, 1
    retn  
;///////////////////////////////////////////////////////////////

µÚÊ®¶þ¸öCALL: s3[2]>=42h && s3[2]<=4Bh
        
;---------------------------------------------------------------    
loc_46AB20:        ; DATA XREF: sub_46B200+13Ao
    call  sub_46A690
    cmp  eax, 8
    jle  short loc_46AB3F
    mov  eax, [esp+0Ch]          ;µÚÈý×éÐòÁкÅ
    mov  al, [eax+2]             ;s3[2]
    cmp  al, 42h
    jl  short unknown_libname_59
    cmp  al, 4Bh
    jg  short unknown_libname_59

unknown_libname_56:
    mov  eax, 1
    retn
;///////////////////////////////////////////////////////////////

µÚÊ®Èý¸öCALL: s3[1]>=48h && s3[1]<=51h
        
;---------------------------------------------------------------  
loc_46AAC0:        ; DATA XREF: sub_46B200+141o
    call  sub_46A690
    cmp  eax, 8
    jle  short loc_46AADF
    mov  eax, [esp+0Ch]
    mov  al, [eax+1]
    cmp  al, 48h
    jl  short unknown_libname_55
    cmp  al, 51h
    jg  short unknown_libname_55

unknown_libname_52:
    mov  eax, 1
    retn  
;///////////////////////////////////////////////////////////////

µÚÊ®ËĸöCALL: s3[4]>=4bh && s3[4]<=54
        
;---------------------------------------------------------------  
loc_46ABE0:        ; DATA XREF: sub_46B200+148o
    call  sub_46A690
    cmp  eax, 5
    jle  short loc_46ABFF
    mov  eax, [esp+0Ch]           ;µÚÈý×éÐòÁкÅ
    mov  al, [eax+4]              ;s3[4]
    cmp  al, 4Bh
    jl  short unknown_libname_67
    cmp  al, 54h
    jg  short unknown_libname_67

unknown_libname_64:
    mov  eax, 1
    retn
;///////////////////////////////////////////////////////////////

µÚÊ®Îå¸öCALL: s3[0] = 47h ('G')
        
;---------------------------------------------------------------   
 
 loc_46AA60:        ; DATA XREF: sub_46B200+14Fo
    call  sub_46A690
    cmp  eax, 8
    jle  short loc_46AA77
    mov  ecx, [esp+0Ch]           ;µÚÈý×éÐòÁкÅ
    xor  eax, eax
    cmp  byte ptr [ecx],  47h      ;s[0] == 47h
    setz  al
    retn
;///////////////////////////////////////////////////////////////

µÚÊ®Áù¸öCALL: s3[5]>=4Ah && s3[5]<=53h
        
;---------------------------------------------------------------   
loc_46AC40:        ; DATA XREF: sub_46B200+156o
    call  sub_46A690
    cmp  eax, 8
    jle  short loc_46AC5F
    mov  eax, [esp+0Ch]           ;µÚÈý×éÐòÁкÅ
    mov  al, [eax+5]              ;s3[5]
    cmp  al, 4Ah
    jl  short loc_46AC74
    cmp  al, 53h
    jg  short loc_46AC74

unknown_libname_68:
    mov  eax, 1
    retn    
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////

×ܽáһϣº
   °ÑËùÓеÄÌõ¼þºÏ²¢ÆðÀ´£¬¾ÍÊÇÉú³É×¢²áÂëµÄ·½·¨ÁË¡£ÎªÁËÊ¡¿Õ¼äºÍÈÝÒ×ÔĶÁ£¬ÎÒÊ¡È¥
ÁËÒ»²¿·Ö´úÂ룬¶øÈ¡ÅжϵÄ×îС¼¯¡£Èí¼þ×÷ÕßÔÚÑé֤ע²áÂëʱ²ÉÓÃËæ»úÑéÖ¤µÄ·½·¨¡£Òò´Ë
²»ÕýÈ·µÄ×¢²áÂë¿ÉÄܵ±Ê±²¢²»Ìáʾ¡£¶øÔÚ¹ýÒ»¶Îʱ¼ä²ÅÌáʾµÄ¡£
   Õâ¸öÈí¼þµÄ×¢²á·½·¨ºÜÖµµÃ½è¼ø£¬Ö»ÊÇÑéÖ¤²¿·ÖµÄCALL¹ýÓÚ¼¯ÖУ¬ÈÝÒ׸øÈË·¢ÏÖ¡£Èç
¹û°ÑÑéÖ¤µÄCALL·ÖÉ¢¿ª£¬±ØÈ»»á´ó´óÔö¼ÓÆƽâµÄÄѶȡ£

   Èí¼þÔÚ×¢²áºóµÄÆô¶¯»­ÃæÉÏÈÔÈ»ÊÇ'Trial version',Õâ¿ÉÄÜÊÇÈí¼þµÄBug.Èí¼þ¿¿Ò»¸ö
È«¾Ö±êÖ¾ÅжÏÊÇ·ñ³öÏÖ¡®Trial version¡¯»ò¡®Registered to¡¯¡£µ«È´Ã»Óгõʼ»¯Õâ¸ö
È«¾Ö±êÖ¾¡£

   ÏÂÃæµÄÕâЩËã·¨·ÅÔÚÒ»Æð¾Í¿ÉÒÔ×ö×¢²á»úÁË£º
   
        s1[0] = 44h ('D')
        s1[1]>=42h && s1[1]<=44
        s1[2]>=43h && s1[2]<=4Ch
        s1[3]>=42 && s1[3]<=79
        s1[4] = 4Dh ('M')
        
        s4[0] = (s1[4]%7 + s1[2]%5 + s1[1]*2 + s1[0]) % 1Ah + 41h
        s4[1] = (s2[3]%3 + s2[4]*5 + s2[0]*2 + s2[1] + s2[2]) % 1Ah + 41h
        s4[2] = (s3[3]*23 + s3[5] + s3[0])% 1Ah + 41h
        s4[3] = (s3[1]*7 + s3[2] + s2[2] + s1[3]) % 1Ah + 41h
        
        s3[0] = 47h ('G')
        s3[1]>=48h && s3[1]<=51h
        s3[2]>=42h && s3[2]<=4Bh
        s3[3]>=49h && s3[3]<=52h
        s3[4]>=4bh && s3[4]<=54
        s3[5]>=4Ah && s3[5]<=53h