东海浪子 发表于 2016-5-24 22:45:24

Photo Slide Show图片合成器算法分析,非常适合新手

本帖最后由 东海浪子 于 2016-5-26 09:25 编辑

【破文标题】Photo Slide Show图片合成器算法分析
【破文作者】东海浪子
【作者邮箱】
【作者主页】
【破解工具】OD
【破解平台】虚拟机WINXP SP3
【软件名称】Photo Slide Show
【软件大小】
【原版下载】http://www.321slideshow.com/
【软件说明】照片幻灯片可以 轻松创建幻灯片 更高的分辨率比DVD,将数码照片和视频过渡效果创建 惊人的幻灯片。
【阅读对象】爱好破解的初学者,新手作品,有错误不足之处,恳请各位高手大神多多指正。
【破解声明】本文仅做研究所用,供破解技术爱好者学习研究讨论。如喜欢该软件,建议购买正版。
------------------------------------------------------------------------
【破解过程】1.查壳,无壳Microsoft Visual C++ v7.0
            2.通过F12暂停堆栈法,或字符串查找法都很容易定位到注册call,来到下面这段(因为是算法分析,这里不详细展开这步骤。


0041E1C0   .64:A1 0000000>mov eax,dword ptr fs:               ;注册入口
0041E1C6   .6A FF         push -0x1
0041E1C8   .68 F8044500   push slidesho.004504F8
0041E1CD   .50            push eax
0041E1CE   .64:8925 00000>mov dword ptr fs:,esp
0041E1D5   .83EC 18       sub esp,0x18
0041E1D8   .55            push ebp
0041E1D9   .56            push esi                                 ;slidesho.00456B78
0041E1DA   .57            push edi
0041E1DB   .BD 01000000   mov ebp,0x1
0041E1E0   .55            push ebp
0041E1E1   .8BF1          mov esi,ecx
0041E1E3   .E8 72F00100   call slidesho.0043D25A
0041E1E8   .8B46 70       mov eax,dword ptr ds:          ;注册名入eax
0041E1EB   .8B78 F4       mov edi,dword ptr ds:         ;注册名长度入edi
0041E1EE   .83FF 02       cmp edi,0x2                              ;注册名长度与2比较
0041E1F1   .0F8D E0000000 jge slidesho.0041E2D7                  ;长度大于等于2跳走
0041E1F7   .E8 D82F0200   call slidesho.004411D4
0041E1FC   .8B10          mov edx,dword ptr ds:
0041E1FE   .8BC8          mov ecx,eax
0041E200   .FF52 0C       call dword ptr ds:
0041E203   .83C0 10       add eax,0x10
0041E206   .894424 18   mov dword ptr ss:,eax
0041E20A   .6A 67         push 0x67
0041E20C   .8D4424 20   lea eax,dword ptr ss:
0041E210   .50            push eax
0041E211   .B9 082F4900   mov ecx,slidesho.00492F08
0041E216   .C74424 34 000>mov dword ptr ss:,0x0
0041E21E   .E8 DD1BFFFF   call slidesho.0040FE00
0041E223   .50            push eax
0041E224   .8D4C24 1C   lea ecx,dword ptr ss:
0041E228   .C64424 30 01mov byte ptr ss:,0x1
0041E22D   .E8 9E66FEFF   call slidesho.004048D0
0041E232   .8B4424 1C   mov eax,dword ptr ss:
0041E236   .83C0 F0       add eax,-0x10
0041E239   .C64424 2C 00mov byte ptr ss:,0x0
0041E23E   .8D48 0C       lea ecx,dword ptr ds:
0041E241   .83CA FF       or edx,-0x1
0041E244   .f0:0fc111   lock xadd dword ptr ds:,edx
0041E248   .4A            dec edx
0041E249   .85D2          test edx,edx
0041E24B   .7F 08         jg short slidesho.0041E255
0041E24D   .8B08          mov ecx,dword ptr ds:
0041E24F   .8B11          mov edx,dword ptr ds:               ;slidesho.00456BE0
0041E251   .50            push eax
0041E252   .FF52 04       call dword ptr ds:
0041E255   >6A 69         push 0x69
0041E257   .8D4424 20   lea eax,dword ptr ss:
0041E25B   .50            push eax
0041E25C   .B9 082F4900   mov ecx,slidesho.00492F08
0041E261   .E8 9A1BFFFF   call slidesho.0040FE00
0041E266   .8B00          mov eax,dword ptr ds:
0041E268   .8B7C24 18   mov edi,dword ptr ss:
0041E26C   .6A 00         push 0x0
0041E26E   .50            push eax
0041E26F   .57            push edi
0041E270   .8BCE          mov ecx,esi                              ;slidesho.00456B78
0041E272   .C64424 38 02mov byte ptr ss:,0x2
0041E277   .E8 80EF0100   call slidesho.0043D1FC
0041E27C   .8B4424 1C   mov eax,dword ptr ss:
0041E280   .83C0 F0       add eax,-0x10
0041E283   .C64424 2C 00mov byte ptr ss:,0x0
0041E288   .8D48 0C       lea ecx,dword ptr ds:
0041E28B   .83CA FF       or edx,-0x1
0041E28E   .f0:0fc111   lock xadd dword ptr ds:,edx
0041E292   .4A            dec edx
0041E293   .85D2          test edx,edx
0041E295   .7F 08         jg short slidesho.0041E29F
0041E297   .8B08          mov ecx,dword ptr ds:
0041E299   .8B11          mov edx,dword ptr ds:               ;slidesho.00456BE0
0041E29B   .50            push eax
0041E29C   .FF52 04       call dword ptr ds:
0041E29F   >8D47 F0       lea eax,dword ptr ds:
0041E2A2   .C74424 2C FFF>mov dword ptr ss:,-0x1
0041E2AA   .8D48 0C       lea ecx,dword ptr ds:
0041E2AD   .83CA FF       or edx,-0x1
0041E2B0   .f0:0fc111   lock xadd dword ptr ds:,edx
0041E2B4   .4A            dec edx
0041E2B5   .85D2          test edx,edx
0041E2B7   .0F8F 2F040000 jg slidesho.0041E6EC
0041E2BD   .8B08          mov ecx,dword ptr ds:
0041E2BF   .8B11          mov edx,dword ptr ds:               ;slidesho.00456BE0
0041E2C1   .50            push eax
0041E2C2   .FF52 04       call dword ptr ds:
0041E2C5   .5F            pop edi                                  ;slidesho.004405B4
0041E2C6   .5E            pop esi                                  ;slidesho.004405B4
0041E2C7   .5D            pop ebp                                  ;slidesho.004405B4
0041E2C8   .8B4C24 18   mov ecx,dword ptr ss:
0041E2CC   .64:890D 00000>mov dword ptr fs:,ecx
0041E2D3   .83C4 24       add esp,0x24
0041E2D6   .C3            retn
0041E2D7   >8B46 74       mov eax,dword ptr ds:          ;注册码入eax
0041E2DA   .8B40 F4       mov eax,dword ptr ds:         ;注册码长度入eax
0041E2DD   .83F8 08       cmp eax,0x8                              ;注册码长度和8比较
0041E2E0   .53            push ebx
0041E2E1   .0F8D AF000000 jge slidesho.0041E396                  ;长度大于等于8跳走
0041E2E7   .E8 E82E0200   call slidesho.004411D4
0041E2EC   .8B10          mov edx,dword ptr ds:
0041E2EE   .8BC8          mov ecx,eax
0041E2F0   .FF52 0C       call dword ptr ds:
0041E2F3   .83C0 10       add eax,0x10
0041E2F6   .894424 1C   mov dword ptr ss:,eax
0041E2FA   .6A 68         push 0x68
0041E2FC   .8D4424 24   lea eax,dword ptr ss:
0041E300   .BB 03000000   mov ebx,0x3
0041E305   .50            push eax
0041E306   .B9 082F4900   mov ecx,slidesho.00492F08
0041E30B   .895C24 38   mov dword ptr ss:,ebx
0041E30F   .E8 EC1AFFFF   call slidesho.0040FE00
0041E314   .50            push eax
0041E315   .8D4C24 20   lea ecx,dword ptr ss:
0041E319   .C64424 34 04mov byte ptr ss:,0x4
0041E31E   .E8 AD65FEFF   call slidesho.004048D0
0041E323   .8B4424 20   mov eax,dword ptr ss:          ;slidesho.0041E1C0
0041E327   .83C0 F0       add eax,-0x10
0041E32A   .885C24 30   mov byte ptr ss:,bl
0041E32E   .8D48 0C       lea ecx,dword ptr ds:
0041E331   .83CA FF       or edx,-0x1
0041E334   .f0:0fc111   lock xadd dword ptr ds:,edx
0041E338   .4A            dec edx
0041E339   .85D2          test edx,edx
0041E33B   .7F 08         jg short slidesho.0041E345
0041E33D   .8B08          mov ecx,dword ptr ds:
0041E33F   .8B11          mov edx,dword ptr ds:               ;slidesho.00456BE0
0041E341   .50            push eax
0041E342   .FF52 04       call dword ptr ds:
0041E345   >6A 69         push 0x69
0041E347   .8D4424 24   lea eax,dword ptr ss:
0041E34B   .50            push eax
0041E34C   .B9 082F4900   mov ecx,slidesho.00492F08
0041E351   .E8 AA1AFFFF   call slidesho.0040FE00
0041E356   .8B00          mov eax,dword ptr ds:
0041E358   .8B7C24 1C   mov edi,dword ptr ss:
0041E35C   .6A 00         push 0x0
0041E35E   .50            push eax
0041E35F   .57            push edi
0041E360   .8BCE          mov ecx,esi                              ;slidesho.00456B78
0041E362   .C64424 3C 05mov byte ptr ss:,0x5
0041E367   .E8 90EE0100   call slidesho.0043D1FC
0041E36C   .8B4424 20   mov eax,dword ptr ss:          ;slidesho.0041E1C0
0041E370   .83C0 F0       add eax,-0x10
0041E373   .885C24 30   mov byte ptr ss:,bl
0041E377   .8D48 0C       lea ecx,dword ptr ds:
0041E37A   .83CA FF       or edx,-0x1
0041E37D   .f0:0fc111   lock xadd dword ptr ds:,edx
0041E381   .4A            dec edx
0041E382   .85D2          test edx,edx
0041E384   .7F 08         jg short slidesho.0041E38E
0041E386   .8B08          mov ecx,dword ptr ds:
0041E388   .8B11          mov edx,dword ptr ds:               ;slidesho.00456BE0
0041E38A   .50            push eax
0041E38B   .FF52 04       call dword ptr ds:
0041E38E   >8D47 F0       lea eax,dword ptr ds:
0041E391   .E9 36030000   jmp slidesho.0041E6CC
0041E396   >8B46 70       mov eax,dword ptr ds:          ;注册名入eax
0041E399   .8B48 F4       mov ecx,dword ptr ds:         ;注册名长度入ecx
0041E39C   .85C9          test ecx,ecx
0041E39E   .7D 0A         jge short slidesho.0041E3AA            ;大于等于跳走
0041E3A0   .68 57000780   push 0x80070057
0041E3A5   .E8 462FFEFF   call slidesho.004012F0
0041E3AA   >8A10          mov dl,byte ptr ds:               ;取注册名第1个字节ASCII码入dl
0041E3AC   .8B46 70       mov eax,dword ptr ds:          ;注册名入eax
0041E3AF   .3968 F4       cmp dword ptr ds:,ebp         ;字节长度和ebp(1)比较
0041E3B2   .7D 0A         jge short slidesho.0041E3BE
0041E3B4   .68 57000780   push 0x80070057
0041E3B9   .E8 322FFEFF   call slidesho.004012F0
0041E3BE   >8A40 01       mov al,byte ptr ds:             ;取注册名第2个字节入al
0041E3C1   .884424 11   mov byte ptr ss:,al            ;al入esp+11
0041E3C5   .8B46 70       mov eax,dword ptr ds:          ;注册名入eax
0041E3C8   .8B48 F4       mov ecx,dword ptr ds:         ;注册名字节长度入ecx
0041E3CB   .85C9          test ecx,ecx
0041E3CD   .7D 0A         jge short slidesho.0041E3D9
0041E3CF   .68 57000780   push 0x80070057
0041E3D4   .E8 172FFEFF   call slidesho.004012F0
0041E3D9   >8B4E 70       mov ecx,dword ptr ds:          ;注册名入ecx
0041E3DC   .8A18          mov bl,byte ptr ds:               ;注册名第1个字节ascii码入bl
0041E3DE   .3969 F4       cmp dword ptr ds:,ebp         ;注册名字节长度和ebp比较
0041E3E1   .7D 0A         jge short slidesho.0041E3ED            ;大于等于时跳走
0041E3E3   .68 57000780   push 0x80070057
0041E3E8   .E8 032FFEFF   call slidesho.004012F0
0041E3ED   >0FB6C2      movzx eax,dl                           ;注册名第1个字节入eax
0041E3F0   .83C8 50       or eax,0x50                              ;和50进行or运算,结果入eax
0041E3F3   .99            cdq
0041E3F4   .BD 0A000000   mov ebp,0xA                              ;A入ebp
0041E3F9   .F7FD          idiv ebp                                 ;除以ebp(A)
0041E3FB   .0FB64424 11   movzx eax,byte ptr ss:         ;注册名第2个字节ascii码入eax
0041E400   .83C8 48       or eax,0x48                              ;和48进行or运算,结果入eax
0041E403   .885424 16   mov byte ptr ss:,dl            ;dl(6)入esp+16
0041E407   .99            cdq
0041E408   .F7FD          idiv ebp                                 ;除以ebp(A)
0041E40A   .0FB6C3      movzx eax,bl                           ;取注册名第1字节ascii码入eax
0041E40D   .83C8 4F       or eax,0x4F                              ;和4F进行 or运算
0041E410   .8BDD          mov ebx,ebp                              ;ebp(A)入ebx
0041E412   .885424 11   mov byte ptr ss:,dl            ;取dl(5)入esp+11
0041E416   .99            cdq
0041E417   .F7FB          idiv ebx                                 ;除以ebx(A),结果放eax
0041E419   .0FB641 01   movzx eax,byte ptr ds:          ;取注册名第2个字节ascii码入eax
0041E41D   .83C8 54       or eax,0x54                              ;和54进行or运算
0041E420   .8BCD          mov ecx,ebp                              ;ebp(A)入ecx
0041E422   .885424 17   mov byte ptr ss:,dl            ;取dl(5)入esp+17
0041E426   .99            cdq
0041E427   .F7F9          idiv ecx                                 ;除以ecx(A),结果入eax
0041E429   .33C0          xor eax,eax                              ;eax清零
0041E42B   .33C9          xor ecx,ecx                              ;ecx清零
0041E42D   .85FF          test edi,edi
0041E42F   .885424 18   mov byte ptr ss:,dl            ;dl(5)入esp+18
0041E433   .7E 1F         jle short slidesho.0041E454            ;小于等于时跳走
0041E435   >85C9          test ecx,ecx
0041E437   .0F8C E6000000 jl slidesho.0041E523                     ;小于时跳走
0041E43D   .8B56 70       mov edx,dword ptr ds:          ;注册名入edx
0041E440   .3B4A F4       cmp ecx,dword ptr ds:         ;注册名字节长度入ecx
0041E443   .0F8F DA000000 jg slidesho.0041E523                     ;大于时跳走
0041E449   .0FB6140A      movzx edx,byte ptr ds:          ;逐个取注册名ascii入edx
0041E44D   .03C2          add eax,edx                              ;注册名字符串ascii码累加
0041E44F   .41            inc ecx                                  ;计数累加器
0041E450   .3BCF          cmp ecx,edi                              ;和注册名字节长度比较
0041E452   .^ 7C E1         jl short slidesho.0041E435               ;小于时往上跳
0041E454   >99            cdq
0041E455   .B9 0A000000   mov ecx,0xA                              ;A入ecx
0041E45A   .F7F9          idiv ecx                                 ;除以ecx(A),结果入eax
0041E45C > .8B46 74       mov eax,dword ptr ds:          ;注册码入eax
0041E45F   .8B48 F4       mov ecx,dword ptr ds:         ;注册码长度入ecx
0041E462   .85C9          test ecx,ecx
0041E464   .885424 19   mov byte ptr ss:,dl            ;dl(3)入esp+19
0041E468   .7D 0A         jge short slidesho.0041E474            ;大于等于时跳走
0041E46A   .68 57000780   push 0x80070057
0041E46F   .E8 7C2EFEFF   call slidesho.004012F0
0041E474   >8A10          mov dl,byte ptr ds:               ;注册码第1个数ascii码入dl
0041E476   .8B4E 74       mov ecx,dword ptr ds:          ;注册码入ecx
0041E479   .8379 F4 01    cmp dword ptr ds:,0x1         ;注册码位数和1比较
0041E47D   .885424 1A   mov byte ptr ss:,dl            ;注册码第1个数ascii码入esp+1A
0041E481   .7D 0A         jge short slidesho.0041E48D            ;大于等于时跳走
0041E483   .68 57000780   push 0x80070057
0041E488   .E8 632EFEFF   call slidesho.004012F0
0041E48D   >8A41 01       mov al,byte ptr ds:             ;注册码第2个数入al
0041E490   .8B4E 74       mov ecx,dword ptr ds:          ;注册码入ecx
0041E493   .884424 12   mov byte ptr ss:,al            ;注册码第2个数ASCII码入esp+12
0041E497   .8379 F4 02    cmp dword ptr ds:,0x2         ;注册码位数和2比较
0041E49B   .7D 0A         jge short slidesho.0041E4A7            ;大于等于时跳走
0041E49D   .68 57000780   push 0x80070057
0041E4A2   .E8 492EFEFF   call slidesho.004012F0
0041E4A7   >8A49 02       mov cl,byte ptr ds:             ;注册码第3个数ascii码入cl
0041E4AA   .884C24 13   mov byte ptr ss:,cl            ;注册码第3个数入esp+13
0041E4AE   .8B4E 74       mov ecx,dword ptr ds:          ;注册码入ecx
0041E4B1   .8379 F4 03    cmp dword ptr ds:,0x3         ;注册码位数和3比较
0041E4B5   .7D 0A         jge short slidesho.0041E4C1            ;大于等于时跳走
0041E4B7   .68 57000780   push 0x80070057
0041E4BC   .E8 2F2EFEFF   call slidesho.004012F0
0041E4C1   >8A41 03       mov al,byte ptr ds:             ;注册码第4位入al
0041E4C4   .8B4E 74       mov ecx,dword ptr ds:          ;注册码入ecx
0041E4C7   .884424 14   mov byte ptr ss:,al            ;注册码第4位入esp+14
0041E4CB   .8379 F4 04    cmp dword ptr ds:,0x4         ;注册码位数和4比较
0041E4CF   .7D 0A         jge short slidesho.0041E4DB            ;大于等于时跳走
0041E4D1   .68 57000780   push 0x80070057
0041E4D6   .E8 152EFEFF   call slidesho.004012F0
0041E4DB   >8A49 04       mov cl,byte ptr ds:             ;注册码第5位入cl
0041E4DE   .884C24 15   mov byte ptr ss:,cl            ;注册码第5位入esp+15
0041E4E2   .8B4E 74       mov ecx,dword ptr ds:          ;注册码入ecx
0041E4E5   .8379 F4 05    cmp dword ptr ds:,0x5         ;注册码位数和5比较
0041E4E9   .7D 0A         jge short slidesho.0041E4F5            ;大于等于时跳走
0041E4EB   .68 57000780   push 0x80070057
0041E4F0   .E8 FB2DFEFF   call slidesho.004012F0
0041E4F5   >8A41 05       mov al,byte ptr ds:             ;注册码第6位入al
0041E4F8   .8B4E 74       mov ecx,dword ptr ds:          ;注册码入ecx
0041E4FB   .8B79 F4       mov edi,dword ptr ds:         ;注册码位数入edi
0041E4FE   .83FF 06       cmp edi,0x6                              ;注册码位数和6比较
0041E501   .884424 1B   mov byte ptr ss:,al            ;注册码第6位入esp+1B
0041E505   .7D 0A         jge short slidesho.0041E511            ;大于等于时跳走
0041E507   .68 57000780   push 0x80070057
0041E50C   .E8 DF2DFEFF   call slidesho.004012F0
0041E511   >8B7E 74       mov edi,dword ptr ds:          ;注册码入edi
0041E514   .8B6F F4       mov ebp,dword ptr ds:         ;注册码位数入ebp
0041E517   .8A41 06       mov al,byte ptr ds:             ;注册码第7位入al
0041E51A   .BB 07000000   mov ebx,0x7                              ;7入ebx
0041E51F   .3BEB          cmp ebp,ebx                              ;比较ebp(注册码数位)和ebx(7)
0041E521   .7D 0A         jge short slidesho.0041E52D            ;大于等于时跳走
0041E523   >68 57000780   push 0x80070057
0041E528   .E8 C32DFEFF   call slidesho.004012F0
0041E52D   >8A4F 07       mov cl,byte ptr ds:             ;注册码第8位入cl
0041E530 > .0FB66C24 16   movzx ebp,byte ptr ss:         ;esp+16(6)入ebp
0041E535   .0FB6FA      movzx edi,dl                           ;注册码第1位ascii码入edi
0041E538   .83EF 30       sub edi,0x30                           ;edi-30(第1位注册码数字)
0041E53B   .3BEF          cmp ebp,edi                              ;ebp(6)和edi(第1位注册码数)比较
0041E53D      75 48         jnz short slidesho.0041E587            ;不相等跳走
0041E53F   .0FB65424 12   movzx edx,byte ptr ss:         ;注册码第2位ascii码入edx
0041E544   .0FB67C24 11   movzx edi,byte ptr ss:         ;esp+11(5)入edi
0041E549   .83EA 30       sub edx,0x30                           ;edx-30(第2位注册码数字)
0041E54C   .3BFA          cmp edi,edx                              ;比较edi(5)和edx(第2位注册码数字)
0041E54E      75 33         jnz short slidesho.0041E583            ;不相等跳走
0041E550   .0FB65424 13   movzx edx,byte ptr ss:         ;注册码第3位入edx
0041E555   .0FB67C24 17   movzx edi,byte ptr ss:         ;esp+17(5)入edi
0041E55A   .83EA 30       sub edx,0x30                           ;edx-30(第3位注册码数字)
0041E55D   .3BFA          cmp edi,edx                              ;比较edi(5)和edx(第3位注册码数字)
0041E55F      75 22         jnz short slidesho.0041E583            ;不相等跳走
0041E561   .0FB65424 14   movzx edx,byte ptr ss:         ;第4位注册码ascii码入edx
0041E566   .0FB67C24 18   movzx edi,byte ptr ss:         ;esp+18(5)入edi
0041E56B   .83EA 30       sub edx,0x30                           ;edx-30(第4位注册码数字)
0041E56E   .3BFA          cmp edi,edx                              ;比较edi(5)和edx(第4位注册码数字)
0041E570      75 11         jnz short slidesho.0041E583            ;不相等跳走
0041E572   .0FB65424 15   movzx edx,byte ptr ss:         ;第5位注册码入edx
0041E577   .0FB67C24 19   movzx edi,byte ptr ss:         ;esp+19(3)入edi
0041E57C   .83EA 30       sub edx,0x30                           ;edx-30(第5位注册码数字)
0041E57F   .3BFA          cmp edi,edx                              ;比较edi(3)和edx(第5位注册码数字)
0041E581      74 55         je short slidesho.0041E5D8               ;不相等跳走
0041E583   >8A5424 1A   mov dl,byte ptr ss:            ;注册码第1位ascii码入dl
0041E587   >80FA 35       cmp dl,0x35                              ;比较dl和35
0041E58A      0F85 D7000000 jnz slidesho.0041E667                  ;不相等跳走
0041E590   .807C24 12 31cmp byte ptr ss:,0x31          ;比较注册码第2位ascii和31
0041E595      0F85 CC000000 jnz slidesho.0041E667
0041E59B   .807C24 13 38cmp byte ptr ss:,0x38          ;比较注册码第3位ascii码和38
0041E5A0      0F85 C1000000 jnz slidesho.0041E667
0041E5A6   .807C24 14 39cmp byte ptr ss:,0x39          ;比较注册码第4位ascii码和39
0041E5AB      0F85 B6000000 jnz slidesho.0041E667
0041E5B1   .807C24 15 37cmp byte ptr ss:,0x37          ;比较注册码第5位ascii码和37
0041E5B6      0F85 AB000000 jnz slidesho.0041E667
0041E5BC   .807C24 1B 36cmp byte ptr ss:,0x36          ;比较注册码第6位ascii码和36
0041E5C1      0F85 A0000000 jnz slidesho.0041E667
0041E5C7   .3C 31         cmp al,0x31                              ;比较注册码第7位ascii码和31
0041E5C9      0F85 98000000 jnz slidesho.0041E667
0041E5CF   .80F9 38       cmp cl,0x38                              ;比较第8位注册码ascii码和38
0041E5D2      0F85 8F000000 jnz slidesho.0041E667
0041E5D8   >6A 6A         push 0x6A
0041E5DA   .8D4424 24   lea eax,dword ptr ss:          ;esp+24入eax
0041E5DE   .50            push eax
0041E5DF   .B9 082F4900   mov ecx,slidesho.00492F08
0041E5E4   .E8 1718FFFF   call slidesho.0040FE00
0041E5E9   .8B00          mov eax,dword ptr ds:
0041E5EB   .6A 00         push 0x0
0041E5ED   .68 386D4500   push slidesho.00456D38                   ;OK注册成功
0041E5F2   .50            push eax
0041E5F3   .8BCE          mov ecx,esi                              ;slidesho.00456B78
0041E5F5   .C74424 3C 060>mov dword ptr ss:,0x6
0041E5FD   .E8 FAEB0100   call slidesho.0043D1FC
0041E602   .8D4C24 20   lea ecx,dword ptr ss:
0041E606   .C74424 30 FFF>mov dword ptr ss:,-0x1
0041E60E   .E8 1D5DFEFF   call slidesho.00404330
0041E613   .8B7E 70       mov edi,dword ptr ds:          ;注册名入edi
0041E616   .E8 4FCC0200   call slidesho.0044B26A
0041E61B   .8B40 04       mov eax,dword ptr ds:
0041E61E   .57            push edi
0041E61F   .68 C0624500   push slidesho.004562C0                   ;username
0041E624   .68 F84B4500   push slidesho.00454BF8                   ;Option
0041E629   .8BC8          mov ecx,eax
0041E62B   .E8 398B0200   call slidesho.00447169
0041E630   .8B7E 74       mov edi,dword ptr ds:          ;注册码入edi
0041E633   .E8 32CC0200   call slidesho.0044B26A
0041E638   .8B40 04       mov eax,dword ptr ds:
0041E63B   .57            push edi
0041E63C   .68 AC624500   push slidesho.004562AC                   ;registration_code
0041E641   .68 F84B4500   push slidesho.00454BF8                   ;Option
【破解总结】
注册名大于等于2个字节,注册码大于等于8位数。注册名不参与注册码计算。
注册码有2种算法。
第1种是前5位数为65553,后面为XXX.
第2种是前8位为51897618,后面为xxxx.x为任意数。
这个软件算法比较简单,非常适合新手练习算法,就是费时较长,要有耐心。


东海浪子 发表于 2016-5-24 23:00:16

我花了很多时间看代码里有对注册名进行的运算。但是我看到最后,好像注册名对注册码的计算没有关系。
不知道是不是弄错了?

xiuzeli 发表于 2016-5-25 00:10:16

很好                     

steven25790 发表于 2016-5-25 00:44:02

新手表示很迷茫

liutongbao 发表于 2016-5-25 05:58:38

学习下大牛的思路。。

非诚勿扰 发表于 2016-5-25 07:56:22

学习一下了,膜拜会算法的

HT-CMO 发表于 2016-5-25 12:01:54

你开始了算法之旅了啊。不错

东海浪子 发表于 2016-5-25 12:17:49

HT-CMO 发表于 2016-5-25 12:01
你开始了算法之旅了啊。不错

呵呵,慢慢学一下。以前觉得爆破好,不费时费力。搞算法很费事。爆破玩腻了,也玩玩算法,学习一下也好,虽然不会编程做注册机

飘云 发表于 2016-5-25 12:48:03

不错,下一步尝试用C实现一下算法!!

东海浪子 发表于 2016-5-25 16:00:05

飘云 发表于 2016-5-25 12:48
不错,下一步尝试用C实现一下算法!!

谢老大指点,是不是学C语言对初学者来说容易理解上手点
页: [1] 2 3
查看完整版本: Photo Slide Show图片合成器算法分析,非常适合新手