飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3732|回复: 4

[原创] 1st Email Address Verifier V4.99注册算法浅析

[复制链接]

该用户从未签到

发表于 2008-9-19 23:30:34 | 显示全部楼层 |阅读模式
【文章标题】: 1st Email Address Verifier V4.99注册算法浅析
【文章作者】: 蚊香
【作者邮箱】: xpi386com@gmail.com
【作者主页】: http://www.xpi386.com
【软件大小】: 1.23MB
【下载地址】: http://www.skycn.com/soft/29878.html
【使用工具】: PEiD,OllyDBG,计算器
【操作平台】: D版XP-SP3
【软件介绍】: 一款对邮件列表中的电子邮件地址进行验证的工具。
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  PEiD瞄了一下,Delphi~~~ OD载入时发现卡的很~~~ 换个版本的OD情况依然~~~ 于是改为OD附加进程..这回成功了,哈~~
  试注册发现弹框提示错误,于是用F12暂停找堆栈调用的方法很快找到关键的地方~~~~~
  1.   005C29F3    55              PUSH EBP                                 ; 用F12暂停法找到这里下断
  2.   005C29F4    68 CF2B5C00     PUSH XVerifie.005C2BCF
  3.   005C29F9    64:FF30         PUSH DWORD PTR FS:[EAX]
  4.   005C29FC    64:8920         MOV DWORD PTR FS:[EAX],ESP
  5.   005C29FF    8D55 F0         LEA EDX,DWORD PTR SS:[EBP-10]
  6.   005C2A02    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-4]
  7.   005C2A05    8B80 08030000   MOV EAX,DWORD PTR DS:[EAX+308]
  8.   005C2A0B    E8 940AECFF     CALL XVerifie.004834A4                   ; 取用户名
  9.   005C2A10    8B45 F0         MOV EAX,DWORD PTR SS:[EBP-10]
  10.   005C2A13    8D55 F4         LEA EDX,DWORD PTR SS:[EBP-C]
  11.   005C2A16    E8 1169E4FF     CALL XVerifie.0040932C
  12.   005C2A1B    837D F4 00      CMP DWORD PTR SS:[EBP-C],0
  13.   005C2A1F    0F84 5A010000   JE XVerifie.005C2B7F
  14.   005C2A25    8D55 E8         LEA EDX,DWORD PTR SS:[EBP-18]
  15.   005C2A28    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-4]
  16.   005C2A2B    8B80 10030000   MOV EAX,DWORD PTR DS:[EAX+310]
  17.   005C2A31    E8 6E0AECFF     CALL XVerifie.004834A4                   ; 取注册码
  18.   005C2A36    8B45 E8         MOV EAX,DWORD PTR SS:[EBP-18]
  19.   005C2A39    8D55 EC         LEA EDX,DWORD PTR SS:[EBP-14]
  20.   005C2A3C    E8 EB68E4FF     CALL XVerifie.0040932C
  21.   005C2A41    837D EC 00      CMP DWORD PTR SS:[EBP-14],0
  22.   005C2A45    0F84 34010000   JE XVerifie.005C2B7F
  23.   005C2A4B    8D55 E0         LEA EDX,DWORD PTR SS:[EBP-20]
  24.   005C2A4E    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-4]
  25.   005C2A51    8B80 10030000   MOV EAX,DWORD PTR DS:[EAX+310]
  26.   005C2A57    E8 480AECFF     CALL XVerifie.004834A4                   ; 注册码位数
  27.   005C2A5C    8B45 E0         MOV EAX,DWORD PTR SS:[EBP-20]
  28.   005C2A5F    8D55 E4         LEA EDX,DWORD PTR SS:[EBP-1C]
  29.   005C2A62    E8 C568E4FF     CALL XVerifie.0040932C
  30.   005C2A67    8B45 E4         MOV EAX,DWORD PTR SS:[EBP-1C]
  31.   005C2A6A    50              PUSH EAX
  32.   005C2A6B    8D55 DC         LEA EDX,DWORD PTR SS:[EBP-24]
  33.   005C2A6E    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-4]
  34.   005C2A71    8B80 08030000   MOV EAX,DWORD PTR DS:[EAX+308]
  35.   005C2A77    E8 280AECFF     CALL XVerifie.004834A4                   ; 用户名位数
  36.   005C2A7C    8B55 DC         MOV EDX,DWORD PTR SS:[EBP-24]
  37.   005C2A7F    A1 6C995C00     MOV EAX,DWORD PTR DS:[5C996C]
  38.   005C2A84    8B00            MOV EAX,DWORD PTR DS:[EAX]
  39.   005C2A86    8B80 44030000   MOV EAX,DWORD PTR DS:[EAX+344]
  40.   005C2A8C    33C9            XOR ECX,ECX
  41.   005C2A8E    E8 5573FAFF     CALL XVerifie.00569DE8                   ; 关键CALL,F7进
  42.   005C2A93    84C0            TEST AL,AL
  43.   005C2A95    74 6A           JE SHORT XVerifie.005C2B01               ; 跳向失败
  44.   005C2A97    A1 3C975C00     MOV EAX,DWORD PTR DS:[5C973C]
  45.   005C2A9C    C600 01         MOV BYTE PTR DS:[EAX],1
  46.   005C2A9F    6A 40           PUSH 40
  47.   005C2AA1    8D55 D8         LEA EDX,DWORD PTR SS:[EBP-28]
  48.   005C2AA4    A1 189B5C00     MOV EAX,DWORD PTR DS:[5C9B18]
  49.   005C2AA9    8B00            MOV EAX,DWORD PTR DS:[EAX]
  50.   005C2AAB    E8 C009EEFF     CALL XVerifie.004A3470
  51.   005C2AB0    8B45 D8         MOV EAX,DWORD PTR SS:[EBP-28]
  52.   005C2AB3    E8 E422E4FF     CALL XVerifie.00404D9C
  53.   005C2AB8    50              PUSH EAX
  54.   005C2AB9    8D55 D4         LEA EDX,DWORD PTR SS:[EBP-2C]
  55.   005C2ABC    A1 4C9B5C00     MOV EAX,DWORD PTR DS:[5C9B4C]
  56.   005C2AC1    E8 FE41E4FF     CALL XVerifie.00406CC4
  57.   005C2AC6    8B45 D4         MOV EAX,DWORD PTR SS:[EBP-2C]
  58.   005C2AC9    E8 CE22E4FF     CALL XVerifie.00404D9C
  59.   005C2ACE    8BD0            MOV EDX,EAX
  60.   005C2AD0    A1 189B5C00     MOV EAX,DWORD PTR DS:[5C9B18]
  61.   005C2AD5    8B00            MOV EAX,DWORD PTR DS:[EAX]
  62.   005C2AD7    59              POP ECX
  63.   005C2AD8    E8 FB0FEEFF     CALL XVerifie.004A3AD8                   ; 正确提示
  64.   005C2ADD    8B15 3C975C00   MOV EDX,DWORD PTR DS:[5C973C]            ; XVerifie.005CCFB8
  65.   005C2AE3    8A12            MOV DL,BYTE PTR DS:[EDX]
  66.   005C2AE5    A1 6C995C00     MOV EAX,DWORD PTR DS:[5C996C]
  67.   005C2AEA    8B00            MOV EAX,DWORD PTR DS:[EAX]
  68.   005C2AEC    8B80 CC030000   MOV EAX,DWORD PTR DS:[EAX+3CC]
  69.   005C2AF2    E8 BD4FFFFF     CALL XVerifie.005B7AB4
  70.   005C2AF7    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-4]
  71.   005C2AFA    E8 85D7EDFF     CALL XVerifie.004A0284
  72.   005C2AFF    EB 3C           JMP SHORT XVerifie.005C2B3D
  73.   005C2B01    6A 10           PUSH 10
  74.   005C2B03    8D55 D0         LEA EDX,DWORD PTR SS:[EBP-30]
  75.   005C2B06    A1 D0955C00     MOV EAX,DWORD PTR DS:[5C95D0]
  76.   005C2B0B    E8 B441E4FF     CALL XVerifie.00406CC4
  77.   005C2B10    8B45 D0         MOV EAX,DWORD PTR SS:[EBP-30]
  78.   005C2B13    E8 8422E4FF     CALL XVerifie.00404D9C
  79.   005C2B18    50              PUSH EAX
  80.   005C2B19    8D55 CC         LEA EDX,DWORD PTR SS:[EBP-34]
  81.   005C2B1C    A1 B4965C00     MOV EAX,DWORD PTR DS:[5C96B4]
  82.   005C2B21    E8 9E41E4FF     CALL XVerifie.00406CC4
  83.   005C2B26    8B45 CC         MOV EAX,DWORD PTR SS:[EBP-34]
  84.   005C2B29    E8 6E22E4FF     CALL XVerifie.00404D9C
  85.   005C2B2E    8BD0            MOV EDX,EAX
  86.   005C2B30    A1 189B5C00     MOV EAX,DWORD PTR DS:[5C9B18]
  87.   005C2B35    8B00            MOV EAX,DWORD PTR DS:[EAX]
  88.   005C2B37    59              POP ECX
  89.   005C2B38    E8 9B0FEEFF     CALL XVerifie.004A3AD8                   ; 错误提示
  90.   005C2B3D    A1 6C995C00     MOV EAX,DWORD PTR DS:[5C996C]
  91.   005C2B42    8B00            MOV EAX,DWORD PTR DS:[EAX]
  92.   005C2B44    8B80 44030000   MOV EAX,DWORD PTR DS:[EAX+344]
  93.   005C2B4A    FF70 48         PUSH DWORD PTR DS:[EAX+48]
  94.   005C2B4D    68 E42B5C00     PUSH XVerifie.005C2BE4
  95.   005C2B52    A1 6C995C00     MOV EAX,DWORD PTR DS:[5C996C]
  96.   005C2B57    8B00            MOV EAX,DWORD PTR DS:[EAX]
  97.   005C2B59    8B80 44030000   MOV EAX,DWORD PTR DS:[EAX+344]
  98.   005C2B5F    FF70 5C         PUSH DWORD PTR DS:[EAX+5C]
  99.   005C2B62    8D45 C8         LEA EAX,DWORD PTR SS:[EBP-38]
  100.   005C2B65    BA 03000000     MOV EDX,3
  101.   005C2B6A    E8 F520E4FF     CALL XVerifie.00404C64
  102.   005C2B6F    8B45 C8         MOV EAX,DWORD PTR SS:[EBP-38]
  103.   005C2B72    8B15 3C975C00   MOV EDX,DWORD PTR DS:[5C973C]            ; XVerifie.005CCFB8
  104.   005C2B78    8A12            MOV DL,BYTE PTR DS:[EDX]
  105.   005C2B7A    E8 5553FFFF     CALL XVerifie.005B7ED4
  106.   005C2B7F    33C0            XOR EAX,EAX
  107.   005C2B81    5A              POP EDX
  108.   005C2B82    59              POP ECX
  109.   005C2B83    59              POP ECX
  110.   005C2B84    64:8910         MOV DWORD PTR FS:[EAX],EDX
  111.   005C2B87    68 D62B5C00     PUSH XVerifie.005C2BD6
  112.   005C2B8C    8D45 C8         LEA EAX,DWORD PTR SS:[EBP-38]
  113.   005C2B8F    BA 05000000     MOV EDX,5
  114.   005C2B94    E8 4B1DE4FF     CALL XVerifie.004048E4
  115.   005C2B99    8D45 DC         LEA EAX,DWORD PTR SS:[EBP-24]
  116.   005C2B9C    BA 02000000     MOV EDX,2
  117.   005C2BA1    E8 3E1DE4FF     CALL XVerifie.004048E4
  118.   005C2BA6    8D45 E4         LEA EAX,DWORD PTR SS:[EBP-1C]
  119.   005C2BA9    E8 121DE4FF     CALL XVerifie.004048C0
  120.   005C2BAE    8D45 E8         LEA EAX,DWORD PTR SS:[EBP-18]
  121.   005C2BB1    E8 0A1DE4FF     CALL XVerifie.004048C0
  122.   005C2BB6    8D45 EC         LEA EAX,DWORD PTR SS:[EBP-14]
  123.   005C2BB9    E8 021DE4FF     CALL XVerifie.004048C0
  124.   005C2BBE    8D45 F0         LEA EAX,DWORD PTR SS:[EBP-10]
  125.   005C2BC1    E8 FA1CE4FF     CALL XVerifie.004048C0
  126.   005C2BC6    8D45 F4         LEA EAX,DWORD PTR SS:[EBP-C]
  127.   005C2BC9    E8 F21CE4FF     CALL XVerifie.004048C0
  128.   005C2BCE    C3              RETN
  129.   005C2BCF  ^ E9 AC15E4FF     JMP XVerifie.00404180
  130.   005C2BD4  ^ EB B6           JMP SHORT XVerifie.005C2B8C
  131.   005C2BD6    8BE5            MOV ESP,EBP
  132.   005C2BD8    5D              POP EBP
  133.   005C2BD9    C3              RETN
