易用会员管理软件 V1.60 注册算法分析(入门级)

日期:2005年8月22日  破解人:Baby2008[BCG]

-------------------------------------------------------------------------------------------------------------------------
『软件名称』:易用会员管理软件 V1.60
『软件大小』:3501 KB
『下载地址』:http://www.skycn.com/soft/15619.html
『软件介绍』:
           易用会员管理系统是一套功能强大的会员管理软件,软件将会员消费,会员基本信息,以及各种查询统计等紧密结合起来,操作简单方便,界面美观大方,能满足如销售,餐饮,美容,服务等行业进行会员制管理,会员卡管理,会员积分管理,会员消费管理的需求,科学的管理方法会给您带来无限的效益,易用会员管理软件(会员卡管理软件)是您明智的选择。

『保护方式』:注册码保护+试用期限30天
『破解声明』:初学Crack,只是感兴趣,,失误之处敬请诸位大侠赐教!
『破解工具』:OllyDbg.V1.10 聆风听雨汉化第二版、PeID 0.93,Dede 3.50
『破解过程』:


PeID 0.93查壳,Borland Delphi 6.0 - 7.0,作者好人,省了很多事情,OD载入运,插件查找“注册成功,本程序所有功能限制下次启动时将被自动解除,欢迎您成为我们正式版本用户!”字样,向上来到:

