飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3676|回复: 7

[原创] ScreensaverShot 3.1 算法分析

[复制链接]

该用户从未签到

发表于 2008-10-24 11:45:02 | 显示全部楼层 |阅读模式
ScreensaverShot 3.1  
软件大小:1068KB
软件类别:国外软件/桌面制作  
软件授权:共享版
软件语言:英文
运行环境:Win9x/Me/NT/2000/XP/2003
下载地址:http://www.onlinedown.net/soft/9966.htm

软件信息:
      ScreensaverShot 让你无需任何编程经验,就可以制作出最具感染力的屏幕保护作品。此软件制作屏幕保护十分简单方便,共分以下三个步骤:1.选择图片,支持 bmp,jpg 和 jpeg 格式;2.选择背景颜色和音乐,音乐格式包括 mp3,mid,rmi 和 wav;3.生成屏幕保护。

软件是 UPX 压缩壳,由 DELPHI 编的,注册成功时有提示.
00483000  /.  55              push    ebp
00483001  |.  8BEC            mov     ebp, esp
00483003  |.  6A 00           push    0
00483005  |.  6A 00           push    0
00483007  |.  6A 00           push    0
00483009  |.  53              push    ebx
0048300A  |.  8BD8            mov     ebx, eax
0048300C  |.  33C0            xor     eax, eax
0048300E  |.  55              push    ebp
0048300F  |.  68 9B304800     push    0048309B
00483014  |.  64:FF30         push    dword ptr fs:[eax]
00483017  |.  64:8920         mov     dword ptr fs:[eax], esp
0048301A  |.  8D55 F8         lea     edx, [local.2]
0048301D  |.  8B83 04030000   mov     eax, dword ptr ds:[ebx+304]
00483023  |.  E8 986FFCFF     call    00449FC0
00483028  |.  8B45 F8         mov     eax, [local.2]
0048302B  |.  8D4D FC         lea     ecx, [local.1]
0048302E  |.  8B93 14030000   mov     edx, dword ptr ds:[ebx+314]
00483034  |.  E8 9FFBFFFF     call    00482BD8                          ;  算法 CALL 1 ,跟进
00483039  |.  8B45 FC         mov     eax, [local.1]
0048303C  |.  50              push    eax
0048303D  |.  8D55 F4         lea     edx, [local.3]
00483040  |.  8B83 08030000   mov     eax, dword ptr ds:[ebx+308]
00483046  |.  E8 756FFCFF     call    00449FC0
0048304B  |.  8B55 F4         mov     edx, [local.3]
0048304E  |.  58              pop     eax                               ;  00A582A4
0048304F  |.  E8 8413F8FF     call    004043D8                          ;  此处可以做内存注册机
00483054  |.  75 22           jnz     short 00483078
00483056  |.  6A 00           push    0
00483058  |.  B9 A8304800     mov     ecx, 004830A8                     ;  ASCII "Step3"
0048305D  |.  BA B0304800     mov     edx, 004830B0                     ;  ASCII "OK. Successfully registered!"
00483062  |.  A1 448C4800     mov     eax, dword ptr ds:[488C44]
00483067  |.  8B00            mov     eax, dword ptr ds:[eax]
00483069  |.  E8 EA7FFEFF     call    0046B058
0048306E  |.  C783 4C020000 0>mov     dword ptr ds:[ebx+24C], 1
00483078  |>  33C0            xor     eax, eax
0048307A  |.  5A              pop     edx
0048307B  |.  59              pop     ecx
0048307C  |.  59              pop     ecx
0048307D  |.  64:8910         mov     dword ptr fs:[eax], edx
00483080  |.  68 A2304800     push    004830A2
00483085  |>  8D45 F4         lea     eax, [local.3]
00483088  |.  BA 02000000     mov     edx, 2
0048308D  |.  E8 5E0FF8FF     call    00403FF0
00483092  |.  8D45 FC         lea     eax, [local.1]
00483095  |.  E8 320FF8FF     call    00403FCC
0048309A  \.  C3              retn
0048309B   .^ E9 3009F8FF     jmp     004039D0
004830A0   .^ EB E3           jmp     short 00483085
004830A2   .  5B              pop     ebx
004830A3   .  8BE5            mov     esp, ebp
004830A5   .  5D              pop     ebp
004830A6   .  C3              retn