复制代码
进入 005C2A8E
  1.   00569DE8    55              PUSH EBP
  2.   00569DE9    8BEC            MOV EBP,ESP
  3.   00569DEB    83C4 E8         ADD ESP,-18
  4.   00569DEE    53              PUSH EBX
  5.   00569DEF    33DB            XOR EBX,EBX
  6.   00569DF1    895D E8         MOV DWORD PTR SS:[EBP-18],EBX
  7.   00569DF4    895D EC         MOV DWORD PTR SS:[EBP-14],EBX
  8.   00569DF7    894D F4         MOV DWORD PTR SS:[EBP-C],ECX
  9.   00569DFA    8955 F8         MOV DWORD PTR SS:[EBP-8],EDX
  10.   00569DFD    8945 FC         MOV DWORD PTR SS:[EBP-4],EAX
  11.   00569E00    8B45 F8         MOV EAX,DWORD PTR SS:[EBP-8]
  12.   00569E03    E8 84AFE9FF     CALL XVerifie.00404D8C
  13.   00569E08    8B45 F4         MOV EAX,DWORD PTR SS:[EBP-C]
  14.   00569E0B    E8 7CAFE9FF     CALL XVerifie.00404D8C
  15.   00569E10    8B45 08         MOV EAX,DWORD PTR SS:[EBP+8]
  16.   00569E13    E8 74AFE9FF     CALL XVerifie.00404D8C
  17.   00569E18    33C0            XOR EAX,EAX
  18.   00569E1A    55              PUSH EBP
  19.   00569E1B    68 F79E5600     PUSH XVerifie.00569EF7
  20.   00569E20    64:FF30         PUSH DWORD PTR FS:[EAX]
  21.   00569E23    64:8920         MOV DWORD PTR FS:[EAX],ESP
  22.   00569E26    8B45 F8         MOV EAX,DWORD PTR SS:[EBP-8]
  23.   00569E29    E8 76ADE9FF     CALL XVerifie.00404BA4
  24.   00569E2E    8B55 FC         MOV EDX,DWORD PTR SS:[EBP-4]
  25.   00569E31    3B42 4C         CMP EAX,DWORD PTR DS:[EDX+4C]            ; 用户名位数必须小于64H
  26.   00569E34    7F 1C           JG SHORT XVerifie.00569E52
  27.   00569E36    8B45 F8         MOV EAX,DWORD PTR SS:[EBP-8]
  28.   00569E39    E8 66ADE9FF     CALL XVerifie.00404BA4
  29.   00569E3E    8B55 FC         MOV EDX,DWORD PTR SS:[EBP-4]
  30.   00569E41    3B42 50         CMP EAX,DWORD PTR DS:[EDX+50]            ; 用户名位数必须大于等于3
  31.   00569E44    7C 0C           JL SHORT XVerifie.00569E52
  32.   00569E46    8B45 08         MOV EAX,DWORD PTR SS:[EBP+8]
  33.   00569E49    E8 56ADE9FF     CALL XVerifie.00404BA4
  34.   00569E4E    85C0            TEST EAX,EAX
  35.   00569E50    75 06           JNZ SHORT XVerifie.00569E58
  36.   00569E52    C645 F3 00      MOV BYTE PTR SS:[EBP-D],0
  37.   00569E56    EB 6F           JMP SHORT XVerifie.00569EC7
  38.   00569E58    8D55 EC         LEA EDX,DWORD PTR SS:[EBP-14]
  39.   00569E5B    8B45 08         MOV EAX,DWORD PTR SS:[EBP+8]
  40.   00569E5E    E8 59F2E9FF     CALL XVerifie.004090BC
  41.   00569E63    8B55 EC         MOV EDX,DWORD PTR SS:[EBP-14]
  42.   00569E66    8D45 08         LEA EAX,DWORD PTR SS:[EBP+8]
  43.   00569E69    E8 EAAAE9FF     CALL XVerifie.00404958
  44.   00569E6E    8D4D E8         LEA ECX,DWORD PTR SS:[EBP-18]
  45.   00569E71    8B55 F8         MOV EDX,DWORD PTR SS:[EBP-8]
  46.   00569E74    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-4]
  47.   00569E77    E8 D4FBFFFF     CALL XVerifie.00569A50                   ; 经过此CALL后出现真码,F7进去
  48.   00569E7C    8B45 E8         MOV EAX,DWORD PTR SS:[EBP-18]
  49.   00569E7F    8B55 08         MOV EDX,DWORD PTR SS:[EBP+8]
  50.   00569E82    E8 ADF2E9FF     CALL XVerifie.00409134                   ; 真假码比较
  51.   00569E87    85C0            TEST EAX,EAX
  52.   00569E89    74 06           JE SHORT XVerifie.00569E91               ; 关键跳转
  53.   00569E8B    C645 F3 00      MOV BYTE PTR SS:[EBP-D],0
  54.   00569E8F    EB 36           JMP SHORT XVerifie.00569EC7
  55.   00569E91    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-4]
  56.   00569E94    83C0 48         ADD EAX,48
  57.   00569E97    8B55 F8         MOV EDX,DWORD PTR SS:[EBP-8]
  58.   00569E9A    E8 75AAE9FF     CALL XVerifie.00404914
  59.   00569E9F    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-4]
  60.   00569EA2    83C0 54         ADD EAX,54
  61.   00569EA5    8B55 F4         MOV EDX,DWORD PTR SS:[EBP-C]
  62.   00569EA8    E8 67AAE9FF     CALL XVerifie.00404914
  63.   00569EAD    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-4]
  64.   00569EB0    83C0 5C         ADD EAX,5C
  65.   00569EB3    8B55 08         MOV EDX,DWORD PTR SS:[EBP+8]
  66.   00569EB6    E8 59AAE9FF     CALL XVerifie.00404914
  67.   00569EBB    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-4]
  68.   00569EBE    E8 49020000     CALL XVerifie.0056A10C
  69.   00569EC3    C645 F3 01      MOV BYTE PTR SS:[EBP-D],1
  70.   00569EC7    33C0            XOR EAX,EAX
  71.   00569EC9    5A              POP EDX
  72.   00569ECA    59              POP ECX
  73.   00569ECB    59              POP ECX
  74.   00569ECC    64:8910         MOV DWORD PTR FS:[EAX],EDX
  75.   00569ECF    68 FE9E5600     PUSH XVerifie.00569EFE
  76.   00569ED4    8D45 E8         LEA EAX,DWORD PTR SS:[EBP-18]
  77.   00569ED7    BA 02000000     MOV EDX,2
  78.   00569EDC    E8 03AAE9FF     CALL XVerifie.004048E4
  79.   00569EE1    8D45 F4         LEA EAX,DWORD PTR SS:[EBP-C]
  80.   00569EE4    BA 02000000     MOV EDX,2
  81.   00569EE9    E8 F6A9E9FF     CALL XVerifie.004048E4
  82.   00569EEE    8D45 08         LEA EAX,DWORD PTR SS:[EBP+8]
  83.   00569EF1    E8 CAA9E9FF     CALL XVerifie.004048C0
  84.   00569EF6    C3              RETN
  85.   00569EF7  ^ E9 84A2E9FF     JMP XVerifie.00404180
  86.   00569EFC  ^ EB D6           JMP SHORT XVerifie.00569ED4
  87.   00569EFE    8A45 F3         MOV AL,BYTE PTR SS:[EBP-D]
  88.   00569F01    5B              POP EBX
  89.   00569F02    8BE5            MOV ESP,EBP
  90.   00569F04    5D              POP EBP
  91.   00569F05    C2 0400         RETN 4
