【文章标题】: 小巧名片王 V2.0算法分析
【文章作者】: 千里之外
【作者邮箱】: 506398911@qq.com
【作者主页】: www.wm5.net.cn
【作者QQ号】: 506398911
【软件名称】: 小巧名片王 V2.0
【下载地址】: http://www.skycn.com/soft/36316.html#download
【保护方式】: 机器码
【编写语言】: Borland Delphi 6.0 - 7.0
【使用工具】: OD PEID
【操作平台】: WINXP2
【软件介绍】: 小巧名片王主要是为了管理您长期积累下来的众多名片
【作者声明】: 谢谢 fonge大哥的热心指导 没有你 我也许离写出算法还很远 再次感谢 祝好人一生平安
--------------------------------------------------------------------------------
【详细过程】
  声明:发表这篇破文时发现前辈发过相同的文章 但此文由本人独立完成 并无抄袭 特此声明 谢谢大家
  大家好 我是千里之外 在这里依然谢谢fonge大哥的热心指导  是你给我指明了学习的方向 呵呵 我会继续努力的
   
  搜索  您使用的是试用版,请联系购买正版软件,联系邮箱vtsoft@21cn.com!  可以很快的来到这里 
  
  00565C69   .  8B00          MOV EAX,DWORD PTR DS:[EAX]
  00565C6B   .  C680 04040000>MOV BYTE PTR DS:[EAX+404],1
  00565C72   .  8D4D A8       LEA ECX,DWORD PTR SS:[EBP-58]
  00565C75   .  A1 CC415800   MOV EAX,DWORD PTR DS:[5841CC]
  00565C7A   .  8B00          MOV EAX,DWORD PTR DS:[EAX]
  00565C7C   .  8B90 44040000 MOV EDX,DWORD PTR DS:[EAX+444]
  00565C82   .  A1 143F5800   MOV EAX,DWORD PTR DS:[583F14]
  00565C87   .  8B00          MOV EAX,DWORD PTR DS:[EAX]
  00565C89   .  E8 C6DEFFFF   CALL MPW.00563B54                        ;  算法CALL
  00565C8E   .  8B55 A8       MOV EDX,DWORD PTR SS:[EBP-58]
  00565C91   .  A1 CC415800   MOV EAX,DWORD PTR DS:[5841CC]
  00565C96   .  8B00          MOV EAX,DWORD PTR DS:[EAX]
  00565C98   .  8B80 48040000 MOV EAX,DWORD PTR DS:[EAX+448]
  00565C9E   .  E8 0DF0E9FF   CALL MPW.00404CB0
  00565CA3   .  74 44         JE SHORT MPW.00565CE9
  00565CA5   .  8D4D A4       LEA ECX,DWORD PTR SS:[EBP-5C]
  00565CA8   .  A1 CC415800   MOV EAX,DWORD PTR DS:[5841CC]
  00565CAD   .  8B00          MOV EAX,DWORD PTR DS:[EAX]
  00565CAF   .  8B90 44040000 MOV EDX,DWORD PTR DS:[EAX+444]
  00565CB5   .  A1 143F5800   MOV EAX,DWORD PTR DS:[583F14]
  00565CBA   .  8B00          MOV EAX,DWORD PTR DS:[EAX]
  00565CBC   .  E8 93DEFFFF   CALL MPW.00563B54
  00565CC1   .  8D45 A4       LEA EAX,DWORD PTR SS:[EBP-5C]
  00565CC4   .  BA 2C605600   MOV EDX,MPW.0056602C                     ;  -sql
  00565CC9   .  E8 9EEEE9FF   CALL MPW.00404B6C
  00565CCE   .  8B55 A4       MOV EDX,DWORD PTR SS:[EBP-5C]
  00565CD1   .  A1 CC415800   MOV EAX,DWORD PTR DS:[5841CC]
  00565CD6   .  8B00          MOV EAX,DWORD PTR DS:[EAX]
  00565CD8   .  8B80 48040000 MOV EAX,DWORD PTR DS:[EAX+448]
  00565CDE   .  E8 CDEFE9FF   CALL MPW.00404CB0
  00565CE3   .  0F85 9D000000 JNZ MPW.00565D86
  00565CE9   >  A1 CC415800   MOV EAX,DWORD PTR DS:[5841CC]
  00565CEE   .  8B00          MOV EAX,DWORD PTR DS:[EAX]
  00565CF0   .  C680 40040000>MOV BYTE PTR DS:[EAX+440],0
  00565CF7   .  83FB 32       CMP EBX,32
  00565CFA   .  0F8C DC000000 JL MPW.00565DDC
  00565D00   .  A1 CC415800   MOV EAX,DWORD PTR DS:[5841CC]
  00565D05   .  8B00          MOV EAX,DWORD PTR DS:[EAX]
  00565D07   .  80B8 04040000>CMP BYTE PTR DS:[EAX+404],0
  00565D0E   .  75 42         JNZ SHORT MPW.00565D52
  00565D10   .  8D45 A0       LEA EAX,DWORD PTR SS:[EBP-60]
  00565D13   .  50            PUSH EAX
  00565D14   .  A1 CC415800   MOV EAX,DWORD PTR DS:[5841CC]
  00565D19   .  8B00          MOV EAX,DWORD PTR DS:[EAX]
  00565D1B   .  8B80 48040000 MOV EAX,DWORD PTR DS:[EAX+448]
  00565D21   .  B9 03000000   MOV ECX,3
  
  
  
  算法CALL处
  
  00563B54  /$  55            PUSH EBP
  00563B55  |.  8BEC          MOV EBP,ESP
  00563B57  |.  51            PUSH ECX
  00563B58  |.  B9 04000000   MOV ECX,4
  00563B5D  |>  6A 00         /PUSH 0
  00563B5F  |.  6A 00         |PUSH 0
  00563B61  |.  49            |DEC ECX
  00563B62  |.^ 75 F9         \JNZ SHORT MPW.00563B5D
  00563B64  |.  51            PUSH ECX
  00563B65  |.  874D FC       XCHG DWORD PTR SS:[EBP-4],ECX
  00563B68  |.  53            PUSH EBX
  00563B69  |.  56            PUSH ESI
  00563B6A  |.  57            PUSH EDI
  00563B6B  |.  8BF9          MOV EDI,ECX
  00563B6D  |.  8955 FC       MOV DWORD PTR SS:[EBP-4],EDX
  00563B70  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]             ;  我的机器码=5JXEC425
  00563B73  |.  E8 DC11EAFF   CALL MPW.00404D54
  00563B78  |.  33C0          XOR EAX,EAX
  00563B7A  |.  55            PUSH EBP
  00563B7B  |.  68 153D5600   PUSH MPW.00563D15
  00563B80  |.  64:FF30       PUSH DWORD PTR FS:[EAX]
  00563B83  |.  64:8920       MOV DWORD PTR FS:[EAX],ESP
  00563B86  |.  8BC7          MOV EAX,EDI
  00563B88  |.  E8 170DEAFF   CALL MPW.004048A4
  00563B8D  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
  00563B90  |.  E8 CF0FEAFF   CALL MPW.00404B64
  00563B95  |.  8BF0          MOV ESI,EAX
  00563B97  |.  85F6          TEST ESI,ESI
  00563B99  |.  7E 26         JLE SHORT MPW.00563BC1
  00563B9B  |.  BB 01000000   MOV EBX,1
  00563BA0  |>  8D4D EC       /LEA ECX,DWORD PTR SS:[EBP-14]
  00563BA3  |.  8B45 FC       |MOV EAX,DWORD PTR SS:[EBP-4]
  00563BA6  |.  0FB64418 FF   |MOVZX EAX,BYTE PTR DS:[EAX+EBX-1]
  00563BAB  |.  33D2          |XOR EDX,EDX
  00563BAD  |.  E8 DE60EAFF   |CALL MPW.00409C90
  00563BB2  |.  8B55 EC       |MOV EDX,DWORD PTR SS:[EBP-14]
  00563BB5  |.  8D45 F8       |LEA EAX,DWORD PTR SS:[EBP-8]
  00563BB8  |.  E8 AF0FEAFF   |CALL MPW.00404B6C
  00563BBD  |.  43            |INC EBX
  00563BBE  |.  4E            |DEC ESI
  00563BBF  |.^ 75 DF         \JNZ SHORT MPW.00563BA0
  00563BC1  |>  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]             ;  上面是取每位机器码的ASCII并依次连接记为s  eax=354A584543343235
  00563BC4  |.  E8 9B0FEAFF   CALL MPW.00404B64
  00563BC9  |.  8BF0          MOV ESI,EAX
  00563BCB  |.  85F6          TEST ESI,ESI
  00563BCD  |.  7E 2C         JLE SHORT MPW.00563BFB
  00563BCF  |.  BB 01000000   MOV EBX,1
  00563BD4  |>  8B45 F8       /MOV EAX,DWORD PTR SS:[EBP-8]
  00563BD7  |.  E8 880FEAFF   |CALL MPW.00404B64
  00563BDC  |.  2BC3          |SUB EAX,EBX
  00563BDE  |.  8B55 F8       |MOV EDX,DWORD PTR SS:[EBP-8]
  00563BE1  |.  8A1402        |MOV DL,BYTE PTR DS:[EDX+EAX]
  00563BE4  |.  8D45 E8       |LEA EAX,DWORD PTR SS:[EBP-18]
  00563BE7  |.  E8 A00EEAFF   |CALL MPW.00404A8C
  00563BEC  |.  8B55 E8       |MOV EDX,DWORD PTR SS:[EBP-18]
  00563BEF  |.  8D45 F4       |LEA EAX,DWORD PTR SS:[EBP-C]
  00563BF2  |.  E8 750FEAFF   |CALL MPW.00404B6C
  00563BF7  |.  43            |INC EBX
  00563BF8  |.  4E            |DEC ESI
  00563BF9  |.^ 75 D9         \JNZ SHORT MPW.00563BD4                  ;  将上面数s反向排列记为s1   532343345485A453
  00563BFB  |>  8D45 F8       LEA EAX,DWORD PTR SS:[EBP-8]
  00563BFE  |.  50            PUSH EAX
  00563BFF  |.  B9 04000000   MOV ECX,4
  00563C04  |.  BA 01000000   MOV EDX,1
  00563C09  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]             ;  532343345485A453
  00563C0C  |.  E8 B311EAFF   CALL MPW.00404DC4
  00563C11  |.  8D45 F4       LEA EAX,DWORD PTR SS:[EBP-C]
  00563C14  |.  50            PUSH EAX
  00563C15  |.  B9 04000000   MOV ECX,4
  00563C1A  |.  BA 05000000   MOV EDX,5
  00563C1F  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]
  00563C22  |.  E8 9D11EAFF   CALL MPW.00404DC4
  00563C27  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]             ;  取s1的前四位 5323
  00563C2A  |.  E8 350FEAFF   CALL MPW.00404B64
  00563C2F  |.  83F8 04       CMP EAX,4
  00563C32  |.  7D 2F         JGE SHORT MPW.00563C63
  00563C34  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]
  00563C37  |.  E8 280FEAFF   CALL MPW.00404B64
  00563C3C  |.  8BD8          MOV EBX,EAX
  00563C3E  |.  83FB 03       CMP EBX,3
  00563C41  |.  7F 20         JG SHORT MPW.00563C63
  00563C43  |>  8D4D E4       /LEA ECX,DWORD PTR SS:[EBP-1C]
  00563C46  |.  8BC3          |MOV EAX,EBX
  00563C48  |.  C1E0 02       |SHL EAX,2
  00563C4B  |.  33D2          |XOR EDX,EDX
  00563C4D  |.  E8 3E60EAFF   |CALL MPW.00409C90
  00563C52  |.  8B55 E4       |MOV EDX,DWORD PTR SS:[EBP-1C]
  00563C55  |.  8D45 F8       |LEA EAX,DWORD PTR SS:[EBP-8]
  00563C58  |.  E8 0F0FEAFF   |CALL MPW.00404B6C
  00563C5D  |.  43            |INC EBX
  00563C5E  |.  83FB 04       |CMP EBX,4
  00563C61  |.^ 75 E0         \JNZ SHORT MPW.00563C43
  00563C63  |>  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]             ;  取s1的5到8位 4334
  00563C66  |.  E8 F90EEAFF   CALL MPW.00404B64
  00563C6B  |.  83F8 04       CMP EAX,4
  00563C6E  |.  7D 2F         JGE SHORT MPW.00563C9F
  00563C70  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]
  00563C73  |.  E8 EC0EEAFF   CALL MPW.00404B64
  00563C78  |.  8BD8          MOV EBX,EAX
  00563C7A  |.  83FB 03       CMP EBX,3
  00563C7D  |.  7F 20         JG SHORT MPW.00563C9F
  00563C7F  |>  8D4D E0       /LEA ECX,DWORD PTR SS:[EBP-20]
  00563C82  |.  8BC3          |MOV EAX,EBX
  00563C84  |.  C1E0 02       |SHL EAX,2
  00563C87  |.  33D2          |XOR EDX,EDX
  00563C89  |.  E8 0260EAFF   |CALL MPW.00409C90
  00563C8E  |.  8B55 E0       |MOV EDX,DWORD PTR SS:[EBP-20]
  00563C91  |.  8D45 F4       |LEA EAX,DWORD PTR SS:[EBP-C]
  00563C94  |.  E8 D30EEAFF   |CALL MPW.00404B6C
  00563C99  |.  43            |INC EBX
  00563C9A  |.  83FB 04       |CMP EBX,4
  00563C9D  |.^ 75 E0         \JNZ SHORT MPW.00563C7F
  00563C9F  |>  8D45 F0       LEA EAX,DWORD PTR SS:[EBP-10]
  00563CA2  |.  BA 2C3D5600   MOV EDX,MPW.00563D2C                     ;  ASCII "MPW456ei878"
  00563CA7  |.  E8 900CEAFF   CALL MPW.0040493C
  00563CAC  |.  8D45 DC       LEA EAX,DWORD PTR SS:[EBP-24]
  00563CAF  |.  50            PUSH EAX
  00563CB0  |.  B9 04000000   MOV ECX,4
  00563CB5  |.  BA 01000000   MOV EDX,1
  00563CBA  |.  8B45 F0       MOV EAX,DWORD PTR SS:[EBP-10]
  00563CBD  |.  E8 0211EAFF   CALL MPW.00404DC4
  00563CC2  |.  FF75 DC       PUSH DWORD PTR SS:[EBP-24]               ;  固定字符 MPW4
  00563CC5  |.  68 403D5600   PUSH MPW.00563D40                        ;  -
  00563CCA  |.  FF75 F8       PUSH DWORD PTR SS:[EBP-8]                ;  5323
  00563CCD  |.  8D45 D8       LEA EAX,DWORD PTR SS:[EBP-28]
  00563CD0  |.  50            PUSH EAX
  00563CD1  |.  B9 05000000   MOV ECX,5
  00563CD6  |.  BA 05000000   MOV EDX,5
  00563CDB  |.  8B45 F0       MOV EAX,DWORD PTR SS:[EBP-10]
  00563CDE  |.  E8 E110EAFF   CALL MPW.00404DC4
  00563CE3  |.  FF75 D8       PUSH DWORD PTR SS:[EBP-28]               ;  固定字符 56ei8
  00563CE6  |.  68 403D5600   PUSH MPW.00563D40                        ;  -
  00563CEB  |.  FF75 F4       PUSH DWORD PTR SS:[EBP-C]                ;  4334
  00563CEE  |.  8BC7          MOV EAX,EDI
  00563CF0  |.  BA 06000000   MOV EDX,6
  00563CF5  |.  E8 2A0FEAFF   CALL MPW.00404C24
  00563CFA  |.  33C0          XOR EAX,EAX
  00563CFC  |.  5A            POP EDX
  00563CFD  |.  59            POP ECX
  00563CFE  |.  59            POP ECX
  00563CFF  |.  64:8910       MOV DWORD PTR FS:[EAX],EDX
  00563D02  |.  68 1C3D5600   PUSH MPW.00563D1C
  00563D07  |>  8D45 D8       LEA EAX,DWORD PTR SS:[EBP-28]
  00563D0A  |.  BA 0A000000   MOV EDX,0A
  00563D0F  |.  E8 B40BEAFF   CALL MPW.004048C8
  00563D14  \.  C3            RETN
  00563D15   .^ E9 AE04EAFF   JMP MPW.004041C8
  00563D1A   .^ EB EB         JMP SHORT MPW.00563D07
  00563D1C   .  5F            POP EDI
  00563D1D   .  5E            POP ESI
  00563D1E   .  5B            POP EBX
  00563D1F   .  8BE5          MOV ESP,EBP
  00563D21   .  5D            POP EBP                                  ;  将上面压入的字符依次连接 得到注册码  MPW4-532356ei8-4334
  00563D22   .  C3            RETN
  
  
--------------------------------------------------------------------------------
【经验总结】
  1.依次取机器码的ASCII 并顺次连接 记为s
  2.将s反向排列记为s1
  3.取s1前4位记为@ 取s1的5到8位记为$
  4.取固定字符 MPW4  56ei8
  5.将以上信息按这样排列   MPW4-@56ei8-$ 这就是注册码 
  
--------------------------------------------------------------------------------
【版权声明】: 谢谢 fonge大哥的热心指导 没有你 我也许离写出算法还很远 再次感谢 祝好人一生平安

                                                       2007年05月24日 23:07:36