005F256C    $  55                 push ebp
005F256D    .  8BEC               mov ebp,esp
005F256F    .  33C9               xor ecx,ecx
005F2571    .  51                 push ecx
005F2572    .  51                 push ecx
005F2573    .  51                 push ecx
005F2574    .  51                 push ecx
005F2575    .  51                 push ecx
005F2576    .  53                 push ebx
005F2577    .  56                 push esi
005F2578    .  57                 push edi
005F2579    .  8945 FC            mov dword ptr ss:[ebp-4],eax
005F257C    .  33C0               xor eax,eax
005F257E    .  55                 push ebp
005F257F    .  68 BD265F00        push Member.005F26BD
005F2584    .  64:FF30            push dword ptr fs:[eax]
005F2587    .  64:8920            mov dword ptr fs:[eax],esp
005F258A    .  8B45 FC            mov eax,dword ptr ss:[ebp-4]
005F258D    .  E8 AE020000        call Member.005F2840                 ;  注册验证关键,跟进
005F2592    .  84C0               test al,al
005F2594    .  0F84 DB000000      je Member.005F2675                   ;  爆破点
005F259A    .  33C0               xor eax,eax
005F259C    .  55                 push ebp
005F259D    .  68 59265F00        push Member.005F2659
005F25A2    .  64:FF30            push dword ptr fs:[eax]
005F25A5    .  64:8920            mov dword ptr fs:[eax],esp
005F25A8    .  B2 01              mov dl,1
005F25AA    .  A1 14874400        mov eax,dword ptr ds:[448714]
005F25AF    .  E8 CC62E5FF        call Member.00448880
005F25B4    .  8BD8               mov ebx,eax
005F25B6    .  BA 02000080        mov edx,80000002
005F25BB    .  8BC3               mov eax,ebx
005F25BD    .  E8 9A63E5FF        call Member.0044895C
005F25C2    .  B1 01              mov cl,1
005F25C4    .  BA D4265F00        mov edx,Member.005F26D4              ;  ASCII "Software\zy\Member"
005F25C9    .  8BC3               mov eax,ebx
005F25CB    .  E8 D064E5FF        call Member.00448AA0
005F25D0    .  8D55 F4            lea edx,dword ptr ss:[ebp-C]
005F25D3    .  8B45 FC            mov eax,dword ptr ss:[ebp-4]
005F25D6    .  8B80 00030000      mov eax,dword ptr ds:[eax+300]
005F25DC    .  E8 2744E9FF        call Member.00486A08
005F25E1    .  8B45 F4            mov eax,dword ptr ss:[ebp-C]
005F25E4    .  8D55 F8            lea edx,dword ptr ss:[ebp-8]
005F25E7    .  E8 C475E1FF        call Member.00409BB0
005F25EC    .  8B4D F8            mov ecx,dword ptr ss:[ebp-8]
005F25EF    .  BA F0265F00        mov edx,Member.005F26F0              ;  ASCII "Name"
005F25F4    .  8BC3               mov eax,ebx
005F25F6    .  E8 4166E5FF        call Member.00448C3C
005F25FB    .  8D55 EC            lea edx,dword ptr ss:[ebp-14]
005F25FE    .  8B45 FC            mov eax,dword ptr ss:[ebp-4]
005F2601    .  8B80 04030000      mov eax,dword ptr ds:[eax+304]
005F2607    .  E8 FC43E9FF        call Member.00486A08
005F260C    .  8B45 EC            mov eax,dword ptr ss:[ebp-14]
005F260F    .  8D55 F0            lea edx,dword ptr ss:[ebp-10]
005F2612    .  E8 9975E1FF        call Member.00409BB0
005F2617    .  8B4D F0            mov ecx,dword ptr ss:[ebp-10]
005F261A    .  BA 00275F00        mov edx,Member.005F2700              ;  ASCII "Pass"
005F261F    .  8BC3               mov eax,ebx
005F2621    .  E8 1666E5FF        call Member.00448C3C
005F2626    .  8BC3               mov eax,ebx
005F2628    .  E8 BB16E1FF        call Member.00403CE8
005F262D    .  6A 40              push 40
005F262F    .  68 08275F00        push Member.005F2708
005F2634    .  68 14275F00        push Member.005F2714                 ;  注册成功,本程序所有功能……
005F2639    .  8B45 FC            mov eax,dword ptr ss:[ebp-4]
005F263C    .  E8 3FAEE9FF        call Member.0048D480
005F2641    .  50                 push eax                             ; |hOwner
005F2642    .  E8 D55BE1FF        call <jmp.&user32.MessageBoxA>       ; \MessageBoxA
005F2647    .  8B45 FC            mov eax,dword ptr ss:[ebp-4]
005F264A    .  E8 1121EBFF        call Member.004A4760
005F264F    .  33C0               xor eax,eax
005F2651    .  5A                 pop edx
005F2652    .  59                 pop ecx
005F2653    .  59                 pop ecx
005F2654    .  64:8910            mov dword ptr fs:[eax],edx
005F2657    .  EB 36              jmp short Member.005F268F
005F2659    .^ E9 6A1BE1FF        jmp Member.004041C8
005F265E    .  8B45 FC            mov eax,dword ptr ss:[ebp-4]
005F2661    .  E8 FA20EBFF        call Member.004A4760
005F2666    .  8B45 FC            mov eax,dword ptr ss:[ebp-4]
005F2669    .  E8 1A010000        call Member.005F2788
005F266E    .  E8 811FE1FF        call Member.004045F4
005F2673    .  EB 1A              jmp short Member.005F268F
005F2675    >  6A 40              push 40
005F2677    .  68 08275F00        push Member.005F2708
005F267C    .  68 64275F00        push Member.005F2764
005F2681    .  8B45 FC            mov eax,dword ptr ss:[ebp-4]
005F2684    .  E8 F7ADE9FF        call Member.0048D480
005F2689    .  50                 push eax                             ; |hOwner
005F268A    .  E8 8D5BE1FF        call <jmp.&user32.MessageBoxA>       ; \MessageBoxA
005F268F    >  33C0               xor eax,eax
005F2691    .  5A                 pop edx
005F2692    .  59                 pop ecx
005F2693    .  59                 pop ecx
005F2694    .  64:8910            mov dword ptr fs:[eax],edx
005F2697    .  68 C4265F00        push Member.005F26C4
005F269C    >  8D45 EC            lea eax,dword ptr ss:[ebp-14]
005F269F    .  E8 3825E1FF        call Member.00404BDC
005F26A4    .  8D45 F0            lea eax,dword ptr ss:[ebp-10]
005F26A7    .  E8 3025E1FF        call Member.00404BDC
005F26AC    .  8D45 F4            lea eax,dword ptr ss:[ebp-C]
005F26AF    .  E8 2825E1FF        call Member.00404BDC
005F26B4    .  8D45 F8            lea eax,dword ptr ss:[ebp-8]
005F26B7    .  E8 2025E1FF        call Member.00404BDC
005F26BC    .  C3                 retn
005F26BD    .^ E9 BA1DE1FF        jmp Member.0040447C
005F26C2    .^ EB D8              jmp short Member.005F269C
005F26C4    .  5F                 pop edi
005F26C5    .  5E                 pop esi
005F26C6    .  5B                 pop ebx
005F26C7    .  8BE5               mov esp,ebp
005F26C9    .  5D                 pop ebp
005F26CA    .  C3                 retn
-------------------------------------------------------------------------------------------------------------------------