复制代码
进入 00569E77
  1.   00569A50    55              PUSH EBP
  2.   00569A51    8BEC            MOV EBP,ESP
  3.   00569A53    83C4 DC         ADD ESP,-24
  4.   00569A56    53              PUSH EBX
  5.   00569A57    33DB            XOR EBX,EBX
  6.   00569A59    895D DC         MOV DWORD PTR SS:[EBP-24],EBX
  7.   00569A5C    895D E8         MOV DWORD PTR SS:[EBP-18],EBX
  8.   00569A5F    894D F4         MOV DWORD PTR SS:[EBP-C],ECX
  9.   00569A62    8955 F8         MOV DWORD PTR SS:[EBP-8],EDX
  10.   00569A65    8945 FC         MOV DWORD PTR SS:[EBP-4],EAX
  11.   00569A68    8B45 F8         MOV EAX,DWORD PTR SS:[EBP-8]
  12.   00569A6B    E8 1CB3E9FF     CALL XVerifie.00404D8C
  13.   00569A70    33C0            XOR EAX,EAX
  14.   00569A72    55              PUSH EBP
  15.   00569A73    68 8E9B5600     PUSH XVerifie.00569B8E
  16.   00569A78    64:FF30         PUSH DWORD PTR FS:[EAX]
  17.   00569A7B    64:8920         MOV DWORD PTR FS:[EAX],ESP
  18.   00569A7E    8B45 F8         MOV EAX,DWORD PTR SS:[EBP-8]
  19.   00569A81    E8 1EB1E9FF     CALL XVerifie.00404BA4
  20.   00569A86    8B55 FC         MOV EDX,DWORD PTR SS:[EBP-4]
  21.   00569A89    3B42 4C         CMP EAX,DWORD PTR DS:[EDX+4C]            ; 用户名位数小于64H
  22.   00569A8C    7F 10           JG SHORT XVerifie.00569A9E
  23.   00569A8E    8B45 F8         MOV EAX,DWORD PTR SS:[EBP-8]
  24.   00569A91    E8 0EB1E9FF     CALL XVerifie.00404BA4
  25.   00569A96    8B55 FC         MOV EDX,DWORD PTR SS:[EBP-4]
  26.   00569A99    3B42 50         CMP EAX,DWORD PTR DS:[EDX+50]            ; 用户名位数大于等于3
  27.   00569A9C    7D 0D           JGE SHORT XVerifie.00569AAB
  28.   00569A9E    8B45 F4         MOV EAX,DWORD PTR SS:[EBP-C]
  29.   00569AA1    E8 1AAEE9FF     CALL XVerifie.004048C0
  30.   00569AA6    E9 BD000000     JMP XVerifie.00569B68
  31.   00569AAB    8B45 F8         MOV EAX,DWORD PTR SS:[EBP-8]
  32.   00569AAE    E8 F1B0E9FF     CALL XVerifie.00404BA4
  33.   00569AB3    8945 F0         MOV DWORD PTR SS:[EBP-10],EAX
  34.   00569AB6    EB 39           JMP SHORT XVerifie.00569AF1
  35.   00569AB8    8B45 F8         MOV EAX,DWORD PTR SS:[EBP-8]
  36.   00569ABB    8B55 F0         MOV EDX,DWORD PTR SS:[EBP-10]
  37.   00569ABE    8A4410 FF       MOV AL,BYTE PTR DS:[EAX+EDX-1]           ; 从右至左依次用户名ASCII
  38.   00569AC2    25 FF000000     AND EAX,0FF
  39.   00569AC7    33D2            XOR EDX,EDX
  40.   00569AC9    52              PUSH EDX
  41.   00569ACA    50              PUSH EAX
  42.   00569ACB    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-4]
  43.   00569ACE    8B50 6C         MOV EDX,DWORD PTR DS:[EAX+6C]
  44.   00569AD1    8B40 68         MOV EAX,DWORD PTR DS:[EAX+68]
  45.   00569AD4    E8 0BC0E9FF     CALL XVerifie.00405AE4                   ; 分别被常数 04B234EEH 取余
  46.   00569AD9    52              PUSH EDX
  47.   00569ADA    50              PUSH EAX
  48.   00569ADB    8D45 DC         LEA EAX,DWORD PTR SS:[EBP-24]
  49.   00569ADE    E8 21FDE9FF     CALL XVerifie.00409804                   ; 转10进制
  50.   00569AE3    8B55 DC         MOV EDX,DWORD PTR SS:[EBP-24]
  51.   00569AE6    8D45 E8         LEA EAX,DWORD PTR SS:[EBP-18]
  52.   00569AE9    E8 BEB0E9FF     CALL XVerifie.00404BAC
  53.   00569AEE    FF4D F0         DEC DWORD PTR SS:[EBP-10]
  54.   00569AF1    8B45 F8         MOV EAX,DWORD PTR SS:[EBP-8]
  55.   00569AF4    E8 ABB0E9FF     CALL XVerifie.00404BA4
  56.   00569AF9    83E8 06         SUB EAX,6
  57.   00569AFC    3B45 F0         CMP EAX,DWORD PTR SS:[EBP-10]
  58.   00569AFF    7F 06           JG SHORT XVerifie.00569B07
  59.   00569B01    837D F0 00      CMP DWORD PTR SS:[EBP-10],0              ; 控制循环,从右至左取7位(如果够7位的话)
  60.   00569B05  ^ 7F B1           JG SHORT XVerifie.00569AB8
  61.   00569B07    8D55 EC         LEA EDX,DWORD PTR SS:[EBP-14]
  62.   00569B0A    8B45 E8         MOV EAX,DWORD PTR SS:[EBP-18]            ; 连接上面得到的(小于等于)7组数字,作为一个10进制整数,设为sn1
  63.   00569B0D    E8 DEC0E9FF     CALL XVerifie.00405BF0
  64.   00569B12    8945 E0         MOV DWORD PTR SS:[EBP-20],EAX
  65.   00569B15    8955 E4         MOV DWORD PTR SS:[EBP-1C],EDX
  66.   00569B18    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-4]
  67.   00569B1B    8378 60 00      CMP DWORD PTR DS:[EAX+60],0
  68.   00569B1F    7F 12           JG SHORT XVerifie.00569B33
  69.   00569B21    FF75 E4         PUSH DWORD PTR SS:[EBP-1C]
  70.   00569B24    FF75 E0         PUSH DWORD PTR SS:[EBP-20]
  71.   00569B27    8B55 F4         MOV EDX,DWORD PTR SS:[EBP-C]
  72.   00569B2A    33C0            XOR EAX,EAX
  73.   00569B2C    E8 43FDE9FF     CALL XVerifie.00409874
  74.   00569B31    EB 35           JMP SHORT XVerifie.00569B68
  75.   00569B33    FF75 E4         PUSH DWORD PTR SS:[EBP-1C]
  76.   00569B36    FF75 E0         PUSH DWORD PTR SS:[EBP-20]
  77.   00569B39    8B55 F4         MOV EDX,DWORD PTR SS:[EBP-C]
  78.   00569B3C    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-4]
  79.   00569B3F    8B40 60         MOV EAX,DWORD PTR DS:[EAX+60]
  80.   00569B42    E8 2DFDE9FF     CALL XVerifie.00409874
  81.   00569B47    8B45 F4         MOV EAX,DWORD PTR SS:[EBP-C]
  82.   00569B4A    8B00            MOV EAX,DWORD PTR DS:[EAX]               ; 将上面得到的sn1转换成16进制(若不足12位,则前面补0至12位),设为sn2(最终注册码)
  83.   00569B4C    E8 53B0E9FF     CALL XVerifie.00404BA4
  84.   00569B51    8BC8            MOV ECX,EAX
  85.   00569B53    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-4]
  86.   00569B56    2B48 60         SUB ECX,DWORD PTR DS:[EAX+60]
  87.   00569B59    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-4]
  88.   00569B5C    8B50 60         MOV EDX,DWORD PTR DS:[EAX+60]
  89.   00569B5F    42              INC EDX
  90.   00569B60    8B45 F4         MOV EAX,DWORD PTR SS:[EBP-C]
  91.   00569B63    E8 D4B2E9FF     CALL XVerifie.00404E3C
  92.   00569B68    33C0            XOR EAX,EAX
  93.   00569B6A    5A              POP EDX
  94.   00569B6B    59              POP ECX
  95.   00569B6C    59              POP ECX
  96.   00569B6D    64:8910         MOV DWORD PTR FS:[EAX],EDX
  97.   00569B70    68 959B5600     PUSH XVerifie.00569B95
  98.   00569B75    8D45 DC         LEA EAX,DWORD PTR SS:[EBP-24]
  99.   00569B78    E8 43ADE9FF     CALL XVerifie.004048C0
  100.   00569B7D    8D45 E8         LEA EAX,DWORD PTR SS:[EBP-18]
  101.   00569B80    E8 3BADE9FF     CALL XVerifie.004048C0
  102.   00569B85    8D45 F8         LEA EAX,DWORD PTR SS:[EBP-8]
  103.   00569B88    E8 33ADE9FF     CALL XVerifie.004048C0
  104.   00569B8D    C3              RETN
  105.   00569B8E  ^ E9 EDA5E9FF     JMP XVerifie.00404180
  106.   00569B93  ^ EB E0           JMP SHORT XVerifie.00569B75
  107.   00569B95    5B              POP EBX
  108.   00569B96    8BE5            MOV ESP,EBP
  109.   00569B98    5D              POP EBP
  110.   00569B99    C3              RETN