算法CALL 1
00482BD8  /$  55              push    ebp
00482BD9  |.  8BEC            mov     ebp, esp
00482BDB  |.  83C4 EC         add     esp, -14
00482BDE  |.  53              push    ebx
00482BDF  |.  56              push    esi
00482BE0  |.  57              push    edi
00482BE1  |.  33DB            xor     ebx, ebx
00482BE3  |.  895D EC         mov     [local.5], ebx
00482BE6  |.  894D F4         mov     [local.3], ecx
00482BE9  |.  8955 F8         mov     [local.2], edx                   ;  定值:4D3
00482BEC  |.  8945 FC         mov     [local.1], eax                   ;  注册名
00482BEF  |.  8B45 FC         mov     eax, [local.1]
00482BF2  |.  E8 8518F8FF     call    0040447C
00482BF7  |.  33C0            xor     eax, eax
00482BF9  |.  55              push    ebp
00482BFA  |.  68 B02C4800     push    00482CB0
00482BFF  |.  64:FF30         push    dword ptr fs:[eax]
00482C02  |.  64:8920         mov     dword ptr fs:[eax], esp
00482C05  |.  8B45 FC         mov     eax, [local.1]                   ;  注册名
00482C08  |.  E8 7F16F8FF     call    0040428C                         ;  计算注册名长度
00482C0D  |.  8945 F0         mov     [local.4], eax                   ;  注册名长度
00482C10  |.  8B75 F8         mov     esi, [local.2]                   ;  esi = 定值:4D3
00482C13  |.  8B45 F0         mov     eax, [local.4]                   ;  eax = 注册名长度
00482C16  |.  85C0            test    eax, eax
00482C18  |.  7E 13           jle     short 00482C2D
00482C1A  |.  BF 01000000     mov     edi, 1                           ;  edi = 1
00482C1F  |>  8B55 FC         /mov     edx, [local.1]                  ;  edx = 注册名 ,试炼码"ZHOU2X"
00482C22  |.  0FB6543A FF     |movzx   edx, byte ptr ds:[edx+edi-1]    ;  edx = 注册名取代码
00482C27  |.  03F2            |add     esi, edx                        ;  加法,esi = esi + edx
00482C29  |.  47              |inc     edi                             ;  edi = edi + 1
00482C2A  |.  48              |dec     eax                             ;  eax = eax - 1
00482C2B  |.^ 75 F2           \jnz     short 00482C1F                  ;  判断循环 ,结果 esi = 6A3
00482C2D  |>  8B45 F4         mov     eax, [local.3]
00482C30  |.  E8 9713F8FF     call    00403FCC
00482C35  |.  33FF            xor     edi, edi
00482C37  |>  8BC6            /mov     eax, esi                        ;  eax = esi
00482C39  |.  B9 24000000     |mov     ecx, 24                         ;  ecx = 24
00482C3E  |.  99              |cdq
00482C3F  |.  F7F9            |idiv    ecx                             ;  除法,eax = eax / ecx
00482C41  |.  8BC2            |mov     eax, edx                        ;  edx = 余数,eax = edx
00482C43  |.  E8 68FFFFFF     |call    00482BB0                        ;  算法 CALL 2
00482C48  |.  8BD8            |mov     ebx, eax                        ;  ebx = eax
00482C4A  |.  8BC3            |mov     eax, ebx                        ;  eax = ebx
00482C4C  |.  04 D0           |add     al, 0D0                         ;  al = al + 0D0
00482C4E  |.  2C 02           |sub     al, 2                           ;  al = al - 2
00482C50  |.  72 21           |jb      short 00482C73                  ;  小于 则 跳转
00482C52  |.  2C 17           |sub     al, 17                          ;  al = al - 17
00482C54  |.  74 1D           |je      short 00482C73                  ;  等于 则 跳转
00482C56  |.  2C 06           |sub     al, 6                           ;  al = al - 6
00482C58  |.  74 19           |je      short 00482C73                  ;  等于 则 跳转
00482C5A  |.  8D45 EC         |lea     eax, [local.5]
00482C5D  |.  8BD3            |mov     edx, ebx
00482C5F  |.  E8 5015F8FF     |call    004041B4
00482C64  |.  8B55 EC         |mov     edx, [local.5]
00482C67  |.  8B45 F4         |mov     eax, [local.3]
00482C6A  |.  E8 2516F8FF     |call    00404294                        ;  将算法 2 算出的注册码连接
00482C6F  |.  8B45 F4         |mov     eax, [local.3]
00482C72  |.  47              |inc     edi                             ;  edi = edi + 1
00482C73  |>  8BC7            |mov     eax, edi                        ;  eax = edi
00482C75  |.  99              |cdq
00482C76  |.  F77D F0         |idiv    [local.4]                       ;  除以 注册名长度
00482C79  |.  8BC2            |mov     eax, edx                        ;  edx = 余数,eax = edx
00482C7B  |.  40              |inc     eax                             ;  eax = eax + 1
00482C7C  |.  8B55 FC         |mov     edx, [local.1]                  ;  edx = 注册名
00482C7F  |.  0FB64402 FF     |movzx   eax, byte ptr ds:[edx+eax-1]    ;  eax = edx 取代码
00482C84  |.  2BF0            |sub     esi, eax                        ;  esi = esi - eax
00482C86  |.  85F6            |test    esi, esi
00482C88  |.  7D 03           |jge     short 00482C8D                  ;  esi 大于等于 eax 则跳转
00482C8A  |.  0375 F8         |add     esi, [local.2]                  ;  否则 esi = esi + 4D3
00482C8D  |>  83FF 0A         |cmp     edi, 0A                         ;  edi 与 0A 比较
00482C90  |.^ 7C A5           \jl      short 00482C37                  ;  小于 则 循环
00482C92  |.  33C0            xor     eax, eax
00482C94  |.  5A              pop     edx
00482C95  |.  59              pop     ecx
00482C96  |.  59              pop     ecx
00482C97  |.  64:8910         mov     dword ptr fs:[eax], edx
00482C9A  |.  68 B72C4800     push    00482CB7
00482C9F  |>  8D45 EC         lea     eax, [local.5]
00482CA2  |.  E8 2513F8FF     call    00403FCC
00482CA7  |.  8D45 FC         lea     eax, [local.1]
00482CAA  |.  E8 1D13F8FF     call    00403FCC
00482CAF  \.  C3              retn
00482CB0   .^ E9 1B0DF8FF     jmp     004039D0
00482CB5   .^ EB E8           jmp     short 00482C9F
00482CB7   .  5F              pop     edi
00482CB8   .  5E              pop     esi
00482CB9   .  5B              pop     ebx
00482CBA   .  8BE5            mov     esp, ebp
00482CBC   .  5D              pop     ebp
00482CBD   .  C3              retn