很明显,程序经过一个比较,然后跳转,根据比较结果给出不同提示,跟进关键005F258D call Member.005F2840:

-------------------------------------------------------------------------------------------------------------------------
005F2840   /$  55                 push ebp
005F2841   |.  8BEC               mov ebp,esp
005F2843   |.  33C9               xor ecx,ecx
005F2845   |.  51                 push ecx
005F2846   |.  51                 push ecx
005F2847   |.  51                 push ecx
005F2848   |.  51                 push ecx
005F2849   |.  51                 push ecx
005F284A   |.  53                 push ebx
005F284B   |.  56                 push esi
005F284C   |.  8BF0               mov esi,eax
005F284E   |.  33C0               xor eax,eax
005F2850   |.  55                 push ebp
005F2851   |.  68 FB285F00        push Member.005F28FB
005F2856   |.  64:FF30            push dword ptr fs:[eax]
005F2859   |.  64:8920            mov dword ptr fs:[eax],esp
005F285C   |.  8D55 FC            lea edx,dword ptr ss:[ebp-4]
005F285F   |.  8B86 04030000      mov eax,dword ptr ds:[esi+304]
005F2865   |.  E8 9E41E9FF        call Member.00486A08
005F286A   |.  8B45 FC            mov eax,dword ptr ss:[ebp-4]         ;  试炼码
005F286D   |.  50                 push eax
005F286E   |.  8D55 F4            lea edx,dword ptr ss:[ebp-C]
005F2871   |.  8B86 00030000      mov eax,dword ptr ds:[esi+300]
005F2877   |.  E8 8C41E9FF        call Member.00486A08
005F287C   |.  8B55 F4            mov edx,dword ptr ss:[ebp-C]         ;  注册名
005F287F   |.  8D4D F8            lea ecx,dword ptr ss:[ebp-8]
005F2882   |.  8BC6               mov eax,esi
005F2884   |.  E8 F3FAFFFF        call Member.005F237C                 ;  关键
005F2889   |.  8B55 F8            mov edx,dword ptr ss:[ebp-8]         ;  注册码
005F288C   |.  58                 pop eax                              ;  试炼码
005F288D   |.  E8 5627E1FF        call Member.00404FE8                 ;  比较
005F2892   |.  75 3A              jnz short Member.005F28CE            ;  爆破点
005F2894   |.  B3 01              mov bl,1                             ;  成功标志
005F2896   |.  8D55 F0            lea edx,dword ptr ss:[ebp-10]
005F2899   |.  8B86 00030000      mov eax,dword ptr ds:[esi+300]
005F289F   |.  E8 6441E9FF        call Member.00486A08
005F28A4   |.  8B55 F0            mov edx,dword ptr ss:[ebp-10]
005F28A7   |.  B8 5CBA6300        mov eax,Member.0063BA5C
005F28AC   |.  E8 7F23E1FF        call Member.00404C30
005F28B1   |.  8D55 EC            lea edx,dword ptr ss:[ebp-14]
005F28B4   |.  8B86 04030000      mov eax,dword ptr ds:[esi+304]
005F28BA   |.  E8 4941E9FF        call Member.00486A08
005F28BF   |.  8B55 EC            mov edx,dword ptr ss:[ebp-14]
005F28C2   |.  B8 60BA6300        mov eax,Member.0063BA60
005F28C7   |.  E8 6423E1FF        call Member.00404C30
005F28CC   |.  EB 02              jmp short Member.005F28D0
005F28CE   |>  33DB               xor ebx,ebx
005F28D0   |>  33C0               xor eax,eax
005F28D2   |.  5A                 pop edx
005F28D3   |.  59                 pop ecx
005F28D4   |.  59                 pop ecx
005F28D5   |.  64:8910            mov dword ptr fs:[eax],edx
005F28D8   |.  68 02295F00        push Member.005F2902
005F28DD   |>  8D45 EC            lea eax,dword ptr ss:[ebp-14]
005F28E0   |.  BA 03000000        mov edx,3
005F28E5   |.  E8 1623E1FF        call Member.00404C00
005F28EA   |.  8D45 F8            lea eax,dword ptr ss:[ebp-8]
005F28ED   |.  E8 EA22E1FF        call Member.00404BDC
005F28F2   |.  8D45 FC            lea eax,dword ptr ss:[ebp-4]
005F28F5   |.  E8 E222E1FF        call Member.00404BDC
005F28FA   \.  C3                 retn
-------------------------------------------------------------------------------------------------------------------------

