飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3558|回复: 4

[原创] WinASO Registry Optimizer Version 3.2算法分析--第一次分析出算法

[复制链接]

该用户从未签到

发表于 2008-3-18 20:55:11 | 显示全部楼层 |阅读模式
【文章标题】: WinASO Registry Optimizer Version 3.2算法分析
【文章作者】: unpack
【软件名称】: WinASO Registry Optimizer Version 3.2
【下载地址】: 自己搜索下载
【加壳方式】: 无
【保护方式】: 注册码
【编写语言】: Borland Delphi 6.0 - 7.0 [Overlay]
【使用工具】: PEiD,OD
【操作平台】: Windows XP
【软件介绍】: WinASO Registry Optimizer scans the Windows registry and finds incorrect or obsolete information in the registry. By fixing these obsolete information in Windows registry, your system will run faster and error free.


【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
  【破解内容】
  首先,在飘云阁看到了老鸟的一篇文章
  https://www.chinapyg.com/viewthr ... &extra=page%3D1
  然后下了去下载软件,已经有这个最新版本了!
  于是试着破解,用了几个小时,有了菜鸟我的第一次分析出算法!
  只在于交流,不要散布注册码,否则后果自负!
  --------------------------------------------------------------
  **************************************************************
  一、用PEiD对这个软件查壳,为 Borland Delphi 6.0 - 7.0 [Overlay]
  **************************************************************
  二、运行程序,进行注册,输入错误的注册信息进行检测,提示信息
  "Sorry,that is an invalid license key.Please ensure you have entered the license key exactly as provided."
  **************************************************************
  三、运行OD,按F9运行,然后注册,输入假注册码(我的为5555-4444-3333-2222-1111),然后插件-->API断点设置工具-->常用断点设置-->勾选MessageBoxA和MessageBoxExA,然后点Register(注册)
  四、程序中断下来,F8单步走,弹出注册失败对话框,点确定,再接着F8跟踪,来到到领空(还是有点不完全理解领空),往上,找到
  1.   0056A38C  /.  55            push    ebp
