吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5908|回复: 1
收起左侧

1st Email Address Verifier V4.99注册算法浅析

[复制链接]
蚊香 发表于 2008-9-19 23:42
【文章标题】: 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暂停找堆栈调用的方法很快找到关键的地方~~~~~
005C29F355PUSH EBP ; 用F12暂停法找到这里下断005C29F468 CF2B5C00 PUSH XVerifie.005C2BCF005C29F964:FF30 PUSH DWORD PTR FS:[EAX]005C29FC64:8920 MOV DWORD PTR FS:[EAX],ESP005C29FF8D55 F0 LEA EDX,DWORD PTR SS:[EBP-10]005C2A028B45 FC MOV EAX,DWORD PTR SS:[EBP-4]005C2A058B80 08030000 MOV EAX,DWORD PTR DS:[EAX+308]005C2A0BE8 940AECFF CALL XVerifie.004834A4 ; 取用户名005C2A108B45 F0 MOV EAX,DWORD PTR SS:[EBP-10]005C2A138D55 F4 LEA EDX,DWORD PTR SS:[EBP-C]005C2A16E8 1169E4FF CALL XVerifie.0040932C005C2A1B837D F4 00CMP DWORD PTR SS:[EBP-C],0005C2A1F0F84 5A010000 JE XVerifie.005C2B7F005C2A258D55 E8 LEA EDX,DWORD PTR SS:[EBP-18]005C2A288B45 FC MOV EAX,DWORD PTR SS:[EBP-4]005C2A2B8B80 10030000 MOV EAX,DWORD PTR DS:[EAX+310]005C2A31E8 6E0AECFF CALL XVerifie.004834A4 ; 取注册码005C2A368B45 E8 MOV EAX,DWORD PTR SS:[EBP-18]005C2A398D55 EC LEA EDX,DWORD PTR SS:[EBP-14]005C2A3CE8 EB68E4FF CALL XVerifie.0040932C005C2A41837D EC 00CMP DWORD PTR SS:[EBP-14],0005C2A450F84 34010000 JE XVerifie.005C2B7F005C2A4B8D55 E0 LEA EDX,DWORD PTR SS:[EBP-20]005C2A4E8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]005C2A518B80 10030000 MOV EAX,DWORD PTR DS:[EAX+310]005C2A57E8 480AECFF CALL XVerifie.004834A4 ; 注册码位数005C2A5C8B45 E0 MOV EAX,DWORD PTR SS:[EBP-20]005C2A5F8D55 E4 LEA EDX,DWORD PTR SS:[EBP-1C]005C2A62E8 C568E4FF CALL XVerifie.0040932C005C2A678B45 E4 MOV EAX,DWORD PTR SS:[EBP-1C]005C2A6A50PUSH EAX005C2A6B8D55 DC LEA EDX,DWORD PTR SS:[EBP-24]005C2A6E8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]005C2A718B80 08030000 MOV EAX,DWORD PTR DS:[EAX+308]005C2A77E8 280AECFF CALL XVerifie.004834A4 ; 用户名位数005C2A7C8B55 DC MOV EDX,DWORD PTR SS:[EBP-24]005C2A7FA1 6C995C00 MOV EAX,DWORD PTR DS:[5C996C]005C2A848B00MOV EAX,DWORD PTR DS:[EAX]005C2A868B80 44030000 MOV EAX,DWORD PTR DS:[EAX+344]005C2A8C33C9XOR ECX,ECX005C2A8EE8 5573FAFF CALL XVerifie.00569DE8 ; 关键CALL,F7进005C2A9384C0TEST AL,AL005C2A9574 6A JE SHORT XVerifie.005C2B01 ; 跳向失败005C2A97A1 3C975C00 MOV EAX,DWORD PTR DS:[5C973C]005C2A9CC600 01 MOV BYTE PTR DS:[EAX],1005C2A9F6A 40 PUSH 40005C2AA18D55 D8 LEA EDX,DWORD PTR SS:[EBP-28]005C2AA4A1 189B5C00 MOV EAX,DWORD PTR DS:[5C9B18]005C2AA98B00MOV EAX,DWORD PTR DS:[EAX]005C2AABE8 C009EEFF CALL XVerifie.004A3470005C2AB08B45 D8 MOV EAX,DWORD PTR SS:[EBP-28]005C2AB3E8 E422E4FF CALL XVerifie.00404D9C005C2AB850PUSH EAX005C2AB98D55 D4 LEA EDX,DWORD PTR SS:[EBP-2C]005C2ABCA1 4C9B5C00 MOV EAX,DWORD PTR DS:[5C9B4C]005C2AC1E8 FE41E4FF CALL XVerifie.00406CC4005C2AC68B45 D4 MOV EAX,DWORD PTR SS:[EBP-2C]005C2AC9E8 CE22E4FF CALL XVerifie.00404D9C005C2ACE8BD0MOV EDX,EAX005C2AD0A1 189B5C00 MOV EAX,DWORD PTR DS:[5C9B18]005C2AD58B00MOV EAX,DWORD PTR DS:[EAX]005C2AD759POP ECX005C2AD8E8 FB0FEEFF CALL XVerifie.004A3AD8 ; 正确提示005C2ADD8B15 3C975C00 MOV EDX,DWORD PTR DS:[5C973C]; XVerifie.005CCFB8005C2AE38A12MOV DL,BYTE PTR DS:[EDX]005C2AE5A1 6C995C00 MOV EAX,DWORD PTR DS:[5C996C]005C2AEA8B00MOV EAX,DWORD PTR DS:[EAX]005C2AEC8B80 CC030000 MOV EAX,DWORD PTR DS:[EAX+3CC]005C2AF2E8 BD4FFFFF CALL XVerifie.005B7AB4005C2AF78B45 FC MOV EAX,DWORD PTR SS:[EBP-4]005C2AFAE8 85D7EDFF CALL XVerifie.004A0284005C2AFFEB 3C JMP SHORT XVerifie.005C2B3D005C2B016A 10 PUSH 10005C2B038D55 D0 LEA EDX,DWORD PTR SS:[EBP-30]005C2B06A1 D0955C00 MOV EAX,DWORD PTR DS:[5C95D0]005C2B0BE8 B441E4FF CALL XVerifie.00406CC4005C2B108B45 D0 MOV EAX,DWORD PTR SS:[EBP-30]005C2B13E8 8422E4FF CALL XVerifie.00404D9C005C2B1850PUSH EAX005C2B198D55 CC LEA EDX,DWORD PTR SS:[EBP-34]005C2B1CA1 B4965C00 MOV EAX,DWORD PTR DS:[5C96B4]005C2B21E8 9E41E4FF CALL XVerifie.00406CC4005C2B268B45 CC MOV EAX,DWORD PTR SS:[EBP-34]005C2B29E8 6E22E4FF CALL XVerifie.00404D9C005C2B2E8BD0MOV EDX,EAX005C2B30A1 189B5C00 MOV EAX,DWORD PTR DS:[5C9B18]005C2B358B00MOV EAX,DWORD PTR DS:[EAX]005C2B3759POP ECX005C2B38E8 9B0FEEFF CALL XVerifie.004A3AD8 ; 错误提示005C2B3DA1 6C995C00 MOV EAX,DWORD PTR DS:[5C996C]005C2B428B00MOV EAX,DWORD PTR DS:[EAX]005C2B448B80 44030000 MOV EAX,DWORD PTR DS:[EAX+344]005C2B4AFF70 48 PUSH DWORD PTR DS:[EAX+48]005C2B4D68 E42B5C00 PUSH XVerifie.005C2BE4005C2B52A1 6C995C00 MOV EAX,DWORD PTR DS:[5C996C]005C2B578B00MOV EAX,DWORD PTR DS:[EAX]005C2B598B80 44030000 MOV EAX,DWORD PTR DS:[EAX+344]005C2B5FFF70 5C PUSH DWORD PTR DS:[EAX+5C]005C2B628D45 C8 LEA EAX,DWORD PTR SS:[EBP-38]005C2B65BA 03000000 MOV EDX,3005C2B6AE8 F520E4FF CALL XVerifie.00404C64005C2B6F8B45 C8 MOV EAX,DWORD PTR SS:[EBP-38]005C2B728B15 3C975C00 MOV EDX,DWORD PTR DS:[5C973C]; XVerifie.005CCFB8005C2B788A12MOV DL,BYTE PTR DS:[EDX]005C2B7AE8 5553FFFF CALL XVerifie.005B7ED4005C2B7F33C0XOR EAX,EAX005C2B815APOP EDX005C2B8259POP ECX005C2B8359POP ECX005C2B8464:8910 MOV DWORD PTR FS:[EAX],EDX005C2B8768 D62B5C00 PUSH XVerifie.005C2BD6005C2B8C8D45 C8 LEA EAX,DWORD PTR SS:[EBP-38]005C2B8FBA 05000000 MOV EDX,5005C2B94E8 4B1DE4FF CALL XVerifie.004048E4005C2B998D45 DC LEA EAX,DWORD PTR SS:[EBP-24]005C2B9CBA 02000000 MOV EDX,2005C2BA1E8 3E1DE4FF CALL XVerifie.004048E4005C2BA68D45 E4 LEA EAX,DWORD PTR SS:[EBP-1C]005C2BA9E8 121DE4FF CALL XVerifie.004048C0005C2BAE8D45 E8 LEA EAX,DWORD PTR SS:[EBP-18]005C2BB1E8 0A1DE4FF CALL XVerifie.004048C0005C2BB68D45 EC LEA EAX,DWORD PTR SS:[EBP-14]005C2BB9E8 021DE4FF CALL XVerifie.004048C0005C2BBE8D45 F0 LEA EAX,DWORD PTR SS:[EBP-10]005C2BC1E8 FA1CE4FF CALL XVerifie.004048C0005C2BC68D45 F4 LEA EAX,DWORD PTR SS:[EBP-C]005C2BC9E8 F21CE4FF CALL XVerifie.004048C0005C2BCEC3RETN005C2BCF^ E9 AC15E4FF JMP XVerifie.00404180005C2BD4^ EB B6 JMP SHORT XVerifie.005C2B8C005C2BD68BE5MOV ESP,EBP005C2BD85DPOP EBP005C2BD9C3RETN
进入 005C2A8E
00569DE855PUSH EBP00569DE98BECMOV EBP,ESP00569DEB83C4 E8 ADD ESP,-1800569DEE53PUSH EBX00569DEF33DBXOR EBX,EBX00569DF1895D E8 MOV DWORD PTR SS:[EBP-18],EBX00569DF4895D EC MOV DWORD PTR SS:[EBP-14],EBX00569DF7894D F4 MOV DWORD PTR SS:[EBP-C],ECX00569DFA8955 F8 MOV DWORD PTR SS:[EBP-8],EDX00569DFD8945 FC MOV DWORD PTR SS:[EBP-4],EAX00569E008B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]00569E03E8 84AFE9FF CALL XVerifie.00404D8C00569E088B45 F4 MOV EAX,DWORD PTR SS:[EBP-C]00569E0BE8 7CAFE9FF CALL XVerifie.00404D8C00569E108B45 08 MOV EAX,DWORD PTR SS:[EBP+8]00569E13E8 74AFE9FF CALL XVerifie.00404D8C00569E1833C0XOR EAX,EAX00569E1A55PUSH EBP00569E1B68 F79E5600 PUSH XVerifie.00569EF700569E2064:FF30 PUSH DWORD PTR FS:[EAX]00569E2364:8920 MOV DWORD PTR FS:[EAX],ESP00569E268B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]00569E29E8 76ADE9FF CALL XVerifie.00404BA400569E2E8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]00569E313B42 4C CMP EAX,DWORD PTR DS:[EDX+4C]; 用户名位数必须小于64H00569E347F 1C JG SHORT XVerifie.00569E5200569E368B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]00569E39E8 66ADE9FF CALL XVerifie.00404BA400569E3E8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]00569E413B42 50 CMP EAX,DWORD PTR DS:[EDX+50]; 用户名位数必须大于等于300569E447C 0C JL SHORT XVerifie.00569E5200569E468B45 08 MOV EAX,DWORD PTR SS:[EBP+8]00569E49E8 56ADE9FF CALL XVerifie.00404BA400569E4E85C0TEST EAX,EAX00569E5075 06 JNZ SHORT XVerifie.00569E5800569E52C645 F3 00MOV BYTE PTR SS:[EBP-D],000569E56EB 6F JMP SHORT XVerifie.00569EC700569E588D55 EC LEA EDX,DWORD PTR SS:[EBP-14]00569E5B8B45 08 MOV EAX,DWORD PTR SS:[EBP+8]00569E5EE8 59F2E9FF CALL XVerifie.004090BC00569E638B55 EC MOV EDX,DWORD PTR SS:[EBP-14]00569E668D45 08 LEA EAX,DWORD PTR SS:[EBP+8]00569E69E8 EAAAE9FF CALL XVerifie.0040495800569E6E8D4D E8 LEA ECX,DWORD PTR SS:[EBP-18]00569E718B55 F8 MOV EDX,DWORD PTR SS:[EBP-8]00569E748B45 FC MOV EAX,DWORD PTR SS:[EBP-4]00569E77E8 D4FBFFFF CALL XVerifie.00569A50 ; 经过此CALL后出现真码,F7进去00569E7C8B45 E8 MOV EAX,DWORD PTR SS:[EBP-18]00569E7F8B55 08 MOV EDX,DWORD PTR SS:[EBP+8]00569E82E8 ADF2E9FF CALL XVerifie.00409134 ; 真假码比较00569E8785C0TEST EAX,EAX00569E8974 06 JE SHORT XVerifie.00569E91 ; 关键跳转00569E8BC645 F3 00MOV BYTE PTR SS:[EBP-D],000569E8FEB 36 JMP SHORT XVerifie.00569EC700569E918B45 FC MOV EAX,DWORD PTR SS:[EBP-4]00569E9483C0 48 ADD EAX,4800569E978B55 F8 MOV EDX,DWORD PTR SS:[EBP-8]00569E9AE8 75AAE9FF CALL XVerifie.0040491400569E9F8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]00569EA283C0 54 ADD EAX,5400569EA58B55 F4 MOV EDX,DWORD PTR SS:[EBP-C]00569EA8E8 67AAE9FF CALL XVerifie.0040491400569EAD8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]00569EB083C0 5C ADD EAX,5C00569EB38B55 08 MOV EDX,DWORD PTR SS:[EBP+8]00569EB6E8 59AAE9FF CALL XVerifie.0040491400569EBB8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]00569EBEE8 49020000 CALL XVerifie.0056A10C00569EC3C645 F3 01MOV BYTE PTR SS:[EBP-D],100569EC733C0XOR EAX,EAX00569EC95APOP EDX00569ECA59POP ECX00569ECB59POP ECX00569ECC64:8910 MOV DWORD PTR FS:[EAX],EDX00569ECF68 FE9E5600 PUSH XVerifie.00569EFE00569ED48D45 E8 LEA EAX,DWORD PTR SS:[EBP-18]00569ED7BA 02000000 MOV EDX,200569EDCE8 03AAE9FF CALL XVerifie.004048E400569EE18D45 F4 LEA EAX,DWORD PTR SS:[EBP-C]00569EE4BA 02000000 MOV EDX,200569EE9E8 F6A9E9FF CALL XVerifie.004048E400569EEE8D45 08 LEA EAX,DWORD PTR SS:[EBP+8]00569EF1E8 CAA9E9FF CALL XVerifie.004048C000569EF6C3RETN00569EF7^ E9 84A2E9FF JMP XVerifie.0040418000569EFC^ EB D6 JMP SHORT XVerifie.00569ED400569EFE8A45 F3 MOV AL,BYTE PTR SS:[EBP-D]00569F015BPOP EBX00569F028BE5MOV ESP,EBP00569F045DPOP EBP00569F05C2 0400 RETN 4
进入 00569E77
00569A5055PUSH EBP00569A518BECMOV EBP,ESP00569A5383C4 DC ADD ESP,-2400569A5653PUSH EBX00569A5733DBXOR EBX,EBX00569A59895D DC MOV DWORD PTR SS:[EBP-24],EBX00569A5C895D E8 MOV DWORD PTR SS:[EBP-18],EBX00569A5F894D F4 MOV DWORD PTR SS:[EBP-C],ECX00569A628955 F8 MOV DWORD PTR SS:[EBP-8],EDX00569A658945 FC MOV DWORD PTR SS:[EBP-4],EAX00569A688B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]00569A6BE8 1CB3E9FF CALL XVerifie.00404D8C00569A7033C0XOR EAX,EAX00569A7255PUSH EBP00569A7368 8E9B5600 PUSH XVerifie.00569B8E00569A7864:FF30 PUSH DWORD PTR FS:[EAX]00569A7B64:8920 MOV DWORD PTR FS:[EAX],ESP00569A7E8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]00569A81E8 1EB1E9FF CALL XVerifie.00404BA400569A868B55 FC MOV EDX,DWORD PTR SS:[EBP-4]00569A893B42 4C CMP EAX,DWORD PTR DS:[EDX+4C]; 用户名位数小于64H00569A8C7F 10 JG SHORT XVerifie.00569A9E00569A8E8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]00569A91E8 0EB1E9FF CALL XVerifie.00404BA400569A968B55 FC MOV EDX,DWORD PTR SS:[EBP-4]00569A993B42 50 CMP EAX,DWORD PTR DS:[EDX+50]; 用户名位数大于等于300569A9C7D 0D JGE SHORT XVerifie.00569AAB00569A9E8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C]00569AA1E8 1AAEE9FF CALL XVerifie.004048C000569AA6E9 BD000000 JMP XVerifie.00569B6800569AAB8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]00569AAEE8 F1B0E9FF CALL XVerifie.00404BA400569AB38945 F0 MOV DWORD PTR SS:[EBP-10],EAX00569AB6EB 39 JMP SHORT XVerifie.00569AF100569AB88B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]00569ABB8B55 F0 MOV EDX,DWORD PTR SS:[EBP-10]00569ABE8A4410 FF MOV AL,BYTE PTR DS:[EAX+EDX-1] ; 从右至左依次用户名ASCII00569AC225 FF000000 AND EAX,0FF00569AC733D2XOR EDX,EDX00569AC952PUSH EDX00569ACA50PUSH EAX00569ACB8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]00569ACE8B50 6C MOV EDX,DWORD PTR DS:[EAX+6C]00569AD18B40 68 MOV EAX,DWORD PTR DS:[EAX+68]00569AD4E8 0BC0E9FF CALL XVerifie.00405AE4 ; 分别被常数 04B234EEH 取余00569AD952PUSH EDX00569ADA50PUSH EAX00569ADB8D45 DC LEA EAX,DWORD PTR SS:[EBP-24]00569ADEE8 21FDE9FF CALL XVerifie.00409804 ; 转10进制00569AE38B55 DC MOV EDX,DWORD PTR SS:[EBP-24]00569AE68D45 E8 LEA EAX,DWORD PTR SS:[EBP-18]00569AE9E8 BEB0E9FF CALL XVerifie.00404BAC00569AEEFF4D F0 DEC DWORD PTR SS:[EBP-10]00569AF18B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]00569AF4E8 ABB0E9FF CALL XVerifie.00404BA400569AF983E8 06 SUB EAX,600569AFC3B45 F0 CMP EAX,DWORD PTR SS:[EBP-10]00569AFF7F 06 JG SHORT XVerifie.00569B0700569B01837D F0 00CMP DWORD PTR SS:[EBP-10],0; 控制循环,从右至左取7位(如果够7位的话)00569B05^ 7F B1 JG SHORT XVerifie.00569AB800569B078D55 EC LEA EDX,DWORD PTR SS:[EBP-14]00569B0A8B45 E8 MOV EAX,DWORD PTR SS:[EBP-18]; 连接上面得到的(小于等于)7组数字,作为一个10进制整数,设为sn100569B0DE8 DEC0E9FF CALL XVerifie.00405BF000569B128945 E0 MOV DWORD PTR SS:[EBP-20],EAX00569B158955 E4 MOV DWORD PTR SS:[EBP-1C],EDX00569B188B45 FC MOV EAX,DWORD PTR SS:[EBP-4]00569B1B8378 60 00CMP DWORD PTR DS:[EAX+60],000569B1F7F 12 JG SHORT XVerifie.00569B3300569B21FF75 E4 PUSH DWORD PTR SS:[EBP-1C]00569B24FF75 E0 PUSH DWORD PTR SS:[EBP-20]00569B278B55 F4 MOV EDX,DWORD PTR SS:[EBP-C]00569B2A33C0XOR EAX,EAX00569B2CE8 43FDE9FF CALL XVerifie.0040987400569B31EB 35 JMP SHORT XVerifie.00569B6800569B33FF75 E4 PUSH DWORD PTR SS:[EBP-1C]00569B36FF75 E0 PUSH DWORD PTR SS:[EBP-20]00569B398B55 F4 MOV EDX,DWORD PTR SS:[EBP-C]00569B3C8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]00569B3F8B40 60 MOV EAX,DWORD PTR DS:[EAX+60]00569B42E8 2DFDE9FF CALL XVerifie.0040987400569B478B45 F4 MOV EAX,DWORD PTR SS:[EBP-C]00569B4A8B00MOV EAX,DWORD PTR DS:[EAX] ; 将上面得到的sn1转换成16进制(若不足12位,则前面补0至12位),设为sn2(最终注册码)00569B4CE8 53B0E9FF CALL XVerifie.00404BA400569B518BC8MOV ECX,EAX00569B538B45 FC MOV EAX,DWORD PTR SS:[EBP-4]00569B562B48 60 SUB ECX,DWORD PTR DS:[EAX+60]00569B598B45 FC MOV EAX,DWORD PTR SS:[EBP-4]00569B5C8B50 60 MOV EDX,DWORD PTR DS:[EAX+60]00569B5F42INC EDX00569B608B45 F4 MOV EAX,DWORD PTR SS:[EBP-C]00569B63E8 D4B2E9FF CALL XVerifie.00404E3C00569B6833C0XOR EAX,EAX00569B6A5APOP EDX00569B6B59POP ECX00569B6C59POP ECX00569B6D64:8910 MOV DWORD PTR FS:[EAX],EDX00569B7068 959B5600 PUSH XVerifie.00569B9500569B758D45 DC LEA EAX,DWORD PTR SS:[EBP-24]00569B78E8 43ADE9FF CALL XVerifie.004048C000569B7D8D45 E8 LEA EAX,DWORD PTR SS:[EBP-18]00569B80E8 3BADE9FF CALL XVerifie.004048C000569B858D45 F8 LEA EAX,DWORD PTR SS:[EBP-8]00569B88E8 33ADE9FF CALL XVerifie.004048C000569B8DC3RETN00569B8E^ E9 EDA5E9FF JMP XVerifie.0040418000569B93^ EB E0 JMP SHORT XVerifie.00569B7500569B955BPOP EBX00569B968BE5MOV ESP,EBP00569B985DPOP EBP00569B99C3RETN
--------------------------------------------------------------------------------
【算法总结】
首先用户名长度L必须满足3≤L<100.如果大于7位,则只取后7位.
从右至左取用户名的ASCII,分别被78787822(04B234EEH)取余,余数依次连接作为一个10进制整数sn1.
将sn1转成16进制数sn2.若sn2长度不足12,则在其前面补0至12位(最终注册码).
注册信息以加密的形式保存在注册表中 ~~~