复制代码
--------------------------------------------------------------------------------
【算法总结】
  首先用户名长度L必须满足3≤L<100.如果大于7位,则只取后7位.
  从右至左取用户名的ASCII,分别被78787822(04B234EEH)取余,余数依次连接作为一个10进制整数sn1.
  将sn1转成16进制数sn2.若sn2长度不足12,则在其前面补0至12位(最终注册码).
  注册信息以加密的形式保存在注册表中 ~~~
  
  KeyGen核心源码(VB Code):
  1. '需要添加一个支持10进制天文数字转16进制的模块.
  2. '两个文本框,一个Command按钮.
  3. Private Sub Command1_Click()
  4. Dim Name, Name1, Name2 As String
  5. Dim L, I As Integer
  6. Dim sn1, sn2 As String
  7. Name = CStr(Text1.Text)
  8. Name1 = StrReverse(Name)
  9. L = Len(Name)
  10. If L < 3 Or L >= 100 Then
  11.    Text2.Text = "用户名位数大于等于3,小于100"
  12. ElseIf L >= 3 And L < 8 Then
  13.    For I = 1 To L
  14.    sn1 = sn1 & (78787822 Mod Asc(Mid(Name1, I, 1)))
  15.    Next I
  16.    sn2 = dectohex(sn1)
  17.    For I = 1 To (12 - Len(sn2))
  18.    sn2 = "0" & sn2
  19.    Next I
  20.    Text2.Text = sn2

  21. Else
  22.    Name2 = Left(Name1, 7)
  23.    For I = 1 To 7
  24.    sn1 = sn1 & (78787822 Mod Asc(Mid(Name2, I, 1)))
  25.    Next I
  26.    sn2 = dectohex(sn1)
  27.    For I = 1 To (12 - Len(sn2))
  28.    sn2 = "0" & sn2
  29.    Next I
  30.    Text2.Text = sn2
  31.    
  32. End If
  33. End Sub