复制代码
然后下断,按F9运行,再点   “注册”  中断下来,进行下面的分析!
  **************************************************************
  【详细过程】
  1.   0056A38C  /.  55            push    ebp
  2.   0056A38D  |.  8BEC          mov     ebp, esp
  3.   0056A38F  |.  B9 0E000000   mov     ecx, 0E                          ;  0E=14
  4.   0056A394  |>  6A 00         /push    0
  5.   0056A396  |.  6A 00         |push    0
  6.   0056A398  |.  49            |dec     ecx
  7.   0056A399    ^ 75 F9         \jnz     short 0056A394                  ;  循环十四次
  8.   0056A39B      51            push    ecx
  9.   0056A39C      53            push    ebx
  10.   0056A39D      56            push    esi
  11.   0056A39E      57            push    edi
  12.   0056A39F      8BD8          mov     ebx, eax
  13.   0056A3A1      33C0          xor     eax, eax
  14.   0056A3A3      55            push    ebp
  15.   0056A3A4      68 E4A95600   push    0056A9E4
  16.   0056A3A9      64:FF30       push    dword ptr fs:[eax]
  17.   0056A3AC      64:8920       mov     fs:[eax], esp
  18.   0056A3AF      8D45 FC       lea     eax, [ebp-4]
  19.   0056A3B2      8B15 84055A00 mov     edx, [5A0584]                    ;  RegOpt.005A55E0
  20.   0056A3B8      8B92 70080000 mov     edx, [edx+870]
  21.   0056A3BE      E8 6DAEE9FF   call    00405230
  22.   0056A3C3      8D55 F4       lea     edx, [ebp-C]
  23.   0056A3C6      8B83 A4030000 mov     eax, [ebx+3A4]
  24.   0056A3CC      E8 4BC9EEFF   call    00456D1C
  25.   0056A3D1      8B45 F4       mov     eax, [ebp-C]                     ;  把第一个框的注册码赋给eax!
  26.   0056A3D4      E8 9B45F6FF   call    004CE974
  27.   0056A3D9      84C0          test    al, al                           ;  比较第一个注册框是否为空,如果不是数字也定为空
  28.   0056A3DB      75 2E         jnz     short 0056A40B                   ;  不为空的话跳转
  29.   0056A3DD      6A 40         push    40
  30.   0056A3DF      A1 84055A00   mov     eax, [5A0584]
  31.   0056A3E4      8B80 6C080000 mov     eax, [eax+86C]
  32.   0056A3EA      E8 6DB2E9FF   call    0040565C
  33.   0056A3EF      50            push    eax
  34.   0056A3F0      8B45 FC       mov     eax, [ebp-4]
  35.   0056A3F3      E8 64B2E9FF   call    0040565C
  36.   0056A3F8      50            push    eax
  37.   0056A3F9      8BC3          mov     eax, ebx
  38.   0056A3FB      E8 1C44EFFF   call    0045E81C
  39.   0056A400      50            push    eax                              ; |hOwner
  40.   0056A401      E8 36DFE9FF   call    <jmp.&user32.MessageBoxA>        ; \弹出注册失败对话框!
  41.   0056A406      E9 6D050000   jmp     0056A978
  42.   0056A40B      8D55 F0       lea     edx, [ebp-10]
  43.   0056A40E      8B83 A8030000 mov     eax, [ebx+3A8]
  44.   0056A414      E8 03C9EEFF   call    00456D1C
  45.   0056A419      8B45 F0       mov     eax, [ebp-10]                    ;  把第二个框的注册码赋给eax!
  46.   0056A41C      E8 5345F6FF   call    004CE974
  47.   0056A421      84C0          test    al, al                           ;  比较第二个注册框是否为空,且不是数字也定为空处理
  48.   0056A423      75 2E         jnz     short 0056A453                   ;  不为空的话跳转
  49.   0056A425      6A 40         push    40
  50.   0056A427      A1 84055A00   mov     eax, [5A0584]
  51.   0056A42C      8B80 6C080000 mov     eax, [eax+86C]
  52.   0056A432      E8 25B2E9FF   call    0040565C
  53.   0056A437      50            push    eax
  54.   0056A438      8B45 FC       mov     eax, [ebp-4]
  55.   0056A43B      E8 1CB2E9FF   call    0040565C
  56.   0056A440      50            push    eax
  57.   0056A441      8BC3          mov     eax, ebx
  58.   0056A443      E8 D443EFFF   call    0045E81C
  59.   0056A448      50            push    eax                              ; |hOwner
  60.   0056A449      E8 EEDEE9FF   call    <jmp.&user32.MessageBoxA>        ; \弹出注册失败对话框!
  61.   0056A44E      E9 25050000   jmp     0056A978
  62.   0056A453      8D55 EC       lea     edx, [ebp-14]
  63.   0056A456      8B83 AC030000 mov     eax, [ebx+3AC]
  64.   0056A45C      E8 BBC8EEFF   call    00456D1C
  65.   0056A461      8B45 EC       mov     eax, [ebp-14]                    ;  把第三个框的注册码赋给eax!
  66.   0056A464      E8 0B45F6FF   call    004CE974
  67.   0056A469      84C0          test    al, al                           ;  比较第三个注册框是否为空,且同上
  68.   0056A46B      75 2E         jnz     short 0056A49B                   ;  不为空的话跳转
  69.   0056A46D      6A 40         push    40
  70.   0056A46F      A1 84055A00   mov     eax, [5A0584]
  71.   0056A474      8B80 6C080000 mov     eax, [eax+86C]
  72.   0056A47A      E8 DDB1E9FF   call    0040565C
  73.   0056A47F      50            push    eax
  74.   0056A480      8B45 FC       mov     eax, [ebp-4]
  75.   0056A483      E8 D4B1E9FF   call    0040565C
  76.   0056A488      50            push    eax
  77.   0056A489      8BC3          mov     eax, ebx
  78.   0056A48B      E8 8C43EFFF   call    0045E81C
  79.   0056A490      50            push    eax                              ; |hOwner
  80.   0056A491      E8 A6DEE9FF   call    <jmp.&user32.MessageBoxA>        ; \弹出注册失败对话框!
  81.   0056A496      E9 DD040000   jmp     0056A978
  82.   0056A49B      8D55 E8       lea     edx, [ebp-18]
  83.   0056A49E      8B83 B0030000 mov     eax, [ebx+3B0]
  84.   0056A4A4      E8 73C8EEFF   call    00456D1C
  85.   0056A4A9      8B45 E8       mov     eax, [ebp-18]                    ;  把第四个框的注册码赋给eax!
  86.   0056A4AC      E8 C344F6FF   call    004CE974
  87.   0056A4B1      84C0          test    al, al                           ;  比较第四个注册框是否为空,且同上
  88.   0056A4B3      75 2E         jnz     short 0056A4E3                   ;  不为空的话跳转
  89.   0056A4B5      6A 40         push    40
  90.   0056A4B7      A1 84055A00   mov     eax, [5A0584]
  91.   0056A4BC      8B80 6C080000 mov     eax, [eax+86C]
  92.   0056A4C2      E8 95B1E9FF   call    0040565C
  93.   0056A4C7      50            push    eax
  94.   0056A4C8      8B45 FC       mov     eax, [ebp-4]
  95.   0056A4CB      E8 8CB1E9FF   call    0040565C
  96.   0056A4D0      50            push    eax
  97.   0056A4D1      8BC3          mov     eax, ebx
  98.   0056A4D3      E8 4443EFFF   call    0045E81C
  99.   0056A4D8      50            push    eax                              ; |hOwner
  100.   0056A4D9      E8 5EDEE9FF   call    <jmp.&user32.MessageBoxA>        ; \弹出注册失败对话框!
  101.   0056A4DE      E9 95040000   jmp     0056A978
  102.   0056A4E3      8D55 E4       lea     edx, [ebp-1C]
  103.   0056A4E6      8B83 B4030000 mov     eax, [ebx+3B4]
  104.   0056A4EC      E8 2BC8EEFF   call    00456D1C
  105.   0056A4F1      8B45 E4       mov     eax, [ebp-1C]                    ;  把第五个框的注册码赋给eax!
  106.   0056A4F4      E8 7B44F6FF   call    004CE974
  107.   0056A4F9      84C0          test    al, al                           ;  比较第五个注册框是否为空,且同上
  108.   0056A4FB      75 2E         jnz     short 0056A52B                   ;  不为空的话跳转
  109.   0056A4FD      6A 40         push    40
  110.   0056A4FF      A1 84055A00   mov     eax, [5A0584]
  111.   0056A504      8B80 6C080000 mov     eax, [eax+86C]
  112.   0056A50A      E8 4DB1E9FF   call    0040565C
  113.   0056A50F      50            push    eax
  114.   0056A510      8B45 FC       mov     eax, [ebp-4]
  115.   0056A513      E8 44B1E9FF   call    0040565C
  116.   0056A518      50            push    eax
  117.   0056A519      8BC3          mov     eax, ebx
  118.   0056A51B      E8 FC42EFFF   call    0045E81C
  119.   0056A520      50            push    eax                              ; |hOwner
  120.   0056A521      E8 16DEE9FF   call    <jmp.&user32.MessageBoxA>        ; \弹出注册失败对话框!
  121.   0056A526      E9 4D040000   jmp     0056A978
  122.   0056A52B      8D55 E0       lea     edx, [ebp-20]
  123.   0056A52E      8B83 A4030000 mov     eax, [ebx+3A4]
  124.   0056A534      E8 E3C7EEFF   call    00456D1C
  125.   0056A539      8B45 E0       mov     eax, [ebp-20]                    ;  将注册码第一个框的注册码给eax
  126.   0056A53C      8945 DC       mov     [ebp-24], eax
  127.   0056A53F      8B45 DC       mov     eax, [ebp-24]
  128.   0056A542      85C0          test    eax, eax
  129.   0056A544      74 05         je      short 0056A54B
  130.   0056A546      83E8 04       sub     eax, 4
  131.   0056A549      8B00          mov     eax, [eax]
  132.   0056A54B      83F8 04       cmp     eax, 4                           ;  将eax与4比较
  133.   0056A54E      74 2E         je      short 0056A57E                   ;  判断第一个框注册码是否是四位
  134.   0056A550      6A 40         push    40
  135.   0056A552      A1 84055A00   mov     eax, [5A0584]
  136.   0056A557      8B80 6C080000 mov     eax, [eax+86C]
  137.   0056A55D      E8 FAB0E9FF   call    0040565C
  138.   0056A562      50            push    eax
  139.   0056A563      8B45 FC       mov     eax, [ebp-4]
  140.   0056A566      E8 F1B0E9FF   call    0040565C
  141.   0056A56B      50            push    eax
  142.   0056A56C      8BC3          mov     eax, ebx
  143.   0056A56E      E8 A942EFFF   call    0045E81C
  144.   0056A573      50            push    eax                              ; |hOwner
  145.   0056A574      E8 C3DDE9FF   call    <jmp.&user32.MessageBoxA>        ; \注册失败对话框
  146.   0056A579      E9 FA030000   jmp     0056A978
  147.   0056A57E      8D55 D8       lea     edx, [ebp-28]
  148.   0056A581      8B83 A8030000 mov     eax, [ebx+3A8]
  149.   0056A587      E8 90C7EEFF   call    00456D1C
  150.   0056A58C      8B45 D8       mov     eax, [ebp-28]                    ;  将注册码第二个注册框的注册码给eax
  151.   0056A58F      8945 DC       mov     [ebp-24], eax
  152.   0056A592      8B45 DC       mov     eax, [ebp-24]
  153.   0056A595      85C0          test    eax, eax
  154.   0056A597      74 05         je      short 0056A59E
  155.   0056A599      83E8 04       sub     eax, 4
  156.   0056A59C      8B00          mov     eax, [eax]
  157.   0056A59E      83F8 04       cmp     eax, 4                           ;  与4比较
  158.   0056A5A1      74 2E         je      short 0056A5D1                   ;  判断第二个注册框的注册码是否是四位
  159.   0056A5A3      6A 40         push    40
  160.   0056A5A5      A1 84055A00   mov     eax, [5A0584]
  161.   0056A5AA      8B80 6C080000 mov     eax, [eax+86C]
  162.   0056A5B0      E8 A7B0E9FF   call    0040565C
  163.   0056A5B5      50            push    eax
  164.   0056A5B6      8B45 FC       mov     eax, [ebp-4]
  165.   0056A5B9      E8 9EB0E9FF   call    0040565C
  166.   0056A5BE      50            push    eax
  167.   0056A5BF      8BC3          mov     eax, ebx
  168.   0056A5C1      E8 5642EFFF   call    0045E81C
  169.   0056A5C6      50            push    eax                              ; |hOwner
  170.   0056A5C7      E8 70DDE9FF   call    <jmp.&user32.MessageBoxA>        ; \注册失败对话框!
  171.   0056A5CC      E9 A7030000   jmp     0056A978
  172.   0056A5D1      8D55 D4       lea     edx, [ebp-2C]
  173.   0056A5D4      8B83 AC030000 mov     eax, [ebx+3AC]
  174.   0056A5DA      E8 3DC7EEFF   call    00456D1C
  175.   0056A5DF      8B45 D4       mov     eax, [ebp-2C]                    ;  将注册码第三个注册框的注册码给eax
  176.   0056A5E2      8945 DC       mov     [ebp-24], eax
  177.   0056A5E5      8B45 DC       mov     eax, [ebp-24]
  178.   0056A5E8      85C0          test    eax, eax
  179.   0056A5EA      74 05         je      short 0056A5F1
  180.   0056A5EC      83E8 04       sub     eax, 4
  181.   0056A5EF      8B00          mov     eax, [eax]
  182.   0056A5F1      83F8 04       cmp     eax, 4                           ;  与4比较
  183.   0056A5F4      74 2E         je      short 0056A624                   ;  判断第三个注册框的注册码是否为四位
  184.   0056A5F6      6A 40         push    40
  185.   0056A5F8      A1 84055A00   mov     eax, [5A0584]
  186.   0056A5FD      8B80 6C080000 mov     eax, [eax+86C]
  187.   0056A603      E8 54B0E9FF   call    0040565C
  188.   0056A608      50            push    eax
  189.   0056A609      8B45 FC       mov     eax, [ebp-4]
  190.   0056A60C      E8 4BB0E9FF   call    0040565C
  191.   0056A611      50            push    eax
  192.   0056A612      8BC3          mov     eax, ebx
  193.   0056A614      E8 0342EFFF   call    0045E81C
  194.   0056A619      50            push    eax                              ; |hOwner
  195.   0056A61A      E8 1DDDE9FF   call    <jmp.&user32.MessageBoxA>        ; \注册失败对话框!
  196.   0056A61F      E9 54030000   jmp     0056A978
  197.   0056A624      8D55 D0       lea     edx, [ebp-30]
  198.   0056A627      8B83 B0030000 mov     eax, [ebx+3B0]
  199.   0056A62D      E8 EAC6EEFF   call    00456D1C
  200.   0056A632      8B45 D0       mov     eax, [ebp-30]                    ;  将注册码第四个注册框的注册码给eax
  201.   0056A635      8945 DC       mov     [ebp-24], eax
  202.   0056A638      8B45 DC       mov     eax, [ebp-24]
  203.   0056A63B      85C0          test    eax, eax
  204.   0056A63D      74 05         je      short 0056A644
  205.   0056A63F      83E8 04       sub     eax, 4
  206.   0056A642      8B00          mov     eax, [eax]
  207.   0056A644      83F8 04       cmp     eax, 4                           ;  与4比较
  208.   0056A647      74 2E         je      short 0056A677                   ;  判断第四个注册框的注册码是否为四位
  209.   0056A649      6A 40         push    40
  210.   0056A64B      A1 84055A00   mov     eax, [5A0584]
  211.   0056A650      8B80 6C080000 mov     eax, [eax+86C]
  212.   0056A656      E8 01B0E9FF   call    0040565C
  213.   0056A65B      50            push    eax
  214.   0056A65C      8B45 FC       mov     eax, [ebp-4]
  215.   0056A65F      E8 F8AFE9FF   call    0040565C
  216.   0056A664      50            push    eax
  217.   0056A665      8BC3          mov     eax, ebx
  218.   0056A667      E8 B041EFFF   call    0045E81C
  219.   0056A66C      50            push    eax                              ; |hOwner
  220.   0056A66D      E8 CADCE9FF   call    <jmp.&user32.MessageBoxA>        ; \注册失败对话框
  221.   0056A672      E9 01030000   jmp     0056A978
  222.   0056A677      8D55 CC       lea     edx, [ebp-34]
  223.   0056A67A      8B83 B4030000 mov     eax, [ebx+3B4]
  224.   0056A680      E8 97C6EEFF   call    00456D1C
  225.   0056A685      8B45 CC       mov     eax, [ebp-34]                    ;  将注册码第五个注册框的注册码给eax
  226.   0056A688      8945 DC       mov     [ebp-24], eax
  227.   0056A68B      8B45 DC       mov     eax, [ebp-24]
  228.   0056A68E      85C0          test    eax, eax
  229.   0056A690      74 05         je      short 0056A697
  230.   0056A692      83E8 04       sub     eax, 4
  231.   0056A695      8B00          mov     eax, [eax]
  232.   0056A697      83F8 04       cmp     eax, 4                           ;  与4比较
  233.   0056A69A      74 2E         je      short 0056A6CA                   ;  判断第五个注册框的注册码是否未四位!
  234.   0056A69C      6A 40         push    40
  235.   0056A69E      A1 84055A00   mov     eax, [5A0584]
  236.   0056A6A3      8B80 6C080000 mov     eax, [eax+86C]
  237.   0056A6A9      E8 AEAFE9FF   call    0040565C
  238.   0056A6AE      50            push    eax
  239.   0056A6AF      8B45 FC       mov     eax, [ebp-4]
  240.   0056A6B2      E8 A5AFE9FF   call    0040565C
  241.   0056A6B7      50            push    eax
  242.   0056A6B8      8BC3          mov     eax, ebx
  243.   0056A6BA      E8 5D41EFFF   call    0045E81C
  244.   0056A6BF      50            push    eax                              ; |hOwner
  245.   0056A6C0      E8 77DCE9FF   call    <jmp.&user32.MessageBoxA>        ; \注册失败对话框
  246.   0056A6C5      E9 AE020000   jmp     0056A978
  247.   0056A6CA      8D55 C8       lea     edx, [ebp-38]
  248.   0056A6CD      8B83 A4030000 mov     eax, [ebx+3A4]
  249.   0056A6D3      E8 44C6EEFF   call    00456D1C
  250.   0056A6D8      8B45 C8       mov     eax, [ebp-38]                    ;  将第一个注册框的注册码给eax
  251.   0056A6DB      E8 D4F7E9FF   call    00409EB4
  252.   0056A6E0      8BF0          mov     esi, eax                         ;  将eax赋给esi(其中5555为十六进制的15B3)
  253.   0056A6E2      8D55 C4       lea     edx, [ebp-3C]
  254.   0056A6E5      8B83 A8030000 mov     eax, [ebx+3A8]
  255.   0056A6EB      E8 2CC6EEFF   call    00456D1C
  256.   0056A6F0      8B45 C4       mov     eax, [ebp-3C]                    ;  将第二个注册框的注册码给eax
  257.   0056A6F3      E8 BCF7E9FF   call    00409EB4
  258.   0056A6F8      8BF8          mov     edi, eax                         ;  将eax赋给edi(4444为十六进制的115C)
  259.   0056A6FA      8D55 C0       lea     edx, [ebp-40]
  260.   0056A6FD      8B83 AC030000 mov     eax, [ebx+3AC]
  261.   0056A703      E8 14C6EEFF   call    00456D1C
  262.   0056A708      8B45 C0       mov     eax, [ebp-40]                    ;  将第三个注册框的注册码(3333)给eax
  263.   0056A70B      E8 A4F7E9FF   call    00409EB4
  264.   0056A710      8945 F8       mov     [ebp-8], eax
  265.   0056A713      0FAFF7        imul    esi, edi                         ;  esi*edi=esi
  266.   0056A716      81EE 2B060000 sub     esi, 62B                         ;  esi-62B=esi(62B为十进制的1579)
  267.   0056A71C      81FE 10270000 cmp     esi, 2710                        ;  esi与2710比较(十进制为10000)
  268.   0056A722      7D 2E         jge     short 0056A752                   ;  大于等于则跳转
  269.   0056A724      6A 40         push    40
  270.   0056A726      A1 84055A00   mov     eax, [5A0584]
  271.   0056A72B      8B80 6C080000 mov     eax, [eax+86C]
  272.   0056A731      E8 26AFE9FF   call    0040565C
  273.   0056A736      50            push    eax
  274.   0056A737      8B45 FC       mov     eax, [ebp-4]
  275.   0056A73A      E8 1DAFE9FF   call    0040565C
  276.   0056A73F      50            push    eax
  277.   0056A740      8BC3          mov     eax, ebx
  278.   0056A742      E8 D540EFFF   call    0045E81C
  279.   0056A747      50            push    eax                              ; |hOwner
  280.   0056A748      E8 EFDBE9FF   call    <jmp.&user32.MessageBoxA>        ; \注册失败对话框
  281.   0056A74D      E9 26020000   jmp     0056A978
  282.   0056A752      8D55 B8       lea     edx, [ebp-48]
  283.   0056A755      8BC6          mov     eax, esi                         ;  esi*edi-62B=esi赋给eax(算的十六进制为178A929)
  284.   0056A757      E8 1CF6E9FF   call    00409D78                         ;  178A929就是十进制的24684841
  285.   0056A75C      8B45 B8       mov     eax, [ebp-48]                    ;  算的第四位的注册码为24684841
  286.   0056A75F      8D4D BC       lea     ecx, [ebp-44]
  287.   0056A762      BA 04000000   mov     edx, 4                           ;  将4赋给edx
  288.   0056A767      E8 24DDEDFF   call    00448490
  289.   0056A76C      8B45 BC       mov     eax, [ebp-44]                    ;  取第四位注册码的后四位即4841
  290.   0056A76F      50            push    eax                              ;  eax压栈
  291.   0056A770      8D55 B4       lea     edx, [ebp-4C]
  292.   0056A773      8B83 B0030000 mov     eax, [ebx+3B0]
  293.   0056A779      E8 9EC5EEFF   call    00456D1C
  294.   0056A77E      8B55 B4       mov     edx, [ebp-4C]                    ;  第四个注册框的注册码给edx为1234
  295.   0056A781      58            pop     eax
  296.   0056A782      E8 21AEE9FF   call    004055A8
  297.   0056A787      74 2E         je      short 0056A7B7                   ;  比较假码与真码,相等则跳
  298.   0056A789      6A 40         push    40
  299.   0056A78B      A1 84055A00   mov     eax, [5A0584]
  300.   0056A790      8B80 6C080000 mov     eax, [eax+86C]
  301.   0056A796      E8 C1AEE9FF   call    0040565C
  302.   0056A79B      50            push    eax
  303.   0056A79C      8B45 FC       mov     eax, [ebp-4]
  304.   0056A79F      E8 B8AEE9FF   call    0040565C
  305.   0056A7A4      50            push    eax
  306.   0056A7A5      8BC3          mov     eax, ebx
  307.   0056A7A7      E8 7040EFFF   call    0045E81C
  308.   0056A7AC      50            push    eax                              ; |hOwner
  309.   0056A7AD      E8 8ADBE9FF   call    <jmp.&user32.MessageBoxA>        ; \注册失败对话框
  310.   0056A7B2      E9 C1010000   jmp     0056A978
  311.   0056A7B7      8B75 F8       mov     esi, [ebp-8]                     ;  将第三个对话框的注册码给esi(3333为十六进制的0D05)
  312.   0056A7BA      81C6 01020000 add     esi, 201                         ;  esi+201(十进制为513)=F06
  313.   0056A7C0      0FAFF7        imul    esi, edi                         ;  esi*edi=esi(F06*115C=104CC28)
  314.   0056A7C3      81EE F50D0000 sub     esi, 0DF5                        ;  esi-0DF5(十进制为3573)=esi(算的为104BE33)
  315.   0056A7C9      8D55 AC       lea     edx, [ebp-54]
  316.   0056A7CC      8BC6          mov     eax, esi
  317.   0056A7CE      E8 A5F5E9FF   call    00409D78
  318.   0056A7D3      8B45 AC       mov     eax, [ebp-54]                    ;  算的注册码为十六进制104BE33等于十进制17088051
  319.   0056A7D6      8D4D B0       lea     ecx, [ebp-50]
  320.   0056A7D9      BA 04000000   mov     edx, 4                           ;  将4赋给edx
  321.   0056A7DE      E8 ADDCEDFF   call    00448490
  322.   0056A7E3      8B45 B0       mov     eax, [ebp-50]                    ;  将后四位给eax,即8051
  323.   0056A7E6      50            push    eax
  324.   0056A7E7      8D55 A8       lea     edx, [ebp-58]
  325.   0056A7EA      8B83 B4030000 mov     eax, [ebx+3B4]
  326.   0056A7F0      E8 27C5EEFF   call    00456D1C
  327.   0056A7F5      8B55 A8       mov     edx, [ebp-58]                    ;  第五个对话框的假码给edx
  328.   0056A7F8      58            pop     eax
  329.   0056A7F9      E8 AAADE9FF   call    004055A8
  330.   0056A7FE      74 2E         je      short 0056A82E                   ;  真码假码比较
  331.   0056A800      6A 40         push    40
  332.   0056A802      A1 84055A00   mov     eax, [5A0584]
  333.   0056A807      8B80 6C080000 mov     eax, [eax+86C]
  334.   0056A80D      E8 4AAEE9FF   call    0040565C
  335.   0056A812      50            push    eax
  336.   0056A813      8B45 FC       mov     eax, [ebp-4]
  337.   0056A816      E8 41AEE9FF   call    0040565C
  338.   0056A81B      50            push    eax
  339.   0056A81C      8BC3          mov     eax, ebx
  340.   0056A81E      E8 F93FEFFF   call    0045E81C
  341.   0056A823      50            push    eax                              ; |hOwner
  342.   0056A824      E8 13DBE9FF   call    <jmp.&user32.MessageBoxA>        ; \注册失败对话框
  343.   0056A829      E9 4A010000   jmp     0056A978
  344.   0056A82E      8D55 A4       lea     edx, [ebp-5C]                     下面的代买好像是把注册码给注册表,并在同目录下生成一个注册信息文件。
  345.   0056A831      8B83 A4030000 mov     eax, [ebx+3A4]
  346.   0056A837      E8 E0C4EEFF   call    00456D1C
  347.   0056A83C      FF75 A4       push    dword ptr [ebp-5C]
  348.   0056A83F      8D55 A0       lea     edx, [ebp-60]
  349.   0056A842      8B83 A8030000 mov     eax, [ebx+3A8]
  350.   0056A848      E8 CFC4EEFF   call    00456D1C
  351.   0056A84D      FF75 A0       push    dword ptr [ebp-60]
  352.   0056A850      8D55 9C       lea     edx, [ebp-64]
  353.   0056A853      8B83 AC030000 mov     eax, [ebx+3AC]
  354.   0056A859      E8 BEC4EEFF   call    00456D1C
  355.   0056A85E      FF75 9C       push    dword ptr [ebp-64]
  356.   0056A861      8D55 98       lea     edx, [ebp-68]
  357.   0056A864      8B83 B0030000 mov     eax, [ebx+3B0]
  358.   0056A86A      E8 ADC4EEFF   call    00456D1C
  359.   0056A86F      FF75 98       push    dword ptr [ebp-68]
  360.   0056A872      8D55 94       lea     edx, [ebp-6C]
  361.   0056A875      8B83 B4030000 mov     eax, [ebx+3B4]
  362.   0056A87B      E8 9CC4EEFF   call    00456D1C
  363.   0056A880      FF75 94       push    dword ptr [ebp-6C]
  364.   0056A883      A1 CC115A00   mov     eax, [5A11CC]
  365.   0056A888      BA 05000000   mov     edx, 5
  366.   0056A88D      E8 8AACE9FF   call    0040551C
  367.   0056A892      B2 01         mov     dl, 1
  368.   0056A894      A1 8CCC4200   mov     eax, [42CC8C]
  369.   0056A899      E8 EE24ECFF   call    0042CD8C
  370.   0056A89E      8BF0          mov     esi, eax
  371.   0056A8A0      BA 02000080   mov     edx, 80000002
  372.   0056A8A5      8BC6          mov     eax, esi
  373.   0056A8A7      E8 8025ECFF   call    0042CE2C
  374.   0056A8AC      B1 01         mov     cl, 1
  375.   0056A8AE      BA FCA95600   mov     edx, 0056A9FC                    ;  ASCII "\SOFTWARE\WinASO\Registry Optimizer"
  376.   0056A8B3      8BC6          mov     eax, esi
  377.   0056A8B5      E8 B626ECFF   call    0042CF70
  378.   0056A8BA      84C0          test    al, al
  379.   0056A8BC      74 14         je      short 0056A8D2
  380.   0056A8BE  |.  8B0D CC115A00 mov     ecx, [5A11CC]                    ;  RegOpt.005A62D8
  381.   0056A8C4  |.  8B09          mov     ecx, [ecx]
  382.   0056A8C6  |.  BA 28AA5600   mov     edx, 0056AA28                    ;  ASCII "RegOptKey3.0"
  383.   0056A8CB  |.  8BC6          mov     eax, esi
  384.   0056A8CD  |.  E8 AA2DECFF   call    0042D67C
  385.   0056A8D2  |>  8D55 8C       lea     edx, [ebp-74]
  386.   0056A8D5  |.  A1 A40D5A00   mov     eax, [5A0DA4]
  387.   0056A8DA  |.  8B00          mov     eax, [eax]
  388.   0056A8DC  |.  E8 83A9F0FF   call    00475264
  389.   0056A8E1  |.  8B45 8C       mov     eax, [ebp-74]
  390.   0056A8E4  |.  8D55 90       lea     edx, [ebp-70]
  391.   0056A8E7  |.  E8 0CFDE9FF   call    0040A5F8
  392.   0056A8EC  |.  8D45 90       lea     eax, [ebp-70]
  393.   0056A8EF  |.  BA 40AA5600   mov     edx, 0056AA40                    ;  ASCII "regkey.ini"
  394.   0056A8F4  |.  E8 6BABE9FF   call    00405464
  395.   0056A8F9  |.  8B4D 90       mov     ecx, [ebp-70]
  396.   0056A8FC  |.  B2 01         mov     dl, 1
  397.   0056A8FE  |.  A1 BCAE4200   mov     eax, [42AEBC]
  398.   0056A903  |.  E8 6C06ECFF   call    0042AF74
  399.   0056A908  |.  8BF0          mov     esi, eax
  400.   0056A90A  |.  A1 CC115A00   mov     eax, [5A11CC]
  401.   0056A90F  |.  8B00          mov     eax, [eax]
  402.   0056A911  |.  50            push    eax
  403.   0056A912  |.  B9 54AA5600   mov     ecx, 0056AA54                    ;  ASCII "300"
  404.   0056A917  |.  BA 60AA5600   mov     edx, 0056AA60                    ;  ASCII "regkey"
  405.   0056A91C  |.  8BC6          mov     eax, esi
  406.   0056A91E  |.  8B38          mov     edi, [eax]
  407.   0056A920  |.  FF57 04       call    [edi+4]
  408.   0056A923  |.  8BC6          mov     eax, esi
  409.   0056A925  |.  E8 2E99E9FF   call    00404258
  410.   0056A92A  |.  6A 40         push    40
  411.   0056A92C  |.  A1 84055A00   mov     eax, [5A0584]
  412.   0056A931  |.  8B80 6C080000 mov     eax, [eax+86C]
  413.   0056A937  |.  E8 20ADE9FF   call    0040565C
  414.   0056A93C  |.  50            push    eax
  415.   0056A93D  |.  A1 84055A00   mov     eax, [5A0584]
  416.   0056A942  |.  8B80 74080000 mov     eax, [eax+874]
  417.   0056A948  |.  E8 0FADE9FF   call    0040565C
  418.   0056A94D  |.  50            push    eax
  419.   0056A94E  |.  8BC3          mov     eax, ebx
  420.   0056A950  |.  E8 C73EEFFF   call    0045E81C
  421.   0056A955  |.  50            push    eax                              ; |hOwner
  422.   0056A956  |.  E8 E1D9E9FF   call    <jmp.&user32.MessageBoxA>        ; \注册成功弹框
  423.   0056A95B  |.  8BC3          mov     eax, ebx
  424.   0056A95D  |.  E8 DE63F0FF   call    00470D40
  425.   0056A962  |.  6A 00         push    0                                ; /lParam = 0
  426.   0056A964  |.  6A 00         push    0                                ; |wParam = 0
  427.   0056A966  |.  68 78070000   push    778                              ; |Message = MSG(778)
  428.   0056A96B  |.  A1 E00D5A00   mov     eax, [5A0DE0]                    ; |
  429.   0056A970  |.  8B00          mov     eax, [eax]                       ; |
  430.   0056A972  |.  50            push    eax                              ; |hWnd
  431.   0056A973  |.  E8 64DAE9FF   call    <jmp.&user32.SendMessageA>       ; \SendMessageA
  432.   
  433.   