KeyGen核心源码(VB Code):
'需要添加一个支持10进制天文数字转16进制的模块.'两个文本框,一个Command按钮.Private Sub Command1_Click()Dim Name, Name1, Name2 As StringDim L, I As IntegerDim sn1, sn2 As StringName = CStr(Text1.Text)Name1 = StrReverse(Name)L = Len(Name)If L < 3 Or L >= 100 Then Text2.Text = "用户名位数大于等于3,小于100"ElseIf L >= 3 And L < 8 Then For I = 1 To L sn1 = sn1 & (78787822 Mod Asc(Mid(Name1, I, 1))) Next I sn2 = dectohex(sn1) For I = 1 To (12 - Len(sn2)) sn2 = "0" & sn2 Next I Text2.Text = sn2Else Name2 = Left(Name1, 7) For I = 1 To 7 sn1 = sn1 & (78787822 Mod Asc(Mid(Name2, I, 1))) Next I sn2 = dectohex(sn1) For I = 1 To (12 - Len(sn2)) sn2 = "0" & sn2 Next I Text2.Text = sn2 End IfEnd Sub
附:网上找的一个支持10进制天文数字转16进制的模块代码:
Dim largehex As String, largedec As String, start As Long, Y(20) As String'预备函数Function sums(ByVal X As String, ByVal Y As String) As String ' sum of two hugehexnum(两个大数之和)Dim max As Long, temp As Long, I As Long, result As Variantmax = IIf(Len(X) >= Len(Y), Len(X), Len(Y))X = Right(String(max, "0") & X, max)Y = Right(String(max, "0") & Y, max)ReDim result(0 To max)For I = max To 1 Step -1result(I) = Val(Mid(X, I, 1)) + Val(Mid(Y, I, 1))NextFor I = max To 1 Step -1temp = result(I) \ 10result(I) = result(I) Mod 10result(I - 1) = result(I - 1) + tempNextIf result(0) = 0 Then result(0) = ""sums = Join(result, "")Erase resultEnd FunctionFunction multi(ByVal X As String, ByVal Y As String) As String 'multi of two huge hexnum(两个大数之积)Dim result As VariantDim xl As Long, yl As Long, temp As Long, I As Longxl = Len(Trim(X))yl = Len(Trim(Y))ReDim result(1 To xl + yl)For I = 1 To xlFor temp = 1 To ylresult(I + temp) = result(I + temp) + Val(Mid(X, I, 1)) * Val(Mid(Y, temp, 1))NextNextFor I = xl + yl To 2 Step -1temp = result(I) \ 10result(I) = result(I) Mod 10result(I - 1) = result(I - 1) + tempNextIf result(1) = "0" Then result(1) = ""multi = Join(result, "")Erase resultEnd FunctionFunction POWERS(ByVal X As Integer) As String ' GET 16777216^X,ie 16^(6*x)(16777216的X 次方)POWERS = 1Dim I As IntegerFor I = 1 To XPOWERS = multi(POWERS, CLng(&H1000000))NextEnd FunctionFunction half(ByVal X As String) As String 'get half of x(取半)X = 0 & XDim I As LongReDim result(2 To Len(X)) As StringFor I = 2 To Len(X)result(I) = CStr(Val(Mid(X, I, 1)) \ 2 + IIf(Val(Mid(X, I - 1, 1)) Mod 2 = 1, 5, 0))Nexthalf = Join(result, "")If Left(half, 1) = "0" Then half = Right(half, Len(half) - 1) ' no zero aheadEnd Function'另一个有用的函数:Function POWERXY(ByVal X As Integer, ByVal Y As Integer) As String 'GETX^Y(X 的 Y 次方)Dim I As IntegerPOWERXY = XFor I = 2 To YPOWERXY = multi(POWERXY, X)NextEnd Function'进制转换函数:'16 to 10Function HEXTODEC(ByVal X As String) As StringDim A() As String, I As Long, UNIT As IntegerFor I = 1 To Len(X)If Not IsNumeric("&h" & Mid(X, I, 1)) Then MsgBox "NOT A HEX FORMAT!", 64, "INFO": Exit FunctionNextX = String((6 - Len(X) Mod 6) Mod 6, "0") & XUNIT = Len(X) \ 6 - 1ReDim A(UNIT)For I = 0 To UNITA(I) = CLng("&h" & Mid(X, I * 6 + 1, 6))NextFor I = 0 To UNITA(I) = multi(A(I), POWERS(UNIT - I))HEXTODEC = sums(HEXTODEC, A(I))NextEnd Function' 10 to 16Function dectohex(ByVal hugenum As String) As String ' trans hugenum to hexDo While Len(hugenum) > 2dectohex = Hex(Val(Right(hugenum, 4)) Mod 16) & dectohexFor I = 1 To 4 'devide hugenumby 16hugenum = half(hugenum)NextLoopdectohex = Hex(Val(hugenum)) & dectohexEnd FunctionPrivate Sub Form_Load()For I = 0 To 20Y(I) = "1234567890ABCDEF"Nextlargehex = Join(Y, "")End Sub
--------------------------------------------------------------------------------
【版权声明】: 本文由 蚊香 原创,转载请注明作者并保持文章的完整,谢谢!

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

wgz001 发表于 2008-9-20 08:23
学习算法分析 多谢了 [s:40]
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-9 01:35

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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