复制代码
附:网上找的一个支持10进制天文数字转16进制的模块代码:
  1. Dim largehex As String, largedec As String, start As Long, Y(20) As String

  2. '预备函数
  3. Function sums(ByVal X As String, ByVal Y As String) As String ' sum of two hugehexnum(两个大数之和)
  4.     Dim max As Long, temp As Long, I As Long, result As Variant
  5.     max = IIf(Len(X) >= Len(Y), Len(X), Len(Y))
  6.     X = Right(String(max, "0") & X, max)
  7.     Y = Right(String(max, "0") & Y, max)
  8.     ReDim result(0 To max)
  9.     For I = max To 1 Step -1
  10.         result(I) = Val(Mid(X, I, 1)) + Val(Mid(Y, I, 1))
  11.     Next
  12.     For I = max To 1 Step -1
  13.         temp = result(I) \ 10
  14.         result(I) = result(I) Mod 10
  15.         result(I - 1) = result(I - 1) + temp
  16.     Next
  17.     If result(0) = 0 Then result(0) = ""
  18.     sums = Join(result, "")
  19.     Erase result

  20. End Function

  21. Function multi(ByVal X As String, ByVal Y As String) As String 'multi of two huge hexnum(两个大数之积)
  22.     Dim result As Variant
  23.     Dim xl As Long, yl As Long, temp As Long, I As Long
  24.     xl = Len(Trim(X))
  25.     yl = Len(Trim(Y))

  26.     ReDim result(1 To xl + yl)
  27.     For I = 1 To xl
  28.         For temp = 1 To yl
  29.             result(I + temp) = result(I + temp) + Val(Mid(X, I, 1)) * Val(Mid(Y, temp, 1))
  30.         Next
  31.     Next

  32.     For I = xl + yl To 2 Step -1
  33.         temp = result(I) \ 10
  34.         result(I) = result(I) Mod 10
  35.         result(I - 1) = result(I - 1) + temp
  36.     Next

  37.     If result(1) = "0" Then result(1) = ""
  38.     multi = Join(result, "")
  39.     Erase result

  40. End Function
  41. Function POWERS(ByVal X As Integer) As String ' GET 16777216^X,ie 16^(6*x)(16777216的X 次方)
  42.     POWERS = 1
  43.     Dim I As Integer
  44.     For I = 1 To X
  45.         POWERS = multi(POWERS, CLng(&H1000000))
  46.     Next
  47. End Function
  48. Function half(ByVal X As String) As String 'get half of x(取半)
  49.     X = 0 & X
  50.     Dim I As Long
  51.     ReDim result(2 To Len(X)) As String
  52.     For I = 2 To Len(X)
  53.         result(I) = CStr(Val(Mid(X, I, 1)) \ 2 + IIf(Val(Mid(X, I - 1, 1)) Mod 2 = 1, 5, 0))
  54.     Next
  55.     half = Join(result, "")
  56.     If Left(half, 1) = "0" Then half = Right(half, Len(half) - 1) ' no zero ahead
  57. End Function

  58. '另一个有用的函数:
  59. Function POWERXY(ByVal X As Integer, ByVal Y As Integer) As String 'GET  X^Y(X 的 Y 次方)
  60.     Dim I As Integer
  61.     POWERXY = X
  62.     For I = 2 To Y
  63.         POWERXY = multi(POWERXY, X)
  64.     Next
  65. End Function

  66. '进制转换函数:

  67. '16 to 10
  68. Function HEXTODEC(ByVal X As String) As String
  69.     Dim A() As String, I As Long, UNIT As Integer
  70.     For I = 1 To Len(X)
  71.         If Not IsNumeric("&h" & Mid(X, I, 1)) Then MsgBox "NOT A HEX FORMAT!", 64, "INFO": Exit Function
  72.     Next
  73.     X = String((6 - Len(X) Mod 6) Mod 6, "0") & X

  74.     UNIT = Len(X) \ 6 - 1
  75.     ReDim A(UNIT)
  76.     For I = 0 To UNIT
  77.         A(I) = CLng("&h" & Mid(X, I * 6 + 1, 6))
  78.     Next
  79.     For I = 0 To UNIT
  80.         A(I) = multi(A(I), POWERS(UNIT - I))
  81.         HEXTODEC = sums(HEXTODEC, A(I))
  82.     Next
  83. End Function

  84. ' 10 to 16
  85. Function dectohex(ByVal hugenum As String) As String ' trans hugenum to hex
  86.     Do While Len(hugenum) > 2
  87.         dectohex = Hex(Val(Right(hugenum, 4)) Mod 16) & dectohex
  88.         For I = 1 To 4 'devide hugenum  by 16
  89.             hugenum = half(hugenum)
  90.         Next
  91.     Loop
  92.     dectohex = Hex(Val(hugenum)) & dectohex
  93. End Function

  94. Private Sub Form_Load()
  95.     For I = 0 To 20
  96.         Y(I) = "1234567890ABCDEF"
  97.     Next

  98.     largehex = Join(Y, "")
  99. End Sub
复制代码
--------------------------------------------------------------------------------
【版权声明】: 本文由 蚊香 原创,转载请注明作者并保持文章的完整,谢谢!

评分

参与人数 1威望 +20 飘云币 +40 收起 理由
tianxj + 20 + 40 您发布的主题属于精品!

查看全部评分

PYG19周年生日快乐!
  • TA的每日心情
    开心
    2015-8-3 23:07
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2008-9-20 13:57:24 | 显示全部楼层
    哈哈,学习下先/:018
    PYG19周年生日快乐!
  • TA的每日心情

    2022-11-12 10:37
  • 签到天数: 305 天

    [LV.8]以坛为家I

    发表于 2008-9-20 15:54:02 | 显示全部楼层
    /:013 /:013 /:013 好东西  学习
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-9-20 20:38:28 | 显示全部楼层

    谁能告诉我下OD附加进程怎样打开

    谁能告诉我下OD附加进程怎样打开

    谢谢了
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-9-21 23:02:19 | 显示全部楼层
    谁能告诉我下OD附加进程怎样打开

    谢谢了

    貌似发的地方不对!
    我不举报你!/:017 在OD左上角!
    支持蚊香大牛的东东!
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表