复制代码
其中还有下面这些地方不懂,请高手指教!
  1.   0056A57E      8D55 D8       lea     edx, [ebp-28]
  2.   0056A581      8B83 A8030000 mov     eax, [ebx+3A8]
  3.   0056A587      E8 90C7EEFF   call    00456D1C
  4.   0056A58C      8B45 D8       mov     eax, [ebp-28]                    ;  将注册码第二个注册框的注册码给eax
  5.   0056A58F      8945 DC       mov     [ebp-24], eax
  6.   0056A592      8B45 DC       mov     eax, [ebp-24]
  7.   0056A595      85C0          test    eax, eax
  8.   0056A597      74 05         je      short 0056A59E
  9.   0056A599      83E8 04       sub     eax, 4
  10.   0056A59C      8B00          mov     eax, [eax]
  11.   0056A59E      83F8 04       cmp     eax, 4                           ;  与4比较
  12.   0056A5A1      74 2E         je      short 0056A5D1                   ;  判断第二个注册框的注册码是否是四位
  13.   
复制代码
中间的三个mov是用来干什么的没有很好地理解!
  感谢大家看完!
--------------------------------------------------------------------------------
【经验总结】
  算法总结:
  1、共五个注册框,其中每个框必须要四位,且必须为数字(0-9),也就是20位。
  2、第一个,第二个,第三个注册码只要求位数字就行,可以随便输入数字。
  3、我们假设第一个注册框的四位数设为A、第二个注册框的四位数字为B、第三个的为C、第四个的为D、第五个的为E,则先
  判断A*B-1579(十六进制为62B),结果设等于X,即X=A*B-1579,然后将X与10000(十六进制为2710)比较,大于或等于就接
  着进行下一步,否者注册跳转失败。
  4、第四个和第五个是通过前三个注册框算的出来:第四个的注册框为第三步的X的后四位。
  5、第五个注册框的算法如下:(C+513(十六进制为201))*B-3573(即十六进制0DF5)结果设等于Y,即Y=(C+513)*B-3573,然
  后结果的后四位给第五个注册框。
  
  如果改为未注册版本的话,须删除注册表中注册信息,以及regkey.ini这个文件!
  ******************************************************************************
  【算法注册机】:
  不会做
  ******************************************************************************
  【注册码】
  用我开始注册的假码的到的注册码为:5555-4444-3333-4841-8051
  ******************************************************************************
  感谢论坛高手的破解算法文章,真的学到了很多!打算以后要好好打好基础,学会一些高级语言,和汇编语言!
  
