【破文标题】阳光个人助理 1.30注册算法
【破文作者】XXNB
【作者邮箱】
【作者主页】http://free.ys168.com/?binbinbin7456
【破解工具】OD
【破解平台】xpsp2
【软件名称】阳光个人助理 1.30
【软件大小】2098KB
【原版下载】http://www.newhua.com/soft/47429.htm
【保护方式】名+码
【软件简介】阳光个人助理是一款实用性极强的个人电脑超级助理软件,集同类软件之所长,具有丰富而强大的功能:有工作辅助、日常查询、文件处理、网络管理、系统优化等,它采用数据库加密方式保存,可以多个用户使用,安全便捷,大大提高信息管理的效率。无论是查询功能还是信息的处理,阳光个人助理都将成为您最得力的助手。

软件共分五个部分:
工作辅助:定时提醒、工作日志、密码保管箱、通讯录;
日常查询:万年历、身份证查询、邮政编码查询、长途区号查询、手机归属地查询;
文件辅助:文件加密助手、文件分割助手、文件彻底删除助手;
网络辅助:常用网址管理、IE恢复助手、网络信使;
系统辅助:系统信息、内存整理、上机纪录清理、热键管理;

本软件具有以下特色:
功能强:集成了日常工作生活中最常用的信息管理功能;
人性化:各项功能精心打造,让您感觉周到体贴、用着舒心;
自动化:软件中的处理、计算自动化程度高,省心省力;
安全性:所有数据加密保存,个人资料使用安全、放心;
空间小:程序精干、硬盘占据空间小,适合下载使用;
扩充性:系统整体设计考虑全面,功能扩充的余地广阔;
易操作:流程简洁、操作简便、好学易用、驾驭自如;

【破解声明】向大侠们学习!!!只为学习!请尊重作者的劳动成功!
------------------------------------------------------------------------
【破解过程】

1、下断的办法很多,我使用的是bp RegQueryValueExA 读取注册表的函数下断,因为我的OD在字符串搜索的时候会死机,郁闷~。然后可以得到下面代码:

004F72D4  /$  55            push    ebp
004F72D5  |.  8BEC          mov     ebp, esp
004F72D7  |.  6A 00         push    0
004F72D9  |.  6A 00         push    0
004F72DB  |.  6A 00         push    0
004F72DD  |.  6A 00         push    0
004F72DF  |.  53            push    ebx
004F72E0  |.  56            push    esi
004F72E1  |.  57            push    edi
004F72E2  |.  8BF9          mov     edi, ecx
004F72E4  |.  8BDA          mov     ebx, edx
004F72E6  |.  8BF0          mov     esi, eax
004F72E8  |.  33C0          xor     eax, eax
004F72EA  |.  55            push    ebp
004F72EB  |.  68 8E734F00   push    004F738E
004F72F0  |.  64:FF30       push    dword ptr fs:[eax]
004F72F3  |.  64:8920       mov     dword ptr fs:[eax], esp
004F72F6  |.  8D45 FC       lea     eax, dword ptr [ebp-4]
004F72F9  |.  E8 62D1F0FF   call    00404460
004F72FE  |.  8D45 F8       lea     eax, dword ptr [ebp-8]
004F7301  |.  E8 5AD1F0FF   call    00404460
004F7306  |.  C607 00       mov     byte ptr [edi], 0
004F7309  |.  8D55 F8       lea     edx, dword ptr [ebp-8]
004F730C  |.  8D45 FC       lea     eax, dword ptr [ebp-4]
004F730F  |.  E8 8C88FAFF   call    0049FBA0                         ;  读取假码
004F7314  |.  837D FC 00    cmp     dword ptr [ebp-4], 0             ;  判断是否输入假码
004F7318  |.  74 59         je      short 004F7373
004F731A  |.  837D F8 00    cmp     dword ptr [ebp-8], 0             ;  判断是否输入用户名
004F731E  |.  74 53         je      short 004F7373
004F7320  |.  8D55 F4       lea     edx, dword ptr [ebp-C]
004F7323  |.  B8 A4734F00   mov     eax, 004F73A4                    ;  固定字符串  "SOFTAA"
004F7328  |.  E8 C364FAFF   call    0049D7F0
004F732D  |.  8B55 F4       mov     edx, dword ptr [ebp-C]           ;  取计算机硬盘序列号
004F7330  |.  8BC3          mov     eax, ebx
004F7332  |.  E8 7DD1F0FF   call    004044B4
004F7337  |.  8D45 F0       lea     eax, dword ptr [ebp-10]
004F733A  |.  50            push    eax
004F733B  |.  8B03          mov     eax, dword ptr [ebx]             ;  硬盘序列号到eax
004F733D  |.  B1 61         mov     cl, 61                           ;  常数
004F733F  |.  66:BA A508    mov     dx, 8A5                          ;  常数
004F7343  |.  E8 346EFAFF   call    0049E17C
004F7348  |.  8B55 F0       mov     edx, dword ptr [ebp-10]          ;  机器码到edx
004F734B  |.  8BC3          mov     eax, ebx
004F734D  |.  E8 62D1F0FF   call    004044B4
004F7352  |.  8B45 FC       mov     eax, dword ptr [ebp-4]           ;  假码出现了。
004F7355  |.  50            push    eax                              ;  假码入栈
004F7356  |.  57            push    edi
004F7357  |.  8BD3          mov     edx, ebx
004F7359  |.  8B4D F8       mov     ecx, dword ptr [ebp-8]           ;  用户名到ecx
004F735C  |.  8BC6          mov     eax, esi
004F735E  |.  E8 5D000000   call    004F73C0                         ;  算法call,跟进《《《《《《《《《《《《《--------
004F7363  |.  84C0          test    al, al                           ;  标志位
004F7365  |.  74 0C         je      short 004F7373                   ;  关键跳
004F7367  |.  8BC3          mov     eax, ebx
004F7369  |.  BA B4734F00   mov     edx, 004F73B4                    ;  ASCII "YesIKnow"
004F736E  |.  E8 41D1F0FF   call    004044B4
004F7373  |>  33C0          xor     eax, eax
004F7375  |.  5A            pop     edx
004F7376  |.  59            pop     ecx
004F7377  |.  59            pop     ecx
004F7378  |.  64:8910       mov     dword ptr fs:[eax], edx
004F737B  |.  68 95734F00   push    004F7395
004F7380  |>  8D45 F0       lea     eax, dword ptr [ebp-10]
004F7383  |.  BA 04000000   mov     edx, 4
004F7388  |.  E8 F7D0F0FF   call    00404484
004F738D  \.  C3            retn



+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

2、跟进004F735E  |.  E8 5D000000   call    004F73C0 这个算法call得到:


004F73C0  /$  55            push    ebp
004F73C1  |.  8BEC          mov     ebp, esp
004F73C3  |.  51            push    ecx
004F73C4  |.  B9 05000000   mov     ecx, 5
004F73C9  |>  6A 00         /push    0
004F73CB  |.  6A 00         |push    0
004F73CD  |.  49            |dec     ecx
004F73CE  |.^ 75 F9         \jnz     short 004F73C9
004F73D0  |.  51            push    ecx
004F73D1  |.  874D FC       xchg    dword ptr [ebp-4], ecx
004F73D4  |.  53            push    ebx
004F73D5  |.  56            push    esi
004F73D6  |.  894D F8       mov     dword ptr [ebp-8], ecx
004F73D9  |.  8BF2          mov     esi, edx
004F73DB  |.  8945 FC       mov     dword ptr [ebp-4], eax
004F73DE  |.  8B45 F8       mov     eax, dword ptr [ebp-8]
004F73E1  |.  E8 2AD5F0FF   call    00404910
004F73E6  |.  8B45 0C       mov     eax, dword ptr [ebp+C]
004F73E9  |.  E8 22D5F0FF   call    00404910
004F73EE  |.  33C0          xor     eax, eax
004F73F0  |.  55            push    ebp
004F73F1  |.  68 A0764F00   push    004F76A0
004F73F6  |.  64:FF30       push    dword ptr fs:[eax]
004F73F9  |.  64:8920       mov     dword ptr fs:[eax], esp
004F73FC  |.  33DB          xor     ebx, ebx
004F73FE  |.  8D55 F4       lea     edx, dword ptr [ebp-C]
004F7401  |.  B8 BC764F00   mov     eax, 004F76BC                    ;  (ASCII "SOFTAA")固定字符串。(好像没有用的)
004F7406  |.  E8 E563FAFF   call    0049D7F0
004F740B  |.  8D45 E0       lea     eax, dword ptr [ebp-20]
004F740E  |.  50            push    eax
004F740F  |.  8B06          mov     eax, dword ptr [esi]             ;  机器码
004F7411  |.  B1 78         mov     cl, 78                           ;  常数
004F7413  |.  66:BA A508    mov     dx, 8A5                          ;  常数
004F7417  |.  E8 606DFAFF   call    0049E17C
004F741C  |.  8B55 E0       mov     edx, dword ptr [ebp-20]
004F741F  |.  8B45 F4       mov     eax, dword ptr [ebp-C]
004F7422  |.  E8 45D4F0FF   call    0040486C
004F7427  |.  0F85 50020000 jnz     004F767D
004F742D  |.  8B45 0C       mov     eax, dword ptr [ebp+C]           ;  假码
004F7430  |.  E8 EBD2F0FF   call    00404720                         ;  计算位数
004F7435  |.  8BF0          mov     esi, eax
004F7437  |.  8D45 EC       lea     eax, dword ptr [ebp-14]
004F743A  |.  50            push    eax
004F743B  |.  8D45 DC       lea     eax, dword ptr [ebp-24]
004F743E  |.  8B4D F8       mov     ecx, dword ptr [ebp-8]
004F7441  |.  8B55 F4       mov     edx, dword ptr [ebp-C]
004F7444  |.  E8 23D3F0FF   call    0040476C
004F7449  |.  8B4D DC       mov     ecx, dword ptr [ebp-24]          ;  硬盘序列号和用户名连接成一个字符串
004F744C  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
004F744F  |.  8B40 60       mov     eax, dword ptr [eax+60]
004F7452  |.  BA C8010000   mov     edx, 1C8                         ;  常数。这个常数厉害了,贯穿整个算法
004F7457  |.  E8 FC88FDFF   call    004CFD58                         ;  算法call,跟进《《《《《《《《《《《《《
004F745C  |.  8B45 EC       mov     eax, dword ptr [ebp-14]          ;  这个难道是真码了!!
004F745F  |.  8B55 0C       mov     edx, dword ptr [ebp+C]           ;  假码。看到气势都知道是真假比较了。收工
004F7462  |.  E8 05D4F0FF   call    0040486C                         ;  经典比较函数
004F7467  |.  75 07         jnz     short 004F7470                   ;  关键跳
004F7469  |.  B3 01         mov     bl, 1                            ;  标志位
004F746B  |.  E9 0D020000   jmp     004F767D                         ;  跳向光明....
004F7470  |>  8D45 E8       lea     eax, dword ptr [ebp-18]
004F7473  |.  50            push    eax
004F7474  |.  8D45 D8       lea     eax, dword ptr [ebp-28]
004F7477  |.  8B4D F8       mov     ecx, dword ptr [ebp-8]
004F747A  |.  8B55 F4       mov     edx, dword ptr [ebp-C]
004F747D  |.  E8 EAD2F0FF   call    0040476C
004F7482  |.  8B4D D8       mov     ecx, dword ptr [ebp-28]          ;  又是连接硬盘序列号和用户名字符串
004F7485  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
004F7488  |.  8B40 60       mov     eax, dword ptr [eax+60]
004F748B  |.  BA 2E000000   mov     edx, 2E                          ;  常数2E。又是贯穿整个算法的常数,
004F7490  |.  E8 C388FDFF   call    004CFD58                         ;  作者难道给两次机会我们。所以应该有两组注册码
004F7495  |.  8B45 E8       mov     eax, dword ptr [ebp-18]          ;  第二组真码出现了
004F7498  |.  8B55 0C       mov     edx, dword ptr [ebp+C]           ;  假码
004F749B  |.  E8 CCD3F0FF   call    0040486C                         ;  比较
004F74A0  |.  75 07         jnz     short 004F74A9                   ;  关键跳
004F74A2  |.  B3 01         mov     bl, 1                            ;  注册标志位
004F74A4  |.  E9 D4010000   jmp     004F767D
004F74A9  |>  8B45 E8       mov     eax, dword ptr [ebp-18]
004F74AC  |.  E8 6FD2F0FF   call    00404720
004F74B1  |.  3BF0          cmp     esi, eax
004F74B3  |.  7E 0A         jle     short 004F74BF
004F74B5  |.  8B45 E8       mov     eax, dword ptr [ebp-18]
004F74B8  |.  E8 63D2F0FF   call    00404720
004F74BD  |.  8BF0          mov     esi, eax
004F74BF  |>  8BC6          mov     eax, esi
004F74C1  |.  83F8 01       cmp     eax, 1
004F74C4  |.  7C 21         jl      short 004F74E7
004F74C6  |>  84DB          /test    bl, bl
004F74C8  |.  74 10         |je      short 004F74DA
004F74CA  |.  8B55 0C       |mov     edx, dword ptr [ebp+C]
004F74CD  |.  8A5402 FF     |mov     dl, byte ptr [edx+eax-1]
004F74D1  |.  8B4D E8       |mov     ecx, dword ptr [ebp-18]
004F74D4  |.  3A5401 FF     |cmp     dl, byte ptr [ecx+eax-1]
004F74D8  |.  74 04         |je      short 004F74DE
004F74DA  |>  33D2          |xor     edx, edx
004F74DC  |.  EB 02         |jmp     short 004F74E0
004F74DE  |>  B2 01         |mov     dl, 1
004F74E0  |>  8BDA          |mov     ebx, edx
004F74E2  |.  48            |dec     eax
004F74E3  |.  85C0          |test    eax, eax
004F74E5  |.^ 75 DF         \jnz     short 004F74C6
004F74E7  |>  8D45 E4       lea     eax, dword ptr [ebp-1C]
004F74EA  |.  50            push    eax
004F74EB  |.  8D45 D4       lea     eax, dword ptr [ebp-2C]
004F74EE  |.  8B4D F8       mov     ecx, dword ptr [ebp-8]
004F74F1  |.  8B55 F4       mov     edx, dword ptr [ebp-C]
004F74F4  |.  E8 73D2F0FF   call    0040476C                         ;  不会吧。给三次机会??
004F74F9  |.  8B4D D4       mov     ecx, dword ptr [ebp-2C]          ;  又是硬盘序列号和用户名连接后的字符串
004F74FC  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
004F74FF  |.  8B40 60       mov     eax, dword ptr [eax+60]
004F7502  |.  BA 38000000   mov     edx, 38                          ;  贯穿算法的常数:38H
004F7507  |.  E8 4C88FDFF   call    004CFD58                         ;  计算第三组注册码
004F750C  |.  8B45 0C       mov     eax, dword ptr [ebp+C]           ;  假码
004F750F  |.  E8 0CD2F0FF   call    00404720                         ;  计算位数
004F7514  |.  8BF0          mov     esi, eax
004F7516  |.  8B45 E4       mov     eax, dword ptr [ebp-1C]          ;  第三组注册码
004F7519  |.  E8 02D2F0FF   call    00404720                         ;  计算位数
004F751E  |.  3BF0          cmp     esi, eax                         ;  假码和第三组注册码的比较
004F7520  |.  7E 0A         jle     short 004F752C
004F7522  |.  8B45 E4       mov     eax, dword ptr [ebp-1C]
004F7525  |.  E8 F6D1F0FF   call    00404720
004F752A  |.  8BF0          mov     esi, eax
004F752C  |>  8B45 E4       mov     eax, dword ptr [ebp-1C]
004F752F  |.  8B55 0C       mov     edx, dword ptr [ebp+C]           ;  假码和第三组注册码比较
004F7532  |.  E8 35D3F0FF   call    0040486C                         ;  比较函数
004F7537  |.  75 07         jnz     short 004F7540
004F7539  |.  B3 01         mov     bl, 1                            ;  注册标志位
004F753B  |.  E9 3D010000   jmp     004F767D
004F7540  |>  8BC6          mov     eax, esi
004F7542  |.  83F8 01       cmp     eax, 1
004F7545  |.  7C 21         jl      short 004F7568
004F7547  |>  84DB          /test    bl, bl
004F7549  |.  74 10         |je      short 004F755B
004F754B  |.  8B55 0C       |mov     edx, dword ptr [ebp+C]
004F754E  |.  8A5402 FF     |mov     dl, byte ptr [edx+eax-1]
004F7552  |.  8B4D E4       |mov     ecx, dword ptr [ebp-1C]
004F7555  |.  3A5401 FF     |cmp     dl, byte ptr [ecx+eax-1]
004F7559  |.  74 04         |je      short 004F755F
004F755B  |>  33D2          |xor     edx, edx
004F755D  |.  EB 02         |jmp     short 004F7561
004F755F  |>  B2 01         |mov     dl, 1
004F7561  |>  8BDA          |mov     ebx, edx
004F7563  |.  48            |dec     eax
004F7564  |.  85C0          |test    eax, eax
004F7566  |.^ 75 DF         \jnz     short 004F7547
004F7568  |>  B3 01         mov     bl, 1
004F756A  |.  8D45 F0       lea     eax, dword ptr [ebp-10]
004F756D  |.  50            push    eax
004F756E  |.  8D45 D0       lea     eax, dword ptr [ebp-30]
004F7571  |.  8B4D F8       mov     ecx, dword ptr [ebp-8]
004F7574  |.  8B55 F4       mov     edx, dword ptr [ebp-C]
004F7577  |.  E8 F0D1F0FF   call    0040476C                         ;  第四次运算。
004F757C  |.  8B4D D0       mov     ecx, dword ptr [ebp-30]          ;  用户名和硬盘序列号的连接字符串
004F757F  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
004F7582  |.  8B40 60       mov     eax, dword ptr [eax+60]
004F7585  |.  BA 59010000   mov     edx, 159                         ;  常数
004F758A  |.  E8 C987FDFF   call    004CFD58                         ;  堆栈里面看第四组注册码
004F758F  |.  8D45 EC       lea     eax, dword ptr [ebp-14]
004F7592  |.  BA CC764F00   mov     edx, 004F76CC                    ;  (ASCII "tH4gI8fsU0")固定字符串
004F7597  |.  E8 5CCFF0FF   call    004044F8
004F759C  |.  8B45 0C       mov     eax, dword ptr [ebp+C]           ;  假码
004F759F  |.  E8 7CD1F0FF   call    00404720                         ;  计算位数
004F75A4  |.  8BF0          mov     esi, eax
004F75A6  |.  8B45 F0       mov     eax, dword ptr [ebp-10]          ;  第四组
004F75A9  |.  E8 72D1F0FF   call    00404720                         ;  计算位数
004F75AE  |.  3BF0          cmp     esi, eax                         ;  位数比较
004F75B0  |.  74 07         je      short 004F75B9
004F75B2  |.  33DB          xor     ebx, ebx
004F75B4  |.  E9 C4000000   jmp     004F767D                         ;  终于在这里跳走了
004F75B9  |>  8BC6          mov     eax, esi
004F75BB  |.  83E8 04       sub     eax, 4
004F75BE  |.  83F8 08       cmp     eax, 8