算法CALL 2
00482BB0  /$  B2 20           mov     dl, 20                            ;  dl = 20
00482BB2  |.  8BC8            mov     ecx, eax                          ;  ecx = eax
00482BB4  |.  83E9 3E         sub     ecx, 3E                           ;  ecx = ecx - 3E
00482BB7  |.  73 19           jnb     short 00482BD2                    ;  多余,除以 24 余数怎么可能大于 3E
00482BB9  |.  8BC8            mov     ecx, eax                          ;  ecx = eax
00482BBB  |.  83E9 0A         sub     ecx, 0A                           ;  ecx = ecx - 0A
00482BBE  |.  72 07           jb      short 00482BC7                    ;  ecx是否小于 0A
00482BC0  |.  83E9 1A         sub     ecx, 1A                           ;  ecx = ecx - 1A
00482BC3  |.  72 07           jb      short 00482BCC                    ;  ecx是否小于 1A
00482BC5  |.  EB 0B           jmp     short 00482BD2
00482BC7  |>  8D50 30         lea     edx, dword ptr ds:[eax+30]        ;  ecx 小于 0A ,则 edx = eax + 30
00482BCA  |.  EB 06           jmp     short 00482BD2
00482BCC  |>  8D50 41         lea     edx, dword ptr ds:[eax+41]        ;  ecx 小于 1A ,则 edx = eax + 41
00482BCF  |.  83EA 0A         sub     edx, 0A                           ;  edx = edx - 0A
00482BD2  |>  8BC2            mov     eax, edx                          ;  eax = edx
00482BD4  \.  C3              retn