--------------------------------------------------------------------------------
【版权声明】: 只是感兴趣;本破文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2008年03月18日 20:44:3

[ 本帖最后由 unpack 于 2008-3-18 21:02 编辑 ]
PYG19周年生日快乐!

该用户从未签到

 楼主| 发表于 2008-3-18 21:03:58 | 显示全部楼层
沙发自己做了
等待高手的指点以及批评!/:014
PYG19周年生日快乐!

该用户从未签到

发表于 2008-3-20 23:41:59 | 显示全部楼层
改天我做算法注册机。

[ 本帖最后由 binke 于 2008-3-21 00:18 编辑 ]
PYG19周年生日快乐!
  • TA的每日心情
    开心
    2016-5-16 14:37
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2008-3-21 18:18:20 | 显示全部楼层
    向楼主致敬,向楼主学习
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-3-25 23:59:41 | 显示全部楼层
    注册机基本完成了,还有些小问题需要优化。。以前做好的已经在论坛上发了。但是那个算法并不完美,这个算法注册机已经完美了。向楼主学习。。。完美的算法注册机见附件。

    [ 本帖最后由 binke 于 2008-4-2 15:37 编辑 ]

    注册机2.rar

    20.27 KB, 下载次数: 3, 下载积分: 飘云币 -2 枚

    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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