3、跟进总共调用了4次的算法call,就是生成注册码的:004F7457  |.  E8 FC88FDFF   call    004CFD58可以得到下面代码:

004CFD58  /$  55            push    ebp
004CFD59  |.  8BEC          mov     ebp, esp
004CFD5B  |.  6A 00         push    0
004CFD5D  |.  6A 00         push    0
004CFD5F  |.  6A 00         push    0
004CFD61  |.  6A 00         push    0
004CFD63  |.  6A 00         push    0
004CFD65  |.  6A 00         push    0
004CFD67  |.  6A 00         push    0
004CFD69  |.  53            push    ebx
004CFD6A  |.  56            push    esi
004CFD6B  |.  894D F8       mov     dword ptr [ebp-8], ecx           ;  连接后的字符串
004CFD6E  |.  8955 FC       mov     dword ptr [ebp-4], edx
004CFD71  |.  8B45 F8       mov     eax, dword ptr [ebp-8]
004CFD74  |.  E8 974BF3FF   call    00404910
004CFD79  |.  33C0          xor     eax, eax
004CFD7B  |.  55            push    ebp
004CFD7C  |.  68 86FE4C00   push    004CFE86
004CFD81  |.  64:FF30       push    dword ptr fs:[eax]
004CFD84  |.  64:8920       mov     dword ptr fs:[eax], esp
004CFD87  |.  8D45 F4       lea     eax, dword ptr [ebp-C]
004CFD8A  |.  BA A0FE4C00   mov     edx, 004CFEA0                    ;  ASCII "Error"
004CFD8F  |.  E8 6447F3FF   call    004044F8
004CFD94  |.  33DB          xor     ebx, ebx
004CFD96  |.  837D FC 00    cmp     dword ptr [ebp-4], 0             ;  常数1C8
004CFD9A  |.  0F84 B3000000 je      004CFE53
004CFDA0  |.  837D F8 00    cmp     dword ptr [ebp-8], 0
004CFDA4  |.  0F84 A9000000 je      004CFE53
004CFDAA  |.  8B45 F8       mov     eax, dword ptr [ebp-8]           ;  连接后的字符串到eax
004CFDAD  |.  E8 6E49F3FF   call    00404720                         ;  计算位数
004CFDB2  |.  8945 F0       mov     dword ptr [ebp-10], eax
004CFDB5  |.  8B45 F0       mov     eax, dword ptr [ebp-10]
004CFDB8  |.  85C0          test    eax, eax
004CFDBA  |.  7E 13         jle     short 004CFDCF                   ;  一看都知道要循环了
004CFDBC  |.  BA 01000000   mov     edx, 1                           ;  计数器
004CFDC1  |>  8B4D F8       /mov     ecx, dword ptr [ebp-8]
004CFDC4  |.  0FB64C11 FF   |movzx   ecx, byte ptr [ecx+edx-1]       ;  逐个取那连接后的字符串
004CFDC9  |.  03D9          |add     ebx, ecx                        ;  累加
004CFDCB  |.  42            |inc     edx
004CFDCC  |.  48            |dec     eax
004CFDCD  |.^ 75 F2         \jnz     short 004CFDC1                  ;  这个循环目的是Ascii码值累加
004CFDCF  |>  81FB 204E0000 cmp     ebx, 4E20                        ;  累加后的结果和常数4E20比较
004CFDD5  |.  7E 0C         jle     short 004CFDE3                   ;  小于等于就跳。相信很多人的都是小于的
004CFDD7  |.  8BC3          mov     eax, ebx
004CFDD9  |.  B9 204E0000   mov     ecx, 4E20
004CFDDE  |.  99            cdq
004CFDDF  |.  F7F9          idiv    ecx
004CFDE1  |.  8BDA          mov     ebx, edx
004CFDE3  |>  8B75 FC       mov     esi, dword ptr [ebp-4]           ;  常数1C8
004CFDE6  |.  0FAF75 F0     imul    esi, dword ptr [ebp-10]          ;  1C8乘以那长字符串的位数
004CFDEA  |.  6BC3 49       imul    eax, ebx, 49                     ;  累加的结果*49H。结果放在eax
004CFDED  |.  03F0          add     esi, eax                         ;  相加
004CFDEF  |.  8D55 EC       lea     edx, dword ptr [ebp-14]
004CFDF2  |.  8BC6          mov     eax, esi                         ;  上面那堆运算的结果放到eax
004CFDF4  |.  E8 4B98F3FF   call    00409644                         ;  转成10进制字符串函数。
004CFDF9  |.  8B55 EC       mov     edx, dword ptr [ebp-14]          ;  到这里位置算得的10进制字符串,就是真码的第一部分
004CFDFC  |.  8D45 F4       lea     eax, dword ptr [ebp-C]
004CFDFF  |.  B9 B0FE4C00   mov     ecx, 004CFEB0
004CFE04  |.  E8 6349F3FF   call    0040476C
004CFE09  |.  8B45 FC       mov     eax, dword ptr [ebp-4]           ;  又是常数1C8
004CFE0C  |.  F7EB          imul    ebx                              ;  1C8乘以累加结果
004CFE0E  |.  6BF0 15       imul    esi, eax, 15                     ;  再乘以15H。结果放到esi
004CFE11  |.  FF75 F4       push    dword ptr [ebp-C]                ;  第一部分入栈
004CFE14  |.  8D55 E8       lea     edx, dword ptr [ebp-18]
004CFE17  |.  8BC6          mov     eax, esi
004CFE19  |.  E8 2698F3FF   call    00409644                         ;  转成10进制字符串函数。
004CFE1E  |.  FF75 E8       push    dword ptr [ebp-18]               ;  真码的第二部分出现了,记为BB
004CFE21  |.  68 B0FE4C00   push    004CFEB0
004CFE26  |.  8D45 F4       lea     eax, dword ptr [ebp-C]
004CFE29  |.  BA 03000000   mov     edx, 3                           ;  
004CFE2E  |.  E8 AD49F3FF   call    004047E0
004CFE33  |.  8B45 F0       mov     eax, dword ptr [ebp-10]
004CFE36  |.  F7EB          imul    ebx                              ;  长字符串位数乘以累加结果
004CFE38  |.  6BF0 73       imul    esi, eax, 73                     ;  再乘以73H
004CFE3B  |.  0375 FC       add     esi, dword ptr [ebp-4]           ;  结果又加上常数1C8(“456”)
004CFE3E  |.  8D55 E4       lea     edx, dword ptr [ebp-1C]
004CFE41  |.  8BC6          mov     eax, esi
004CFE43  |.  E8 FC97F3FF   call    00409644                         ;  转成10进制字符串函数。
004CFE48  |.  8B55 E4       mov     edx, dword ptr [ebp-1C]          ;  真码的第三部分出现了
004CFE4B  |.  8D45 F4       lea     eax, dword ptr [ebp-C]
004CFE4E  |.  E8 D548F3FF   call    00404728                         ;  连接字符串
004CFE53  |>  8B45 08       mov     eax, dword ptr [ebp+8]
004CFE56  |.  8B55 F4       mov     edx, dword ptr [ebp-C]           ;  前面的三个部分连接后。真码出现了。《《《《
004CFE59  |.  E8 5646F3FF   call    004044B4
004CFE5E  |.  33C0          xor     eax, eax
004CFE60  |.  5A            pop     edx
004CFE61  |.  59            pop     ecx
004CFE62  |.  59            pop     ecx
004CFE63  |.  64:8910       mov     dword ptr fs:[eax], edx
004CFE66  |.  68 8DFE4C00   push    004CFE8D
004CFE6B  |>  8D45 E4       lea     eax, dword ptr [ebp-1C]
004CFE6E  |.  BA 03000000   mov     edx, 3
004CFE73  |.  E8 0C46F3FF   call    00404484
004CFE78  |.  8D45 F4       lea     eax, dword ptr [ebp-C]
004CFE7B  |.  BA 02000000   mov     edx, 2
004CFE80  |.  E8 FF45F3FF   call    00404484
004CFE85  \.  C3            retn