明码比较,哈哈,爆破、做内存注册机两相宜,还是跟进005F2884  call Member.005F237C关键看看注册算法吧:

-------------------------------------------------------------------------------------------------------------------------
005F237C   /$  55                 push ebp
005F237D   |.  8BEC               mov ebp,esp
005F237F   |.  51                 push ecx
005F2380   |.  B9 04000000        mov ecx,4
005F2385   |>  6A 00              /push 0
005F2387   |.  6A 00              |push 0
005F2389   |.  49                 |dec ecx
005F238A   |.^ 75 F9              \jnz short Member.005F2385
005F238C   |.  51                 push ecx
005F238D   |.  874D FC            xchg dword ptr ss:[ebp-4],ecx
005F2390   |.  53                 push ebx
005F2391   |.  56                 push esi
005F2392   |.  57                 push edi
005F2393   |.  8BF9               mov edi,ecx
005F2395   |.  8955 FC            mov dword ptr ss:[ebp-4],edx
005F2398   |.  8B45 FC            mov eax,dword ptr ss:[ebp-4]         ;  注册名
005F239B   |.  E8 EC2CE1FF        call Member.0040508C
005F23A0   |.  33C0               xor eax,eax
005F23A2   |.  55                 push ebp
005F23A3   |.  68 3D255F00        push Member.005F253D
005F23A8   |.  64:FF30            push dword ptr fs:[eax]
005F23AB   |.  64:8920            mov dword ptr fs:[eax],esp
005F23AE   |.  8BC7               mov eax,edi
005F23B0   |.  E8 2728E1FF        call Member.00404BDC
005F23B5   |.  8B45 FC            mov eax,dword ptr ss:[ebp-4]         ;  注册名
005F23B8   |.  E8 DF2AE1FF        call Member.00404E9C                 ;  System.@LStrLen(String):Integer;
005F23BD   |.  8BF0               mov esi,eax                          ;  长度
005F23BF   |.  85F6               test esi,esi
005F23C1   |.  7E 26              jle short Member.005F23E9
005F23C3   |.  BB 01000000        mov ebx,1
005F23C8   |>  8D4D EC            /lea ecx,dword ptr ss:[ebp-14]
005F23CB   |.  8B45 FC            |mov eax,dword ptr ss:[ebp-4]        ;  注册名
005F23CE   |.  0FB64418 FF        |movzx eax,byte ptr ds:[eax+ebx-1]   ;  Name(i)
005F23D3   |.  33D2               |xor edx,edx
005F23D5   |.  E8 EE7EE1FF        |call Member.0040A2C8                ;  SysUtils.IntToHex(Integer;Integer):AnsiString;
005F23DA   |.  8B55 EC            |mov edx,dword ptr ss:[ebp-14]       ;  ASCII
005F23DD   |.  8D45 F8            |lea eax,dword ptr ss:[ebp-8]
005F23E0   |.  E8 BF2AE1FF        |call Member.00404EA4                ;  System.@LStrCat;
005F23E5   |.  43                 |inc ebx
005F23E6   |.  4E                 |dec esi
005F23E7   |.^ 75 DF              \jnz short Member.005F23C8
005F23E9   |>  8B45 F8            mov eax,dword ptr ss:[ebp-8]         ;  注册码转为ASCII字符串,记为NameASCII,Baby2008=4261627932303038
005F23EC   |.  E8 AB2AE1FF        call Member.00404E9C                 ;  System.@LStrLen(String):Integer;
005F23F1   |.  8BF0               mov esi,eax                          ;  长度
005F23F3   |.  85F6               test esi,esi
005F23F5   |.  7E 2C              jle short Member.005F2423
005F23F7   |.  BB 01000000        mov ebx,1
005F23FC   |>  8B45 F8            /mov eax,dword ptr ss:[ebp-8]        ;  NameASCII
005F23FF   |.  E8 982AE1FF        |call Member.00404E9C                ;  System.@LStrLen(String):Integer;
005F2404   |.  2BC3               |sub eax,ebx
005F2406   |.  8B55 F8            |mov edx,dword ptr ss:[ebp-8]
005F2409   |.  8A1402             |mov dl,byte ptr ds:[edx+eax]
005F240C   |.  8D45 E8            |lea eax,dword ptr ss:[ebp-18]
005F240F   |.  E8 B029E1FF        |call Member.00404DC4                ;  System.@LStrFromChar(String;String;Char);
005F2414   |.  8B55 E8            |mov edx,dword ptr ss:[ebp-18]
005F2417   |.  8D45 F4            |lea eax,dword ptr ss:[ebp-C]
005F241A   |.  E8 852AE1FF        |call Member.00404EA4                ;  System.@LStrCat;
005F241F   |.  43                 |inc ebx
005F2420   |.  4E                 |dec esi
005F2421   |.^ 75 D9              \jnz short Member.005F23FC           ;  循环将字符串倒序,记为Rev_NameASCII
005F2423   |>  8D45 F8            lea eax,dword ptr ss:[ebp-8]         ;  保存Rev_NameASCII(1-4)
005F2426   |.  50                 push eax
005F2427   |.  B9 04000000        mov ecx,4                            ;  4
005F242C   |.  BA 01000000        mov edx,1                            ;  1
005F2431   |.  8B45 F4            mov eax,dword ptr ss:[ebp-C]         ;  Rev_NameASCII
005F2434   |.  E8 C32CE1FF        call Member.004050FC                 ;  System.@LStrCopy;
005F2439   |.  8D45 F4            lea eax,dword ptr ss:[ebp-C]         ;  保存Rev_NameASCII(5-8)
005F243C   |.  50                 push eax
005F243D   |.  B9 04000000        mov ecx,4                            ;  4
005F2442   |.  BA 05000000        mov edx,5                            ;  5
005F2447   |.  8B45 F4            mov eax,dword ptr ss:[ebp-C]         ;  Rev_NameASCII
005F244A   |.  E8 AD2CE1FF        call Member.004050FC                 ;  System.@LStrCopy;
005F244F   |.  8B45 F8            mov eax,dword ptr ss:[ebp-8]         ;  Rev_NameASCII(1-4)
005F2452   |.  E8 452AE1FF        call Member.00404E9C                 ;  System.@LStrLen(String):Integer;
005F2457   |.  83F8 04            cmp eax,4
005F245A   |.  7D 2F              jge short Member.005F248B            ;  Length(Rev_NameASCII(1-4))>=4跳
005F245C   |.  8B45 F8            mov eax,dword ptr ss:[ebp-8]         ;  否则
005F245F   |.  E8 382AE1FF        call Member.00404E9C                 ;  System.@LStrLen(String):Integer;
005F2464   |.  8BD8               mov ebx,eax                          ;  EBX=Length(Rev_NameASCII(1-4))
005F2466   |.  83FB 03            cmp ebx,3                            ;  >3
005F2469   |.  7F 20              jg short Member.005F248B             ;  废话,这句永远不会成立!
005F246B   |>  8D4D E4            /lea ecx,dword ptr ss:[ebp-1C]
005F246E   |.  8BC3               |mov eax,ebx                         ;  ebx=Length(Rev_NameASCII(1-4))
005F2470   |.  C1E0 02            |shl eax,2                           ;  长度×4
005F2473   |.  33D2               |xor edx,edx
005F2475   |.  E8 4E7EE1FF        |call Member.0040A2C8                ;  SysUtils.IntToHex(Integer;Integer)
005F247A   |.  8B55 E4            |mov edx,dword ptr ss:[ebp-1C]       ;  IntToHex(长度×4)
005F247D   |.  8D45 F8            |lea eax,dword ptr ss:[ebp-8]
005F2480   |.  E8 1F2AE1FF        |call Member.00404EA4                ;  System.@LStrCat;
005F2485   |.  43                 |inc ebx                             ;  长度+1
005F2486   |.  83FB 04            |cmp ebx,4
005F2489   |.^ 75 E0              \jnz short Member.005F246B           ;  长度+1<>4继续循环
005F248B   |>  8B45 F4            mov eax,dword ptr ss:[ebp-C]         ;  Rev_NameASCII(5-8)
005F248E   |.  E8 092AE1FF        call Member.00404E9C                 ;  System.@LStrLen(String):Integer;
005F2493   |.  83F8 04            cmp eax,4
005F2496   |.  7D 2F              jge short Member.005F24C7            ;  同上废话
005F2498   |.  8B45 F4            mov eax,dword ptr ss:[ebp-C]
005F249B   |.  E8 FC29E1FF        call Member.00404E9C                 ;  System.@LStrLen(String):Integer;
005F24A0   |.  8BD8               mov ebx,eax
005F24A2   |.  83FB 03            cmp ebx,3
005F24A5   |.  7F 20              jg short Member.005F24C7
005F24A7   |>  8D4D E0            /lea ecx,dword ptr ss:[ebp-20]
005F24AA   |.  8BC3               |mov eax,ebx
005F24AC   |.  C1E0 02            |shl eax,2
005F24AF   |.  33D2               |xor edx,edx
005F24B1   |.  E8 127EE1FF        |call Member.0040A2C8                ;  SysUtils.IntToHex(Integer;Integer):AnsiString;
005F24B6   |.  8B55 E0            |mov edx,dword ptr ss:[ebp-20]
005F24B9   |.  8D45 F4            |lea eax,dword ptr ss:[ebp-C]
005F24BC   |.  E8 E329E1FF        |call Member.00404EA4                ;  System.@LStrCat;
005F24C1   |.  43                 |inc ebx
005F24C2   |.  83FB 04            |cmp ebx,4
005F24C5   |.^ 75 E0              \jnz short Member.005F24A7
005F24C7   |>  8D45 F0            lea eax,dword ptr ss:[ebp-10]
005F24CA   |.  BA 54255F00        mov edx,Member.005F2554              ;  固定字符串"mem45erpe",记为Mark
005F24CF   |.  E8 A027E1FF        call Member.00404C74
005F24D4   |.  8D45 DC            lea eax,dword ptr ss:[ebp-24]        ;  保存Mark(1-4)='mem4'
005F24D7   |.  50                 push eax
005F24D8   |.  B9 04000000        mov ecx,4                            ;  4
005F24DD   |.  BA 01000000        mov edx,1                            ;  1
005F24E2   |.  8B45 F0            mov eax,dword ptr ss:[ebp-10]        ;  Mark
005F24E5   |.  E8 122CE1FF        call Member.004050FC                 ;  System.@LStrCopy;
005F24EA   |.  FF75 DC            push dword ptr ss:[ebp-24]           ;  Mark(1-4)
005F24ED   |.  68 68255F00        push Member.005F2568                 ;  分割字符'-'
005F24F2   |.  FF75 F8            push dword ptr ss:[ebp-8]            ;  Rev_NameASCII(1-4)
005F24F5   |.  8D45 D8            lea eax,dword ptr ss:[ebp-28]        ;  保存Mark(5-9)
005F24F8   |.  50                 push eax
005F24F9   |.  B9 05000000        mov ecx,5                            ;  5
005F24FE   |.  BA 05000000        mov edx,5                            ;  5
005F2503   |.  8B45 F0            mov eax,dword ptr ss:[ebp-10]        ;  Mark
005F2506   |.  E8 F12BE1FF        call Member.004050FC                 ;  System.@LStrCopy;
005F250B   |.  FF75 D8            push dword ptr ss:[ebp-28]           ;  Mark(5-9)='45erpe'
005F250E   |.  68 68255F00        push Member.005F2568                 ;  分割字符'-'
005F2513   |.  FF75 F4            push dword ptr ss:[ebp-C]            ;  Rev_NameASCII(5-8)
005F2516   |.  8BC7               mov eax,edi
005F2518   |.  BA 06000000        mov edx,6                            ;  6
005F251D   |.  E8 3A2AE1FF        call Member.00404F5C                 ;  System.@LStrCatN,连接上面6项入栈参数即为注册码
005F2522   |.  33C0               xor eax,eax
005F2524   |.  5A                 pop edx
005F2525   |.  59                 pop ecx
005F2526   |.  59                 pop ecx
005F2527   |.  64:8910            mov dword ptr fs:[eax],edx
005F252A   |.  68 44255F00        push Member.005F2544
005F252F   |>  8D45 D8            lea eax,dword ptr ss:[ebp-28]
005F2532   |.  BA 0A000000        mov edx,0A
005F2537   |.  E8 C426E1FF        call Member.00404C00
005F253C   \.  C3                 retn
005F253D    .^ E9 3A1FE1FF        jmp Member.0040447C
005F2542    .^ EB EB              jmp short Member.005F252F
005F2544    .  5F                 pop edi
005F2545    .  5E                 pop esi
005F2546    .  5B                 pop ebx
005F2547    .  8BE5               mov esp,ebp
005F2549    .  5D                 pop ebp
005F254A    .  C3                 retn
-------------------------------------------------------------------------------------------------------------------------
到注册算法关键了,是根据用户名计算结果连接一固定字符串作为注册码,具体分析请看注释。



『算法总结』:

1、将注册名转换为ASCII字符串,如Baby2008=4261627932303038,记为NameASCII
2、将NameASCII到序,记为Rev_NameASCII;如4261627932303038->8303032397261624
3、取Rev_NameASCII(1-4)记为R1,Rev_NameASCII(5-8)记为R2,假如R1,R2长度不为4,用 Rigth('048C',4-Length(Ri))补齐4位;
4、取固定字符串Mark='mem45erpe'的前4位记为M1,后5位记为M2
5、M1-R1-M2-R2  (用分割字符'-'连接即为注册码)

『注册机源代码』:

拿张ASCII码表翻翻、纸上写写就行了,立马省去注册费200RMB, ^_^

我的注册信息:
注册名:Baby2008
注册码:mem4-83035erpe-0323

--完--