注册机源码
.版本 2

.子程序 _按钮1_被单击, , , 算法CALL1
.局部变量 local2, 整数型
.局部变量 local1, 文本型
.局部变量 local4, 整数型
.局部变量 esi, 整数型
.局部变量 SN, 文本型

local2 = 1235
local1 = 编辑框1.内容
local4 = 取文本长度 (local1)
esi = local2
eax = local4
.如果 (eax = 0)
    编辑框2.内容 = “请填写注册名”
    返回 ()
.否则

.如果结束
edi = 1
.循环判断首 ()
    edx = 取代码 (local1, edi)
    esi = esi + edx
    edi = edi + 1
    eax = eax - 1
.循环判断尾 (eax ≠ 0)
edi = 0
.循环判断首 ()
    ' eax = esi
    ecx = 36
    eax = esi % ecx
    eax = 算法CALL2 (eax)
    ebx = eax
    eax = eax + 208
    .如果 (eax < 2)

    .否则
        eax = eax - 2
        .如果 (eax = 23)

        .否则
            eax = eax - 23
            .如果 (eax = 6)

            .否则
                SN = SN + 字符 (ebx)
                edi = edi + 1
            .如果结束

        .如果结束

    .如果结束
    eax = edi
    eax = eax % local4
    eax = eax + 1
    eax = 取代码 (local1, eax)
    esi = esi - eax
    .如果 (esi ≥ 0)

    .否则
        esi = esi + 1235
    .如果结束

.循环判断尾 (edi < 10)
编辑框2.内容 = SN

.子程序 算法CALL2, 整数型
.参数 参数1, 整数型

edx = 32
ecx = 参数1
.如果 (ecx < 10)
    edx = 参数1 + 48
.否则
    ecx = ecx - 10
    .如果 (ecx < 26)
        edx = 参数1 + 65
        edx = edx - 10
    .否则

    .如果结束

.如果结束
返回 (edx)

注册机成品
https://www.chinapyg.com/viewthr ... &extra=page%3D1

评分

参与人数 1威望 +20 飘云币 +40 收起 理由
tianxj + 20 + 40 感谢您发布的原创作品!

查看全部评分

PYG19周年生日快乐!

该用户从未签到

发表于 2008-10-24 12:19:23 | 显示全部楼层
分析的太详细.不错学习了!!!
PYG19周年生日快乐!

该用户从未签到

发表于 2008-10-24 19:59:50 | 显示全部楼层
为什么注册机用E语言写呢?/:011
PYG19周年生日快乐!

该用户从未签到

发表于 2008-10-24 22:22:12 | 显示全部楼层
希望能用vb 写算法机.努力学习中
PYG19周年生日快乐!

该用户从未签到

发表于 2008-10-25 14:19:06 | 显示全部楼层
分析的很好,收获很多,谢谢分享
PYG19周年生日快乐!

该用户从未签到

发表于 2008-10-25 15:20:06 | 显示全部楼层
易语言看起来还真是不习关/:good
PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2019-3-25 06:30
  • 签到天数: 1096 天

    [LV.10]以坛为家III

    发表于 2008-10-26 06:47:51 | 显示全部楼层
    好文章,学习一下分析算法。
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    前天 21:10
  • 签到天数: 1209 天

    [LV.10]以坛为家III

    发表于 2008-11-3 20:34:00 | 显示全部楼层
    分析得好详细啊 好好学习中....
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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