.版本 2

.程序集 窗口程序集1

.子程序 _按钮1_被单击
.局部变量 name, 文本型
.局部变量 jiqima, 文本型
.局部变量 len, 整数型
.局部变量 eax, 整数型
.局部变量 i, 整数型
.局部变量 stringchang, 文本型
.局部变量 sum, 整数型
.局部变量 code1, 整数型
.局部变量 a, 整数型
.局部变量 sn1, 文本型
.局部变量 code2, 整数型
.局部变量 sn2, 文本型
.局部变量 code3, 整数型
.局部变量 sn3, 文本型

name = 编辑框1.内容
jiqima = 编辑框2.内容
stringchang = name + jiqima
len = 取文本长度 (stringchang)
.计次循环首 (len, i)
    eax = 取代码 (stringchang, i)
    sum = sum + eax
.计次循环尾 ()

code1 = len × 345
a = sum × 73
code1 = code1 + a
sn1 = 到文本 (code1)

code2 = sum × 345
code2 = code2 × 21
sn2 = 到文本 (code2)

code3 = len × sum
code3 = code3 × 115 + 345
sn3 = 到文本 (code3)

编辑框3.内容 = sn1 + “-” + sn2 + “-” + sn3




------------------------------------------------------------------------
【破解总结】


1、作者在这个软件总共计算了4组类似注册码的字符串,但是只有最后一组是能注册成功的。不知道为什么。难道有暗桩。而且。和机器码完全没有关系的。

2、每次(4次)算法由一个常数贯穿整个算法。它们分别是“456”“46”“56”“345”。就是“345”这个常数的计算成为最终真码

算法分三个部分,如:90459-8498385-1888875。比较简单。

注册信息放在
HKEY_LOCAL_MACHINE\SOFTWARE\lsjsoft\spa\SerialNo