首页
社区
课程
招聘
[旧帖] [原创]新手可以一试的-Windows魔法助手v3.02破解与保护方式大揭密 0.00雪花
发表于: 2007-1-15 09:30 7140

[旧帖] [原创]新手可以一试的-Windows魔法助手v3.02破解与保护方式大揭密 0.00雪花

2007-1-15 09:30
7140
【破解作者】 大菜一号
【使用工具】 OD-ice,peid,w32
【软件名称】 windows魔法助手v3.02
【软件简介】
     Windows魔法助手分别对文件处理、系统设置、系统维护、系统辅助这四个方面提供了较全面的帮助。
        对文件进行更名,切割。加密,粉碎!
        对系统启动,右键菜单,IE等一些方面进行个性化设置
        对系统垃圾处理清理提供了较全面的帮助
        对系统当前的工作状况进行管理!

     (其实呢``说白了就是修改注册表的工具,不如用优化大师`呵。。
                                                                “我砍死你!”作者喊,)

【破解声明】
        声明声明`只为学习而研究~~

说真的,这个软件有两个算法的bug!作者太不小心了~~~后面再分析bug,先看代码

本人觉得这个软件的破解有通用注册码,这样就不用写keygen了,比较适合新手`本一来想给大家搞个动画上来滴!录到一半,晕过去了~
而且体积也很大~放弃了~
毕竟对新手来说看代码有一定的难度!

这个软件很有趣,给大家传个无壳的``

看分析`

peid查看一下``嗯嗯`是有壳滴!偶给你扒个精光~~嘿嘿`

W32找字符串->“注册失败--您所输入的注册码有误?”-->004b5378

用OD载入后找004b5378,向上找,断在函数入口点->004b51b4
004B51B4  /.  55            push    ebp
004B51B4  /.  55            push    ebp
004B51B5  |.  8BEC          mov     ebp, esp
004B51B7  |.  33C9          xor     ecx, ecx
004B51B9  |.  51            push    ecx
004B51BA  |.  51            push    ecx
004B51BB  |.  51            push    ecx
004B51BC  |.  51            push    ecx
004B51BD  |.  51            push    ecx
004B51BE  |.  51            push    ecx
004B51BF  |.  51            push    ecx
004B51C0  |.  51            push    ecx
004B51C1  |.  53            push    ebx
004B51C2  |.  8BD8          mov     ebx, eax
004B51C4  |.  33C0          xor     eax, eax
004B51C6  |.  55            push    ebp
004B51C7  |.  68 BF534B00   push    004B53BF
004B51CC  |.  64:FF30       push    dword ptr fs:[eax]
004B51CF  |.  64:8920       mov     dword ptr fs:[eax], esp
004B51D2  |.  8D55 F8       lea     edx, dword ptr [ebp-8]
004B51D5  |.  8B83 0C030000 mov     eax, dword ptr [ebx+30C]
004B51DB  |.  E8 4009F9FF   call    00445B20
004B51E0  |.  FF75 F8       push    dword ptr [ebp-8]
004B51E3  |.  68 D4534B00   push    004B53D4
004B51E8  |.  8D55 F4       lea     edx, dword ptr [ebp-C]
004B51EB  |.  8B83 10030000 mov     eax, dword ptr [ebx+310]
004B51F1  |.  E8 2A09F9FF   call    00445B20
004B51F6  |.  FF75 F4       push    dword ptr [ebp-C]
004B51F9  |.  68 D4534B00   push    004B53D4
004B51FE  |.  8D55 F0       lea     edx, dword ptr [ebp-10]
004B5201  |.  8B83 14030000 mov     eax, dword ptr [ebx+314]
004B5207  |.  E8 1409F9FF   call    00445B20
004B520C  |.  FF75 F0       push    dword ptr [ebp-10]
004B520F  |.  68 D4534B00   push    004B53D4
004B5214  |.  8D55 EC       lea     edx, dword ptr [ebp-14]
004B5217  |.  8B83 18030000 mov     eax, dword ptr [ebx+318]
004B521D  |.  E8 FE08F9FF   call    00445B20
004B5222  |.  FF75 EC       push    dword ptr [ebp-14]
004B5225  |.  68 D4534B00   push    004B53D4
004B522A  |.  8D55 E8       lea     edx, dword ptr [ebp-18]
004B522D  |.  8B83 1C030000 mov     eax, dword ptr [ebx+31C]
004B5233  |.  E8 E808F9FF   call    00445B20
004B5238  |.  FF75 E8       push    dword ptr [ebp-18]
004B523B  |.  8D45 FC       lea     eax, dword ptr [ebp-4]
004B523E  |.  BA 09000000   mov     edx, 9
004B5243  |.  E8 C4FCF4FF   call    00404F0C
004B5248  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
004B524B  |.  E8 C00C0A00   call    00555F10-------------------------------------\
004B5250  |.  84C0          test    al, al                                        \->这个CALL很经典``跟进->算法CALL
004B5252  |.  0F84 20010000 je      004B5378--------------------------------------/
004B5258  |.  B9 E0534B00   mov     ecx, 004B53E0

算法call:
00555F10   $  55            push    ebp----------------->呼呼``跟进后在这~

N个代码``为节省看雪篇幅`偶就不列出

后面数字都为十六进制

直接看这里:
00555F6B   .  8B55 FC       mov     edx, dword ptr [ebp-4]->取输入的code,
                                                                注:此code要为28位(如:KSJIE-SLOWI-12568-4568-45875)
00555F6E   .  E8 B9ECEAFF   call    00404C2C
00555F73   .  8B45 F4       mov     eax, dword ptr [ebp-C]
00555F76   .  0FB640 18     movzx   eax, byte ptr [eax+18]-->取code的第18位(从0位算起``后不再说明)
00555F7A   .  8B55 F4       mov     edx, dword ptr [ebp-C]
00555F7D   .  0FB652 1C     movzx   edx, byte ptr [edx+1C]-->取code的第1c位到edx
00555F81   .  2BC2          sub     eax, edx---------------->第18位和第1c位的ascii相减
00555F83   .  99            cdq----------------------------->减后结果的字的符号位扩展,结果存到edx------------------(不明白可以去看看汇编)
00555F84   .  33C2          xor     eax, edx---------------->扩展后结果与减后的结果异或
00555F86   .  2BC2          sub     eax, edx---------------->异或后的结果再减去扩展后的结果
00555F88   .  8BD8          mov     ebx, eax---------------->上面减后结果传到ebx
00555F8A   .  83C3 30       add     ebx, 30--------->ebx+30(即减后结果+30);
00555F8D   .  83FB 39       cmp     ebx, 39--------->ebx和39比较
00555F90   .  7E 08         jle     short 00555F9A-->小于或等于就跳
00555F92   .  83FB 41       cmp     ebx, 41----------->上面不跳的话,执行到这,和41比较
00555F95   .  7D 03         jge     short 00555F9A---->大于或等于就跳
00555F97   .  83C3 07       add     ebx, 7------------>上面不跳的话,就+7
00555F9A   >  8D45 F4       lea     eax, dword ptr [ebp-C]
00555F9D   .  E8 FAF0EAFF   call    0040509C
00555FA2   .  8858 02       mov     byte ptr [eax+2], bl----->把上面运算后的结果所对应的ascii字符传到code的第2位
00555FA5   .  8B45 F4       mov     eax, dword ptr [ebp-C]
00555FA8   .  0FB640 12     movzx   eax, byte ptr [eax+12]--->取code的第12位
00555FAC   .  8B55 F4       mov     edx, dword ptr [ebp-C]
00555FAF   .  0FB652 16     movzx   edx, byte ptr [edx+16]--->取code的第16位
00555FB3   .  2BC2          sub     eax, edx----------------->相减
00555FB5   .  99            cdq------------------------------>符号扩展
00555FB6   .  33C2          xor     eax, edx----------------->扩展后的结果与减后的结果异或
00555FB8   .  2BC2          sub     eax, edx--------------->异或后的结果减去扩展后的结果
00555FBA   .  8BD8          mov     ebx, eax-------------->上面计算的结果传到ebx
00555FBC   .  83C3 30       add     ebx, 30--------------->ebx加30
00555FBF   .  83FB 39       cmp     ebx, 39--------------->和39比较
00555FC2   .  7E 08         jle     short 00555FCC-------->小于或等于就跳
00555FC4   .  83FB 41       cmp     ebx, 41--------------->上面不跳的话,执行到这,与41比较
00555FC7   .  7D 03         jge     short 00555FCC-------->大于就跳
00555FC9   .  83C3 07       add     ebx, 7---------------->上面不跳的话,执行到这,就加7
00555FCC   >  8D45 F4       lea     eax, dword ptr [ebp-C]
00555FCF   .  E8 C8F0EAFF   call    0040509C
00555FD4   .  8858 08       mov     byte ptr [eax+8], bl--->上面计算的结果所对应的ascii字符传到code的第8位
00555FD7   .  8B45 F4       mov     eax, dword ptr [ebp-C]
00555FDA   .  0FB640 0C     movzx   eax, byte ptr [eax+C]
00555FDE   .  8B55 F4       mov     edx, dword ptr [ebp-C]
00555FE1   .  0FB652 10     movzx   edx, byte ptr [edx+10]
00555FE5   .  2BC2          sub     eax, edx
00555FE7   .  99            cdq
00555FE8   .  33C2          xor     eax, edx
00555FEA   .  2BC2          sub     eax, edx
00555FEC   .  8BD8          mov     ebx, eax
00555FEE   .  83C3 30       add     ebx, 30
00555FF1   .  83FB 39       cmp     ebx, 39
00555FF4   .  7E 08         jle     short 00555FFE
00555FF6   .  83FB 41       cmp     ebx, 41
00555FF9   .  7D 03         jge     short 00555FFE
00555FFB   .  83C3 07       add     ebx, 7
00555FFE   >  8D45 F4       lea     eax, dword ptr [ebp-C]
00556001   .  E8 96F0EAFF   call    0040509C
00556006   .  8858 0E       mov     byte ptr [eax+E], bl
00556009   .  8B45 F4       mov     eax, dword ptr [ebp-C]
0055600C   .  0FB640 06     movzx   eax, byte ptr [eax+6]
00556010   .  8B55 F4       mov     edx, dword ptr [ebp-C]
00556013   .  0FB652 0A     movzx   edx, byte ptr [edx+A]
00556017   .  2BC2          sub     eax, edx
00556019   .  99            cdq
0055601A   .  33C2          xor     eax, edx
0055601C   .  2BC2          sub     eax, edx
0055601E   .  8BD8          mov     ebx, eax
00556020   .  83C3 30       add     ebx, 30
00556023   .  83FB 39       cmp     ebx, 39
00556026   .  7E 08         jle     short 00556030
00556028   .  83FB 41       cmp     ebx, 41
0055602B   .  7D 03         jge     short 00556030
0055602D   .  83C3 07       add     ebx, 7
00556030   >  8D45 F4       lea     eax, dword ptr [ebp-C]
00556033   .  E8 64F0EAFF   call    0040509C
00556038   .  8858 14       mov     byte ptr [eax+14], bl
0055603B   .  8B45 F4       mov     eax, dword ptr [ebp-C]
0055603E   .  0FB600        movzx   eax, byte ptr [eax]
00556041   .  8B55 F4       mov     edx, dword ptr [ebp-C]
00556044   .  0FB652 04     movzx   edx, byte ptr [edx+4]
00556048   .  2BC2          sub     eax, edx
0055604A   .  99            cdq
0055604B   .  33C2          xor     eax, edx
0055604D   .  2BC2          sub     eax, edx
0055604F   .  8BD8          mov     ebx, eax
00556051   .  83C3 30       add     ebx, 30
00556054   .  83FB 39       cmp     ebx, 39
00556057   .  7E 08         jle     short 00556061
00556059   .  83FB 41       cmp     ebx, 41
0055605C   .  7D 03         jge     short 00556061
0055605E   .  83C3 07       add     ebx, 7
00556061   >  8D45 F4       lea     eax, dword ptr [ebp-C]
00556064   .  E8 33F0EAFF   call    0040509C
00556069   .  8858 1A       mov     byte ptr [eax+1A], bl
0055606C   .  8B45 F4       mov     eax, dword ptr [ebp-C]
0055606F   .  0FB640 08     movzx   eax, byte ptr [eax+8]
00556073   .  8B55 F4       mov     edx, dword ptr [ebp-C]
00556076   .  0FB652 0A     movzx   edx, byte ptr [edx+A]
0055607A   .  2BC2          sub     eax, edx
0055607C   .  99            cdq
0055607D   .  33C2          xor     eax, edx
0055607F   .  2BC2          sub     eax, edx
00556081   .  8BD8          mov     ebx, eax
00556083   .  83C3 30       add     ebx, 30
00556086   .  83FB 39       cmp     ebx, 39
00556089   .  7E 08         jle     short 00556093
0055608B   .  83FB 41       cmp     ebx, 41
0055608E   .  7D 03         jge     short 00556093
00556090   .  83C3 07       add     ebx, 7
00556093   >  8D45 F4       lea     eax, dword ptr [ebp-C]
00556096   .  E8 01F0EAFF   call    0040509C
0055609B   .  8858 01       mov     byte ptr [eax+1], bl
0055609E   .  8B45 F4       mov     eax, dword ptr [ebp-C]
005560A1   .  0FB640 14     movzx   eax, byte ptr [eax+14]
005560A5   .  8B55 F4       mov     edx, dword ptr [ebp-C]
005560A8   .  0FB652 16     movzx   edx, byte ptr [edx+16]
005560AC   .  2BC2          sub     eax, edx
005560AE   .  99            cdq
005560AF   .  33C2          xor     eax, edx
005560B1   .  2BC2          sub     eax, edx
005560B3   .  8BD8          mov     ebx, eax
005560B5   .  83C3 30       add     ebx, 30
005560B8   .  83FB 39       cmp     ebx, 39
005560BB   .  7E 08         jle     short 005560C5
005560BD   .  83FB 41       cmp     ebx, 41
005560C0   .  7D 03         jge     short 005560C5
005560C2   .  83C3 07       add     ebx, 7
005560C5   >  8D45 F4       lea     eax, dword ptr [ebp-C]
005560C8   .  E8 CFEFEAFF   call    0040509C
005560CD   .  8858 07       mov     byte ptr [eax+7], bl
005560D0   .  8B45 F4       mov     eax, dword ptr [ebp-C]
005560D3   .  0FB640 0E     movzx   eax, byte ptr [eax+E]
005560D7   .  8B55 F4       mov     edx, dword ptr [ebp-C]
005560DA   .  0FB652 10     movzx   edx, byte ptr [edx+10]
005560DE   .  2BC2          sub     eax, edx
005560E0   .  99            cdq
005560E1   .  33C2          xor     eax, edx
005560E3   .  2BC2          sub     eax, edx
005560E5   .  8BD8          mov     ebx, eax
005560E7   .  83C3 30       add     ebx, 30
005560EA   .  83FB 39       cmp     ebx, 39
005560ED   .  7E 08         jle     short 005560F7
005560EF   .  83FB 41       cmp     ebx, 41
005560F2   .  7D 03         jge     short 005560F7
005560F4   .  83C3 07       add     ebx, 7
005560F7   >  8D45 F4       lea     eax, dword ptr [ebp-C]
005560FA   .  E8 9DEFEAFF   call    0040509C
005560FF   .  8858 0D       mov     byte ptr [eax+D], bl
00556102   .  8B45 F4       mov     eax, dword ptr [ebp-C]
00556105   .  0FB640 02     movzx   eax, byte ptr [eax+2]
00556109   .  8B55 F4       mov     edx, dword ptr [ebp-C]
0055610C   .  0FB652 04     movzx   edx, byte ptr [edx+4]
00556110   .  2BC2          sub     eax, edx
00556112   .  99            cdq
00556113   .  33C2          xor     eax, edx
00556115   .  2BC2          sub     eax, edx
00556117   .  8BD8          mov     ebx, eax
00556119   .  83C3 30       add     ebx, 30
0055611C   .  83FB 39       cmp     ebx, 39
0055611F   .  7E 08         jle     short 00556129
00556121   .  83FB 41       cmp     ebx, 41
00556124   .  7D 03         jge     short 00556129
00556126   .  83C3 07       add     ebx, 7
00556129   >  8D45 F4       lea     eax, dword ptr [ebp-C]
0055612C   .  E8 6BEFEAFF   call    0040509C
00556131   .  8858 13       mov     byte ptr [eax+13], bl
00556134   .  8B45 F4       mov     eax, dword ptr [ebp-C]
00556137   .  0FB640 1A     movzx   eax, byte ptr [eax+1A]
0055613B   .  8B55 F4       mov     edx, dword ptr [ebp-C]
0055613E   .  0FB652 1C     movzx   edx, byte ptr [edx+1C]
00556142   .  2BC2          sub     eax, edx
00556144   .  99            cdq
00556145   .  33C2          xor     eax, edx
00556147   .  2BC2          sub     eax, edx
00556149   .  8BD8          mov     ebx, eax
0055614B   .  83C3 30       add     ebx, 30
0055614E   .  83FB 39       cmp     ebx, 39
00556151   .  7E 08         jle     short 0055615B
00556153   .  83FB 41       cmp     ebx, 41
00556156   .  7D 03         jge     short 0055615B
00556158   .  83C3 07       add     ebx, 7
0055615B   >  8D45 F4       lea     eax, dword ptr [ebp-C]
0055615E   .  E8 39EFEAFF   call    0040509C
00556163   .  8858 19       mov     byte ptr [eax+19], bl
00556166   .  8B45 F4       mov     eax, dword ptr [ebp-C]
00556169   .  0FB640 13     movzx   eax, byte ptr [eax+13]
0055616D   .  8B55 F4       mov     edx, dword ptr [ebp-C]
00556170   .  0FB652 12     movzx   edx, byte ptr [edx+12]
00556174   .  2BC2          sub     eax, edx
00556176   .  99            cdq
00556177   .  33C2          xor     eax, edx
00556179   .  2BC2          sub     eax, edx
0055617B   .  8BD8          mov     ebx, eax
0055617D   .  83C3 30       add     ebx, 30
00556180   .  83FB 39       cmp     ebx, 39
00556183   .  7E 08         jle     short 0055618D
00556185   .  83FB 41       cmp     ebx, 41
00556188   .  7D 03         jge     short 0055618D
0055618A   .  83C3 07       add     ebx, 7
0055618D   >  8D45 F4       lea     eax, dword ptr [ebp-C]
00556190   .  E8 07EFEAFF   call    0040509C
00556195   .  8858 03       mov     byte ptr [eax+3], bl
00556198   .  8B45 F4       mov     eax, dword ptr [ebp-C]
0055619B   .  0FB640 18     movzx   eax, byte ptr [eax+18]
0055619F   .  8B55 F4       mov     edx, dword ptr [ebp-C]
005561A2   .  0FB652 19     movzx   edx, byte ptr [edx+19]
005561A6   .  2BC2          sub     eax, edx
005561A8   .  99            cdq
005561A9   .  33C2          xor     eax, edx
005561AB   .  2BC2          sub     eax, edx
005561AD   .  8BD8          mov     ebx, eax
005561AF   .  83C3 30       add     ebx, 30
005561B2   .  83FB 39       cmp     ebx, 39
005561B5   .  7E 08         jle     short 005561BF
005561B7   .  83FB 41       cmp     ebx, 41
005561BA   .  7D 03         jge     short 005561BF
005561BC   .  83C3 07       add     ebx, 7
005561BF   >  8D45 F4       lea     eax, dword ptr [ebp-C]
005561C2   .  E8 D5EEEAFF   call    0040509C
005561C7   .  8858 09       mov     byte ptr [eax+9], bl
005561CA   .  8B45 F4       mov     eax, dword ptr [ebp-C]
005561CD   .  0FB640 06     movzx   eax, byte ptr [eax+6]
005561D1   .  8B55 F4       mov     edx, dword ptr [ebp-C]
005561D4   .  0FB652 07     movzx   edx, byte ptr [edx+7]
005561D8   .  2BC2          sub     eax, edx
005561DA   .  99            cdq
005561DB   .  33C2          xor     eax, edx
005561DD   .  2BC2          sub     eax, edx
005561DF   .  8BD8          mov     ebx, eax
005561E1   .  83C3 30       add     ebx, 30
005561E4   .  83FB 39       cmp     ebx, 39
005561E7   .  7E 08         jle     short 005561F1
005561E9   .  83FB 41       cmp     ebx, 41
005561EC   .  7D 03         jge     short 005561F1
005561EE   .  83C3 07       add     ebx, 7
005561F1   >  8D45 F4       lea     eax, dword ptr [ebp-C]
005561F4   .  E8 A3EEEAFF   call    0040509C
005561F9   .  8858 0F       mov     byte ptr [eax+F], bl
005561FC   .  8B45 F4       mov     eax, dword ptr [ebp-C]
005561FF   .  0FB640 0C     movzx   eax, byte ptr [eax+C]
00556203   .  8B55 F4       mov     edx, dword ptr [ebp-C]
00556206   .  0FB652 0D     movzx   edx, byte ptr [edx+D]
0055620A   .  2BC2          sub     eax, edx
0055620C   .  99            cdq
0055620D   .  33C2          xor     eax, edx
0055620F   .  2BC2          sub     eax, edx
00556211   .  8BD8          mov     ebx, eax
00556213   .  83C3 30       add     ebx, 30
00556216   .  83FB 39       cmp     ebx, 39
00556219   .  7E 08         jle     short 00556223
0055621B   .  83FB 41       cmp     ebx, 41
0055621E   .  7D 03         jge     short 00556223
00556220   .  83C3 07       add     ebx, 7
00556223   >  8D45 F4       lea     eax, dword ptr [ebp-C]
00556226   .  E8 71EEEAFF   call    0040509C
0055622B   .  8858 15       mov     byte ptr [eax+15], bl
0055622E   .  8B45 F4       mov     eax, dword ptr [ebp-C]
00556231   .  0FB600        movzx   eax, byte ptr [eax]
00556234   .  8B55 F4       mov     edx, dword ptr [ebp-C]
00556237   .  0FB652 01     movzx   edx, byte ptr [edx+1]
0055623B   .  2BC2          sub     eax, edx
0055623D   .  99            cdq
0055623E   .  33C2          xor     eax, edx
00556240   .  2BC2          sub     eax, edx
00556242   .  8BD8          mov     ebx, eax
00556244   .  83C3 30       add     ebx, 30
00556247   .  83FB 39       cmp     ebx, 39
0055624A   .  7E 08         jle     short 00556254
0055624C   .  83FB 41       cmp     ebx, 41
0055624F   .  7D 03         jge     short 00556254
00556251   .  83C3 07       add     ebx, 7
00556254   >  8D45 F4       lea     eax, dword ptr [ebp-C]
00556257   .  E8 40EEEAFF   call    0040509C
0055625C   .  8858 1B       mov     byte ptr [eax+1B], bl
0055625F   .  8B45 F4       mov     eax, dword ptr [ebp-C]
00556262   .  8B55 FC       mov     edx, dword ptr [ebp-4]
00556265   .  E8 26EDEAFF   call    00404F90-----------------------------------
0055626A   .  75 04         jnz     short 00556270-----------------------------(这个call,对比用的!)上面算完之后执行到这对比
0055626C   .  C645 FB 01    mov     byte ptr [ebp-5], 1
00556270   >  33C0          xor     eax, eax
00556272   .  5A            pop     edx
00556273   .  59            pop     ecx
00556274   .  59            pop     ecx
00556275   .  64:8910       mov     dword ptr fs:[eax], edx
00556278   .  EB 0A         jmp     short 00556284
0055627A   .^ E9 6DE0EAFF   jmp     004042EC
0055627F   .  E8 D0E3EAFF   call    00404654
00556284   >  33C0          xor     eax, eax
00556286   .  5A            pop     edx
00556287   .  59            pop     ecx
00556288   .  59            pop     ecx
00556289   .  64:8910       mov     dword ptr fs:[eax], edx
0055628C   .  68 AE625500   push    005562AE
00556291   >  8D45 F0       lea     eax, dword ptr [ebp-10]
00556294   .  BA 02000000   mov     edx, 2
00556299   .  E8 1AE9EAFF   call    00404BB8
0055629E   .  8D45 FC       lea     eax, dword ptr [ebp-4]
005562A1   .  E8 EEE8EAFF   call    00404B94
005562A6   .  C3            retn

到这为止,,所有算法完成!!实在太多`偶上面那一堆就不写注释了。都是以此类推推推推推推.......推出来!不过每次取的位置不一样,ascii字符传回去的位置也不一样~~~

对比call:
节省篇幅`就只看这吧!
00404FB9  |> /8B0E          /mov     ecx, dword ptr [esi]-->这句,把算出的新code的前四位送到ecx,就是十六进制3430585A
                                                                                                        ('4','0','X','Z')
                                                                                              ZX04Z-XV00X-CC02C-VZ00V-BB02B
                                                                                              ^^^^->就是这个`为啥倒存?内存嘛
00404FBB  |. |8B1F          |mov     ebx, dword ptr [edi]-->这句,取原code的前四位,那就是5A5A5A5A('Z','Z','Z','Z')
00404FBD  |. |39D9          |cmp     ecx, ebx-------------->比较
00404FBF  |. |75 58         |jnz     short 00405019-------->不等就跳`
00404FC1  |. |4A            |dec     edx                       |
00404FC2  |. |74 15         |je      short 00404FD9               |
00404FC4  |. |8B4E 04       |mov     ecx, dword ptr [esi+4]    |
00404FC7  |. |8B5F 04       |mov     ebx, dword ptr [edi+4]    |
00404FCA  |. |39D9          |cmp     ecx, ebx                  |
00404FCC  |. |75 4B         |jnz     short 00405019            |
00404FCE  |. |83C6 08       |add     esi, 8                    |
00404FD1  |. |83C7 08       |add     edi, 8                    |
00404FD4  |. |4A            |dec     edx                       |
00404FD5  |.^\75 E2         \jnz     short 00404FB9            |
---------------------------------------------------------      |
00405019  |> \5A            pop     edx                        ^跳到这里,下面又进行比对
0040501A  |.  38D9          cmp     cl, bl------------------->比较cl和bl,也就是上面新code前四位的第一位和原code前四位的第一位
0040501C      75 10         jnz     short 0040502E----------->不等就跳咯``跳就没得玩咯,,不过这里不跳(5A=5A)西西```
0040501E  |.  38FD          cmp     ch, bh------------------->又比较第二位
00405020      75 0C         jnz     short 0040502E----------->不等就跳``跳也玩完!,5555,偶们这里要跳了
00405022  |.  C1E9 10       shr     ecx, 10------------------>看下这里,我们执行到上一代码,要跳过这里`不过为了分析`把上面nop
                                                              掉~就可以执行到这了~~~偶已经备了一份~!呵
                                                              这句ecx右移10位(16进制)
00405025  |.  C1EB 10       shr     ebx, 10------------------>这里ebx也右移10位,主要是为了下面比较
00405028  |.  38D9          cmp     cl, bl------------------->前面比较了前两位,右移之后就可以比较第三位了
0040502A      75 02         jnz     short 0040502E----------->不等就跳`
0040502C  |.  38FD          cmp     ch, bh------------------->上一代码如果相等`就再比较第四位
0040502E  |>  5F            pop     edi
0040502F  |.  5E            pop     esi
00405030  |.  5B            pop     ebx
00405031  \.  C3            retn

前面谈到这个软件有两个算法的超大"bug",嗯嗯``说出来作者别砍偶`汗
NO.1-->  仔细看这个软件,填注册码时不用写name,说明不是根据name算出来的!在调试的时候也没发现说调用函数去获取磁盘标号系统时间         什么的..
         再看看算法``西西`
         算法:   输入的code经过一系列算法得到一组新code,对比所输入code和新code的前四位,相等则成功
         输入code:zzzzz-xxxxx-ccccc-vvvvv-bbbbb
         算出的code:ZX04Z-XV00X-CC02C-VZ00V-BB02B    ---->经过对比前四位,不等``出错,此注册号就通用

         就是这样``所以说-->每个正确的注册码都是通用的!
                        (作者采用这种保护方式`唉`至少要再加个运算参数嘛!大意啦!但是这给偶们这堆穷鬼提供方便也不错)

NO.2-->  偶突然发现滴``,西西``送大家一个超级靓号: "00000-00000-00000-00000-00000"-> 哈哈``感谢注册``
                为啥这样也行``没看上面代码分析的朋友肯定以为偶爆破之后用“全0”注册成功`呵,,其实不然不然~
         大家看看``如果全部都是‘0’的话,无论它算法取的是哪位,它都是‘0’,两个‘0’在算,算来算去都是‘0’,呵对比当然也通过;

既然这个软件的号码是通用的``写注册机也没啥意义!况且还有全零"00000-00000-00000-00000-00000";
不过知道算法了!有兴趣滴或正在学编程滴兄弟可以写看看`

当然`爆破也是超超超级简单``找到出错信息后马上就能看到是哪个跳转在作怪``je->jnz;  万事OK!

偶试过两个版本``算法有所不同!不过保护方式还是一样~~~‘全0'一样可以用!

最后,前面说了此软件的这么多不好!嗯嗯``恶梦连连~汗!这里也谈谈此保护方式`,虽然每个注册码都是通用的`,也就是自已输入的code都能保证(差不多大概………(省略37598个字)……可能)是错的!当然除了'全0',那样那些有钱人只有掏腰包``呵呵`~

此软件好像有很多好玩的地方,偶没多大去研究了,最近这个vc++学得偶头疼`

它的注册信息保存在-HKEY_LOCAL_MACHINE\SOFTWARE\GZNSoft,右边键值删了就又可以研究啦!

最后问个汇编菜菜问题,,就是这个句子``偶总是搞不懂!
                repe scas byte es:[ebx];---->这个样子的句子!偶在调试的时候总是碰到像这样的`就不知道该干啥了~~倒!汇编烂得很呐!能看懂代码(肯定有鬼`)汗~~~

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 0
支持
分享
最新回复 (18)
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
谢谢分享
希望多些这样的帖子
动画大可以分割啊
分成N部分就好了
下来学习下
2007-1-15 12:36
0
雪    币: 230
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
高手....我也学学..
2007-1-15 12:42
0
雪    币: 230
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我简单爆了一下..用C32ASM..hex workshop

::004B5252::  0F84 20010000            JE      004B5378                        \:JMPDOWN
::004B5258::  B9 E0534B00              MOV     ECX, 4B53E0                         \->: 注册成功--感谢您对本软件的支持!

HEX..修改 0F84 为 of 85 .
爆破作业成功..

2007-1-15 12:54
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
又有得,学习了,真开心..
2007-1-15 14:36
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
pos
6
只要一组注册码3位和4位为0就注册成功

11001-11001-11001-11001-11001
AA00A-AA00A-AA00A-AA00A-AA00A
2007-1-15 18:29
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
欧是新手,好多看不懂,好好学习一下!谢谢提供
2007-1-15 20:19
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
我也是新来的!向楼主学习学习!
2007-1-15 20:50
0
雪    币: 424
活跃值: (10)
能力值: ( LV9,RANK:850 )
在线值:
发帖
回帖
粉丝
9
回6楼``很不错的观察能力`被你发现了!哈哈`
2007-1-16 09:17
0
雪    币: 263
活跃值: (10)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
10
作者不如找我来写注册部分吧,说不定能把楼主搞的死去活来,
2007-1-16 11:55
0
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
谢谢楼主,这是一篇好文章。
2007-1-16 21:03
0
雪    币: 424
活跃值: (10)
能力值: ( LV9,RANK:850 )
在线值:
发帖
回帖
粉丝
12
最初由 KAN 发布
作者不如找我来写注册部分吧,说不定能把楼主搞的死去活来,


哈哈``这位老兄肯定很有耐心``佩服
2007-1-17 09:13
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
学习了,!!!!!!!!!!
2007-1-17 10:03
0
雪    币: 170
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
学习~~~拿来练手都好啊`
2007-2-10 16:05
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
楼主分析得很清楚,谢谢分享。
2007-2-11 13:28
0
雪    币: 88
活跃值: (115)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
偶是新手。。。。还看不太懂。。。。
2007-2-11 13:59
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
怎么好象真的很简单?
2007-2-11 18:41
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
我用OD 查找ASCII  找到注册失败 然后向上找 004B5252 这行代码 把原来的JN 改成 JNE 然后复制可执行文件  然后进软件注册 注册码乱写 找样能注册  不要向 楼主那样麻烦
2007-2-11 19:29
0
雪    币: 217
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
感谢楼主  !!!!
看看!!!!!!!!!!!!!
2007-2-12 05:03
0
游客
登录 | 注册 方可回帖
返回
//